diff --git a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties index ca5c8b3174..ad546159c7 100755 --- a/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/actions/Bundle.properties @@ -50,6 +50,9 @@ GetTagNameDialog.tagNameAlreadyDef.msg=A {0} tag name has already been defined. GetTagNameDialog.dupTagErr=Duplicate Tag Error OpenLogFolder.error1=Log File Not Found: {0} CTL_OpenLogFolder=Open Log Folder +CTL_OpenOutputFolder=Open Output Folder +OpenOutputFolder.error1=Output Folder Not Found: {0} +OpenOutputFolder.noCaseOpen=No open case, therefore no current output folder available. ShowIngestProgressSnapshotAction.actionName.text=Get Ingest Progress Snapshot OpenPythonModulesFolderAction.actionName.text=Python Plugins OpenPythonModulesFolderAction.errorMsg.folderNotFound=Python plugins folder not found: {0} diff --git a/Core/src/org/sleuthkit/autopsy/actions/OpenOutputFolderAction.java b/Core/src/org/sleuthkit/autopsy/actions/OpenOutputFolderAction.java new file mode 100644 index 0000000000..668cc30473 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/actions/OpenOutputFolderAction.java @@ -0,0 +1,68 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2015 Basis Technology Corp. + * Contact: carrier sleuthkit 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.actions; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.Desktop; +import java.io.File; +import java.io.IOException; +import javax.swing.JOptionPane; +import org.openide.DialogDisplayer; +import org.openide.NotifyDescriptor; +import org.openide.awt.ActionID; +import org.openide.awt.ActionReference; +import org.openide.awt.ActionRegistration; +import org.openide.util.Exceptions; +import org.openide.util.NbBundle; +import org.sleuthkit.autopsy.casemodule.Case; + +/** + * Action in menu to open the folder containing the output files + */ +@ActionRegistration( + displayName = "#CTL_OpenOutputFolder", iconInMenu = true) +@ActionReference(path = "Menu/Help", position = 1850) +@ActionID(id = "org.sleuthkit.autopsy.actions.OpenOutputFolderAction", category = "Help") +public final class OpenOutputFolderAction implements ActionListener { + + @Override + public void actionPerformed(ActionEvent e) { + + try { + File outputDir; + if (Case.isCaseOpen()) { + outputDir = new File(Case.getCurrentCase().getHostDirectory()); + if (outputDir.exists() == false) { + NotifyDescriptor d + = new NotifyDescriptor.Message(NbBundle.getMessage(this.getClass(), + "OpenOutputFolder.error1", outputDir.getAbsolutePath()), + NotifyDescriptor.ERROR_MESSAGE); + DialogDisplayer.getDefault().notify(d); + } else { + Desktop.getDesktop().open(outputDir); + } + } else { + JOptionPane.showMessageDialog(null, NbBundle.getMessage(this.getClass(), "OpenOutputFolder.noCaseOpen")); + } + } catch (IOException ex) { + Exceptions.printStackTrace(ex); + } + } +} diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties index 906c3c2f4f..e6e04b7a6c 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Bundle.properties @@ -133,6 +133,7 @@ Case.createCaseDir.exception.existCantRW=Cannot create case dir, already exists Case.createCaseDir.exception.cantCreate=Cannot create case dir\: {0} Case.createCaseDir.exception.cantCreateCaseDir=Could not create case directory\: {0} Case.createCaseDir.exception.cantCreateModDir=Could not create modules output directory\: {0} +Case.createCaseDir.exception.cantCreateReportsDir=Could not create reports output directory\: {0} Case.createCaseDir.exception.gen=Could not create case directory\: {0} Case.OpenEventChannel.ErrMsg=Case opening process failed to connect to nodes collaborating on case {0}. CaseDeleteAction.closeConfMsg.text=Are you sure want to close and delete this case? \n\ diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java index 4a61b1ae5f..c41c3d156d 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/Case.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/Case.java @@ -25,6 +25,9 @@ import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; +import java.net.UnknownHostException; +import java.nio.file.Path; +import java.nio.file.Paths; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; @@ -188,6 +191,9 @@ public class Case implements SleuthkitCase.ErrorObserver { private static final Logger logger = Logger.getLogger(Case.class.getName()); static final String CASE_EXTENSION = "aut"; //NON-NLS static final String CASE_DOT_EXTENSION = "." + CASE_EXTENSION; + private static String HOSTNAME; + private static String REPORTOUTPUT = "Reports"; + private static String MODULEOUTPUT = "ModuleOutput"; // we cache if the case has data in it yet since a few places ask for it and we dont' need to keep going to DB private boolean hasData = false; @@ -204,6 +210,7 @@ public class Case implements SleuthkitCase.ErrorObserver { this.caseType = type; this.db = db; this.services = new Services(db); + setHostName(); } /** @@ -315,7 +322,7 @@ public class Case implements SleuthkitCase.ErrorObserver { // create case directory if it doesn't already exist. if (new File(caseDir).exists() == false) { - Case.createCaseDirectory(caseDir); + Case.createCaseDirectory(caseDir, caseType); } String configFilePath = caseDir + File.separator + caseName + CASE_DOT_EXTENSION; @@ -738,7 +745,7 @@ public class Case implements SleuthkitCase.ErrorObserver { if (xmlcm == null) { return ""; } else { - return xmlcm.getTempDir(); + return xmlcm.getTempDir(HOSTNAME, caseType); } } @@ -751,7 +758,7 @@ public class Case implements SleuthkitCase.ErrorObserver { if (xmlcm == null) { return ""; } else { - return xmlcm.getCacheDir(); + return xmlcm.getCacheDir(HOSTNAME, caseType); } } @@ -764,7 +771,7 @@ public class Case implements SleuthkitCase.ErrorObserver { if (xmlcm == null) { return ""; } else { - return xmlcm.getExportDir(); + return xmlcm.getExportDir(HOSTNAME, caseType); } } @@ -777,7 +784,7 @@ public class Case implements SleuthkitCase.ErrorObserver { if (xmlcm == null) { return ""; } else { - return xmlcm.getLogDir(); + return xmlcm.getLogDir(HOSTNAME, caseType); } } @@ -808,24 +815,65 @@ public class Case implements SleuthkitCase.ErrorObserver { } /** - * Get absolute module output directory path where modules should save their - * permanent data The directory is a subdirectory of this case dir. + * Get the host output directory path where modules should save their + * permanent data. If single-user case, the directory is a subdirectory of + * the case directory. If multi-user case, the directory is a subdirectory + * of HOSTNAME, which is a subdirectory of the case directory. + * + * @return the path to the host output directory + */ + public String getHostDirectory() { + if (xmlcm == null) { + return ""; + } else { + return xmlcm.getHostPath(HOSTNAME, this.getCaseType()); + } + } + + /** + * Get the reports directory path where modules should save their reports. + * + * @return absolute path to the report output directory + */ + public String getReportDirectory() { + Path thePath = Paths.get(this.getHostDirectory(), REPORTOUTPUT); + if (!thePath.toFile().exists()) { + thePath.toFile().mkdirs(); + } + return thePath.toString(); + } + + /** + * Get module output directory path where modules should save their + * permanent data. * * @return absolute path to the module output dir */ - public String getModulesOutputDirAbsPath() { - return this.getCaseDirectory() + File.separator + getModulesOutputDirRelPath(); + public String getModulesDirectory() { + Path thePath = Paths.get(this.getHostDirectory(), MODULEOUTPUT); + if (!thePath.toFile().exists()) { + thePath.toFile().mkdirs(); + } + return thePath.toString(); } /** * Get relative (with respect to case dir) module output directory path - * where modules should save their permanent data The directory is a + * where modules should save their permanent data. The directory is a * subdirectory of this case dir. * * @return relative path to the module output dir */ - public static String getModulesOutputDirRelPath() { - return "ModuleOutput"; //NON-NLS + public String getModuleOutputDirectoryRelativePath() { + Path thePath; + if (getCaseType() == CaseType.MULTI_USER_CASE) { + thePath = Paths.get(HOSTNAME, MODULEOUTPUT); + } else { + thePath = Paths.get(MODULEOUTPUT); + } + // Do not autocreate this relative path. It will have already been + // created when the case was made. + return thePath.toString(); } /** @@ -1046,8 +1094,8 @@ public class Case implements SleuthkitCase.ErrorObserver { * @throws CaseActionException throw if could not create the case dir * @Deprecated */ - static void createCaseDirectory(String caseDir, String caseName) throws CaseActionException { - createCaseDirectory(caseDir); + static void createCaseDirectory(String caseDir, String caseName, CaseType caseType) throws CaseActionException { + createCaseDirectory(caseDir, caseType); } @@ -1055,10 +1103,10 @@ public class Case implements SleuthkitCase.ErrorObserver { * Create the case directory and its needed subfolders. * * @param caseDir Path to the case directory (typically base + case name) - * + * @param caseType The type of case, single-user or multi-user * @throws CaseActionException throw if could not create the case dir */ - static void createCaseDirectory(String caseDir) throws CaseActionException { + static void createCaseDirectory(String caseDir, CaseType caseType) throws CaseActionException { File caseDirF = new File(caseDir); if (caseDirF.exists()) { @@ -1079,17 +1127,25 @@ public class Case implements SleuthkitCase.ErrorObserver { } // create the folders inside the case directory - result = result && (new File(caseDir + File.separator + XMLCaseManagement.EXPORT_FOLDER_RELPATH)).mkdir() - && (new File(caseDir + File.separator + XMLCaseManagement.LOG_FOLDER_RELPATH)).mkdir() - && (new File(caseDir + File.separator + XMLCaseManagement.TEMP_FOLDER_RELPATH)).mkdir() - && (new File(caseDir + File.separator + XMLCaseManagement.CACHE_FOLDER_RELPATH)).mkdir(); + String hostClause = ""; + if (HOSTNAME == null || HOSTNAME.isEmpty()) { + setHostName(); + } + + if (caseType == CaseType.MULTI_USER_CASE) { + hostClause = File.separator + HOSTNAME; + } + result = result && (new File(caseDir + hostClause + File.separator + XMLCaseManagement.EXPORT_FOLDER_RELPATH)).mkdirs() + && (new File(caseDir + hostClause + File.separator + XMLCaseManagement.LOG_FOLDER_RELPATH)).mkdirs() + && (new File(caseDir + hostClause + File.separator + XMLCaseManagement.TEMP_FOLDER_RELPATH)).mkdirs() + && (new File(caseDir + hostClause + File.separator + XMLCaseManagement.CACHE_FOLDER_RELPATH)).mkdirs(); if (result == false) { throw new CaseActionException( NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreateCaseDir", caseDir)); } - final String modulesOutDir = caseDir + File.separator + getModulesOutputDirRelPath(); + final String modulesOutDir = caseDir + hostClause + File.separator + MODULEOUTPUT; result = new File(modulesOutDir).mkdir(); if (result == false) { throw new CaseActionException( @@ -1097,6 +1153,14 @@ public class Case implements SleuthkitCase.ErrorObserver { modulesOutDir)); } + final String reportsOutDir = caseDir + hostClause + File.separator + REPORTOUTPUT; + result = new File(reportsOutDir).mkdir(); + if (result == false) { + throw new CaseActionException( + NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.cantCreateReportsDir", + modulesOutDir)); + } + } catch (Exception e) { throw new CaseActionException( NbBundle.getMessage(Case.class, "Case.createCaseDir.exception.gen", caseDir), e); @@ -1171,7 +1235,7 @@ public class Case implements SleuthkitCase.ErrorObserver { * @param openedCase */ private static void checkSubFolders(Case openedCase) { - String modulesOutputDir = openedCase.getModulesOutputDirAbsPath(); + String modulesOutputDir = openedCase.getModulesDirectory(); File modulesOutputDirF = new File(modulesOutputDir); if (!modulesOutputDirF.exists()) { logger.log(Level.INFO, "Creating modules output dir for the case."); //NON-NLS @@ -1283,5 +1347,25 @@ public class Case implements SleuthkitCase.ErrorObserver { } return hasData; } - + + /** + * Set the host name variable. Sometimes the network can be finicky, so the + * answer returned by getHostName() could throw an exception or be null. + * Have it read the environment variable if getHostName() is unsuccessful. + * Also note that some calls into the Case class are static via Case.*, so + * anywhere we use HOSTNAME prior to a Case class being instantiated, we + * must call setHostName() first. + */ + private static void setHostName() { + try { + HOSTNAME = java.net.InetAddress.getLocalHost().getHostName(); + } catch (UnknownHostException ex) { + // getLocalHost().getHostName() can fail in some situations. + // Use environment variable if so. + HOSTNAME = System.getenv("COMPUTERNAME"); + } + if (HOSTNAME == null || HOSTNAME.isEmpty()) { + HOSTNAME = System.getenv("COMPUTERNAME"); + } + } } diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java index cda7baa037..c7cd604622 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/NewCaseWizardPanel1.java @@ -242,7 +242,7 @@ class NewCaseWizardPanel1 implements WizardDescriptor.ValidatingPanel absFiles; try { SleuthkitCase skCase = Case.getCurrentCase().getSleuthkitCase(); - absFiles = skCase.findAllFilesWhere("LOWER(name) LIKE '%call_history%' "); //NON-NLS //get exact file names + absFiles = skCase.findAllFilesWhere("LOWER(name) LIKE LOWER('%call_history%') "); //NON-NLS //get exact file names if (absFiles.isEmpty()) { return; } diff --git a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java index 1bcd4791c7..b178a11b24 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java +++ b/Core/src/org/sleuthkit/autopsy/modules/photoreccarver/PhotoRecCarverFileIngestModule.java @@ -142,8 +142,10 @@ final class PhotoRecCarverFileIngestModule implements FileIngestModule { } // Check that we have roughly enough disk space left to complete the operation + // Some network drives always return -1 for free disk space. + // In this case, expect enough space and move on. long freeDiskSpace = IngestServices.getInstance().getFreeDiskSpace(); - if ((file.getSize() * 2) > freeDiskSpace) { + if ((freeDiskSpace!=-1) && ((file.getSize() * 2) > freeDiskSpace)) { logger.log(Level.SEVERE, "PhotoRec error processing {0} with {1} Not enough space on primary disk to carve unallocated space.", // NON-NLS new Object[]{file.getName(), PhotoRecCarverIngestModuleFactory.getModuleName()}); // NON-NLS return IngestModule.ProcessResult.ERROR; @@ -278,7 +280,7 @@ final class PhotoRecCarverFileIngestModule implements FileIngestModule { * @throws org.sleuthkit.autopsy.ingest.IngestModule.IngestModuleException */ synchronized static Path createModuleOutputDirectoryForCase() throws IngestModule.IngestModuleException { - Path path = Paths.get(Case.getCurrentCase().getModulesOutputDirAbsPath(), PhotoRecCarverIngestModuleFactory.getModuleName()); + Path path = Paths.get(Case.getCurrentCase().getModulesDirectory(), PhotoRecCarverIngestModuleFactory.getModuleName()); try { Files.createDirectory(path); } diff --git a/Core/src/org/sleuthkit/autopsy/modules/sevenzip/SevenZipIngestModule.java b/Core/src/org/sleuthkit/autopsy/modules/sevenzip/SevenZipIngestModule.java index 9ccb53ae17..5acbb1dec4 100644 --- a/Core/src/org/sleuthkit/autopsy/modules/sevenzip/SevenZipIngestModule.java +++ b/Core/src/org/sleuthkit/autopsy/modules/sevenzip/SevenZipIngestModule.java @@ -105,8 +105,8 @@ public final class SevenZipIngestModule implements FileIngestModule { final Case currentCase = Case.getCurrentCase(); - moduleDirRelative = Case.getModulesOutputDirRelPath() + File.separator + ArchiveFileExtractorModuleFactory.getModuleName(); - moduleDirAbsolute = currentCase.getModulesOutputDirAbsPath() + File.separator + ArchiveFileExtractorModuleFactory.getModuleName(); + moduleDirRelative = currentCase.getModuleOutputDirectoryRelativePath() + File.separator + ArchiveFileExtractorModuleFactory.getModuleName(); + moduleDirAbsolute = currentCase.getModulesDirectory() + File.separator + ArchiveFileExtractorModuleFactory.getModuleName(); File unpackDirPathFile = new File(moduleDirAbsolute); diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportGenerator.java b/Core/src/org/sleuthkit/autopsy/report/ReportGenerator.java index 5099519499..9220227c0d 100644 --- a/Core/src/org/sleuthkit/autopsy/report/ReportGenerator.java +++ b/Core/src/org/sleuthkit/autopsy/report/ReportGenerator.java @@ -110,7 +110,7 @@ import org.sleuthkit.datamodel.TskData; DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss"); Date date = new Date(); String dateNoTime = dateFormat.format(date); - this.reportPath = currentCase.getCaseDirectory() + File.separator + REPORTS_DIR + File.separator + currentCase.getName() + " " + dateNoTime + File.separator; + this.reportPath = currentCase.getReportDirectory()+ File.separator + currentCase.getName() + " " + dateNoTime + File.separator; this.errorList = new ArrayList(); diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportWizardAction.java b/Core/src/org/sleuthkit/autopsy/report/ReportWizardAction.java index fcabfca3f2..b28539e7ac 100644 --- a/Core/src/org/sleuthkit/autopsy/report/ReportWizardAction.java +++ b/Core/src/org/sleuthkit/autopsy/report/ReportWizardAction.java @@ -89,17 +89,6 @@ public final class ReportWizardAction extends CallableSystemAction implements P if (evt.getPropertyName().equals(Case.Events.CURRENT_CASE.toString())) { Case newCase = (Case) evt.getNewValue(); setEnabled(newCase != null); - - // Make the cases' Reoports folder, if it doesn't exist - if (newCase != null) { - boolean exists = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).exists(); - if (!exists) { - boolean reportCreate = (new File(newCase.getCaseDirectory() + File.separator + "Reports")).mkdirs(); - if (!reportCreate) { - logger.log(Level.WARNING, "Could not create Reports directory for case. It does not exist."); //NON-NLS - } - } - } } } }); diff --git a/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshot.java b/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshot.java index 528a44bacf..7aa0f16eb3 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshot.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/actions/SaveSnapshot.java @@ -69,7 +69,7 @@ public class SaveSnapshot extends Action { //choose location/name DirectoryChooser fileChooser = new DirectoryChooser(); fileChooser.setTitle(NbBundle.getMessage(this.getClass(), "SaveSnapshot.fileChoose.title.text")); - fileChooser.setInitialDirectory(new File(Case.getCurrentCase().getCaseDirectory() + File.separator + "Reports")); // NON-NLS + fileChooser.setInitialDirectory(new File(Case.getCurrentCase().getReportDirectory())); File outFolder = fileChooser.showDialog(null); if (outFolder == null) { return; diff --git a/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java b/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java index 52af156e35..1595d3808f 100644 --- a/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java +++ b/Core/src/org/sleuthkit/autopsy/timeline/events/db/EventsRepository.java @@ -107,7 +107,7 @@ public class EventsRepository { public EventsRepository(ReadOnlyObjectProperty currentStateProperty) { //TODO: we should check that case is open, or get passed a case object/directory -jm - this.eventDB = EventDB.getEventDB(Case.getCurrentCase().getCaseDirectory()); + this.eventDB = EventDB.getEventDB(Case.getCurrentCase().getHostDirectory()); idToEventCache = CacheBuilder.newBuilder().maximumSize(5000L).expireAfterAccess(10, TimeUnit.MINUTES).removalListener((RemovalNotification rn) -> { //LOGGER.log(Level.INFO, "evicting event: {0}", rn.toString()); diff --git a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/PerCaseProperties.java b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/PerCaseProperties.java index 03448b3bd4..f73c72a49b 100644 --- a/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/PerCaseProperties.java +++ b/ImageGallery/src/org/sleuthkit/autopsy/imagegallery/PerCaseProperties.java @@ -88,7 +88,7 @@ class PerCaseProperties { * @return true if the config exists, false otherwise. */ public synchronized boolean configExists(String moduleName) { - File f = new File(c.getCaseDirectory() + File.separator + moduleName + ".properties"); + File f = new File(c.getHostDirectory() + File.separator + moduleName + ".properties"); // NON-NLS return f.exists(); } @@ -114,7 +114,7 @@ class PerCaseProperties { * file doesn't exist. */ private synchronized String getPropertyPath(String moduleName) { - return c.getCaseDirectory() + File.separator + moduleName + ".properties"; //NON-NLS + return c.getHostDirectory() + File.separator + moduleName + ".properties"; //NON-NLS } /** diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 01a87bd7eb..cf2748b729 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -639,7 +639,7 @@ public class Server { logger.log(Level.INFO, "Validating keyword search index location"); //NON-NLS String properIndexPath = getIndexDirPath(theCase); - String legacyIndexPath = theCase.getCaseDirectory() + String legacyIndexPath = theCase.getHostDirectory() + File.separator + "keywordsearch" + File.separator + "data"; //NON-NLS @@ -680,8 +680,8 @@ public class Server { * @return absolute path to index dir */ String getIndexDirPath(Case theCase) { - String indexDir = theCase.getModulesOutputDirAbsPath() - + File.separator + "keywordsearch" + File.separator + "data"; //NON-NLS + String indexDir = theCase.getModulesDirectory() + + File.separator + "keywordsearch" + File.separator + "data"; //NON-NLS return indexDir; } diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/RAImageIngestModule.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/RAImageIngestModule.java index 1600472f43..fac78fd3aa 100644 --- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/RAImageIngestModule.java +++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/RAImageIngestModule.java @@ -209,7 +209,7 @@ public final class RAImageIngestModule implements DataSourceIngestModule { * @return Path to directory */ protected static String getRAOutputPath(Case a_case, String mod) { - String tmpDir = a_case.getModulesOutputDirAbsPath() + File.separator + "RecentActivity" + File.separator + mod; //NON-NLS + String tmpDir = a_case.getModulesDirectory()+ File.separator + "RecentActivity" + File.separator + mod; //NON-NLS File dir = new File(tmpDir); if (dir.exists() == false) { dir.mkdirs(); diff --git a/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/ScalpelCarverIngestModule.java b/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/ScalpelCarverIngestModule.java index 7101c71dc4..b3400ec623 100644 --- a/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/ScalpelCarverIngestModule.java +++ b/ScalpelCarver/src/org/sleuthkit/autopsy/scalpel/ScalpelCarverIngestModule.java @@ -83,7 +83,7 @@ class ScalpelCarverIngestModule implements FileIngestModule { } // make sure module output directory exists; create it if it doesn't - moduleOutputDirPath = Case.getCurrentCase().getModulesOutputDirAbsPath() + moduleOutputDirPath = Case.getCurrentCase().getModulesDirectory() + File.separator + MODULE_OUTPUT_DIR_NAME; File moduleOutputDir = new File(moduleOutputDirPath); if (!moduleOutputDir.exists()) { diff --git a/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties b/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties index 256e682850..079b38ebea 100644 --- a/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties +++ b/branding/core/core.jar/org/netbeans/core/startup/Bundle.properties @@ -1,5 +1,5 @@ #Updated by build script -#Tue, 28 Apr 2015 18:19:58 -0400 +#Tue, 12 May 2015 16:43:39 -0400 LBL_splash_window_title=Starting Autopsy SPLASH_HEIGHT=314 SPLASH_WIDTH=538 diff --git a/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties b/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties index b8a2cebc1c..1619ec9c99 100644 --- a/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties +++ b/branding/modules/org-netbeans-core-windows.jar/org/netbeans/core/windows/view/ui/Bundle.properties @@ -1,5 +1,5 @@ #Updated by build script -#Tue, 28 Apr 2015 18:19:58 -0400 +#Tue, 12 May 2015 16:43:39 -0400 CTL_MainWindow_Title=Autopsy 3.1.2 CTL_MainWindow_Title_No_Project=Autopsy 3.1.2 diff --git a/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/ThunderbirdMboxFileIngestModule.java b/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/ThunderbirdMboxFileIngestModule.java index 790b395c75..08e353896b 100644 --- a/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/ThunderbirdMboxFileIngestModule.java +++ b/thunderbirdparser/src/org/sleuthkit/autopsy/thunderbirdparser/ThunderbirdMboxFileIngestModule.java @@ -252,8 +252,8 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule { } public static String getModuleOutputPath() { - String outDir = Case.getCurrentCase().getModulesOutputDirAbsPath() + File.separator - + EmailParserModuleFactory.getModuleName(); + String outDir = Case.getCurrentCase().getModulesDirectory() + + File.separator + EmailParserModuleFactory.getModuleName(); File dir = new File(outDir); if (dir.exists() == false) { dir.mkdirs(); @@ -262,8 +262,8 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule { } public static String getRelModuleOutputPath() { - return Case.getModulesOutputDirRelPath() + File.separator - + EmailParserModuleFactory.getModuleName(); + return Case.getCurrentCase().getModuleOutputDirectoryRelativePath() + + File.separator + EmailParserModuleFactory.getModuleName(); } /**