mirror of
https://github.com/elisspace/autopsy.git
synced 2026-10-05 16:56:16 +00:00
Enable any central repo has sets the user personally creates by default.
This commit is contained in:
@@ -46,6 +46,7 @@ import org.sleuthkit.autopsy.centralrepository.datamodel.EamGlobalSet;
|
||||
import org.sleuthkit.autopsy.core.RuntimeProperties;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||
import org.sleuthkit.autopsy.modules.hashdatabase.HashLookupSettings.HashDbInfo;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
@@ -70,6 +71,8 @@ public class HashDbManager implements PropertyChangeListener {
|
||||
PropertyChangeSupport changeSupport = new PropertyChangeSupport(HashDbManager.class);
|
||||
private static final Logger logger = Logger.getLogger(HashDbManager.class.getName());
|
||||
private boolean allDatabasesLoadedCorrectly = false;
|
||||
private static final String CENTRAL_REPO_HASH_SET_SETTINGS = "CentralRepoHashSets";
|
||||
private static final String CENTRAL_REPO_HASH_SET_LOCAL_KEY = "LocallyCreatedHashsets";
|
||||
|
||||
/**
|
||||
* Property change event support In events: For both of these enums, the old
|
||||
@@ -697,6 +700,44 @@ public class HashDbManager implements PropertyChangeListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Save any newly created central repo databases to the properties file.
|
||||
* @param newHashSets
|
||||
*/
|
||||
static void saveNewCentralRepoDatabases(List<CentralRepoHashDb> newHashSets){
|
||||
|
||||
if(! newHashSets.isEmpty()){
|
||||
String newDbs = "";
|
||||
for(CentralRepoHashDb db:newHashSets){
|
||||
newDbs += makeCentralRepoHashSetString(db);
|
||||
}
|
||||
String oldSetting = ModuleSettings.getConfigSetting(CENTRAL_REPO_HASH_SET_SETTINGS, CENTRAL_REPO_HASH_SET_LOCAL_KEY);
|
||||
String newSetting = "";
|
||||
if((oldSetting != null) && (! oldSetting.isEmpty())){
|
||||
newSetting = oldSetting;
|
||||
}
|
||||
newSetting += newDbs;
|
||||
ModuleSettings.setConfigSetting(CENTRAL_REPO_HASH_SET_SETTINGS, CENTRAL_REPO_HASH_SET_LOCAL_KEY, newSetting);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a given central repository hash set was created on this machine.
|
||||
* @return true if it was created on this machine, false otherwise
|
||||
*/
|
||||
static boolean centralRepoWasCreatedLocally(CentralRepoHashDb db){
|
||||
String setting = ModuleSettings.getConfigSetting(CENTRAL_REPO_HASH_SET_SETTINGS, CENTRAL_REPO_HASH_SET_LOCAL_KEY);
|
||||
String dbStr = makeCentralRepoHashSetString(db);
|
||||
if(setting == null){
|
||||
return false;
|
||||
}
|
||||
return setting.contains(dbStr);
|
||||
}
|
||||
|
||||
private static String makeCentralRepoHashSetString(CentralRepoHashDb db){
|
||||
return "|" + db.getReferenceSetID() + "." + db.getHashSetName() + "." + db.getVersion() + "|";
|
||||
}
|
||||
|
||||
private boolean hashDbInfoIsNew(HashDbInfo dbInfo){
|
||||
for(HashDatabase db:this.hashSets){
|
||||
@@ -1258,8 +1299,8 @@ public class HashDbManager implements PropertyChangeListener {
|
||||
|
||||
@Override
|
||||
public boolean getDefaultSearchDuringIngest(){
|
||||
// Central repo hash sets are off by default
|
||||
return false;
|
||||
// Central repo hash sets are off by default, unless created on this machine
|
||||
return centralRepoWasCreatedLocally(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -27,7 +27,6 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JComponent;
|
||||
import javax.swing.JLabel;
|
||||
import javax.swing.JOptionPane;
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.ListSelectionModel;
|
||||
@@ -66,7 +65,7 @@ public final class HashLookupSettingsPanel extends IngestModuleGlobalSettingsPan
|
||||
.getMessage(HashLookupSettingsPanel.class, "HashDbConfigPanel.errorGettingIndexStatusText");
|
||||
private final HashDbManager hashSetManager = HashDbManager.getInstance();
|
||||
private final HashSetTableModel hashSetTableModel = new HashSetTableModel();
|
||||
private final List<Integer> newReferenceSetIDs = new ArrayList<>();
|
||||
private final List<CentralRepoHashDb> newReferenceSets = new ArrayList<>();
|
||||
|
||||
public HashLookupSettingsPanel() {
|
||||
initComponents();
|
||||
@@ -328,7 +327,8 @@ public final class HashLookupSettingsPanel extends IngestModuleGlobalSettingsPan
|
||||
|
||||
try {
|
||||
hashSetManager.save();
|
||||
newReferenceSetIDs.clear();
|
||||
HashDbManager.getInstance().saveNewCentralRepoDatabases(newReferenceSets);
|
||||
newReferenceSets.clear();
|
||||
} catch (HashDbManager.HashDbManagerException ex) {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
JOptionPane.showMessageDialog(null, Bundle.HashLookupSettingsPanel_saveFail_message(), Bundle.HashLookupSettingsPanel_saveFail_title(), JOptionPane.ERROR_MESSAGE);
|
||||
@@ -355,10 +355,10 @@ public final class HashLookupSettingsPanel extends IngestModuleGlobalSettingsPan
|
||||
*/
|
||||
if (IngestManager.getInstance().isIngestRunning() == false) {
|
||||
// Remove any new central repo hash sets from the database
|
||||
for(int refID:newReferenceSetIDs){
|
||||
for(CentralRepoHashDb db:newReferenceSets){
|
||||
try{
|
||||
if(EamDb.isEnabled()){
|
||||
EamDb.getInstance().deleteReferenceSet(refID);
|
||||
EamDb.getInstance().deleteReferenceSet(db.getReferenceSetID());
|
||||
} else {
|
||||
// This is the case where the user imported a database, then switched over to the central
|
||||
// repo panel and disabled it before cancelling. We can't delete the database at this point.
|
||||
@@ -368,6 +368,7 @@ public final class HashLookupSettingsPanel extends IngestModuleGlobalSettingsPan
|
||||
Logger.getLogger(HashLookupSettingsPanel.class.getName()).log(Level.SEVERE, "Error reverting central repository hash sets", ex); //NON-NLS
|
||||
}
|
||||
}
|
||||
newReferenceSets.clear();
|
||||
|
||||
HashDbManager.getInstance().loadLastSavedConfiguration();
|
||||
}
|
||||
@@ -922,8 +923,8 @@ public final class HashLookupSettingsPanel extends IngestModuleGlobalSettingsPan
|
||||
HashDatabase hashDb = new HashDbCreateDatabaseDialog().getHashDatabase();
|
||||
if (null != hashDb) {
|
||||
if(hashDb instanceof CentralRepoHashDb){
|
||||
int newDbIndex = ((CentralRepoHashDb)hashDb).getReferenceSetID();
|
||||
newReferenceSetIDs.add(newDbIndex);
|
||||
CentralRepoHashDb crDb = (CentralRepoHashDb)hashDb;
|
||||
newReferenceSets.add(crDb);
|
||||
}
|
||||
|
||||
hashSetTableModel.refreshModel();
|
||||
@@ -976,8 +977,8 @@ public final class HashLookupSettingsPanel extends IngestModuleGlobalSettingsPan
|
||||
HashDatabase hashDb = new HashDbImportDatabaseDialog().getHashDatabase();
|
||||
if (null != hashDb) {
|
||||
if(hashDb instanceof CentralRepoHashDb){
|
||||
int newReferenceSetID = ((CentralRepoHashDb)hashDb).getReferenceSetID();
|
||||
newReferenceSetIDs.add(newReferenceSetID);
|
||||
CentralRepoHashDb crDb = (CentralRepoHashDb)hashDb;
|
||||
newReferenceSets.add(crDb);
|
||||
}
|
||||
|
||||
hashSetTableModel.refreshModel();
|
||||
|
||||
Reference in New Issue
Block a user