Merge remote-tracking branch 'upstream/release-4.4.0' into develop

This commit is contained in:
Richard Cordovano 2017-05-22 17:58:17 -04:00
commit face5c1b33
16 changed files with 101 additions and 193 deletions

View File

@ -2,7 +2,7 @@ Manifest-Version: 1.0
OpenIDE-Module: org.sleuthkit.autopsy.core/10 OpenIDE-Module: org.sleuthkit.autopsy.core/10
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/core/Bundle.properties OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/core/Bundle.properties
OpenIDE-Module-Layer: org/sleuthkit/autopsy/core/layer.xml OpenIDE-Module-Layer: org/sleuthkit/autopsy/core/layer.xml
OpenIDE-Module-Implementation-Version: 18 OpenIDE-Module-Implementation-Version: 19
OpenIDE-Module-Requires: org.openide.windows.WindowManager OpenIDE-Module-Requires: org.openide.windows.WindowManager
AutoUpdate-Show-In-Client: true AutoUpdate-Show-In-Client: true
AutoUpdate-Essential-Module: true AutoUpdate-Essential-Module: true

View File

@ -140,11 +140,28 @@ public class Case {
private volatile ExecutorService caseLockingExecutor; private volatile ExecutorService caseLockingExecutor;
private CoordinationService.Lock caseDirLock; private CoordinationService.Lock caseDirLock;
private SleuthkitCase caseDb; private SleuthkitCase caseDb;
private SleuthkitErrorReporter sleuthkitErrorReporter;
private CollaborationMonitor collaborationMonitor; private CollaborationMonitor collaborationMonitor;
private Services caseServices; private Services caseServices;
private boolean hasDataSources; private boolean hasDataSources;
/*
* Get a reference to the main window of the desktop application to use to
* parent pop up dialogs and initialize the application name for use in
* changing the main window title.
*
* TODO (JIRA-2231): Make the application name a RuntimeProperties item set
* by Installers.
*/
static {
WindowManager.getDefault().invokeWhenUIReady(new Runnable() {
@Override
public void run() {
mainFrame = WindowManager.getDefault().getMainWindow();
appName = mainFrame.getTitle();
}
});
}
/** /**
* An enumeration of case types. * An enumeration of case types.
*/ */
@ -634,28 +651,6 @@ public class Case {
"Case.exceptionMessage.cannotLocateMainWindow=Cannot locate main application window" "Case.exceptionMessage.cannotLocateMainWindow=Cannot locate main application window"
}) })
private static void openAsCurrentCase(Case newCurrentCase, boolean isNewCase) throws CaseActionException, CaseActionCancelledException { private static void openAsCurrentCase(Case newCurrentCase, boolean isNewCase) throws CaseActionException, CaseActionCancelledException {
if (RuntimeProperties.runningWithGUI() && null == mainFrame) {
/*
* Get a reference to the main window of the desktop application to
* use to parent pop up dialogs and initialize the application name
* for use in changing the main window title. This is tricky and
* fragile. The application name aspect can be resolved thus:
*
* TODO (JIRA-2231): Make the application name a RuntimeProperties
* item set by Installers.
*
* And the getting of the main frame should be resolved when the
* code is refactored to separate the presentation layer fomr the
* business layer.
*
* TODO (JIRA-multiple): Make it possible to run "headless."
*/
assert (!SwingUtilities.isEventDispatchThread());
SwingUtilities.invokeLater(() -> {
mainFrame = WindowManager.getDefault().getMainWindow();
appName = mainFrame.getTitle();
});
}
synchronized (caseActionSerializationLock) { synchronized (caseActionSerializationLock) {
if (null != currentCase) { if (null != currentCase) {
try { try {
@ -1815,7 +1810,6 @@ public class Case {
*/ */
@Messages({ @Messages({
"Case.progressMessage.switchingLogDirectory=Switching log directory...", "Case.progressMessage.switchingLogDirectory=Switching log directory...",
"Case.progressMessage.settingUpTskErrorReporting=Setting up SleuthKit error reporting...",
"Case.progressMessage.clearingTempDirectory=Clearing case temp directory...", "Case.progressMessage.clearingTempDirectory=Clearing case temp directory...",
"Case.progressMessage.openingCaseLevelServices=Opening case-level services...", "Case.progressMessage.openingCaseLevelServices=Opening case-level services...",
"Case.progressMessage.openingApplicationServiceResources=Opening application service case resources...", "Case.progressMessage.openingApplicationServiceResources=Opening application service case resources...",
@ -1831,18 +1825,6 @@ public class Case {
throw new CaseActionCancelledException(Bundle.Case_exceptionMessage_cancelledByUser()); throw new CaseActionCancelledException(Bundle.Case_exceptionMessage_cancelledByUser());
} }
/*
* Hook up a SleuthKit layer error reporter.
*/
progressIndicator.progress(Bundle.Case_progressMessage_settingUpTskErrorReporting());
sleuthkitErrorReporter
= new SleuthkitErrorReporter(MIN_SECS_BETWEEN_TSK_ERROR_REPORTS, NbBundle.getMessage(Case.class,
"IntervalErrorReport.ErrorText"));
caseDb.addErrorObserver(this.sleuthkitErrorReporter);
if (Thread.currentThread().isInterrupted()) {
throw new CaseActionCancelledException(Bundle.Case_exceptionMessage_cancelledByUser());
}
/* /*
* Clear the temp subdirectory of the case directory. * Clear the temp subdirectory of the case directory.
*/ */
@ -2077,8 +2059,8 @@ public class Case {
"Case.progressMessage.shuttingDownNetworkCommunications=Shutting down network communications...", "Case.progressMessage.shuttingDownNetworkCommunications=Shutting down network communications...",
"Case.progressMessage.closingApplicationServiceResources=Closing case-specific application service resources...", "Case.progressMessage.closingApplicationServiceResources=Closing case-specific application service resources...",
"Case.progressMessage.closingCaseLevelServices=Closing case-level services...", "Case.progressMessage.closingCaseLevelServices=Closing case-level services...",
"Case.progressMessage.closingCaseDatabase=Closing case database...", "Case.progressMessage.closingCaseDatabase=Closing case database..."
"Case.progressMessage.shuttingDownTskErrorReporting=Shutting down SleuthKit error reporting..."}) })
private void close(ProgressIndicator progressIndicator) { private void close(ProgressIndicator progressIndicator) {
IngestManager.getInstance().cancelAllIngestJobs(IngestJob.CancellationReason.CASE_CLOSED); IngestManager.getInstance().cancelAllIngestJobs(IngestJob.CancellationReason.CASE_CLOSED);
@ -2119,10 +2101,6 @@ public class Case {
if (null != caseDb) { if (null != caseDb) {
progressIndicator.progress(Bundle.Case_progressMessage_closingCaseDatabase()); progressIndicator.progress(Bundle.Case_progressMessage_closingCaseDatabase());
caseDb.close(); caseDb.close();
if (null != sleuthkitErrorReporter) {
progressIndicator.progress(Bundle.Case_progressMessage_shuttingDownTskErrorReporting());
caseDb.removeErrorObserver(sleuthkitErrorReporter);
}
} }
/* /*
@ -2391,6 +2369,17 @@ public class Case {
} }
/**
* Gets the application name.
*
* @return The application name.
* @deprecated
*/
@Deprecated
public static String getAppName() {
return appName;
}
/** /**
* Creates a new, single-user Autopsy case. * Creates a new, single-user Autopsy case.
* *
@ -2632,16 +2621,4 @@ public class Case {
deleteReports(reports); deleteReports(reports);
} }
/**
* Sets the name of the keyword search index for the case.
*
* @param textIndexName The text index name.
*
* @throws CaseMetadataException
* @deprecated Do not use.
*/
@Deprecated
public void setTextIndexName(String textIndexName) throws CaseMetadataException {
}
} }

View File

@ -1,85 +0,0 @@
/*
* Autopsy Forensic Browser
*
* Copyright 2011-2017 Basis Technology Corp.
* Contact: carrier <at> sleuthkit <dot> org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.sleuthkit.autopsy.casemodule;
import java.util.logging.Level;
import org.openide.util.NbBundle;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
import org.sleuthkit.datamodel.SleuthkitCase;
/**
* Acts as a bridge between the Sleuthkit Java bindings classes and Autopsy by
* implementing the SleuthkitCase$ErrorObserver interface. All errors are
* written to the Autopsy logs. If a GUI is running, errors are also batched up
* and reported periodically to the user via the notification area in the lower
* right hand corner of the main application window.
*/
class SleuthkitErrorReporter implements SleuthkitCase.ErrorObserver {
private static final Logger LOGGER = Logger.getLogger(SleuthkitErrorReporter.class.getName());
private final int milliSecondsBetweenReports;
private final String message;
private long newProblems;
private long totalProblems;
private long lastReportedDate;
/**
* Create a new IntervalErrorReprotData instance and subscribe for TSK error
* notifications for the current case.
*
* @param secondsBetweenReports Minimum number of seconds between reports.
* It will not warn more frequently than this.
* @param message The message that will be shown when warning
* the user.
*/
SleuthkitErrorReporter(int secondsBetweenReports, String message) {
this.newProblems = 0;
this.totalProblems = 0;
this.lastReportedDate = 0; // arm the first warning by choosing zero
this.milliSecondsBetweenReports = secondsBetweenReports * 1000; // convert to milliseconds
this.message = message;
}
/**
* Call this to add problems to the class. When the time threshold is met
* (or if this is the first problem encountered), a warning will be shown to
* the user.
*
* @param context The context in which the error occurred.
* @param errorMessage A description of the error that occurred.
*/
@Override
public void receiveError(String context, String errorMessage) {
LOGGER.log(Level.SEVERE, String.format("%s error in the SleuthKit layer: %s", context, errorMessage));
this.newProblems += 1;
this.totalProblems += newProblems;
long currentTimeStamp = System.currentTimeMillis();
if ((currentTimeStamp - lastReportedDate) > milliSecondsBetweenReports) {
this.lastReportedDate = currentTimeStamp;
MessageNotifyUtil.Notify.error(message, context + ", " + errorMessage + " "
+ this.newProblems + " "
+ NbBundle.getMessage(SleuthkitErrorReporter.class, "IntervalErrorReport.NewIssues")
+ " " + this.totalProblems + " "
+ NbBundle.getMessage(SleuthkitErrorReporter.class, "IntervalErrorReport.TotalIssues")
+ ".");
this.newProblems = 0;
}
}
}

View File

@ -64,7 +64,6 @@ public final class UserPreferences {
private static final String MESSAGE_SERVICE_PORT = "MessageServicePort"; //NON-NLS private static final String MESSAGE_SERVICE_PORT = "MessageServicePort"; //NON-NLS
public static final String PROCESS_TIME_OUT_ENABLED = "ProcessTimeOutEnabled"; //NON-NLS public static final String PROCESS_TIME_OUT_ENABLED = "ProcessTimeOutEnabled"; //NON-NLS
public static final String PROCESS_TIME_OUT_HOURS = "ProcessTimeOutHours"; //NON-NLS public static final String PROCESS_TIME_OUT_HOURS = "ProcessTimeOutHours"; //NON-NLS
public static final String AGENCY_LOGO_IMAGE_PATH = "AgencyLogoImagePath"; //NON-NLS
private static final int DEFAULT_PROCESS_TIMEOUT_HR = 60; private static final int DEFAULT_PROCESS_TIMEOUT_HR = 60;
private static final String DEFAULT_PORT_STRING = "61616"; private static final String DEFAULT_PORT_STRING = "61616";
private static final int DEFAULT_PORT_INT = 61616; private static final int DEFAULT_PORT_INT = 61616;

View File

@ -27,7 +27,7 @@ Format_OperatingSystem_Value={0} version {1} running on {2}
LBL_Copyright=<div style\="font-size\: 12pt; font-family\: Verdana, 'Verdana CE', Arial, 'Arial CE', 'Lucida Grande CE', lucida, 'Helvetica CE', sans-serif; ">Autopsy&trade; is a digital forensics platform based on The Sleuth Kit&trade; and other tools. <br><ul><li>General Information: <a style\="color\: \#1E2A60;" href\="http\://www.sleuthkit.org">http\://www.sleuthkit.org</a>.</li><li>Training: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/autopsy-training">http://www.basistech.com/autopsy-training</a></li><li>Commercial Support: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/digital-forensics/autopsy/support/">http://www.basistech.com/digital-forensics/autopsy/support/</a></li></ul>Copyright &copy; 2003-2017. </div> LBL_Copyright=<div style\="font-size\: 12pt; font-family\: Verdana, 'Verdana CE', Arial, 'Arial CE', 'Lucida Grande CE', lucida, 'Helvetica CE', sans-serif; ">Autopsy&trade; is a digital forensics platform based on The Sleuth Kit&trade; and other tools. <br><ul><li>General Information: <a style\="color\: \#1E2A60;" href\="http\://www.sleuthkit.org">http\://www.sleuthkit.org</a>.</li><li>Training: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/autopsy-training">http://www.basistech.com/autopsy-training</a></li><li>Commercial Support: <a style\="color\: \#1E2A60;" href\="http://www.basistech.com/digital-forensics/autopsy/support/">http://www.basistech.com/digital-forensics/autopsy/support/</a></li></ul>Copyright &copy; 2003-2017. </div>
URL_ON_IMG=http://www.sleuthkit.org/ URL_ON_IMG=http://www.sleuthkit.org/
URL_ON_HELP=http://sleuthkit.org/autopsy/docs/user-docs/4.3/ URL_ON_HELP=http://sleuthkit.org/autopsy/docs/user-docs/4.4/
FILE_FOR_LOCAL_HELP=file:/// FILE_FOR_LOCAL_HELP=file:///
INDEX_FOR_LOCAL_HELP=/docs/index.html INDEX_FOR_LOCAL_HELP=/docs/index.html

View File

@ -213,7 +213,7 @@ public class ImageUtils {
* @param file the AbstractFile to test * @param file the AbstractFile to test
* *
* @return true if the file is an image we can read and generate thumbnail * @return true if the file is an image we can read and generate thumbnail
* for. * for.
*/ */
public static boolean isImageThumbnailSupported(AbstractFile file) { public static boolean isImageThumbnailSupported(AbstractFile file) {
return isMediaThumbnailSupported(file, "image/", SUPPORTED_IMAGE_MIME_TYPES, SUPPORTED_IMAGE_EXTENSIONS) || hasImageFileHeader(file);//NON-NLS return isMediaThumbnailSupported(file, "image/", SUPPORTED_IMAGE_MIME_TYPES, SUPPORTED_IMAGE_EXTENSIONS) || hasImageFileHeader(file);//NON-NLS
@ -239,17 +239,16 @@ public class ImageUtils {
* VideoUtils both implement/extend some base interface/abstract class. That * VideoUtils both implement/extend some base interface/abstract class. That
* would be the natural place to put this. * would be the natural place to put this.
* *
* @param file the AbstractFile to test * @param file the AbstractFile to test
* @param mimeTypePrefix a MIME 'top-level type name' such as "image/", * @param mimeTypePrefix a MIME 'top-level type name' such as "image/",
* including the "/". In addition to the list of * including the "/". In addition to the list of supported MIME types, any
* supported MIME types, any type that starts with * type that starts with this prefix will be regarded as supported
* this prefix will be regarded as supported
* @param supportedMimeTypes a collection of mimetypes that are supported * @param supportedMimeTypes a collection of mimetypes that are supported
* @param supportedExtension a collection of extensions that are supported * @param supportedExtension a collection of extensions that are supported
* *
* @return true if a thumbnail can be generated for the given file based on * @return true if a thumbnail can be generated for the given file based on
* the given MIME type prefix and lists of supported MIME types and * the given MIME type prefix and lists of supported MIME types and
* extensions * extensions
*/ */
static boolean isMediaThumbnailSupported(AbstractFile file, String mimeTypePrefix, final Collection<String> supportedMimeTypes, final List<String> supportedExtension) { static boolean isMediaThumbnailSupported(AbstractFile file, String mimeTypePrefix, final Collection<String> supportedMimeTypes, final List<String> supportedExtension) {
if (false == file.isFile() || file.getSize() <= 0) { if (false == file.isFile() || file.getSize() <= 0) {
@ -283,7 +282,7 @@ public class ImageUtils {
* @return a FileTypeDetector * @return a FileTypeDetector
* *
* @throws FileTypeDetectorInitException if initializing the * @throws FileTypeDetectorInitException if initializing the
* FileTypeDetector failed. * FileTypeDetector failed.
*/ */
synchronized private static FileTypeDetector getFileTypeDetector() throws FileTypeDetector.FileTypeDetectorInitException { synchronized private static FileTypeDetector getFileTypeDetector() throws FileTypeDetector.FileTypeDetectorInitException {
if (fileTypeDetector == null) { if (fileTypeDetector == null) {
@ -296,11 +295,11 @@ public class ImageUtils {
* Get a thumbnail of a specified size for the given image. Generates the * Get a thumbnail of a specified size for the given image. Generates the
* thumbnail if it is not already cached. * thumbnail if it is not already cached.
* *
* @param content the content to generate a thumbnail for * @param content the content to generate a thumbnail for
* @param iconSize the size (one side of a square) in pixels to generate * @param iconSize the size (one side of a square) in pixels to generate
* *
* @return A thumbnail for the given image or a default one if there was a * @return A thumbnail for the given image or a default one if there was a
* problem making a thumbnail. * problem making a thumbnail.
*/ */
public static BufferedImage getThumbnail(Content content, int iconSize) { public static BufferedImage getThumbnail(Content content, int iconSize) {
if (content instanceof AbstractFile) { if (content instanceof AbstractFile) {
@ -339,7 +338,7 @@ public class ImageUtils {
* @param file The AbstractFile to get a stream for. * @param file The AbstractFile to get a stream for.
* *
* @return A BufferedInputStream wrapped around a ReadContentStream for the * @return A BufferedInputStream wrapped around a ReadContentStream for the
* given AbstractFile * given AbstractFile
*/ */
private static BufferedInputStream getBufferedReadContentStream(AbstractFile file) { private static BufferedInputStream getBufferedReadContentStream(AbstractFile file) {
return new BufferedInputStream(new ReadContentInputStream(file)); return new BufferedInputStream(new ReadContentInputStream(file));
@ -349,11 +348,11 @@ public class ImageUtils {
* Get a thumbnail of a specified size for the given image. Generates the * Get a thumbnail of a specified size for the given image. Generates the
* thumbnail if it is not already cached. * thumbnail if it is not already cached.
* *
* @param content the content to generate a thumbnail for * @param content the content to generate a thumbnail for
* @param iconSize the size (one side of a square) in pixels to generate * @param iconSize the size (one side of a square) in pixels to generate
* *
* @return File object for cached image. Is guaranteed to exist, as long as * @return File object for cached image. Is guaranteed to exist, as long as
* there was not an error generating or saving the thumbnail. * there was not an error generating or saving the thumbnail.
*/ */
@Nullable @Nullable
public static File getCachedThumbnailFile(Content content, int iconSize) { public static File getCachedThumbnailFile(Content content, int iconSize) {
@ -368,8 +367,8 @@ public class ImageUtils {
* @param fileID the fileID to get the cached thumbnail location for * @param fileID the fileID to get the cached thumbnail location for
* *
* @return A File object representing the location of the cached thumbnail. * @return A File object representing the location of the cached thumbnail.
* This file may not actually exist(yet). Returns null if there was * This file may not actually exist(yet). Returns null if there was any
* any problem getting the file, such as no case was open. * problem getting the file, such as no case was open.
*/ */
private static File getCachedThumbnailLocation(long fileID) { private static File getCachedThumbnailLocation(long fileID) {
return cacheFileMap.computeIfAbsent(fileID, id -> { return cacheFileMap.computeIfAbsent(fileID, id -> {
@ -427,7 +426,7 @@ public class ImageUtils {
* @param file the AbstractFile to parse * @param file the AbstractFile to parse
* *
* @return Offset of first Start Of Image marker, or 0 if none found. This * @return Offset of first Start Of Image marker, or 0 if none found. This
* will let ImageIO try to open it from offset 0. * will let ImageIO try to open it from offset 0.
*/ */
private static long getJfifStartOfImageOffset(AbstractFile file) { private static long getJfifStartOfImageOffset(AbstractFile file) {
byte[] fileHeaderBuffer; byte[] fileHeaderBuffer;
@ -507,7 +506,7 @@ public class ImageUtils {
* @return the width in pixels * @return the width in pixels
* *
* @throws IOException If the file is not a supported image or the width * @throws IOException If the file is not a supported image or the width
* could not be determined. * could not be determined.
*/ */
static public int getImageWidth(AbstractFile file) throws IOException { static public int getImageWidth(AbstractFile file) throws IOException {
return getImageProperty(file, return getImageProperty(file,
@ -524,7 +523,7 @@ public class ImageUtils {
* @return the height in pixels * @return the height in pixels
* *
* @throws IOException If the file is not a supported image or the height * @throws IOException If the file is not a supported image or the height
* could not be determined. * could not be determined.
*/ */
static public int getImageHeight(AbstractFile file) throws IOException { static public int getImageHeight(AbstractFile file) throws IOException {
return getImageProperty(file, return getImageProperty(file,
@ -537,8 +536,8 @@ public class ImageUtils {
/** /**
* Functional interface for methods that extract a property out of an * Functional interface for methods that extract a property out of an
* ImageReader. Initially created to abstract over * ImageReader. Initially created to abstract over
* {@link #getImageHeight(org.sleuthkit.datamodel.AbstractFile)} and * getImageHeight(org.sleuthkit.datamodel.AbstractFile) and
* {@link #getImageWidth(org.sleuthkit.datamodel.AbstractFile)} * getImageWidth(org.sleuthkit.datamodel.AbstractFile)
* *
* @param <T> The type of the property. * @param <T> The type of the property.
*/ */
@ -553,18 +552,17 @@ public class ImageUtils {
* public methods that pull particular (usually meta-)data out of a image * public methods that pull particular (usually meta-)data out of a image
* file. * file.
* *
* @param file the file to extract the data from * @param file the file to extract the data from
* @param errorTemplate a message template used to log errors. Should * @param errorTemplate a message template used to log errors. Should take
* take one parameter: the file's unique path or * one parameter: the file's unique path or name.
* name.
* @param propertyExtractor an implementation of {@link PropertyExtractor} * @param propertyExtractor an implementation of {@link PropertyExtractor}
* used to retrieve the specific property. * used to retrieve the specific property.
* *
* @return the the value of the property extracted by the given * @return the the value of the property extracted by the given
* propertyExtractor * propertyExtractor
* *
* @throws IOException if there was a problem reading the property from the * @throws IOException if there was a problem reading the property from the
* file. * file.
* *
* @see PropertyExtractor * @see PropertyExtractor
* @see #getImageHeight(org.sleuthkit.datamodel.AbstractFile) * @see #getImageHeight(org.sleuthkit.datamodel.AbstractFile)
@ -608,8 +606,8 @@ public class ImageUtils {
* but is not started automatically. Clients are responsible for running the * but is not started automatically. Clients are responsible for running the
* task, monitoring its progress, and using its result. * task, monitoring its progress, and using its result.
* *
* @param file The file to create a thumbnail for. * @param file The file to create a thumbnail for.
* @param iconSize The size of the thumbnail. * @param iconSize The size of the thumbnail.
* @param defaultOnFailure Whether or not to default on failure. * @param defaultOnFailure Whether or not to default on failure.
* *
* @return a new Task that returns a thumbnail as its result. * @return a new Task that returns a thumbnail as its result.
@ -978,10 +976,10 @@ public class ImageUtils {
* @param iconSize * @param iconSize
* *
* @return a thumbnail for the given image or a default one if there was a * @return a thumbnail for the given image or a default one if there was a
* problem making a thumbnail. * problem making a thumbnail.
* *
* @deprecated use {@link #getThumbnail(org.sleuthkit.datamodel.Content, int) * @deprecated use getThumbnail(org.sleuthkit.datamodel.Content, int)
* } instead. * instead.
*/ */
@Nonnull @Nonnull
@Deprecated @Deprecated
@ -997,10 +995,10 @@ public class ImageUtils {
* @param iconSize * @param iconSize
* *
* @return File object for cached image. Is guaranteed to exist, as long as * @return File object for cached image. Is guaranteed to exist, as long as
* there was not an error generating or saving the thumbnail. * there was not an error generating or saving the thumbnail.
* *
* @deprecated use {@link #getCachedThumbnailFile(org.sleuthkit.datamodel.Content, int) * @deprecated use getCachedThumbnailFile(org.sleuthkit.datamodel.Content,
* } instead. * int) instead.
* *
*/ */
@Nullable @Nullable

View File

@ -1,6 +1,7 @@
Manifest-Version: 1.0 Manifest-Version: 1.0
AutoUpdate-Show-In-Client: true AutoUpdate-Show-In-Client: true
OpenIDE-Module: org.sleuthkit.autopsy.experimental OpenIDE-Module: org.sleuthkit.autopsy.experimental/10
OpenIDE-Module-Implementation-Version: 2
OpenIDE-Module-Layer: org/sleuthkit/autopsy/experimental/autoingest/layer.xml OpenIDE-Module-Layer: org/sleuthkit/autopsy/experimental/autoingest/layer.xml
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/experimental/autoingest/Bundle.properties OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/experimental/autoingest/Bundle.properties
OpenIDE-Module-Specification-Version: 1.0 OpenIDE-Module-Specification-Version: 1.0

View File

@ -1,5 +1,5 @@
Manifest-Version: 1.0 Manifest-Version: 1.0
OpenIDE-Module: org.sleuthkit.autopsy.imagegallery/2 OpenIDE-Module: org.sleuthkit.autopsy.imagegallery/2
OpenIDE-Module-Implementation-Version: 2 OpenIDE-Module-Implementation-Version: 3
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/imagegallery/Bundle.properties OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/imagegallery/Bundle.properties

View File

@ -44,7 +44,7 @@ public final class OpenHelpAction implements ActionListener {
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
try { try {
Desktop.getDesktop().browse(URI.create("http://sleuthkit.org/autopsy/docs/user-docs/4.3/image_gallery_page.html")); //NON-NLS Desktop.getDesktop().browse(URI.create("http://sleuthkit.org/autopsy/docs/user-docs/4.4/image_gallery_page.html")); //NON-NLS
} catch (IOException ex) { } catch (IOException ex) {
Logger.getLogger(OpenHelpAction.class.getName()).log(Level.SEVERE, "failed to open help page", ex); //NON-NLS Logger.getLogger(OpenHelpAction.class.getName()).log(Level.SEVERE, "failed to open help page", ex); //NON-NLS
} }

View File

@ -1,7 +1,7 @@
Manifest-Version: 1.0 Manifest-Version: 1.0
AutoUpdate-Show-In-Client: true AutoUpdate-Show-In-Client: true
OpenIDE-Module: org.sleuthkit.autopsy.keywordsearch/6 OpenIDE-Module: org.sleuthkit.autopsy.keywordsearch/6
OpenIDE-Module-Implementation-Version: 16 OpenIDE-Module-Implementation-Version: 17
OpenIDE-Module-Install: org/sleuthkit/autopsy/keywordsearch/Installer.class OpenIDE-Module-Install: org/sleuthkit/autopsy/keywordsearch/Installer.class
OpenIDE-Module-Layer: org/sleuthkit/autopsy/keywordsearch/layer.xml OpenIDE-Module-Layer: org/sleuthkit/autopsy/keywordsearch/layer.xml
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/keywordsearch/Bundle.properties OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/keywordsearch/Bundle.properties

View File

@ -63,6 +63,24 @@
<specification-version>10.7</specification-version> <specification-version>10.7</specification-version>
</run-dependency> </run-dependency>
</dependency> </dependency>
<dependency>
<code-name-base>org.sleuthkit.autopsy.corelibs</code-name-base>
<build-prerequisite/>
<compile-dependency/>
<run-dependency>
<release-version>3</release-version>
<specification-version>1.1</specification-version>
</run-dependency>
</dependency>
<dependency>
<code-name-base>org.sleuthkit.autopsy.keywordsearch</code-name-base>
<build-prerequisite/>
<compile-dependency/>
<run-dependency>
<release-version>6</release-version>
<specification-version>6.3</specification-version>
</run-dependency>
</dependency>
</module-dependencies> </module-dependencies>
<public-packages> <public-packages>
<package>org.sleuthkit.autopsy.recentactivity</package> <package>org.sleuthkit.autopsy.recentactivity</package>

View File

@ -1,6 +1,6 @@
Manifest-Version: 1.0 Manifest-Version: 1.0
AutoUpdate-Show-In-Client: false AutoUpdate-Show-In-Client: false
OpenIDE-Module: org.sleuthkit.autopsy.testing/3 OpenIDE-Module: org.sleuthkit.autopsy.testing/3
OpenIDE-Module-Implementation-Version: 9 OpenIDE-Module-Implementation-Version: 10
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/testing/Bundle.properties OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/testing/Bundle.properties

View File

@ -1,5 +1,5 @@
#Updated by build script #Updated by build script
#Tue, 21 Mar 2017 17:07:16 -0400 #Mon, 22 May 2017 15:46:42 -0400
LBL_splash_window_title=Starting Autopsy LBL_splash_window_title=Starting Autopsy
SPLASH_HEIGHT=314 SPLASH_HEIGHT=314
SPLASH_WIDTH=538 SPLASH_WIDTH=538
@ -8,4 +8,4 @@ SplashRunningTextBounds=0,289,538,18
SplashRunningTextColor=0x0 SplashRunningTextColor=0x0
SplashRunningTextFontSize=19 SplashRunningTextFontSize=19
currentVersion=Autopsy 4.3.0 currentVersion=Autopsy 4.4.0

View File

@ -1,4 +1,4 @@
#Updated by build script #Updated by build script
#Tue, 21 Mar 2017 17:07:16 -0400 #Mon, 22 May 2017 15:46:42 -0400
CTL_MainWindow_Title=Autopsy 4.3.0 CTL_MainWindow_Title=Autopsy 4.4.0
CTL_MainWindow_Title_No_Project=Autopsy 4.3.0 CTL_MainWindow_Title_No_Project=Autopsy 4.4.0

View File

@ -7,7 +7,7 @@ app.name=${branding.token}
app.version=4.4.0 app.version=4.4.0
### build.type must be one of: DEVELOPMENT, RELEASE ### build.type must be one of: DEVELOPMENT, RELEASE
#build.type=RELEASE #build.type=RELEASE
build.type=DEVELOPMENT build.type=RELEASE
project.org.sleuthkit.autopsy.experimental=Experimental project.org.sleuthkit.autopsy.experimental=Experimental
project.org.sleuthkit.autopsy.imagegallery=ImageGallery project.org.sleuthkit.autopsy.imagegallery=ImageGallery

View File

@ -5,7 +5,7 @@ your needs.
See the developer guide for more details and how to use and load See the developer guide for more details and how to use and load
the modules. the modules.
http://sleuthkit.org/autopsy/docs/api-docs/4.3/index.html http://sleuthkit.org/autopsy/docs/api-docs/4.4/index.html
Each module in this folder should have a brief description about what they Each module in this folder should have a brief description about what they
can do. can do.