mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 16:06:15 +00:00
Running ingest, additional input checking
This commit is contained in:
parent
702b09ae2d
commit
309a58bd33
@ -128,6 +128,10 @@ MultiUserSettingsPanel.lbTestResultText.text=
|
|||||||
MultiUserSettingsPanel.outputPathTextField.toolTipText=The location where case folder will be created for the test case.
|
MultiUserSettingsPanel.outputPathTextField.toolTipText=The location where case folder will be created for the test case.
|
||||||
MultiUserSettingsPanel.outputPathTextField.text=
|
MultiUserSettingsPanel.outputPathTextField.text=
|
||||||
MultiUserSettingsPanel.browseOutputFolderButton.text=Browse
|
MultiUserSettingsPanel.browseOutputFolderButton.text=Browse
|
||||||
|
MultiUserSettingsPanel.validationErrMsg.outputPathNotSpecified=Output folder must be set
|
||||||
|
MultiUserSettingsPanel.PathInvalid=Path is not valid
|
||||||
|
MultiUserSettingsPanel.CannotAccess=Cannot access
|
||||||
|
MultiUserSettingsPanel.CheckPermissions=Check permissions.
|
||||||
AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText=
|
AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText=
|
||||||
AutopsyOptionsPanel.agencyLogoPathField.text=
|
AutopsyOptionsPanel.agencyLogoPathField.text=
|
||||||
SortChooserDialog.label=remove
|
SortChooserDialog.label=remove
|
||||||
|
@ -180,6 +180,7 @@ MultiUserSettingsPanel.lbTestResultText.text=
|
|||||||
MultiUserSettingsPanel.outputPathTextField.toolTipText=The location where case folder will be created for the test case.
|
MultiUserSettingsPanel.outputPathTextField.toolTipText=The location where case folder will be created for the test case.
|
||||||
MultiUserSettingsPanel.outputPathTextField.text=
|
MultiUserSettingsPanel.outputPathTextField.text=
|
||||||
MultiUserSettingsPanel.browseOutputFolderButton.text=Browse
|
MultiUserSettingsPanel.browseOutputFolderButton.text=Browse
|
||||||
|
MultiUserSettingsPanel.validationErrMsg.outputPathNotSpecified=Output directory not specified
|
||||||
AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText=
|
AutopsyOptionsPanel.agencyLogoImageLabel.toolTipText=
|
||||||
AutopsyOptionsPanel.agencyLogoPathField.text=
|
AutopsyOptionsPanel.agencyLogoPathField.text=
|
||||||
SortChooserDialog.label=remove
|
SortChooserDialog.label=remove
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Component id="pnTestMultiUser" min="-2" max="-2" attributes="0"/>
|
<Component id="pnTestMultiUser" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace pref="765" max="32767" attributes="0"/>
|
<EmptySpace pref="822" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -66,13 +66,11 @@
|
|||||||
</Group>
|
</Group>
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
|
<Component id="pnDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="pnTestMultiUser" min="-2" max="-2" attributes="0"/>
|
<Component id="pnTestMultiUser" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" attributes="0">
|
|
||||||
<Component id="pnDatabaseSettings" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="pnSolrSettings" min="-2" pref="127" max="-2" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="pnSolrSettings" min="-2" pref="127" max="-2" attributes="0"/>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
||||||
<Component id="pnMessagingSettings" min="-2" max="-2" attributes="0"/>
|
<Component id="pnMessagingSettings" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace pref="206" max="32767" attributes="0"/>
|
<EmptySpace pref="206" max="32767" attributes="0"/>
|
||||||
@ -591,30 +589,26 @@
|
|||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="1" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="lbTestMultiUserText" min="-2" max="-2" attributes="0"/>
|
<Component id="lbTestResultText" max="32767" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="176" max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="102" attributes="0">
|
<Group type="102" attributes="0">
|
||||||
<Component id="lbTestResultText" min="-2" max="-2" attributes="0"/>
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
<EmptySpace min="-2" pref="336" max="-2" attributes="0"/>
|
<Component id="outputPathTextField" min="-2" pref="284" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbTestMultiUserText" alignment="0" min="-2" max="-2" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="32767" attributes="0"/>
|
||||||
|
<Group type="103" groupAlignment="0" max="-2" attributes="0">
|
||||||
|
<Component id="browseOutputFolderButton" max="32767" attributes="0"/>
|
||||||
|
<Component id="bnTestMultiUser" max="32767" attributes="0"/>
|
||||||
|
</Group>
|
||||||
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
|
<Component id="lbMultiUserResult" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="-2" pref="35" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<Group type="103" groupAlignment="0" max="-2" attributes="0">
|
|
||||||
<Component id="browseOutputFolderButton" pref="0" max="32767" attributes="0"/>
|
|
||||||
<Component id="bnTestMultiUser" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
|
||||||
<Component id="lbMultiUserResult" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace pref="31" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
<Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
|
|
||||||
<Group type="102" alignment="0" attributes="0">
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
|
||||||
<Component id="outputPathTextField" min="-2" pref="312" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace pref="139" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
@ -622,25 +616,21 @@
|
|||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="0" attributes="0">
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Group type="102" alignment="0" attributes="0">
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
<Group type="103" groupAlignment="0" attributes="0">
|
<Group type="103" groupAlignment="1" attributes="0">
|
||||||
<Component id="lbTestMultiUserText" min="-2" max="-2" attributes="0"/>
|
<Component id="lbMultiUserResult" min="-2" pref="23" max="-2" attributes="0"/>
|
||||||
<Group type="103" alignment="0" groupAlignment="1" attributes="0">
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Component id="lbMultiUserResult" min="-2" pref="23" max="-2" attributes="0"/>
|
<Component id="bnTestMultiUser" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Component id="bnTestMultiUser" min="-2" max="-2" attributes="0"/>
|
<Component id="lbTestMultiUserText" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
<EmptySpace type="unrelated" max="-2" attributes="0"/>
|
|
||||||
<Component id="browseOutputFolderButton" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace pref="22" max="32767" attributes="0"/>
|
|
||||||
<Component id="lbTestResultText" min="-2" pref="16" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace max="-2" attributes="0"/>
|
<EmptySpace max="-2" attributes="0"/>
|
||||||
</Group>
|
<Group type="103" groupAlignment="3" attributes="0">
|
||||||
<Group type="103" rootIndex="1" groupAlignment="0" attributes="0">
|
<Component id="browseOutputFolderButton" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<Group type="102" alignment="0" attributes="0">
|
<Component id="outputPathTextField" alignment="3" min="-2" max="-2" attributes="0"/>
|
||||||
<EmptySpace min="-2" pref="56" max="-2" attributes="0"/>
|
|
||||||
<Component id="outputPathTextField" min="-2" max="-2" attributes="0"/>
|
|
||||||
<EmptySpace pref="56" max="32767" attributes="0"/>
|
|
||||||
</Group>
|
</Group>
|
||||||
|
<EmptySpace type="separate" max="-2" attributes="0"/>
|
||||||
|
<Component id="lbTestResultText" min="-2" pref="16" max="-2" attributes="0"/>
|
||||||
|
<EmptySpace min="0" pref="12" max="32767" attributes="0"/>
|
||||||
</Group>
|
</Group>
|
||||||
</Group>
|
</Group>
|
||||||
</DimensionLayout>
|
</DimensionLayout>
|
||||||
|
@ -32,12 +32,15 @@ import org.sleuthkit.autopsy.events.MessageServiceConnectionInfo;
|
|||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import java.awt.Cursor;
|
import java.awt.Cursor;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.nio.file.Files;
|
||||||
|
import java.nio.file.Paths;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.ImageIcon;
|
import javax.swing.ImageIcon;
|
||||||
import javax.swing.JFileChooser;
|
import javax.swing.JFileChooser;
|
||||||
import org.openide.util.ImageUtilities;
|
import org.openide.util.ImageUtilities;
|
||||||
import org.openide.util.Lookup;
|
import org.openide.util.Lookup;
|
||||||
import org.sleuthkit.autopsy.core.UserPreferencesException;
|
import org.sleuthkit.autopsy.core.UserPreferencesException;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.FileUtil;
|
||||||
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||||
import org.sleuthkit.autopsy.events.MessageServiceException;
|
import org.sleuthkit.autopsy.events.MessageServiceException;
|
||||||
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService;
|
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService;
|
||||||
@ -472,44 +475,38 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
||||||
.addComponent(lbTestMultiUserText)
|
.addComponent(lbTestResultText, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addGap(176, 176, 176))
|
.addContainerGap())
|
||||||
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
||||||
.addComponent(lbTestResultText)
|
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
.addGap(336, 336, 336)))
|
.addComponent(outputPathTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 284, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
.addComponent(lbTestMultiUserText, javax.swing.GroupLayout.Alignment.LEADING))
|
||||||
.addComponent(browseOutputFolderButton, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(bnTestMultiUser, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addComponent(browseOutputFolderButton, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
|
||||||
.addComponent(lbMultiUserResult, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(bnTestMultiUser, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
|
||||||
.addContainerGap(31, Short.MAX_VALUE))
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addComponent(lbMultiUserResult, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
.addGap(35, 35, 35))))
|
||||||
.addContainerGap()
|
|
||||||
.addComponent(outputPathTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 312, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addContainerGap(139, Short.MAX_VALUE)))
|
|
||||||
);
|
);
|
||||||
pnTestMultiUserLayout.setVerticalGroup(
|
pnTestMultiUserLayout.setVerticalGroup(
|
||||||
pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
||||||
.addContainerGap()
|
.addContainerGap()
|
||||||
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
||||||
.addComponent(lbTestMultiUserText)
|
.addComponent(lbMultiUserResult, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
|
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addComponent(lbMultiUserResult, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(bnTestMultiUser)
|
||||||
.addComponent(bnTestMultiUser)))
|
.addComponent(lbTestMultiUserText)))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(browseOutputFolderButton)
|
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 22, Short.MAX_VALUE)
|
.addComponent(browseOutputFolderButton)
|
||||||
|
.addComponent(outputPathTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
|
.addGap(18, 18, 18)
|
||||||
.addComponent(lbTestResultText, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(lbTestResultText, javax.swing.GroupLayout.PREFERRED_SIZE, 16, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap())
|
.addGap(0, 12, Short.MAX_VALUE))
|
||||||
.addGroup(pnTestMultiUserLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
|
||||||
.addGroup(pnTestMultiUserLayout.createSequentialGroup()
|
|
||||||
.addGap(56, 56, 56)
|
|
||||||
.addComponent(outputPathTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
|
||||||
.addContainerGap(56, Short.MAX_VALUE)))
|
|
||||||
);
|
);
|
||||||
|
|
||||||
javax.swing.GroupLayout pnOverallPanelLayout = new javax.swing.GroupLayout(pnOverallPanel);
|
javax.swing.GroupLayout pnOverallPanelLayout = new javax.swing.GroupLayout(pnOverallPanel);
|
||||||
@ -528,7 +525,7 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
.addComponent(pnMessagingSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
.addComponent(pnMessagingSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addComponent(pnTestMultiUser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(pnTestMultiUser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(765, Short.MAX_VALUE))
|
.addContainerGap(822, Short.MAX_VALUE))
|
||||||
);
|
);
|
||||||
pnOverallPanelLayout.setVerticalGroup(
|
pnOverallPanelLayout.setVerticalGroup(
|
||||||
pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
@ -538,11 +535,10 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
.addComponent(cbEnableMultiUser))
|
.addComponent(cbEnableMultiUser))
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addGroup(pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
.addGroup(pnOverallPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
|
||||||
.addComponent(pnTestMultiUser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(pnDatabaseSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addGroup(pnOverallPanelLayout.createSequentialGroup()
|
.addComponent(pnTestMultiUser, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
|
||||||
.addComponent(pnDatabaseSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
|
.addComponent(pnSolrSettings, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addComponent(pnSolrSettings, javax.swing.GroupLayout.PREFERRED_SIZE, 127, javax.swing.GroupLayout.PREFERRED_SIZE)))
|
|
||||||
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
|
||||||
.addComponent(pnMessagingSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
.addComponent(pnMessagingSettings, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
|
||||||
.addContainerGap(206, Short.MAX_VALUE))
|
.addContainerGap(206, Short.MAX_VALUE))
|
||||||
@ -677,21 +673,53 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
private void bnTestMultiUserActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestMultiUserActionPerformed
|
private void bnTestMultiUserActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnTestMultiUserActionPerformed
|
||||||
|
|
||||||
|
// ELTODO
|
||||||
|
// should we run tests for all services?
|
||||||
|
|
||||||
|
String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim());
|
||||||
|
if (resultsFolderPath.isEmpty()) {
|
||||||
|
lbMultiUserResult.setIcon(badIcon);
|
||||||
|
lbTestResultText.setText(NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.validationErrMsg.outputPathNotSpecified"));
|
||||||
|
lbTestResultText.setForeground(Color.RED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isFolderPathValid(resultsFolderPath)) {
|
||||||
|
lbMultiUserResult.setIcon(badIcon);
|
||||||
|
lbTestResultText.setForeground(Color.RED);
|
||||||
|
lbTestResultText.setText(NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.PathInvalid"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (false == permissionsAppropriate(resultsFolderPath)) {
|
||||||
|
lbMultiUserResult.setIcon(badIcon);
|
||||||
|
lbTestResultText.setForeground(Color.RED);
|
||||||
|
lbTestResultText.setText(NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.CannotAccess")
|
||||||
|
+ " " + resultsFolderPath + " "
|
||||||
|
+ NbBundle.getMessage(MultiUserSettingsPanel.class, "MultiUserSettingsPanel.CheckPermissions"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// save the configuration that user has entered in other fields (i.e. Solr, Postgres, ActiveMQ).
|
// save the configuration that user has entered in other fields (i.e. Solr, Postgres, ActiveMQ).
|
||||||
// we need it stored in the settings file in order to create a case and connect to database/kws.
|
// we need it stored in the settings file in order to create a case and connect to database/kws.
|
||||||
store();
|
store();
|
||||||
|
|
||||||
String resultsFolderPath = getNormalizedFolderPath(outputPathTextField.getText().trim());
|
setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||||
String testResult = MultiUserTestTool.runTest(resultsFolderPath);
|
String testResult = MultiUserTestTool.runTest(resultsFolderPath);
|
||||||
|
setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||||
if (testResult.equals(MultiUserTestTool.RESULT_SUCCESS)) {
|
if (testResult.equals(MultiUserTestTool.RESULT_SUCCESS)) {
|
||||||
// test successful
|
// test successful
|
||||||
lbMultiUserResult.setIcon(goodIcon);
|
lbMultiUserResult.setIcon(goodIcon);
|
||||||
lbTestResultText.setText(testResult);
|
lbTestResultText.setText(testResult);
|
||||||
|
lbTestResultText.setForeground(Color.BLACK);
|
||||||
} else {
|
} else {
|
||||||
// test failed
|
// test failed
|
||||||
lbMultiUserResult.setIcon(badIcon);
|
lbMultiUserResult.setIcon(badIcon);
|
||||||
lbTestResultText.setText(testResult);
|
lbTestResultText.setText(testResult);
|
||||||
|
lbTestResultText.setForeground(Color.RED);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ELTODO investigate ingest module startup popup when KWS wasn't able to load core (e.g. empty outputPathTextField)
|
||||||
}//GEN-LAST:event_bnTestMultiUserActionPerformed
|
}//GEN-LAST:event_bnTestMultiUserActionPerformed
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -747,8 +775,46 @@ public final class MultiUserSettingsPanel extends javax.swing.JPanel {
|
|||||||
valid();
|
valid();
|
||||||
controller.changed();
|
controller.changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ELTODO
|
||||||
|
// save output directory to storage and reload it next time
|
||||||
}//GEN-LAST:event_browseOutputFolderButtonActionPerformed
|
}//GEN-LAST:event_browseOutputFolderButtonActionPerformed
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates that a path is valid and points to a folder.
|
||||||
|
*
|
||||||
|
* @param path A path to be validated
|
||||||
|
*
|
||||||
|
* @return boolean returns true if valid and points to a folder, false
|
||||||
|
* otherwise
|
||||||
|
*/
|
||||||
|
boolean isFolderPathValid(String path) {
|
||||||
|
try {
|
||||||
|
File file = new File(normalizePath(path));
|
||||||
|
|
||||||
|
// check if it's a symbolic link
|
||||||
|
if (Files.isSymbolicLink(file.toPath())) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// local folder
|
||||||
|
if (file.exists() && file.isDirectory()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} catch (Exception ex) {
|
||||||
|
// Files.isSymbolicLink (and other "files" methods) throw exceptions on seemingly innocent inputs.
|
||||||
|
// For example, it will throw an exception when either " " is last character in path or
|
||||||
|
// a path starting with ":".
|
||||||
|
// We can just ignore these exceptions as they occur in process of user typing in the path.
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean permissionsAppropriate(String path) {
|
||||||
|
return FileUtil.hasReadWriteAccess(Paths.get(path));
|
||||||
|
}
|
||||||
|
|
||||||
void load() {
|
void load() {
|
||||||
lbTestDatabase.setIcon(null);
|
lbTestDatabase.setIcon(null);
|
||||||
lbTestSolr.setIcon(null);
|
lbTestSolr.setIcon(null);
|
||||||
|
@ -30,6 +30,7 @@ import java.util.List;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
import org.openide.util.Lookup;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.casemodule.CaseActionException;
|
import org.sleuthkit.autopsy.casemodule.CaseActionException;
|
||||||
import org.sleuthkit.autopsy.casemodule.CaseDetails;
|
import org.sleuthkit.autopsy.casemodule.CaseDetails;
|
||||||
@ -44,12 +45,15 @@ import org.sleuthkit.autopsy.datasourceprocessors.AutoIngestDataSourceProcessor;
|
|||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||||
import org.sleuthkit.datamodel.TskCoreException;
|
import org.sleuthkit.datamodel.TskCoreException;
|
||||||
import org.sleuthkit.autopsy.casemodule.LocalFilesDSProcessor;
|
import org.sleuthkit.autopsy.casemodule.LocalFilesDSProcessor;
|
||||||
|
import org.sleuthkit.autopsy.casemodule.services.FileManager;
|
||||||
import org.sleuthkit.autopsy.events.AutopsyEvent;
|
import org.sleuthkit.autopsy.events.AutopsyEvent;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestJob;
|
import org.sleuthkit.autopsy.ingest.IngestJob;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestJobSettings;
|
import org.sleuthkit.autopsy.ingest.IngestJobSettings;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestJobStartResult;
|
import org.sleuthkit.autopsy.ingest.IngestJobStartResult;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestModuleError;
|
import org.sleuthkit.autopsy.ingest.IngestModuleError;
|
||||||
|
import org.sleuthkit.autopsy.keywordsearchservice.KeywordSearchService;
|
||||||
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test tool that creates a multi user case, database, KWS index, runs ingest,
|
* Test tool that creates a multi user case, database, KWS index, runs ingest,
|
||||||
@ -60,14 +64,14 @@ class MultiUserTestTool {
|
|||||||
|
|
||||||
private static final String CASE_NAME = "Test_MU_Settings";
|
private static final String CASE_NAME = "Test_MU_Settings";
|
||||||
private static final Logger LOGGER = Logger.getLogger(MultiUserTestTool.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(MultiUserTestTool.class.getName());
|
||||||
|
private static final String TEST_FILE_NAME = "Test.txt";
|
||||||
|
private static final Object INGEST_LOCK = new Object();
|
||||||
|
|
||||||
static final String RESULT_SUCCESS = "Success";
|
static final String RESULT_SUCCESS = "Success";
|
||||||
|
|
||||||
private static final Object INGEST_LOCK = new Object();
|
|
||||||
|
|
||||||
static String runTest(String rootOutputDirectory) {
|
static String runTest(String rootOutputDirectory) {
|
||||||
|
|
||||||
// 1 (MH) Creates a case in the output folder. Could be hard coded name/time stamp thing.
|
// Create a case in the output folder.
|
||||||
Case caseForJob;
|
Case caseForJob;
|
||||||
try {
|
try {
|
||||||
caseForJob = createCase(CASE_NAME, rootOutputDirectory);
|
caseForJob = createCase(CASE_NAME, rootOutputDirectory);
|
||||||
@ -82,15 +86,7 @@ class MultiUserTestTool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// 2 (MH) Verifies that Solr was able to create the core. If any of those steps fail, it gives an error message.
|
// Verify that DB was created. etc
|
||||||
/*KeywordSearchService kwsService = Lookup.getDefault().lookup(KeywordSearchService.class);
|
|
||||||
Collection<BlackboardAttribute> attributes = new ArrayList<>();
|
|
||||||
attributes.add(new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_KEYWORD_PREVIEW, "Fake Keyword Search", "Fake Keyword Preview Text"));
|
|
||||||
attributes.add(new BlackboardAttribute(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH, "Output Path", rootOutputDirectory));
|
|
||||||
BlackboardArtifact bba = file.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_INTERESTING_FILE_HIT);
|
|
||||||
bba.addAttributes(attributes);*/
|
|
||||||
|
|
||||||
// Verifies that DB was created. etc
|
|
||||||
String getDatabaseInfoQuery = "select * from tsk_db_info";
|
String getDatabaseInfoQuery = "select * from tsk_db_info";
|
||||||
try (SleuthkitCase.CaseDbQuery queryResult = caseForJob.getSleuthkitCase().executeQuery(getDatabaseInfoQuery)) {
|
try (SleuthkitCase.CaseDbQuery queryResult = caseForJob.getSleuthkitCase().executeQuery(getDatabaseInfoQuery)) {
|
||||||
ResultSet resultSet = queryResult.getResultSet();
|
ResultSet resultSet = queryResult.getResultSet();
|
||||||
@ -104,8 +100,8 @@ class MultiUserTestTool {
|
|||||||
return "Unable to read from case database";
|
return "Unable to read from case database";
|
||||||
}
|
}
|
||||||
|
|
||||||
// 3 (NTH) Makes a text file in a temp folder with just the text "Test" in it.
|
// Make a text file in a temp folder with just the text "Test" in it.
|
||||||
String tempFilePath = caseForJob.getTempDirectory() + File.separator + "Test.txt";
|
String tempFilePath = caseForJob.getTempDirectory() + File.separator + TEST_FILE_NAME;
|
||||||
try {
|
try {
|
||||||
FileUtils.writeStringToFile(new File(tempFilePath), "Test", Charset.forName("UTF-8"));
|
FileUtils.writeStringToFile(new File(tempFilePath), "Test", Charset.forName("UTF-8"));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
@ -113,7 +109,7 @@ class MultiUserTestTool {
|
|||||||
return "Unable to create a file in case output directory";
|
return "Unable to create a file in case output directory";
|
||||||
}
|
}
|
||||||
|
|
||||||
// 4 (NTH) Adds it as a logical file set data source.
|
// Add it as a logical file set data source.
|
||||||
AutoIngestDataSource dataSource = new AutoIngestDataSource("", Paths.get(tempFilePath));
|
AutoIngestDataSource dataSource = new AutoIngestDataSource("", Paths.get(tempFilePath));
|
||||||
try {
|
try {
|
||||||
String error = runLogicalFilesDSP(caseForJob, dataSource);
|
String error = runLogicalFilesDSP(caseForJob, dataSource);
|
||||||
@ -121,13 +117,43 @@ class MultiUserTestTool {
|
|||||||
LOGGER.log(Level.SEVERE, error);
|
LOGGER.log(Level.SEVERE, error);
|
||||||
return error;
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ELTODO DELETE
|
||||||
|
dataSource = new AutoIngestDataSource("", Paths.get("C:\\TEST\\Inputs\\Test archivedsp\\Test 6.zip"));
|
||||||
|
error = runLogicalFilesDSP(caseForJob, dataSource);
|
||||||
} catch (InterruptedException ex) {
|
} catch (InterruptedException ex) {
|
||||||
LOGGER.log(Level.SEVERE, "Unable to add test file as data source to case", ex);
|
LOGGER.log(Level.SEVERE, "Unable to add test file as data source to case", ex);
|
||||||
return "Unable to add test file as data source to case";
|
return "Unable to add test file as data source to case";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Verify that Solr was able to create the core and is able to write to it
|
||||||
|
FileManager fileManager = caseForJob.getServices().getFileManager();
|
||||||
|
AbstractFile file = null;
|
||||||
|
List<AbstractFile> listOfFiles = null;
|
||||||
|
try {
|
||||||
|
listOfFiles = fileManager.findFiles(TEST_FILE_NAME);
|
||||||
|
if (listOfFiles == null || listOfFiles.isEmpty()) {
|
||||||
|
LOGGER.log(Level.SEVERE, "Unable to read test file info from case database");
|
||||||
|
return "Unable to read test file info from case database";
|
||||||
|
}
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
|
LOGGER.log(Level.SEVERE, "Unable to read test file info from case database", ex);
|
||||||
|
return "Unable to read test file info from case database";
|
||||||
|
}
|
||||||
|
|
||||||
|
file = listOfFiles.get(0);
|
||||||
|
|
||||||
|
// write to KWS index
|
||||||
|
KeywordSearchService kwsService = Lookup.getDefault().lookup(KeywordSearchService.class);
|
||||||
|
try {
|
||||||
|
kwsService.index(file);
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
|
LOGGER.log(Level.SEVERE, "Unable to write to Keword Search index", ex);
|
||||||
|
return "Unable to write to Keword Search index";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Run ingest on that data source and report errors if the modules could not start.
|
||||||
try {
|
try {
|
||||||
// 5 (NTH) Runs ingest on that data source and reports errors if the modules could not start.
|
|
||||||
String error = analyze(dataSource);
|
String error = analyze(dataSource);
|
||||||
if (!error.isEmpty()) {
|
if (!error.isEmpty()) {
|
||||||
LOGGER.log(Level.SEVERE, error);
|
LOGGER.log(Level.SEVERE, error);
|
||||||
@ -139,13 +165,13 @@ class MultiUserTestTool {
|
|||||||
}
|
}
|
||||||
//} catch (Throwable ex) {
|
//} catch (Throwable ex) {
|
||||||
} finally {
|
} finally {
|
||||||
// 6 (MH) Close and delete the case.
|
// Close and delete the case.
|
||||||
try {
|
/* ELTODO try {
|
||||||
Case.deleteCurrentCase();
|
Case.deleteCurrentCase();
|
||||||
} catch (CaseActionException ex) {
|
} catch (CaseActionException ex) {
|
||||||
LOGGER.log(Level.SEVERE, "Unable to delete test case", ex);
|
LOGGER.log(Level.SEVERE, "Unable to delete test case", ex);
|
||||||
return "Unable to delete test case";
|
return "Unable to delete test case";
|
||||||
}
|
} */
|
||||||
}
|
}
|
||||||
|
|
||||||
return RESULT_SUCCESS;
|
return RESULT_SUCCESS;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user