Merge pull request #2817 from wschaeferB/2603-MultiUserDelete

2603 multi user delete
This commit is contained in:
Richard Cordovano 2017-06-05 14:45:30 -04:00 committed by GitHub
commit 4171b79b64
15 changed files with 162 additions and 195 deletions

View File

@ -3,6 +3,7 @@ CTL_AddImageButton=Add Data Source
CTL_CaseCloseAct=Close Case CTL_CaseCloseAct=Close Case
CTL_CaseNewAction=New Case... CTL_CaseNewAction=New Case...
CTL_CasePropertiesAction=Case Properties... CTL_CasePropertiesAction=Case Properties...
CTL_CaseDeleteAction=Delete Case
CTL_OpenAction=Open Case... CTL_OpenAction=Open Case...
Menu/Case/OpenRecentCase=Open Recent Case Menu/Case/OpenRecentCase=Open Recent Case
CTL_CaseDeleteAction=Delete Case CTL_CaseDeleteAction=Delete Case
@ -235,5 +236,4 @@ CasePropertiesPanel.lbDbName.text=Database Name:
CasePropertiesPanel.lbDbType.text=Case Type: CasePropertiesPanel.lbDbType.text=Case Type:
CasePropertiesPanel.examinerLabel.text=Examiner: CasePropertiesPanel.examinerLabel.text=Examiner:
CasePropertiesPanel.caseNumberLabel.text=Case Number: CasePropertiesPanel.caseNumberLabel.text=Case Number:
CasePropertiesPanel.deleteCaseButton.text=Delete Case
LocalDiskPanel.changeDatabasePathCheckbox.text=Update case to use VHD file upon completion LocalDiskPanel.changeDatabasePathCheckbox.text=Update case to use VHD file upon completion

View File

@ -2,6 +2,7 @@ CTL_AddImageButton=\u30c7\u30fc\u30bf\u30bd\u30fc\u30b9\u3092\u8ffd\u52a0
CTL_CaseCloseAct=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u308b CTL_CaseCloseAct=\u30b1\u30fc\u30b9\u3092\u9589\u3058\u308b
CTL_CaseNewAction=\u65b0\u898f\u30b1\u30fc\u30b9... CTL_CaseNewAction=\u65b0\u898f\u30b1\u30fc\u30b9...
CTL_CasePropertiesAction=\u30b1\u30fc\u30b9\u30d7\u30ed\u30d1\u30c6\u30a3... CTL_CasePropertiesAction=\u30b1\u30fc\u30b9\u30d7\u30ed\u30d1\u30c6\u30a3...
CTL_CaseDeleteAction=\u30b1\u30fc\u30b9\u3092\u524a\u9664
CTL_OpenAction=\u30b1\u30fc\u30b9\u3092\u958b\u304f... CTL_OpenAction=\u30b1\u30fc\u30b9\u3092\u958b\u304f...
Menu/Case/OpenRecentCase=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f Menu/Case/OpenRecentCase=\u6700\u8fd1\u958b\u3044\u305f\u30b1\u30fc\u30b9\u3092\u958b\u304f
CTL_CaseDeleteAction=\u30b1\u30fc\u30b9\u3092\u524a\u9664 CTL_CaseDeleteAction=\u30b1\u30fc\u30b9\u3092\u524a\u9664
@ -195,4 +196,3 @@ CasePropertiesPanel.lbDbName.text=\u30c7\u30fc\u30bf\u30d9\u30fc\u30b9\u540d\uff
CasePropertiesPanel.lbDbType.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\uff1a CasePropertiesPanel.lbDbType.text=\u30b1\u30fc\u30b9\u30bf\u30a4\u30d7\uff1a
CasePropertiesPanel.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a CasePropertiesPanel.examinerLabel.text=\u8abf\u67fb\u62c5\u5f53\u8005\uff1a
CasePropertiesPanel.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a CasePropertiesPanel.caseNumberLabel.text=\u30b1\u30fc\u30b9\u756a\u53f7\uff1a
CasePropertiesPanel.deleteCaseButton.text=\u30b1\u30fc\u30b9\u3092\u524a\u9664

View File

@ -624,7 +624,7 @@ public class Case {
* First, acquire an exclusive case directory lock. The case * First, acquire an exclusive case directory lock. The case
* cannot be deleted if another node has it open. * cannot be deleted if another node has it open.
*/ */
progressIndicator.start(Bundle.Case_progressMessage_checkingForOtherUser()); progressIndicator.progress(Bundle.Case_progressMessage_checkingForOtherUser());
try (CoordinationService.Lock dirLock = CoordinationService.getInstance().tryGetExclusiveLock(CategoryNode.CASES, metadata.getCaseDirectory())) { try (CoordinationService.Lock dirLock = CoordinationService.getInstance().tryGetExclusiveLock(CategoryNode.CASES, metadata.getCaseDirectory())) {
assert (null != dirLock); assert (null != dirLock);
deleteCase(metadata, progressIndicator); deleteCase(metadata, progressIndicator);

View File

@ -19,6 +19,7 @@
package org.sleuthkit.autopsy.casemodule; package org.sleuthkit.autopsy.casemodule;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.beans.PropertyChangeEvent;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.logging.Level; import java.util.logging.Level;
import javax.swing.Action; import javax.swing.Action;
@ -31,6 +32,7 @@ import org.openide.util.HelpCtx;
import org.openide.util.NbBundle; import org.openide.util.NbBundle;
import org.openide.util.NbBundle.Messages; import org.openide.util.NbBundle.Messages;
import org.openide.util.actions.CallableSystemAction; import org.openide.util.actions.CallableSystemAction;
import org.sleuthkit.autopsy.core.UserPreferences;
import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.Logger;
/** /**
@ -47,6 +49,9 @@ final class CaseDeleteAction extends CallableSystemAction {
CaseDeleteAction() { CaseDeleteAction() {
putValue(Action.NAME, NbBundle.getMessage(CaseDeleteAction.class, "CTL_CaseDeleteAction")); putValue(Action.NAME, NbBundle.getMessage(CaseDeleteAction.class, "CTL_CaseDeleteAction"));
this.setEnabled(false); this.setEnabled(false);
Case.addEventSubscriber(Case.Events.CURRENT_CASE.toString(), (PropertyChangeEvent evt) -> {
setEnabled(null != evt.getNewValue() && UserPreferences.getMode() != UserPreferences.SelectedMode.REVIEW);
});
} }
@Override @Override
@ -95,10 +100,8 @@ final class CaseDeleteAction extends CallableSystemAction {
JOptionPane.ERROR_MESSAGE); JOptionPane.ERROR_MESSAGE);
} }
/* /*
* Close the Case Properties dialog that is the parent * Re-open the startup window.
* of the Delete button that invokes this action.
*/ */
CasePropertiesAction.closeCasePropertiesWindow();
StartupWindowProvider.getInstance().open(); StartupWindowProvider.getInstance().open();
} }
}.execute(); }.execute();

