diff --git a/Core/src/org/sleuthkit/autopsy/report/Bundle.properties b/Core/src/org/sleuthkit/autopsy/report/Bundle.properties
index c293136c40..609b49799f 100644
--- a/Core/src/org/sleuthkit/autopsy/report/Bundle.properties
+++ b/Core/src/org/sleuthkit/autopsy/report/Bundle.properties
@@ -4,7 +4,6 @@ ReportBranding.defaultReportTitle.text=Autopsy Forensic Report
ReportBranding.defaultReportFooter.text=Powered by Autopsy Open Source Digital Forensics Platform - www.sleuthkit.org
ReportProgressPanel.pathLabel.text=pathLabel
ReportProgressPanel.reportLabel.text=reportLabel
-ReportProgressPanel.statusMessageLabel.text=processingLabel
ReportProgressPanel.separationLabel.text=:
ReportProgressPanel.initPathLabel.noFile=No report file
ReportProgressPanel.start.cancelButton.text=Cancel
diff --git a/Core/src/org/sleuthkit/autopsy/report/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/report/Bundle.properties-MERGED
index 148df03fa2..5857743948 100755
--- a/Core/src/org/sleuthkit/autopsy/report/Bundle.properties-MERGED
+++ b/Core/src/org/sleuthkit/autopsy/report/Bundle.properties-MERGED
@@ -9,7 +9,6 @@ ReportProgressPanel.progress.error=Error
ReportProgressPanel.progress.queuing=Queuing...
ReportProgressPanel.progress.running=Running...
ReportProgressPanel.reportLabel.text=reportLabel
-ReportProgressPanel.statusMessageLabel.text=processingLabel
ReportProgressPanel.separationLabel.text=:
ReportProgressPanel.initPathLabel.noFile=No report file
ReportProgressPanel.start.cancelButton.text=Cancel
diff --git a/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties b/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties
index 8dc01dddb4..231d6d87ef 100644
--- a/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties
+++ b/Core/src/org/sleuthkit/autopsy/report/Bundle_ja.properties
@@ -75,7 +75,6 @@ ReportGenerationPanel.closeButton.text=\u9589\u3058\u308b
ReportProgressPanel.reportLabel.text=reportLabel
ReportProgressPanel.pathLabel.text=pathLabel
ReportProgressPanel.separationLabel.text=:
-ReportProgressPanel.statusMessageLabel.text=processingLabel
ReportGenerationPanel.titleLabel.text=\u30ec\u30dd\u30fc\u30c8\u751f\u6210\u9032\u6357\u72b6\u6cc1
ReportVisualPanel2.taggedResultsRadioButton.text=\u30bf\u30b0\u4ed8\u304d\u7d50\u679c
ReportVisualPanel2.allResultsRadioButton.text=\u3059\u3079\u3066\u306e\u7d50\u679c
diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.form b/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.form
index 2bd8001b1a..af321546e9 100644
--- a/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.form
@@ -21,10 +21,9 @@
-
+
-
@@ -33,6 +32,7 @@
+
@@ -50,7 +50,7 @@
-
+
@@ -86,12 +86,32 @@
-
+
-
-
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.java b/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.java
index be1533cb7e..5413cb9a0f 100644
--- a/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/report/ReportProgressPanel.java
@@ -1,7 +1,7 @@
/*
* Autopsy Forensic Browser
*
- * Copyright 2012-2019 Basis Technology Corp.
+ * Copyright 2012-2021 Basis Technology Corp.
* Contact: carrier sleuthkit org
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -83,7 +83,7 @@ public class ReportProgressPanel extends javax.swing.JPanel {
initComponents();
reportProgressBar.setIndeterminate(true);
reportProgressBar.setMaximum(100);
- statusMessageLabel.setText(Bundle.ReportProgressPanel_progress_queuing());
+ statusMessageTextArea.setText(Bundle.ReportProgressPanel_progress_queuing());
status = ReportStatus.QUEUING;
reportLabel.setText("");
pathLabel.setText(""); //NON-NLS
@@ -174,7 +174,7 @@ public class ReportProgressPanel extends javax.swing.JPanel {
*/
public void start() {
EventQueue.invokeLater(() -> {
- statusMessageLabel.setText(NbBundle.getMessage(this.getClass(), "ReportProgressPanel.start.progress.text"));
+ statusMessageTextArea.setText(NbBundle.getMessage(this.getClass(), "ReportProgressPanel.start.progress.text"));
status = ReportStatus.RUNNING;
});
}
@@ -242,7 +242,7 @@ public class ReportProgressPanel extends javax.swing.JPanel {
public void updateStatusLabel(String statusMessage) {
EventQueue.invokeLater(() -> {
if (status != ReportStatus.CANCELED) {
- statusMessageLabel.setText(statusMessage);
+ statusMessageTextArea.setText(statusMessage);
}
});
}
@@ -283,8 +283,8 @@ public class ReportProgressPanel extends javax.swing.JPanel {
case COMPLETE: {
ReportStatus oldValue = status;
status = ReportStatus.COMPLETE;
- statusMessageLabel.setForeground(Color.BLACK);
- statusMessageLabel.setText(statusMessage);
+ statusMessageTextArea.setForeground(Color.BLACK);
+ statusMessageTextArea.setText(statusMessage);
reportProgressBar.setValue(reportProgressBar.getMaximum());
reportProgressBar.setStringPainted(true);
reportProgressBar.setForeground(GREEN);
@@ -295,8 +295,8 @@ public class ReportProgressPanel extends javax.swing.JPanel {
case ERROR: {
ReportStatus oldValue = status;
status = ReportStatus.ERROR;
- statusMessageLabel.setForeground(RED);
- statusMessageLabel.setText(statusMessage);
+ statusMessageTextArea.setForeground(RED);
+ statusMessageTextArea.setText(statusMessage);
reportProgressBar.setValue(reportProgressBar.getMaximum());
reportProgressBar.setStringPainted(true);
reportProgressBar.setForeground(RED);
@@ -333,8 +333,8 @@ public class ReportProgressPanel extends javax.swing.JPanel {
reportProgressBar.setForeground(RED); // Red
reportProgressBar.setString(ReportStatus.CANCELED.getDisplayName());
firePropertyChange(ReportStatus.CANCELED.toString(), oldValue, status);
- statusMessageLabel.setForeground(RED);
- statusMessageLabel.setText(NbBundle.getMessage(this.getClass(), "ReportProgressPanel.cancel.procLbl.text"));
+ statusMessageTextArea.setForeground(RED);
+ statusMessageTextArea.setText(NbBundle.getMessage(this.getClass(), "ReportProgressPanel.cancel.procLbl.text"));
break;
}
}
@@ -368,7 +368,8 @@ public class ReportProgressPanel extends javax.swing.JPanel {
reportLabel = new javax.swing.JLabel();
pathLabel = new javax.swing.JLabel();
separationLabel = new javax.swing.JLabel();
- statusMessageLabel = new javax.swing.JLabel();
+ javax.swing.JScrollPane statusScrollPane = new javax.swing.JScrollPane();
+ statusMessageTextArea = new javax.swing.JTextArea();
setMinimumSize(new java.awt.Dimension(486, 68));
@@ -380,7 +381,15 @@ public class ReportProgressPanel extends javax.swing.JPanel {
org.openide.awt.Mnemonics.setLocalizedText(separationLabel, org.openide.util.NbBundle.getMessage(ReportProgressPanel.class, "ReportProgressPanel.separationLabel.text")); // NOI18N
- org.openide.awt.Mnemonics.setLocalizedText(statusMessageLabel, org.openide.util.NbBundle.getMessage(ReportProgressPanel.class, "ReportProgressPanel.statusMessageLabel.text")); // NOI18N
+ statusScrollPane.setBorder(null);
+
+ statusMessageTextArea.setEditable(false);
+ statusMessageTextArea.setBackground(java.awt.SystemColor.menu);
+ statusMessageTextArea.setColumns(20);
+ statusMessageTextArea.setLineWrap(true);
+ statusMessageTextArea.setRows(5);
+ statusMessageTextArea.setWrapStyleWord(true);
+ statusScrollPane.setViewportView(statusMessageTextArea);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
@@ -389,14 +398,14 @@ public class ReportProgressPanel extends javax.swing.JPanel {
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(statusMessageLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(reportProgressBar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(reportLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(separationLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(pathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 548, Short.MAX_VALUE)))
+ .addComponent(pathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 548, Short.MAX_VALUE))
+ .addComponent(statusScrollPane))
.addContainerGap())
);
layout.setVerticalGroup(
@@ -410,7 +419,7 @@ public class ReportProgressPanel extends javax.swing.JPanel {
.addComponent(pathLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(separationLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(statusMessageLabel)
+ .addComponent(statusScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 26, Short.MAX_VALUE)
.addGap(13, 13, 13))
);
}// //GEN-END:initComponents
@@ -421,7 +430,7 @@ public class ReportProgressPanel extends javax.swing.JPanel {
private javax.swing.JLabel reportLabel;
private javax.swing.JProgressBar reportProgressBar;
private javax.swing.JLabel separationLabel;
- private javax.swing.JLabel statusMessageLabel;
+ private javax.swing.JTextArea statusMessageTextArea;
// End of variables declaration//GEN-END:variables
/**
diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle.properties-MERGED b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle.properties-MERGED
index fce93671b3..3db1b822ea 100755
--- a/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle.properties-MERGED
+++ b/Core/src/org/sleuthkit/autopsy/report/modules/html/Bundle.properties-MERGED
@@ -5,8 +5,8 @@ ReportHTML.getName.text=HTML Report
ReportHTML.getDesc.text=A report about results and tagged items in HTML format.
ReportHTML.writeIndex.title=for case {0}
ReportHTML.writeIndex.noFrames.msg=Your browser is not compatible with our frame setup.
-ReportHTML.writeIndex.noFrames.seeNav=Please see the navigation page for artifact links,
-ReportHTML.writeIndex.seeSum=and the summary page for a case summary.
+ReportHTML.writeIndex.noFrames.seeNav=Please see the navigation page for artifact links,
+ReportHTML.writeIndex.seeSum=and the summary page for a case summary.
ReportHTML.writeNav.title=Report Navigation
ReportHTML.writeNav.h1=Report Navigation
ReportHTML.writeNav.summary=Case Summary
@@ -16,7 +16,7 @@ ReportHTML.writeSum.caseNumber=Case Number:
ReportHTML.writeSum.caseNumImages=Number of data sources in case:
ReportHTML.writeSum.examiner=Examiner:
ReportHTML.writeSum.title=Case Summary
-ReportHTML.writeSum.warningMsg=Warning, this report was run before ingest services completed!
+ReportHTML.writeSum.warningMsg=Warning, this report was run before ingest services completed\!
#
# autopsy/test/scripts/regression.py._html_report_diff() uses reportGenOn.text, caseName, caseNum,
# examiner as a regex signature to skip report.html and summary.html
diff --git a/Core/src/org/sleuthkit/autopsy/report/modules/taggedhashes/SaveTaggedHashesToHashDb.java b/Core/src/org/sleuthkit/autopsy/report/modules/taggedhashes/SaveTaggedHashesToHashDb.java
index 269350b288..9c12d1c6ef 100644
--- a/Core/src/org/sleuthkit/autopsy/report/modules/taggedhashes/SaveTaggedHashesToHashDb.java
+++ b/Core/src/org/sleuthkit/autopsy/report/modules/taggedhashes/SaveTaggedHashesToHashDb.java
@@ -1,7 +1,7 @@
/*
* Autopsy Forensic Browser
*
- * Copyright 2011-2020 Basis Technology Corp.
+ * Copyright 2011-2021 Basis Technology Corp.
* Contact: carrier sleuthkit org
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -23,6 +23,7 @@ import java.util.List;
import java.util.logging.Level;
import org.sleuthkit.autopsy.coreutils.Logger;
import javax.swing.JPanel;
+import org.apache.commons.lang3.StringUtils;
import org.openide.util.NbBundle.Messages;
import org.openide.util.lookup.ServiceProvider;
import org.sleuthkit.autopsy.casemodule.Case;
@@ -67,7 +68,7 @@ public class SaveTaggedHashesToHashDb implements GeneralReportModule {
public String getRelativeFilePath() {
return null;
}
-
+
/**
* Get default configuration for this report module.
*
@@ -101,14 +102,14 @@ public class SaveTaggedHashesToHashDb implements GeneralReportModule {
configPanel.setConfiguration((HashesReportModuleSettings) getDefaultConfiguration());
return;
}
-
+
if (settings instanceof HashesReportModuleSettings) {
configPanel.setConfiguration((HashesReportModuleSettings) settings);
return;
}
throw new IllegalArgumentException("Expected settings argument to be an instance of HashesReportModuleSettings");
- }
+ }
@Messages({
"AddTaggedHashesToHashDb.error.noHashSetsSelected=No hash set selected for export.",
@@ -136,7 +137,7 @@ public class SaveTaggedHashesToHashDb implements GeneralReportModule {
progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.AddTaggedHashesToHashDb_error_noHashSetsSelected());
return;
}
-
+
progressPanel.updateStatusLabel("Adding hashes to " + hashSet.getHashSetName() + " hash set...");
TagsManager tagsManager = openCase.getServices().getTagsManager();
@@ -147,7 +148,7 @@ public class SaveTaggedHashesToHashDb implements GeneralReportModule {
progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, Bundle.AddTaggedHashesToHashDb_error_noTagsSelected());
return;
}
-
+
ArrayList failedExports = new ArrayList<>();
for (TagName tagName : tagNames) {
if (progressPanel.getStatus() == ReportProgressPanel.ReportStatus.CANCELED) {
@@ -155,46 +156,47 @@ public class SaveTaggedHashesToHashDb implements GeneralReportModule {
}
progressPanel.updateStatusLabel("Adding " + tagName.getDisplayName() + " hashes to " + hashSet.getHashSetName() + " hash set...");
+ List tags = new ArrayList<>();
try {
- List tags = tagsManager.getContentTagsByTagName(tagName);
- for (ContentTag tag : tags) {
- // TODO: Currently only AbstractFiles have md5 hashes. Here only files matter.
- Content content = tag.getContent();
- if (content instanceof AbstractFile) {
- if (null != ((AbstractFile) content).getMd5Hash()) {
- try {
- hashSet.addHashes(tag.getContent(), openCase.getDisplayName());
- } catch (TskCoreException ex) {
- Logger.getLogger(SaveTaggedHashesToHashDb.class.getName()).log(Level.SEVERE, "Error adding hash for obj_id = " + tag.getContent().getId() + " to hash set " + hashSet.getHashSetName(), ex);
- failedExports.add(tag.getContent().getName());
- }
- } else {
- progressPanel.updateStatusLabel("Unable to add the " + (tags.size() > 1 ? "files" : "file") + " to the hash set. Hashes have not been calculated. Please configure and run an appropriate ingest module.");
- break;
- }
- }
- }
+ tags.addAll(tagsManager.getContentTagsByTagName(tagName));
} catch (TskCoreException ex) {
Logger.getLogger(SaveTaggedHashesToHashDb.class.getName()).log(Level.SEVERE, "Error adding to hash set", ex);
progressPanel.updateStatusLabel("Error getting selected tags for case.");
}
+ for (ContentTag tag : tags) {
+ // TODO: Currently only AbstractFiles have md5 hashes. Here only files matter.
+ Content content = tag.getContent();
+ if (content instanceof AbstractFile) {
+ if (!StringUtils.isBlank(((AbstractFile) content).getMd5Hash())) {
+ try {
+ hashSet.addHashes(tag.getContent(), openCase.getDisplayName());
+ } catch (TskCoreException ex) {
+ Logger.getLogger(SaveTaggedHashesToHashDb.class.getName()).log(Level.SEVERE, "Error adding hash for obj_id = " + tag.getContent().getId() + " to hash set " + hashSet.getHashSetName(), ex);
+ failedExports.add(tag.getContent().getName());
+ }
+ } else {
+ progressPanel.updateStatusLabel("Unable to add the " + (tags.size() > 1 ? "files" : "file") + " to the hash set. Hashes have not been calculated. Please configure and run an appropriate ingest module.");
+ failedExports.add(tag.getContent().getName());
+ }
+ }
+ }
}
+ progressPanel.setIndeterminate(false);
if (!failedExports.isEmpty()) {
- StringBuilder errorMessage = new StringBuilder("Failed to export hashes for the following files: ");
+ StringBuilder errorMessage = new StringBuilder("Failed to export hashes for the following files: ");
for (int i = 0; i < failedExports.size(); ++i) {
errorMessage.append(failedExports.get(i));
if (failedExports.size() > 1 && i < failedExports.size() - 1) {
- errorMessage.append(",");
+ errorMessage.append(",
");
}
if (i == failedExports.size() - 1) {
- errorMessage.append(".");
+ errorMessage.append(".");
}
}
- progressPanel.updateStatusLabel(errorMessage.toString());
+ progressPanel.complete(ReportProgressPanel.ReportStatus.ERROR, errorMessage.toString());
+ } else {
+ progressPanel.complete(ReportProgressPanel.ReportStatus.COMPLETE);
}
-
- progressPanel.setIndeterminate(false);
- progressPanel.complete(ReportProgressPanel.ReportStatus.COMPLETE);
}
@Override
@@ -202,7 +204,7 @@ public class SaveTaggedHashesToHashDb implements GeneralReportModule {
initializePanel();
return configPanel;
}
-
+
private void initializePanel() {
if (configPanel == null) {
configPanel = new SaveTaggedHashesToHashDbConfigPanel();