From 43d64d3bece7f944a802fb56cf3a97ef140ac90e Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Fri, 13 Sep 2013 13:34:42 -0400 Subject: [PATCH] Added GeneralIngestConfigurator support for tracking and checking enabled ingest modules --- .../casemodule/GeneralIngestConfigurator.java | 47 +++++++++++-------- .../autopsy/ingest/IngestDialogPanel.java | 6 +-- 2 files changed, 30 insertions(+), 23 deletions(-) diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java b/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java index ba486f33a6..58798d5573 100644 --- a/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java +++ b/Core/src/org/sleuthkit/autopsy/casemodule/GeneralIngestConfigurator.java @@ -21,18 +21,19 @@ package org.sleuthkit.autopsy.casemodule; import java.util.ArrayList; import java.util.List; +import javax.swing.JOptionPane; import javax.swing.JPanel; import org.openide.util.lookup.ServiceProvider; import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.ingest.IngestDialogPanel; -import static org.sleuthkit.autopsy.ingest.IngestDialogPanel.DISABLED_MOD; -import static org.sleuthkit.autopsy.ingest.IngestDialogPanel.PARSE_UNALLOC; import org.sleuthkit.autopsy.ingest.IngestManager; import org.sleuthkit.autopsy.ingest.IngestModuleAbstract; import org.sleuthkit.datamodel.Content; @ServiceProvider(service = IngestConfigurator.class) -public class GeneralIngestConfigurator implements IngestConfigurator { +public class GeneralIngestConfigurator implements IngestConfigurator { + public static final String ENABLED_INGEST_MODULES_KEY = "Enabled_Ingest_Modules"; + public static final String PARSE_UNALLOC_SPACE_KEY = "Process_Unallocated_Space"; private List contentToIngest; private IngestManager manager; private IngestDialogPanel ingestDialogPanel; @@ -79,21 +80,19 @@ public class GeneralIngestConfigurator implements IngestConfigurator { @Override public void save() { - // Save the user's configuration of the currently selected module. + // Save the user's configuration of the currently selected ingest module. IngestModuleAbstract currentModule = ingestDialogPanel.getCurrentIngestModule(); if (currentModule != null && currentModule.hasSimpleConfiguration()) { currentModule.saveSimpleConfiguration(); } - // Create a list of the modules the user wants to be disabled. - List disabledModules = IngestManager.getDefault().enumerateAllModules(); - disabledModules.removeAll(ingestDialogPanel.getModulesToStart()); - String disabledModulesCsv = moduleListToCsv(disabledModules); + // Save the user's configuration of the set of enabled ingest modules. + String enabledModulesCsvList = moduleListToCsv(ingestDialogPanel.getModulesToStart()); + ModuleSettings.setConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY, enabledModulesCsvList); // Save the user's general ingest configuration. - ModuleSettings.setConfigSetting(moduleContext, DISABLED_MOD, disabledModulesCsv); String processUnalloc = Boolean.toString(ingestDialogPanel.processUnallocSpaceEnabled()); - ModuleSettings.setConfigSetting(moduleContext, PARSE_UNALLOC, processUnalloc); + ModuleSettings.setConfigSetting(moduleContext, PARSE_UNALLOC_SPACE_KEY, processUnalloc); } @Override @@ -132,28 +131,38 @@ public class GeneralIngestConfigurator implements IngestConfigurator { String[] moduleNames = csv.split(", "); List allModules = IngestManager.getDefault().enumerateAllModules(); for (String moduleName : moduleNames) { + boolean moduleFound = false; for (IngestModuleAbstract module : allModules) { if (moduleName.equals(module.getName())) { modules.add(module); + moduleFound = true; break; } } + if (moduleFound == false) { + JOptionPane.showMessageDialog(null, "Failed to find and load " + moduleName + " module", "Ingest Module Not Found", JOptionPane.ERROR_MESSAGE); + } } return modules; } private void loadSettings() { - // get the csv list of disabled modules - String disabledModulesCsv = ModuleSettings.getConfigSetting(moduleContext, DISABLED_MOD); + loadEnabledIngestModulesSetting(); - // create a list of modules from it - List disabledModules = csvToModuleList(disabledModulesCsv); - - // tell the ingestDialogPanel to unselect these modules - ingestDialogPanel.setDisabledModules(disabledModules); - - boolean processUnalloc = Boolean.parseBoolean(ModuleSettings.getConfigSetting(moduleContext, PARSE_UNALLOC)); + boolean processUnalloc = Boolean.parseBoolean(ModuleSettings.getConfigSetting(moduleContext, PARSE_UNALLOC_SPACE_KEY)); ingestDialogPanel.setProcessUnallocSpaceEnabled(processUnalloc); } + + private void loadEnabledIngestModulesSetting() { + // If there is no enabled ingest modules setting for this user, default to enabling all + // of the ingest modules the IngestManager has loaded. + if (ModuleSettings.settingExists(moduleContext, ENABLED_INGEST_MODULES_KEY) == false) { + String defaultSetting = moduleListToCsv(IngestManager.getDefault().enumerateAllModules()); + ModuleSettings.setConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY, defaultSetting); + } + + String enabledModulesSetting = ModuleSettings.getConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY); + ingestDialogPanel.setEnabledIngestModules(csvToModuleList(enabledModulesSetting)); + } } diff --git a/Core/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java b/Core/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java index b5308da4ce..9130c1672a 100644 --- a/Core/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java +++ b/Core/src/org/sleuthkit/autopsy/ingest/IngestDialogPanel.java @@ -44,8 +44,6 @@ public class IngestDialogPanel extends javax.swing.JPanel { private IngestModuleAbstract currentModule; private ModulesTableModel tableModel; - public static final String DISABLED_MOD = "Disabled_Ingest_Modules"; - public static final String PARSE_UNALLOC = "Process_Unallocated_Space"; private String context; /** @@ -123,8 +121,8 @@ public class IngestDialogPanel extends javax.swing.JPanel { processUnallocCheckbox.setSelected(enabled); } - public void setDisabledModules(List disabledModules) { - tableModel.setUnselectedModules(disabledModules); + public void setEnabledIngestModules(List enabledModules) { + tableModel.setSelectedModules(enabledModules); } /**