View File

@ -79,11 +79,4 @@ final class CasePropertiesAction extends CallableSystemAction {
public HelpCtx getHelpCtx() { public HelpCtx getHelpCtx() {
return HelpCtx.DEFAULT_HELP; return HelpCtx.DEFAULT_HELP;
} }
static void closeCasePropertiesWindow() {
if (null != casePropertiesDialog) {
casePropertiesDialog.setVisible(false);
casePropertiesDialog = null;
}
}
} }

View File

@ -33,12 +33,12 @@
<Layout> <Layout>
<DimensionLayout dim="0"> <DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Component id="jPanel1" max="32767" attributes="0"/> <Component id="jPanel1" alignment="0" max="32767" attributes="0"/>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
<DimensionLayout dim="1"> <DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0"> <Group type="103" groupAlignment="0" attributes="0">
<Component id="jPanel1" min="-2" max="-2" attributes="0"/> <Component id="jPanel1" min="-2" pref="169" max="-2" attributes="0"/>
</Group> </Group>
</DimensionLayout> </DimensionLayout>
</Layout> </Layout>
@ -82,10 +82,6 @@
<Component id="crDateField" alignment="0" max="32767" attributes="0"/> <Component id="crDateField" alignment="0" max="32767" attributes="0"/>
</Group> </Group>
</Group> </Group>
<Group type="102" alignment="1" attributes="0">
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
<Component id="deleteCaseButton" min="-2" pref="106" max="-2" attributes="1"/>
</Group>
</Group> </Group>
<EmptySpace min="-2" max="-2" attributes="0"/> <EmptySpace min="-2" max="-2" attributes="0"/>
</Group> </Group>
@ -138,9 +134,7 @@
</Group> </Group>
<Component id="caseNumberLabel" min="-2" max="-2" attributes="0"/> <Component id="caseNumberLabel" min="-2" max="-2" attributes="0"/>
</Group> </Group>
<EmptySpace min="-2" pref="10" max="-2" attributes="0"/> <EmptySpace min="-2" pref="44" max="-2" attributes="0"/>
<Component id="deleteCaseButton" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group> </Group>
<Group type="103" rootIndex="1" groupAlignment="0" attributes="0"> <Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0"> <Group type="102" alignment="0" attributes="0">
@ -216,21 +210,6 @@
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="updateCaseNameButtonActionPerformed"/> <EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="updateCaseNameButtonActionPerformed"/>
</Events> </Events>
</Component> </Component>
<Component class="javax.swing.JButton" name="deleteCaseButton">
<Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">
<FontInfo relative="true">
<Font bold="false" component="deleteCaseButton" property="font" relativeSize="false" size="11"/>
</FontInfo>
</Property>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="org/sleuthkit/autopsy/casemodule/Bundle.properties" key="CasePropertiesPanel.deleteCaseButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="deleteCaseButtonActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="caseNumberLabel"> <Component class="javax.swing.JLabel" name="caseNumberLabel">
<Properties> <Properties>
<Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor"> <Property name="font" type="java.awt.Font" editor="org.netbeans.modules.form.editors2.FontEditor">

View File

@ -21,7 +21,6 @@ package org.sleuthkit.autopsy.casemodule;
import java.nio.file.Paths; import java.nio.file.Paths;
import java.util.logging.Level; import java.util.logging.Level;
import org.openide.util.NbBundle; import org.openide.util.NbBundle;
import org.openide.util.actions.CallableSystemAction;
import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
@ -66,7 +65,6 @@ class CasePropertiesPanel extends javax.swing.JPanel {
} }
Case.CaseType caseType = theCase.getCaseType(); Case.CaseType caseType = theCase.getCaseType();
caseTypeField.setText(caseType.getLocalizedDisplayName()); caseTypeField.setText(caseType.getLocalizedDisplayName());
deleteCaseButton.setEnabled(Case.CaseType.SINGLE_USER_CASE == caseType);
} }
/** /**
@ -95,7 +93,6 @@ class CasePropertiesPanel extends javax.swing.JPanel {
caseDirLabel = new javax.swing.JLabel(); caseDirLabel = new javax.swing.JLabel();
caseNameTextField = new javax.swing.JTextField(); caseNameTextField = new javax.swing.JTextField();
updateCaseNameButton = new javax.swing.JButton(); updateCaseNameButton = new javax.swing.JButton();
deleteCaseButton = new javax.swing.JButton();
caseNumberLabel = new javax.swing.JLabel(); caseNumberLabel = new javax.swing.JLabel();
examinerLabel = new javax.swing.JLabel(); examinerLabel = new javax.swing.JLabel();
lbDbType = new javax.swing.JLabel(); lbDbType = new javax.swing.JLabel();
@ -131,14 +128,6 @@ class CasePropertiesPanel extends javax.swing.JPanel {
} }
}); });
deleteCaseButton.setFont(deleteCaseButton.getFont().deriveFont(deleteCaseButton.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
deleteCaseButton.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.deleteCaseButton.text")); // NOI18N
deleteCaseButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
deleteCaseButtonActionPerformed(evt);
}
});
caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11)); caseNumberLabel.setFont(caseNumberLabel.getFont().deriveFont(caseNumberLabel.getFont().getStyle() & ~java.awt.Font.BOLD, 11));
caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNumberLabel.text")); // NOI18N caseNumberLabel.setText(org.openide.util.NbBundle.getMessage(CasePropertiesPanel.class, "CasePropertiesPanel.caseNumberLabel.text")); // NOI18N
@ -187,10 +176,7 @@ class CasePropertiesPanel extends javax.swing.JPanel {
.addComponent(caseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) .addComponent(caseNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(updateCaseNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)) .addComponent(updateCaseNameButton, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(crDateField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) .addComponent(crDateField, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(deleteCaseButton, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap()) .addContainerGap())
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createSequentialGroup()
@ -230,9 +216,7 @@ class CasePropertiesPanel extends javax.swing.JPanel {
.addComponent(lbDbName) .addComponent(lbDbName)
.addComponent(dbNameField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))) .addComponent(dbNameField, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(caseNumberLabel)) .addComponent(caseNumberLabel))
.addGap(10, 10, 10) .addGap(44, 44, 44))
.addComponent(deleteCaseButton)
.addContainerGap())
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup() .addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap() .addContainerGap()
@ -248,7 +232,7 @@ class CasePropertiesPanel extends javax.swing.JPanel {
); );
layout.setVerticalGroup( layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
); );
}// </editor-fold>//GEN-END:initComponents }// </editor-fold>//GEN-END:initComponents
@ -285,10 +269,6 @@ class CasePropertiesPanel extends javax.swing.JPanel {
} }
}//GEN-LAST:event_updateCaseNameButtonActionPerformed }//GEN-LAST:event_updateCaseNameButtonActionPerformed
private void deleteCaseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_deleteCaseButtonActionPerformed
CallableSystemAction.get(CaseDeleteAction.class).actionPerformed(evt);
}//GEN-LAST:event_deleteCaseButtonActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel caseDirField; private javax.swing.JLabel caseDirField;
@ -301,7 +281,6 @@ class CasePropertiesPanel extends javax.swing.JPanel {
private javax.swing.JLabel crDateField; private javax.swing.JLabel crDateField;
private javax.swing.JLabel crDateLabel; private javax.swing.JLabel crDateLabel;
private javax.swing.JLabel dbNameField; private javax.swing.JLabel dbNameField;
private javax.swing.JButton deleteCaseButton;
private javax.swing.JLabel examinerField; private javax.swing.JLabel examinerField;
private javax.swing.JLabel examinerLabel; private javax.swing.JLabel examinerLabel;
private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel1;

View File

@ -30,6 +30,7 @@ import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec; import javax.crypto.spec.PBEParameterSpec;
import org.openide.util.NbBundle; import org.openide.util.NbBundle;
import org.openide.util.NbPreferences; import org.openide.util.NbPreferences;
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
import org.sleuthkit.autopsy.coreutils.PlatformUtil; import org.sleuthkit.autopsy.coreutils.PlatformUtil;
import org.sleuthkit.datamodel.CaseDbConnectionInfo; import org.sleuthkit.datamodel.CaseDbConnectionInfo;
import org.sleuthkit.datamodel.TskData.DbType; import org.sleuthkit.datamodel.TskData.DbType;
@ -68,11 +69,42 @@ public final class UserPreferences {
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;
private static final String APP_NAME = "AppName"; private static final String APP_NAME = "AppName";
public static final String SETTINGS_PROPERTIES = "AutoIngest";
private static final String MODE = "AutopsyMode"; // NON-NLS
// Prevent instantiation. // Prevent instantiation.
private UserPreferences() { private UserPreferences() {
} }
public enum SelectedMode {
STANDALONE,
AUTOINGEST,
REVIEW
};
/**
* Get mode from persistent storage.
*
* @return SelectedMode Selected mode.
*/
public static SelectedMode getMode() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MODE)) {
int ordinal = Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MODE));
return UserPreferences.SelectedMode.values()[ordinal];
}
return UserPreferences.SelectedMode.STANDALONE;
}
/**
* Set mode to persistent storage.
*
* @param mode Selected mode.
*/
public static void setMode(SelectedMode mode) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MODE, Integer.toString(mode.ordinal()));
}
/** /**
* Reload all preferences from disk. This is only needed if the preferences * Reload all preferences from disk. This is only needed if the preferences
* file is being directly modified on disk while Autopsy is running. * file is being directly modified on disk while Autopsy is running.
@ -160,7 +192,9 @@ public final class UserPreferences {
/** /**
* Reads persisted case database connection info. * Reads persisted case database connection info.
*
* @return An object encapsulating the database connection info. * @return An object encapsulating the database connection info.
*
* @throws org.sleuthkit.autopsy.core.UserPreferencesException * @throws org.sleuthkit.autopsy.core.UserPreferencesException
*/ */
public static CaseDbConnectionInfo getDatabaseConnectionInfo() throws UserPreferencesException { public static CaseDbConnectionInfo getDatabaseConnectionInfo() throws UserPreferencesException {
@ -183,6 +217,7 @@ public final class UserPreferences {
* *
* @param connectionInfo An object encapsulating the database connection * @param connectionInfo An object encapsulating the database connection
* info. * info.
*
* @throws org.sleuthkit.autopsy.core.UserPreferencesException * @throws org.sleuthkit.autopsy.core.UserPreferencesException
*/ */
public static void setDatabaseConnectionInfo(CaseDbConnectionInfo connectionInfo) throws UserPreferencesException { public static void setDatabaseConnectionInfo(CaseDbConnectionInfo connectionInfo) throws UserPreferencesException {
@ -224,6 +259,7 @@ public final class UserPreferences {
* Persists message service connection info. * Persists message service connection info.
* *
* @param info An object encapsulating the message service info. * @param info An object encapsulating the message service info.
*
* @throws org.sleuthkit.autopsy.core.UserPreferencesException * @throws org.sleuthkit.autopsy.core.UserPreferencesException
*/ */
public static void setMessageServiceConnectionInfo(MessageServiceConnectionInfo info) throws UserPreferencesException { public static void setMessageServiceConnectionInfo(MessageServiceConnectionInfo info) throws UserPreferencesException {
@ -237,6 +273,7 @@ public final class UserPreferences {
* Reads persisted message service connection info. * Reads persisted message service connection info.
* *
* @return An object encapsulating the message service info. * @return An object encapsulating the message service info.
*
* @throws org.sleuthkit.autopsy.core.UserPreferencesException * @throws org.sleuthkit.autopsy.core.UserPreferencesException
*/ */
public static MessageServiceConnectionInfo getMessageServiceConnectionInfo() throws UserPreferencesException { public static MessageServiceConnectionInfo getMessageServiceConnectionInfo() throws UserPreferencesException {
@ -305,9 +342,10 @@ public final class UserPreferences {
/** /**
* Get the display name for this program * Get the display name for this program
*
* @return Name of this program * @return Name of this program
*/ */
public static String getAppName(){ public static String getAppName() {
return preferences.get(APP_NAME, "Autopsy"); return preferences.get(APP_NAME, "Autopsy");
} }
@ -316,11 +354,10 @@ public final class UserPreferences {
* *
* @param name Display name * @param name Display name
*/ */
public static void setAppName(String name){ public static void setAppName(String name) {
preferences.put(APP_NAME, name); preferences.put(APP_NAME, name);
} }
/** /**
* Provides ability to convert text to hex text. * Provides ability to convert text to hex text.
*/ */

View File

@ -3,8 +3,8 @@
<filesystem> <filesystem>
<!-- ====================================================== <!-- ======================================================
General General
====================================================== --> ====================================================== -->
<attr name="Toolbars\Case\org-sleuthkit-autopsy-casemodule-CaseCloseAction.instance\iconBase" stringvalue="org/sleuthkit/autopsy/images/close-icon.gif"/> <attr name="Toolbars\Case\org-sleuthkit-autopsy-casemodule-CaseCloseAction.instance\iconBase" stringvalue="org/sleuthkit/autopsy/images/close-icon.gif"/>
<attr name="Menu\Case\org-netbeans-modules-print-action-PageSetupAction.shadow_hidden\position" intvalue="300"/> <attr name="Menu\Case\org-netbeans-modules-print-action-PageSetupAction.shadow_hidden\position" intvalue="300"/>
<attr name="Menu\Case\org-netbeans-modules-print-action-PrintAction.shadow_hidden\position" intvalue="500"/> <attr name="Menu\Case\org-netbeans-modules-print-action-PrintAction.shadow_hidden\position" intvalue="500"/>
@ -36,8 +36,8 @@
<!-- ====================================================== <!-- ======================================================
Actions Actions
====================================================== --> ====================================================== -->
<folder name="Actions"> <folder name="Actions">
<folder name="Case"> <folder name="Case">
<file name="org-sleuthkit-autopsy-casemodule-AddImageAction.instance"/> <file name="org-sleuthkit-autopsy-casemodule-AddImageAction.instance"/>
@ -48,6 +48,7 @@
<attr name="noIconInMenu" boolvalue="false"/> <attr name="noIconInMenu" boolvalue="false"/>
</file> </file>
<file name="org-sleuthkit-autopsy-casemodule-CasePropertiesAction.instance"/> <file name="org-sleuthkit-autopsy-casemodule-CasePropertiesAction.instance"/>
<file name="org-sleuthkit-autopsy-casemodule-CaseDeleteAction.instance"/>
<file name="org-sleuthkit-autopsy-casemodule-CaseOpenAction.instance"> <file name="org-sleuthkit-autopsy-casemodule-CaseOpenAction.instance">
<attr name="delegate" newvalue="org.sleuthkit.autopsy.casemodule.CaseOpenAction"/> <attr name="delegate" newvalue="org.sleuthkit.autopsy.casemodule.CaseOpenAction"/>
<attr name="displayName" bundlevalue="org.sleuthkit.autopsy.casemodule.Bundle#CTL_OpenAction"/> <attr name="displayName" bundlevalue="org.sleuthkit.autopsy.casemodule.Bundle#CTL_OpenAction"/>
@ -132,15 +133,15 @@
<file name="org-sleuthkit-autopsy-actions-OpenLogFolder.instance_hidden"/> <file name="org-sleuthkit-autopsy-actions-OpenLogFolder.instance_hidden"/>
</folder> </folder>
<folder name="Toolbars"> <folder name="Toolbars">
<folder name="QuickSearch_hidden"/> <folder name="QuickSearch_hidden"/>
</folder> </folder>
</folder> </folder>
<!-- ====================================================== <!-- ======================================================
Menu Menu
====================================================== --> ====================================================== -->
<folder name="Menu"> <folder name="Menu">
<file name="GoTo_hidden"/> <file name="GoTo_hidden"/>
<file name="Reports_hidden"/> <file name="Reports_hidden"/>
@ -166,6 +167,10 @@
<attr name="originalFile" stringvalue="Actions/Case/org-sleuthkit-autopsy-casemodule-CaseCloseAction.instance"/> <attr name="originalFile" stringvalue="Actions/Case/org-sleuthkit-autopsy-casemodule-CaseCloseAction.instance"/>
<attr name="position" intvalue="103"/> <attr name="position" intvalue="103"/>
</file> </file>
<file name="org-sleuthkit-autopsy-casemodule-CaseDeleteAction.shadow">
<attr name="originalFile" stringvalue="Actions/Case/org-sleuthkit-autopsy-casemodule-CaseDeleteAction.instance"/>
<attr name="position" intvalue="104"/>
</file>
<file name="org-sleuthkit-autopsy-casemodule-AddImage-separatorBefore.instance"> <file name="org-sleuthkit-autopsy-casemodule-AddImage-separatorBefore.instance">
<attr name="instanceClass" stringvalue="javax.swing.JSeparator"/> <attr name="instanceClass" stringvalue="javax.swing.JSeparator"/>
<attr name="position" intvalue="200"/> <attr name="position" intvalue="200"/>
@ -279,8 +284,8 @@
<!-- ====================================================== <!-- ======================================================
Services Services
====================================================== --> ====================================================== -->
<folder name="Services"> <folder name="Services">
<folder name="AutoupdateType"> <folder name="AutoupdateType">
<file name="org_sleuthkit_autopsy_core_update_center.settings" url="org_sleuthkit_autopsy_core_update_centerSettings.xml"> <file name="org_sleuthkit_autopsy_core_update_center.settings" url="org_sleuthkit_autopsy_core_update_centerSettings.xml">
@ -298,7 +303,7 @@
<attr name="instanceCreate" methodvalue="org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent.getDefault"/> <attr name="instanceCreate" methodvalue="org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent.getDefault"/>
<attr name="position" intvalue="125"/> <attr name="position" intvalue="125"/>
</file> </file>
<file name="org-sleuthkit-autopsy-directorytree-DirectoryTreeTopComponent2.instance"> <file name="org-sleuthkit-autopsy-directorytree-DirectoryTreeTopComponent2.instance">
<attr name="instanceOf" stringvalue="org.sleuthkit.autopsy.corecomponentinterfaces.BlackboardResultViewer"/> <attr name="instanceOf" stringvalue="org.sleuthkit.autopsy.corecomponentinterfaces.BlackboardResultViewer"/>
<attr name="instanceCreate" methodvalue="org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent.getDefault"/> <attr name="instanceCreate" methodvalue="org.sleuthkit.autopsy.directorytree.DirectoryTreeTopComponent.getDefault"/>
<attr name="position" intvalue="150"/> <attr name="position" intvalue="150"/>
@ -356,8 +361,8 @@
<!-- ====================================================== <!-- ======================================================
Toolbars Toolbars
====================================================== --> ====================================================== -->
<folder name="Toolbars"> <folder name="Toolbars">
<file name="Clipboard_hidden"/> <file name="Clipboard_hidden"/>
<file name="Memory_hidden"/> <file name="Memory_hidden"/>
@ -408,8 +413,8 @@
<!-- ====================================================== <!-- ======================================================
Shortcuts Shortcuts
====================================================== --> ====================================================== -->
<folder name="Shortcuts"> <folder name="Shortcuts">
<file name="D-N.shadow"> <file name="D-N.shadow">
<attr name="originalFile" stringvalue="Actions/Case/org-sleuthkit-autopsy-casemodule-CaseNewAction.instance"/> <attr name="originalFile" stringvalue="Actions/Case/org-sleuthkit-autopsy-casemodule-CaseNewAction.instance"/>
@ -422,8 +427,8 @@
<!-- ====================================================== <!-- ======================================================
Windows2 Windows2
====================================================== --> ====================================================== -->
<folder name="Windows2"> <folder name="Windows2">
<folder name="Components"> <folder name="Components">
<file name="DirectoryTreeTopComponent.settings" url="DirectoryTreeTopComponentSettings.xml"/> <file name="DirectoryTreeTopComponent.settings" url="DirectoryTreeTopComponentSettings.xml"/>

View File

@ -31,7 +31,7 @@ import org.sleuthkit.autopsy.casemodule.CaseOpenAction;
import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.casemodule.Case; import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.casemodule.StartupWindowProvider; import org.sleuthkit.autopsy.casemodule.StartupWindowProvider;
import org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences; import org.sleuthkit.autopsy.core.UserPreferences;
final class AutoIngestCaseOpenAction extends CallableSystemAction implements ActionListener { final class AutoIngestCaseOpenAction extends CallableSystemAction implements ActionListener {
@ -44,7 +44,7 @@ final class AutoIngestCaseOpenAction extends CallableSystemAction implements Act
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
AutoIngestUserPreferences.SelectedMode mode = AutoIngestUserPreferences.getMode(); UserPreferences.SelectedMode mode = UserPreferences.getMode();
switch (mode) { switch (mode) {
case REVIEW: case REVIEW:
@ -63,7 +63,7 @@ final class AutoIngestCaseOpenAction extends CallableSystemAction implements Act
} }
break; break;
case AUTOMATED: case AUTOINGEST:
/* /*
* New case action is disabled in auto ingest mode. * New case action is disabled in auto ingest mode.
*/ */

View File

@ -39,7 +39,6 @@ import org.sleuthkit.datamodel.SleuthkitCase;
import org.sleuthkit.datamodel.TskCoreException; import org.sleuthkit.datamodel.TskCoreException;
import java.util.logging.Level; import java.util.logging.Level;
import org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences; import org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences;
import static org.sleuthkit.autopsy.experimental.configuration.AutoIngestUserPreferences.SelectedMode.AUTOMATED;
/** /**
* This panel shows up in a tab pane next to the copy files panel for the * This panel shows up in a tab pane next to the copy files panel for the

View File

@ -125,7 +125,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
cbJoinAutoIngestCluster.setEnabled(UserPreferences.getIsMultiUserModeEnabled()); cbJoinAutoIngestCluster.setEnabled(UserPreferences.getIsMultiUserModeEnabled());
if (inStartup) { if (inStartup) {
AutoIngestUserPreferences.SelectedMode storedMode = AutoIngestUserPreferences.getMode(); UserPreferences.SelectedMode storedMode = UserPreferences.getMode();
inputPathTextField.requestFocusInWindow(); inputPathTextField.requestFocusInWindow();
if (null != storedMode) { if (null != storedMode) {
switch (storedMode) { switch (storedMode) {
@ -133,7 +133,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
jRadioButtonReview.setSelected(true); jRadioButtonReview.setSelected(true);
enableOptionsBasedOnMode(OptionsUiMode.REVIEW); enableOptionsBasedOnMode(OptionsUiMode.REVIEW);
break; break;
case AUTOMATED: case AUTOINGEST:
jRadioButtonAutomated.setSelected(true); jRadioButtonAutomated.setSelected(true);
enableOptionsBasedOnMode(OptionsUiMode.AIM); enableOptionsBasedOnMode(OptionsUiMode.AIM);
break; break;
@ -207,7 +207,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
*/ */
void store() { void store() {
boolean needsRestart = false; boolean needsRestart = false;
AutoIngestUserPreferences.SelectedMode storedMode = AutoIngestUserPreferences.getMode(); UserPreferences.SelectedMode storedMode = UserPreferences.getMode();
if (AutoIngestUserPreferences.getJoinAutoModeCluster() != cbJoinAutoIngestCluster.isSelected()) { if (AutoIngestUserPreferences.getJoinAutoModeCluster() != cbJoinAutoIngestCluster.isSelected()) {
needsRestart = true; needsRestart = true;
@ -215,7 +215,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
AutoIngestUserPreferences.setJoinAutoModeCluster(cbJoinAutoIngestCluster.isSelected()); AutoIngestUserPreferences.setJoinAutoModeCluster(cbJoinAutoIngestCluster.isSelected());
if (!cbJoinAutoIngestCluster.isSelected()) { if (!cbJoinAutoIngestCluster.isSelected()) {
AutoIngestUserPreferences.setMode(AutoIngestUserPreferences.SelectedMode.STANDALONE); UserPreferences.setMode(UserPreferences.SelectedMode.STANDALONE);
//before return popup the message //before return popup the message
if (needsRestart) { if (needsRestart) {
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
@ -229,7 +229,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
} }
if (jRadioButtonAutomated.isSelected()) { if (jRadioButtonAutomated.isSelected()) {
if (storedMode != AutoIngestUserPreferences.SelectedMode.AUTOMATED) { if (storedMode != UserPreferences.SelectedMode.AUTOINGEST) {
needsRestart = true; needsRestart = true;
} }
String thePath = AutoIngestUserPreferences.getAutoModeImageFolder(); String thePath = AutoIngestUserPreferences.getAutoModeImageFolder();
@ -241,7 +241,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
needsRestart = true; needsRestart = true;
} }
AutoIngestUserPreferences.setMode(AutoIngestUserPreferences.SelectedMode.AUTOMATED); UserPreferences.setMode(UserPreferences.SelectedMode.AUTOINGEST);
String imageFolderPath = getNormalizedFolderPath(inputPathTextField.getText().trim()); String imageFolderPath = getNormalizedFolderPath(inputPathTextField.getText().trim());
AutoIngestUserPreferences.setAutoModeImageFolder(imageFolderPath); AutoIngestUserPreferences.setAutoModeImageFolder(imageFolderPath);
String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim()); String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim());
@ -253,7 +253,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
AutoIngestUserPreferences.setSharedConfigMaster(masterNodeCheckBox.isSelected()); AutoIngestUserPreferences.setSharedConfigMaster(masterNodeCheckBox.isSelected());
} }
} else if (jRadioButtonReview.isSelected()) { } else if (jRadioButtonReview.isSelected()) {
if (storedMode != AutoIngestUserPreferences.SelectedMode.REVIEW) { if (storedMode != UserPreferences.SelectedMode.REVIEW) {
needsRestart = true; needsRestart = true;
} }
String thePath = AutoIngestUserPreferences.getAutoModeResultsFolder(); String thePath = AutoIngestUserPreferences.getAutoModeResultsFolder();
@ -261,7 +261,7 @@ public class AutoIngestSettingsPanel extends javax.swing.JPanel {
needsRestart = true; needsRestart = true;
} }
AutoIngestUserPreferences.setMode(AutoIngestUserPreferences.SelectedMode.REVIEW); UserPreferences.setMode(UserPreferences.SelectedMode.REVIEW);
String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim()); String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim());
AutoIngestUserPreferences.setAutoModeResultsFolder(resultsFolderPath); AutoIngestUserPreferences.setAutoModeResultsFolder(resultsFolderPath);
} }

View File

@ -24,25 +24,16 @@ import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory; import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec; import javax.crypto.spec.PBEKeySpec;
import javax.crypto.spec.PBEParameterSpec; import javax.crypto.spec.PBEParameterSpec;
import org.sleuthkit.autopsy.core.UserPreferences;
import org.sleuthkit.autopsy.core.UserPreferencesException; import org.sleuthkit.autopsy.core.UserPreferencesException;
import org.sleuthkit.autopsy.coreutils.ModuleSettings; import org.sleuthkit.autopsy.coreutils.ModuleSettings;
/** /**
* Provides convenient access to a Preferences node for auto ingest user preferences * Provides convenient access to a Preferences node for auto ingest user
* with default values. * preferences with default values.
*/ */
public final class AutoIngestUserPreferences { public final class AutoIngestUserPreferences {
public enum SelectedMode {
STANDALONE,
AUTOMATED,
REVIEW
};
private static final String SETTINGS_PROPERTIES = "AutoIngest";
private static final String MODE = "AutopsyMode"; // NON-NLS
private static final String JOIN_AUTO_MODE_CLUSTER = "JoinAutoModeCluster"; // NON-NLS private static final String JOIN_AUTO_MODE_CLUSTER = "JoinAutoModeCluster"; // NON-NLS
private static final String AUTO_MODE_IMAGES_FOLDER = "AutoModeImageFolder"; // NON-NLS private static final String AUTO_MODE_IMAGES_FOLDER = "AutoModeImageFolder"; // NON-NLS
private static final String AUTO_MODE_RESULTS_FOLDER = "AutoModeResultsFolder"; // NON-NLS private static final String AUTO_MODE_RESULTS_FOLDER = "AutoModeResultsFolder"; // NON-NLS
@ -66,36 +57,14 @@ public final class AutoIngestUserPreferences {
private AutoIngestUserPreferences() { private AutoIngestUserPreferences() {
} }
/** /**
* Get mode from persistent storage.
*
* @return SelectedMode Selected mode.
*/
public static SelectedMode getMode() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MODE)) {
int ordinal = Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MODE));
return SelectedMode.values()[ordinal];
}
return SelectedMode.STANDALONE;
}
/**
* Set mode to persistent storage.
*
* @param mode Selected mode.
*/
public static void setMode(SelectedMode mode) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MODE, Integer.toString(mode.ordinal()));
}
/**
* Get "Join Automated Ingest Cluster" setting from persistent storage. * Get "Join Automated Ingest Cluster" setting from persistent storage.
* *
* @return SelectedMode Selected setting. * @return SelectedMode Selected setting.
*/ */
public static boolean getJoinAutoModeCluster() { public static boolean getJoinAutoModeCluster() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER)) {
return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER)); return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER));
} }
return false; return false;
} }
@ -106,7 +75,7 @@ public final class AutoIngestUserPreferences {
* @param join boolean value of whether to join auto ingest cluster or not * @param join boolean value of whether to join auto ingest cluster or not
*/ */
public static void setJoinAutoModeCluster(boolean join) { public static void setJoinAutoModeCluster(boolean join) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER, Boolean.toString(join)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, JOIN_AUTO_MODE_CLUSTER, Boolean.toString(join));
} }
/** /**
@ -115,8 +84,8 @@ public final class AutoIngestUserPreferences {
* @return String Selected input folder. * @return String Selected input folder.
*/ */
public static String getAutoModeImageFolder() { public static String getAutoModeImageFolder() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER)) {
return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER); return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER);
} }
return ""; return "";
} }
@ -127,7 +96,7 @@ public final class AutoIngestUserPreferences {
* @param folder Selected input folder. * @param folder Selected input folder.
*/ */
public static void setAutoModeImageFolder(String folder) { public static void setAutoModeImageFolder(String folder) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER, folder); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_IMAGES_FOLDER, folder);
} }
/** /**
@ -136,8 +105,8 @@ public final class AutoIngestUserPreferences {
* @return String Selected output folder. * @return String Selected output folder.
*/ */
public static String getAutoModeResultsFolder() { public static String getAutoModeResultsFolder() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER)) {
return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER); return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER);
} }
return ""; return "";
} }
@ -148,39 +117,39 @@ public final class AutoIngestUserPreferences {
* @param folder Selected output folder. * @param folder Selected output folder.
*/ */
public static void setAutoModeResultsFolder(String folder) { public static void setAutoModeResultsFolder(String folder) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER, folder); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, AUTO_MODE_RESULTS_FOLDER, folder);
} }
/** /**
* Get shared config folder for automated mode from persistent * Get shared config folder for automated mode from persistent storage.
* storage.
* *
* @return String Selected settings folder. * @return String Selected settings folder.
*/ */
public static String getSharedConfigFolder() { public static String getSharedConfigFolder() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER)) {
return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER); return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER);
} }
return ""; return "";
} }
/** /**
* Set shared config folder for automated mode from persistent * Set shared config folder for automated mode from persistent storage.
* storage. *
* @param folder the folder which contains the shared configF
*/ */
public static void setSharedConfigFolder(String folder) { public static void setSharedConfigFolder(String folder) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER, folder); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_FOLDER, folder);
} }
/** /**
* Get shared config checkbox state for automated mode from * Get shared config checkbox state for automated mode from persistent
* persistent storage. * storage.
* *
* @return Boolean true if shared settings are enabled. * @return Boolean true if shared settings are enabled.
*/ */
public static Boolean getSharedConfigEnabled() { public static Boolean getSharedConfigEnabled() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED)) {
return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED)); return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED));
} }
return false; return false;
} }
@ -193,7 +162,7 @@ public final class AutoIngestUserPreferences {
* mode * mode
*/ */
public static void setSharedConfigEnabled(boolean sharedSettingsEnabled) { public static void setSharedConfigEnabled(boolean sharedSettingsEnabled) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED, Boolean.toString(sharedSettingsEnabled)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_ENABLED, Boolean.toString(sharedSettingsEnabled));
} }
/** /**
@ -203,8 +172,8 @@ public final class AutoIngestUserPreferences {
* @return true if this node is set as a shared configuration master * @return true if this node is set as a shared configuration master
*/ */
public static Boolean getSharedConfigMaster() { public static Boolean getSharedConfigMaster() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER)) {
return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER)); return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER));
} }
return false; return false;
} }
@ -215,14 +184,13 @@ public final class AutoIngestUserPreferences {
* @param sharedSettingsMaster true = this node can upload configuration * @param sharedSettingsMaster true = this node can upload configuration
*/ */
public static void setSharedConfigMaster(boolean sharedSettingsMaster) { public static void setSharedConfigMaster(boolean sharedSettingsMaster) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER, Boolean.toString(sharedSettingsMaster)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHARED_CONFIG_MASTER, Boolean.toString(sharedSettingsMaster));
} }
/** /**
* Get context string for automated mode ingest module settings. * Get context string for automated mode ingest module settings.
* *
* @return String Context string for automated mode ingest module * @return String Context string for automated mode ingest module settings.
* settings.
*/ */
public static String getAutoModeIngestModuleContextString() { public static String getAutoModeIngestModuleContextString() {
return AUTO_MODE_CONTEXT_STRING; return AUTO_MODE_CONTEXT_STRING;
@ -234,7 +202,7 @@ public final class AutoIngestUserPreferences {
* @param showToolsWarning true = show warning dialog, false = don't show * @param showToolsWarning true = show warning dialog, false = don't show
*/ */
public static void setShowToolsWarning(boolean showToolsWarning) { public static void setShowToolsWarning(boolean showToolsWarning) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING, Boolean.toString(showToolsWarning)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING, Boolean.toString(showToolsWarning));
} }
/** /**
@ -243,21 +211,20 @@ public final class AutoIngestUserPreferences {
* @return * @return
*/ */
public static boolean getShowToolsWarning() { public static boolean getShowToolsWarning() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING)) {
return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING)); return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SHOW_TOOLS_WARNING));
} }
return true; return true;
} }
/** /**
* Get the configured time to sleep between cases to prevent * Get the configured time to sleep between cases to prevent database locks
* database locks
* *
* @return int the value in seconds, default is 30 seconds. * @return int the value in seconds, default is 30 seconds.
*/ */
public static int getSecondsToSleepBetweenCases() { public static int getSecondsToSleepBetweenCases() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME)) {
return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME)); return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME));
} }
return 30; return 30;
} }
@ -271,7 +238,7 @@ public final class AutoIngestUserPreferences {
* @param value value the number of seconds to sleep between cases * @param value value the number of seconds to sleep between cases
*/ */
public static void setSecondsToSleepBetweenCases(int value) { public static void setSecondsToSleepBetweenCases(int value) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME, Integer.toString(value)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, SLEEP_BETWEEN_CASES_TIME, Integer.toString(value));
} }
/** /**
@ -282,8 +249,8 @@ public final class AutoIngestUserPreferences {
* @return int maximum number of attempts, default is 2. * @return int maximum number of attempts, default is 2.
*/ */
public static int getMaxNumTimesToProcessImage() { public static int getMaxNumTimesToProcessImage() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE)) {
return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE)); return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE));
} }
return 2; return 2;
} }
@ -296,7 +263,7 @@ public final class AutoIngestUserPreferences {
* @param retries the number of retries to allow * @param retries the number of retries to allow
*/ */
public static void setMaxNumTimesToProcessImage(int retries) { public static void setMaxNumTimesToProcessImage(int retries) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE, Integer.toString(retries)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_NUM_TIMES_TO_PROCESS_IMAGE, Integer.toString(retries));
} }
/** /**
@ -306,8 +273,8 @@ public final class AutoIngestUserPreferences {
* @return maximum number of concurrent nodes for one case. Default is 3. * @return maximum number of concurrent nodes for one case. Default is 3.
*/ */
public static int getMaxConcurrentJobsForOneCase() { public static int getMaxConcurrentJobsForOneCase() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE)) {
return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE)); return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE));
} }
return 3; return 3;
} }
@ -319,7 +286,7 @@ public final class AutoIngestUserPreferences {
* @param numberOfNodes the number of concurrent nodes to allow for one case * @param numberOfNodes the number of concurrent nodes to allow for one case
*/ */
public static void setMaxConcurrentIngestNodesForOneCase(int numberOfNodes) { public static void setMaxConcurrentIngestNodesForOneCase(int numberOfNodes) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE, Integer.toString(numberOfNodes)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, MAX_CONCURRENT_NODES_FOR_ONE_CASE, Integer.toString(numberOfNodes));
} }
/** /**
@ -329,8 +296,8 @@ public final class AutoIngestUserPreferences {
* @return Boolean true if database logging is enabled. * @return Boolean true if database logging is enabled.
*/ */
public static Boolean getStatusDatabaseLoggingEnabled() { public static Boolean getStatusDatabaseLoggingEnabled() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED)) {
return Boolean.parseBoolean(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED)); return Boolean.parseBoolean(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED));
} }
return false; return false;
} }
@ -343,7 +310,7 @@ public final class AutoIngestUserPreferences {
* mode * mode
*/ */
public static void setStatusDatabaseLoggingEnabled(boolean databaseLoggingEnabled) { public static void setStatusDatabaseLoggingEnabled(boolean databaseLoggingEnabled) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED, Boolean.toString(databaseLoggingEnabled)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, STATUS_DATABASE_LOGGING_ENABLED, Boolean.toString(databaseLoggingEnabled));
} }
/** /**
@ -352,8 +319,8 @@ public final class AutoIngestUserPreferences {
* @return Logging database hostname or IP * @return Logging database hostname or IP
*/ */
public static String getLoggingDatabaseHostnameOrIP() { public static String getLoggingDatabaseHostnameOrIP() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP)) {
return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP); return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP);
} }
return ""; return "";
} }
@ -364,7 +331,7 @@ public final class AutoIngestUserPreferences {
* @param hostname Logging database hostname or IP * @param hostname Logging database hostname or IP
*/ */
public static void setLoggingDatabaseHostnameOrIP(String hostname) { public static void setLoggingDatabaseHostnameOrIP(String hostname) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP, hostname); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DB_HOSTNAME_OR_IP, hostname);
} }
/** /**
@ -373,8 +340,8 @@ public final class AutoIngestUserPreferences {
* @return logging database port * @return logging database port
*/ */
public static String getLoggingPort() { public static String getLoggingPort() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_PORT)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PORT)) {
return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_PORT); return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PORT);
} }
return ""; return "";
} }
@ -385,7 +352,7 @@ public final class AutoIngestUserPreferences {
* @param port Logging database port * @param port Logging database port
*/ */
public static void setLoggingPort(String port) { public static void setLoggingPort(String port) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_PORT, port); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PORT, port);
} }
/** /**
@ -394,8 +361,8 @@ public final class AutoIngestUserPreferences {
* @return logging database username * @return logging database username
*/ */
public static String getLoggingUsername() { public static String getLoggingUsername() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_USERNAME)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_USERNAME)) {
return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_USERNAME); return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_USERNAME);
} }
return ""; return "";
} }
@ -406,17 +373,19 @@ public final class AutoIngestUserPreferences {
* @param username Logging database username * @param username Logging database username
*/ */
public static void setLoggingUsername(String username) { public static void setLoggingUsername(String username) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_USERNAME, username); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_USERNAME, username);
} }
/** /**
* Get the logging database password from persistent storage. * Get the logging database password from persistent storage.
* *
* @return logging database password * @return logging database password
*
* @throws org.sleuthkit.autopsy.core.UserPreferencesException
*/ */
public static String getLoggingPassword() throws UserPreferencesException { public static String getLoggingPassword() throws UserPreferencesException {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_PASSWORD)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD)) {
return TextConverter.convertHexTextToText(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_PASSWORD)); return TextConverter.convertHexTextToText(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD));
} }
return ""; return "";
} }
@ -425,9 +394,11 @@ public final class AutoIngestUserPreferences {
* Save the logging database password to persistent storage. * Save the logging database password to persistent storage.
* *
* @param password Logging database password * @param password Logging database password
*
* @throws org.sleuthkit.autopsy.core.UserPreferencesException
*/ */
public static void setLoggingPassword(String password) throws UserPreferencesException { public static void setLoggingPassword(String password) throws UserPreferencesException {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_PASSWORD, TextConverter.convertTextToHexText(password)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_PASSWORD, TextConverter.convertTextToHexText(password));
} }
/** /**
@ -436,8 +407,8 @@ public final class AutoIngestUserPreferences {
* @return logging database name * @return logging database name
*/ */
public static String getLoggingDatabaseName() { public static String getLoggingDatabaseName() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME)) {
return ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME); return ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME);
} }
return ""; return "";
} }
@ -448,7 +419,7 @@ public final class AutoIngestUserPreferences {
* @param name Logging database name * @param name Logging database name
*/ */
public static void setLoggingDatabaseName(String name) { public static void setLoggingDatabaseName(String name) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME, name); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, LOGGING_DATABASE_NAME, name);
} }
/** /**
@ -457,8 +428,8 @@ public final class AutoIngestUserPreferences {
* @return int the value in minutes, default is 60 minutes. * @return int the value in minutes, default is 60 minutes.
*/ */
public static int getMinutesOfInputScanInterval() { public static int getMinutesOfInputScanInterval() {
if (ModuleSettings.settingExists(SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME)) { if (ModuleSettings.settingExists(UserPreferences.SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME)) {
return Integer.parseInt(ModuleSettings.getConfigSetting(SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME)); return Integer.parseInt(ModuleSettings.getConfigSetting(UserPreferences.SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME));
} }
return 60; return 60;
} }
@ -469,12 +440,12 @@ public final class AutoIngestUserPreferences {
* @param value the number of minutes for input interval * @param value the number of minutes for input interval
*/ */
public static void setMinutesOfInputScanInterval(int value) { public static void setMinutesOfInputScanInterval(int value) {
ModuleSettings.setConfigSetting(SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME, Integer.toString(value)); ModuleSettings.setConfigSetting(UserPreferences.SETTINGS_PROPERTIES, INPUT_SCAN_INTERVAL_TIME, Integer.toString(value));
} }
/** /**
* Copied from Autopsy UserPreferences - can be removed once everything is merged together. * Copied from Autopsy UserPreferences - can be removed once everything is
* Provides ability to convert text to hex text. * merged together. Provides ability to convert text to hex text.
*/ */
static final class TextConverter { static final class TextConverter {

View File

@ -92,7 +92,7 @@ public class SharedConfiguration {
private static final Logger logger = Logger.getLogger(SharedConfiguration.class.getName()); private static final Logger logger = Logger.getLogger(SharedConfiguration.class.getName());
private final UpdateConfigSwingWorker swingWorker; private final UpdateConfigSwingWorker swingWorker;
private AutoIngestUserPreferences.SelectedMode mode; private UserPreferences.SelectedMode mode;
private String sharedConfigFolder; private String sharedConfigFolder;
private int fileIngestThreads; private int fileIngestThreads;
private boolean sharedConfigMaster; private boolean sharedConfigMaster;

View File

@ -33,6 +33,7 @@ import org.openide.util.lookup.ServiceProvider;
import org.openide.windows.WindowManager; import org.openide.windows.WindowManager;
import org.sleuthkit.autopsy.casemodule.CueBannerPanel; import org.sleuthkit.autopsy.casemodule.CueBannerPanel;
import org.sleuthkit.autopsy.casemodule.StartupWindowInterface; import org.sleuthkit.autopsy.casemodule.StartupWindowInterface;
import org.sleuthkit.autopsy.core.UserPreferences;
import org.sleuthkit.autopsy.coreutils.NetworkUtils; import org.sleuthkit.autopsy.coreutils.NetworkUtils;
import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestDashboard; import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestDashboard;
import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestCasePanel; import org.sleuthkit.autopsy.experimental.autoingest.AutoIngestCasePanel;
@ -103,10 +104,10 @@ public final class StartupWindow extends JDialog implements StartupWindowInterfa
* user. * user.
*/ */
private void addPanelForMode() { private void addPanelForMode() {
AutoIngestUserPreferences.SelectedMode mode = AutoIngestUserPreferences.getMode(); UserPreferences.SelectedMode mode = UserPreferences.getMode();
switch (mode) { switch (mode) {
case AUTOMATED: case AUTOINGEST:
this.setTitle(NbBundle.getMessage(StartupWindow.class, "StartupWindow.AutoIngestMode") + " (" + LOCAL_HOST_NAME + ")"); this.setTitle(NbBundle.getMessage(StartupWindow.class, "StartupWindow.AutoIngestMode") + " (" + LOCAL_HOST_NAME + ")");
setIconImage(ImageUtilities.loadImage("org/sleuthkit/autopsy/experimental/images/frame.gif", false)); //NON-NLS setIconImage(ImageUtilities.loadImage("org/sleuthkit/autopsy/experimental/images/frame.gif", false)); //NON-NLS
this.addWindowListener(new WindowAdapter() { this.addWindowListener(new WindowAdapter() {