mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 16:06:15 +00:00
Merge remote-tracking branch 'origin/pr/524' into develop
This commit is contained in:
commit
2667b6aaee
@ -1,21 +1,6 @@
|
|||||||
OpenIDE-Module-Name=Ingest
|
OpenIDE-Module-Name=Ingest
|
||||||
CTL_IngestAction=Ingest
|
|
||||||
CTL_IngestMessagesAction=Ingest Messages
|
|
||||||
CTL_IngestMessageTopComponent=Messages
|
CTL_IngestMessageTopComponent=Messages
|
||||||
CTL_IngestTopComponent=Ingest
|
|
||||||
HINT_IngestMessageTopComponent=Messages windows
|
HINT_IngestMessageTopComponent=Messages windows
|
||||||
HINT_IngestTopComponent=Ingest window
|
|
||||||
IngestTopComponent.messageFrame.title=Messages
|
|
||||||
IngestTopComponent.ingestProgressLabel.text=File Ingest Progress
|
|
||||||
IngestControlPanel.topLable.text=Image ingest modules
|
|
||||||
IngestControlPanel.startButton.text=Start
|
|
||||||
IngestDialogPanel.ingestServicesLabel.text=Image Ingest Modules
|
|
||||||
IngestDialogForm2.okButton.text=OK
|
|
||||||
IngestDialogForm2.cancelButton.text=Cancel
|
|
||||||
IngestDialogForm.cancelButton.text=Cancel
|
|
||||||
IngestDialogForm.startButton.text=Start
|
|
||||||
IngestDialogForm.jLabel1.text=Ingest Modules
|
|
||||||
IngestTopComponent.refreshFreqLabel.text=Refresh frequency
|
|
||||||
IngestMessageDetailsPanel.backButton.text=
|
IngestMessageDetailsPanel.backButton.text=
|
||||||
IngestMessageDetailsPanel.viewArtifactButton.text=Go to Result
|
IngestMessageDetailsPanel.viewArtifactButton.text=Go to Result
|
||||||
IngestMessageDetailsPanel.viewContentButton.text=Go to Directory
|
IngestMessageDetailsPanel.viewContentButton.text=Go to Directory
|
||||||
@ -34,3 +19,86 @@ IngestMessagePanel.totalUniqueMessagesNameLabel.text=Unique:
|
|||||||
IngestMessagePanel.totalUniqueMessagesNameVal.text=-
|
IngestMessagePanel.totalUniqueMessagesNameVal.text=-
|
||||||
IngestDialogPanel.processUnallocCheckbox.text=Process Unallocated Space
|
IngestDialogPanel.processUnallocCheckbox.text=Process Unallocated Space
|
||||||
IngestDialogPanel.processUnallocCheckbox.toolTipText=Processes unallocated space, such as deleted files. Produces more complete results, but it may take longer to process on large images.
|
IngestDialogPanel.processUnallocCheckbox.toolTipText=Processes unallocated space, such as deleted files. Produces more complete results, but it may take longer to process on large images.
|
||||||
|
DataSourceTask.toString.text=ScheduledTask'{'input\={0}, modules\={1}'}'
|
||||||
|
GeneralIngestConfigurator.modName.tbirdParser.text=Thunderbird Parser
|
||||||
|
GeneralIngestConfigurator.modName.mboxParser.text=MBox Parser
|
||||||
|
GeneralIngestConfigurator.modName.emailParser.text=Email Parser
|
||||||
|
GeneralIngestConfigurator.enabledMods.notFound.msg={0} was previously enabled, but could not be found
|
||||||
|
IngestDataSourceThread.displayName.text={0} dataSource id\:{1}
|
||||||
|
IngestDataSourceThread.progress.pending={0} (Pending...)
|
||||||
|
IngestDataSourceThread.progress.cancelling={0} (Cancelling...)
|
||||||
|
IngestDialog.title.text=Ingest Modules
|
||||||
|
IngestDialog.startButton.title=Start
|
||||||
|
IngestDialog.closeButton.title=Close
|
||||||
|
IngestManager.moduleProperties.text=ingest
|
||||||
|
IngestManager.moduleErr=Module Error
|
||||||
|
IngestManager.moduleErr.errListenToUpdates.msg=A module caused an error listening to Ingest Manager updates. See log to determine which module. Some data could be incomplete.
|
||||||
|
IngestManager.displayInitError.failedToLoad.msg=Failed to load {0} ingest module.\
|
||||||
|
\
|
||||||
|
No ingest modules will be run. Please disable the module or fix the error and restart ingest by right clicking on the data source and selecting Run Ingest Modules.\
|
||||||
|
\
|
||||||
|
Error\: {1}
|
||||||
|
IngestManager.getFileModStats.moduleInfo.text={0} took\: {1} secs. to process()\
|
||||||
|
IngestManager.toString.startTime.text=Start time\: {0}{1}
|
||||||
|
IngestManager.toString.endTime.text=End time\: {0}{1}
|
||||||
|
IngestManager.toString.totalIngestTime.text=Total ingest time\: {0}{1}
|
||||||
|
IngestManager.toString.totalErrs.text=Total errors\: {0}{1}
|
||||||
|
IngestManager.toString.errsPerMod.text=Errors per module\:
|
||||||
|
IngestManager.toHtmlStr.ingestTime.text=Ingest time\: {0}
|
||||||
|
IngestManager.toHtmlStr.totalErrs.text=Total errors\: {0}
|
||||||
|
IngestManager.toHtmlStr.module.text=Module
|
||||||
|
IngestManager.toHtmlStr.time.text=Time
|
||||||
|
IngestManager.toHtmlStr.errors.text=Errors
|
||||||
|
IngestManager.IngestAbstractFileProcessor.displayName=File Ingest
|
||||||
|
IngestManager.IngestAbstractFileProcessor.process.cancelling={0} (Cancelling...)
|
||||||
|
IngestManager.EnqueueWorker.displayName.text=Queueing Ingest
|
||||||
|
IngestManager.EnqueueWorker.process.cancelling={0} (Cancelling...)
|
||||||
|
IngestManager.datatSourceIngest.progress.text=DataSource Ingest {0}
|
||||||
|
IngestManager.fileIngest.progress.text=File Ingest {0}
|
||||||
|
IngestMessage.toString.type.text=type\: {0}
|
||||||
|
IngestMessage.toString.source.text=\ source\: {0}
|
||||||
|
IngestMessage.toString.date.text=\ date\: {0}
|
||||||
|
IngestMessage.toString.subject.text=\ subject\: {0}
|
||||||
|
IngestMessage.toString.details.text=\ details\: {0}
|
||||||
|
IngestMessage.toString.data.text=\ data\: {0}
|
||||||
|
IngestMessage.exception.typeSrcSubjNotNull.msg=message type, source and subject cannot be null
|
||||||
|
IngestMessage.exception.srcSubjNotNull.msg=source and subject cannot be null
|
||||||
|
IngestMessage.exception.srcSubjDetailsDataNotNull.msg=source, subject, details and data cannot be null
|
||||||
|
IngestMessagePanel.moduleErr=Module Error
|
||||||
|
IngestMessagePanel.moduleErr.errListenUpdates.text=A module caused an error listening to IngestMessagePanel updates. See log to determine which module. Some data could be incomplete.
|
||||||
|
IngestMessagePanel.MsgTableMod.colNames.module=Module
|
||||||
|
IngestMessagePanel.MsgTableMod.colNames.num=Num
|
||||||
|
IngestMessagePanel.MsgTableMod.colNames.new=New?
|
||||||
|
IngestMessagePanel.MsgTableMod.colNames.subject=Subject
|
||||||
|
IngestMessagePanel.MsgTableMod.colNames.timestamp=Timestamp
|
||||||
|
IngestMessagePanel.BooleanRenderer.exception.nonBoolVal.msg=Tried to use BooleanRenderer on non-boolean value.
|
||||||
|
IngestMessagePanel.DateRenderer.exception.nonDateVal.text=Tried to use DateRenderer on non-Date value.
|
||||||
|
IngestMessageTopComponent.displayReport.option.OK=OK
|
||||||
|
IngestMessageTopComponent.displayReport.option.GenRpt=Generate Report
|
||||||
|
IngestMessageTopComponent.msgDlg.ingestRpt.text=Ingest Report
|
||||||
|
IngestModuleLoader.moduleErr=Module Error
|
||||||
|
IngestModuleLoader.moduleErr.errListenUpdates.msg=A module caused an error listening to IngestModuleLoader updates. See log to determine which module. Some data could be incomplete.
|
||||||
|
IngestModuleLoader.exception.notImplemented.msg=Not yet implemented
|
||||||
|
IngestModuleLoader.exception.cantFindPipeline.msg=Could not find expected pipeline of type\: {0}, cannot add autodiscovered module\: {1}
|
||||||
|
IngestModuleLoader.save.comment.text=Saved by\: {0} on\: {1}
|
||||||
|
IngestModuleLoader.loadRawPipeline.exception.cantLoadXML.msg=Could not load pipeline config XML\: {0}
|
||||||
|
IngestModuleLoader.loadRawPipeline.exception.invalidFileFormat.msg=Error loading pipeline configuration\: invalid file format.
|
||||||
|
IngestModuleLoader.loadRawPipeline.exception.noPipelinesInConf.msg=No pipelines found in the pipeline configuration\: {0}
|
||||||
|
IngestModuleLoader.exception.noPipelineTypeForStr.msg=No PIPELINE_TYPE for string\: {0}
|
||||||
|
IngestMonitor.mgrErrMsg.lowDiskSpace.title=Ingest stopped - low disk space on {0}
|
||||||
|
IngestMonitor.mgrErrMsg.lowDiskSpace.msg=Stopping ingest due to low disk space on disk {0}. \
|
||||||
|
Ensure the Case drive has at least 1GB free space and restart ingest.
|
||||||
|
IngestScheduler.FileSched.toString.rootDirs.text=\
|
||||||
|
RootDirs(sorted), size\: {0}
|
||||||
|
IngestScheduler.FileSched.toString.curDirs.text=\
|
||||||
|
CurDirs(stack), size\: {0}
|
||||||
|
IngestScheduler.FileSched.toString.curFiles.text=\
|
||||||
|
CurFiles, size\: {0}
|
||||||
|
IngestScheduler.fileTask.toString.long=ProcessTask'{'file\={0}\: {1}'}'
|
||||||
|
IngestScheduler.fileTask.toString.short=ProcessTask'{'file\={0}\: {1}'}'
|
||||||
|
IngestScheduler.FileTask.next.exception.msg=No next ProcessTask, check hasNext() first\!
|
||||||
|
IngestScheduler.remove.exception.notSupported.msg=Not supported.
|
||||||
|
IngestScheduler.DataSourceScheduler.exception.next.msg=There is no data source tasks in the queue, check hasNext()
|
||||||
|
IngestScheduler.DataSourceScheduler.exception.remove.msg=Removing of scheduled data source ingest tasks is not supported.
|
||||||
|
IngestScheduler.DataSourceScheduler.toString.size=DataSourceQueue, size\: {0}
|
||||||
|
PipelineContext.toString.text=pipelineContext'{'task\={0}'}'
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
package org.sleuthkit.autopsy.ingest;
|
package org.sleuthkit.autopsy.ingest;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,7 +74,7 @@ class DataSourceTask<T extends IngestModuleAbstract> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "ScheduledTask{" + "input=" + input + ", modules=" + modules + '}';
|
return NbBundle.getMessage(this.getClass(), "DataSourceTask.toString.text", input, modules);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,6 +22,8 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.openide.util.lookup.ServiceProvider;
|
import org.openide.util.lookup.ServiceProvider;
|
||||||
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
import org.sleuthkit.autopsy.coreutils.ModuleSettings;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
@ -104,9 +106,11 @@ public class GeneralIngestConfigurator implements IngestConfigurator {
|
|||||||
// the UI component.
|
// the UI component.
|
||||||
List<IngestModuleAbstract> enabledModules = new ArrayList<>();
|
List<IngestModuleAbstract> enabledModules = new ArrayList<>();
|
||||||
for (String moduleName : enabledList) {
|
for (String moduleName : enabledList) {
|
||||||
if (moduleName.equals("Thunderbird Parser")
|
if (moduleName.equals(
|
||||||
|| moduleName.equals("MBox Parser")) {
|
NbBundle.getMessage(this.getClass(), "GeneralIngestConfigurator.modName.tbirdParser.text"))
|
||||||
moduleName = "Email Parser";
|
|| moduleName.equals(
|
||||||
|
NbBundle.getMessage(this.getClass(), "GeneralIngestConfigurator.modName.mboxParser.text"))) {
|
||||||
|
moduleName = NbBundle.getMessage(this.getClass(), "GeneralIngestConfigurator.modName.emailParser.text");
|
||||||
}
|
}
|
||||||
|
|
||||||
IngestModuleAbstract moduleFound = null;
|
IngestModuleAbstract moduleFound = null;
|
||||||
@ -120,7 +124,8 @@ public class GeneralIngestConfigurator implements IngestConfigurator {
|
|||||||
enabledModules.add(moduleFound);
|
enabledModules.add(moduleFound);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
messages.add(moduleName + " was previously enabled, but could not be found");
|
messages.add(NbBundle.getMessage(this.getClass(), "GeneralIngestConfigurator.enabledMods.notFound.msg",
|
||||||
|
moduleName));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ingestDialogPanel.setEnabledIngestModules(enabledModules);
|
ingestDialogPanel.setEnabledIngestModules(enabledModules);
|
||||||
|
@ -23,6 +23,8 @@ import java.awt.EventQueue;
|
|||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
import java.util.concurrent.locks.ReentrantReadWriteLock;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.SwingWorker;
|
import javax.swing.SwingWorker;
|
||||||
import org.netbeans.api.progress.ProgressHandle;
|
import org.netbeans.api.progress.ProgressHandle;
|
||||||
@ -95,13 +97,17 @@ import org.sleuthkit.datamodel.Content;
|
|||||||
|
|
||||||
logger.log(Level.INFO, "Pending module: " + module.getName());
|
logger.log(Level.INFO, "Pending module: " + module.getName());
|
||||||
|
|
||||||
final String displayName = module.getName() + " dataSource id:" + dataSource.getId();
|
final String displayName = NbBundle.getMessage(this.getClass(), "IngestDataSourceThread.displayName.text",
|
||||||
progress = ProgressHandleFactory.createHandle(displayName + " (Pending...)", new Cancellable() {
|
module.getName(),
|
||||||
|
dataSource.getId());
|
||||||
|
progress = ProgressHandleFactory.createHandle(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestDataSourceThread.progress.pending", displayName), new Cancellable() {
|
||||||
@Override
|
@Override
|
||||||
public boolean cancel() {
|
public boolean cancel() {
|
||||||
logger.log(Level.INFO, "DataSource ingest module " + module.getName() + " cancelled by user.");
|
logger.log(Level.INFO, "DataSource ingest module " + module.getName() + " cancelled by user.");
|
||||||
if (progress != null) {
|
if (progress != null) {
|
||||||
progress.setDisplayName(displayName + " (Cancelling...)");
|
progress.setDisplayName(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestDataSourceThread.progress.cancelling", displayName));
|
||||||
}
|
}
|
||||||
return IngestDataSourceThread.this.cancel(true);
|
return IngestDataSourceThread.this.cancel(true);
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,8 @@ import javax.swing.JDialog;
|
|||||||
import javax.swing.JFrame;
|
import javax.swing.JFrame;
|
||||||
import javax.swing.JOptionPane;
|
import javax.swing.JOptionPane;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -40,7 +42,7 @@ import org.sleuthkit.datamodel.Content;
|
|||||||
*/
|
*/
|
||||||
public class IngestDialog extends JDialog {
|
public class IngestDialog extends JDialog {
|
||||||
|
|
||||||
private static final String TITLE = "Ingest Modules";
|
private static final String TITLE = NbBundle.getMessage(IngestDialog.class, "IngestDialog.title.text");
|
||||||
private static Dimension DIMENSIONS = new Dimension(500, 300);
|
private static Dimension DIMENSIONS = new Dimension(500, 300);
|
||||||
private IngestConfigurator ingestConfigurator;
|
private IngestConfigurator ingestConfigurator;
|
||||||
|
|
||||||
@ -77,8 +79,8 @@ public class IngestDialog extends JDialog {
|
|||||||
setLocation((screenDimension.width - w) / 2, (screenDimension.height - h) / 2);
|
setLocation((screenDimension.width - w) / 2, (screenDimension.height - h) / 2);
|
||||||
|
|
||||||
add(ingestConfigurator.getIngestConfigPanel(), BorderLayout.PAGE_START);
|
add(ingestConfigurator.getIngestConfigPanel(), BorderLayout.PAGE_START);
|
||||||
JButton startButton = new JButton("Start");
|
JButton startButton = new JButton(NbBundle.getMessage(this.getClass(), "IngestDialog.startButton.title"));
|
||||||
JButton closeButton = new JButton("Close");
|
JButton closeButton = new JButton(NbBundle.getMessage(this.getClass(), "IngestDialog.closeButton.title"));
|
||||||
startButton.addActionListener(new ActionListener() {
|
startButton.addActionListener(new ActionListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -32,6 +32,8 @@ import java.util.concurrent.CancellationException;
|
|||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.SwingWorker;
|
import javax.swing.SwingWorker;
|
||||||
import org.netbeans.api.progress.ProgressHandle;
|
import org.netbeans.api.progress.ProgressHandle;
|
||||||
@ -77,7 +79,8 @@ public class IngestManager {
|
|||||||
//module loader
|
//module loader
|
||||||
private IngestModuleLoader moduleLoader = null;
|
private IngestModuleLoader moduleLoader = null;
|
||||||
//property file name id for the module
|
//property file name id for the module
|
||||||
public final static String MODULE_PROPERTIES = "ingest";
|
public final static String MODULE_PROPERTIES = NbBundle.getMessage(IngestManager.class,
|
||||||
|
"IngestManager.moduleProperties.text");
|
||||||
private volatile int messageID = 0;
|
private volatile int messageID = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -212,7 +215,9 @@ public class IngestManager {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Ingest Manager updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr"),
|
||||||
|
NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr.errListenToUpdates.msg"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,7 +232,9 @@ public class IngestManager {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Ingest Manager updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr"),
|
||||||
|
NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr.errListenToUpdates.msg"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,7 +249,9 @@ public class IngestManager {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Ingest Manager updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr"),
|
||||||
|
NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr.errListenToUpdates.msg"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -256,7 +265,9 @@ public class IngestManager {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
logger.log(Level.SEVERE, "Ingest manager listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to Ingest Manager updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr"),
|
||||||
|
NbBundle.getMessage(IngestManager.class, "IngestManager.moduleErr.errListenToUpdates.msg"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -495,11 +506,8 @@ public class IngestManager {
|
|||||||
*/
|
*/
|
||||||
private void displayInitError(String moduleName, String errorMessage) {
|
private void displayInitError(String moduleName, String errorMessage) {
|
||||||
MessageNotifyUtil.Message.error(
|
MessageNotifyUtil.Message.error(
|
||||||
"Failed to load " + moduleName + " ingest module.\n\n"
|
NbBundle.getMessage(this.getClass(), "IngestManager.displayInitError.failedToLoad.msg", moduleName,
|
||||||
+ "No ingest modules will be run. Please disable the module "
|
errorMessage));
|
||||||
+ "or fix the error and restart ingest by right clicking on "
|
|
||||||
+ "the data source and selecting Run Ingest Modules.\n\n"
|
|
||||||
+ "Error: " + errorMessage);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -856,9 +864,9 @@ public class IngestManager {
|
|||||||
String getFileModuleStats() {
|
String getFileModuleStats() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (final String moduleName : fileModuleTimers.keySet()) {
|
for (final String moduleName : fileModuleTimers.keySet()) {
|
||||||
sb.append(moduleName).append(" took: ")
|
sb.append(NbBundle.getMessage(this.getClass(),
|
||||||
.append(fileModuleTimers.get(moduleName) / 1000)
|
"IngestManager.getFileModStats.moduleInfo.text",
|
||||||
.append(" secs. to process()").append('\n');
|
moduleName, fileModuleTimers.get(moduleName) / 1000));
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
@ -868,15 +876,18 @@ public class IngestManager {
|
|||||||
final String EOL = System.getProperty("line.separator");
|
final String EOL = System.getProperty("line.separator");
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
if (startTime != null) {
|
if (startTime != null) {
|
||||||
sb.append("Start time: ").append(dateFormatter.format(startTime)).append(EOL);
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestManager.toString.startTime.text",
|
||||||
|
dateFormatter.format(startTime), EOL));
|
||||||
}
|
}
|
||||||
if (endTime != null) {
|
if (endTime != null) {
|
||||||
sb.append("End time: ").append(dateFormatter.format(endTime)).append(EOL);
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestManager.toString.endTime.text",
|
||||||
|
dateFormatter.format(endTime), EOL));
|
||||||
}
|
}
|
||||||
sb.append("Total ingest time: ").append(getTotalTimeString()).append(EOL);
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestManager.toString.totalIngestTime.text",
|
||||||
sb.append("Total errors: ").append(errorsTotal).append(EOL);
|
getTotalTimeString(), EOL));
|
||||||
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestManager.toString.totalErrs.text", errorsTotal, EOL));
|
||||||
if (errorsTotal > 0) {
|
if (errorsTotal > 0) {
|
||||||
sb.append("Errors per module:");
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestManager.toString.errsPerMod.text"));
|
||||||
for (String moduleName : errors.keySet()) {
|
for (String moduleName : errors.keySet()) {
|
||||||
sb.append("\t").append(moduleName).append(": ").append(errors.get(moduleName)).append(EOL);
|
sb.append("\t").append(moduleName).append(": ").append(errors.get(moduleName)).append(EOL);
|
||||||
}
|
}
|
||||||
@ -887,9 +898,18 @@ public class IngestManager {
|
|||||||
public String toHtmlString() {
|
public String toHtmlString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("<html><body>");
|
sb.append("<html><body>");
|
||||||
sb.append("Ingest time: ").append(getTotalTimeString()).append("<br />");
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestManager.toHtmlStr.ingestTime.text",
|
||||||
sb.append("Total errors: ").append(errorsTotal).append("<br />");
|
getTotalTimeString()))
|
||||||
sb.append("<table><tr><th>Module</th><th>Time</th><th>Errors</th></tr>\n");
|
.append("<br />");
|
||||||
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestManager.toHtmlStr.totalErrs.text", errorsTotal))
|
||||||
|
.append("<br />");
|
||||||
|
sb.append("<table><tr><th>")
|
||||||
|
.append(NbBundle.getMessage(this.getClass(), "IngestManager.toHtmlStr.module.text"))
|
||||||
|
.append("</th><th>")
|
||||||
|
.append(NbBundle.getMessage(this.getClass(), "IngestManager.toHtmlStr.time.text"))
|
||||||
|
.append("</th><th>")
|
||||||
|
.append(NbBundle.getMessage(this.getClass(), "IngestManager.toHtmlStr.errors.text"))
|
||||||
|
.append("</th></tr>\n");
|
||||||
|
|
||||||
for (final String moduleName : fileModuleTimers.keySet()) {
|
for (final String moduleName : fileModuleTimers.keySet()) {
|
||||||
sb.append("<tr><td>").append(moduleName).append("</td><td>");
|
sb.append("<tr><td>").append(moduleName).append("</td><td>");
|
||||||
@ -993,13 +1013,16 @@ public class IngestManager {
|
|||||||
IngestManager.fireModuleEvent(IngestModuleEvent.STARTED.toString(), s.getName());
|
IngestManager.fireModuleEvent(IngestModuleEvent.STARTED.toString(), s.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
final String displayName = "File Ingest";
|
final String displayName = NbBundle
|
||||||
|
.getMessage(this.getClass(), "IngestManager.IngestAbstractFileProcessor.displayName");
|
||||||
progress = ProgressHandleFactory.createHandle(displayName, new Cancellable() {
|
progress = ProgressHandleFactory.createHandle(displayName, new Cancellable() {
|
||||||
@Override
|
@Override
|
||||||
public boolean cancel() {
|
public boolean cancel() {
|
||||||
logger.log(Level.INFO, "Filed ingest cancelled by user.");
|
logger.log(Level.INFO, "Filed ingest cancelled by user.");
|
||||||
if (progress != null) {
|
if (progress != null) {
|
||||||
progress.setDisplayName(displayName + " (Cancelling...)");
|
progress.setDisplayName(NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestManager.IngestAbstractFileProcessor.process.cancelling",
|
||||||
|
displayName));
|
||||||
}
|
}
|
||||||
return IngestAbstractFileProcessor.this.cancel(true);
|
return IngestAbstractFileProcessor.this.cancel(true);
|
||||||
}
|
}
|
||||||
@ -1169,13 +1192,16 @@ public class IngestManager {
|
|||||||
@Override
|
@Override
|
||||||
protected Object doInBackground() throws Exception {
|
protected Object doInBackground() throws Exception {
|
||||||
|
|
||||||
final String displayName = "Queueing Ingest";
|
final String displayName = NbBundle
|
||||||
|
.getMessage(this.getClass(), "IngestManager.EnqueueWorker.displayName.text");
|
||||||
progress = ProgressHandleFactory.createHandle(displayName, new Cancellable() {
|
progress = ProgressHandleFactory.createHandle(displayName, new Cancellable() {
|
||||||
@Override
|
@Override
|
||||||
public boolean cancel() {
|
public boolean cancel() {
|
||||||
logger.log(Level.INFO, "Queueing ingest cancelled by user.");
|
logger.log(Level.INFO, "Queueing ingest cancelled by user.");
|
||||||
if (progress != null) {
|
if (progress != null) {
|
||||||
progress.setDisplayName(displayName + " (Cancelling...)");
|
progress.setDisplayName(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestManager.EnqueueWorker.process.cancelling",
|
||||||
|
displayName));
|
||||||
}
|
}
|
||||||
return EnqueueWorker.this.cancel(true);
|
return EnqueueWorker.this.cancel(true);
|
||||||
}
|
}
|
||||||
@ -1274,10 +1300,12 @@ public class IngestManager {
|
|||||||
|
|
||||||
|
|
||||||
logger.log(Level.INFO, "Queing data source ingest task: " + dataSourceTask);
|
logger.log(Level.INFO, "Queing data source ingest task: " + dataSourceTask);
|
||||||
progress.progress("DataSource Ingest" + " " + inputName, processed);
|
progress.progress(NbBundle.getMessage(this.getClass(), "IngestManager.datatSourceIngest.progress.text",
|
||||||
|
inputName), processed);
|
||||||
final IngestScheduler.DataSourceScheduler dataSourceScheduler = scheduler.getDataSourceScheduler();
|
final IngestScheduler.DataSourceScheduler dataSourceScheduler = scheduler.getDataSourceScheduler();
|
||||||
dataSourceScheduler.schedule(dataSourceTask);
|
dataSourceScheduler.schedule(dataSourceTask);
|
||||||
progress.progress("DataSource Ingest" + " " + inputName, ++processed);
|
progress.progress(NbBundle.getMessage(this.getClass(), "IngestManager.datatSourceIngest.progress.text",
|
||||||
|
inputName), ++processed);
|
||||||
|
|
||||||
|
|
||||||
/* Schedule the file-level ingest modules for the children of the data source */
|
/* Schedule the file-level ingest modules for the children of the data source */
|
||||||
@ -1285,10 +1313,12 @@ public class IngestManager {
|
|||||||
new DataSourceTask(input, fileMods, getProcessUnallocSpace());
|
new DataSourceTask(input, fileMods, getProcessUnallocSpace());
|
||||||
|
|
||||||
logger.log(Level.INFO, "Queing file ingest task: " + fTask);
|
logger.log(Level.INFO, "Queing file ingest task: " + fTask);
|
||||||
progress.progress("File Ingest" + " " + inputName, processed);
|
progress.progress(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestManager.fileIngest.progress.text", inputName), processed);
|
||||||
final IngestScheduler.FileScheduler fileScheduler = scheduler.getFileScheduler();
|
final IngestScheduler.FileScheduler fileScheduler = scheduler.getFileScheduler();
|
||||||
fileScheduler.schedule(fTask);
|
fileScheduler.schedule(fTask);
|
||||||
progress.progress("File Ingest" + " " + inputName, ++processed);
|
progress.progress(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestManager.fileIngest.progress.text", inputName), ++processed);
|
||||||
|
|
||||||
} //for data sources
|
} //for data sources
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,8 @@ package org.sleuthkit.autopsy.ingest;
|
|||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import org.sleuthkit.autopsy.datamodel.KeyValue;
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.datamodel.BlackboardArtifact;
|
import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -101,18 +102,19 @@ public class IngestMessage {
|
|||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append(Long.toString(ID)).append(": ");
|
sb.append(Long.toString(ID)).append(": ");
|
||||||
sb.append("type: ").append(messageType.name());
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestMessage.toString.type.text", messageType.name()));
|
||||||
if (source != null) //can be null for manager messages
|
if (source != null) //can be null for manager messages
|
||||||
{
|
{
|
||||||
sb.append(" source: ").append(source.getName());
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestMessage.toString.source.text", source.getName()));
|
||||||
}
|
}
|
||||||
sb.append(" date: ").append(dateFormat.format(datePosted));
|
sb.append(
|
||||||
sb.append(" subject: ").append(subject);
|
NbBundle.getMessage(this.getClass(), "IngestMessage.toString.date.text", dateFormat.format(datePosted)));
|
||||||
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestMessage.toString.subject.text", subject));
|
||||||
if (detailsHtml != null) {
|
if (detailsHtml != null) {
|
||||||
sb.append(" details: ").append(detailsHtml);
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestMessage.toString.details.text", detailsHtml));
|
||||||
}
|
}
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
sb.append(" data: ").append(data.toString()).append(' ');
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestMessage.toString.data.text", data.toString()));
|
||||||
}
|
}
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
@ -176,7 +178,8 @@ public class IngestMessage {
|
|||||||
*/
|
*/
|
||||||
public static IngestMessage createMessage(long ID, MessageType messageType, IngestModuleAbstract source, String subject, String detailsHtml) {
|
public static IngestMessage createMessage(long ID, MessageType messageType, IngestModuleAbstract source, String subject, String detailsHtml) {
|
||||||
if (messageType == null || source == null || subject == null) {
|
if (messageType == null || source == null || subject == null) {
|
||||||
throw new IllegalArgumentException("message type, source and subject cannot be null");
|
throw new IllegalArgumentException(
|
||||||
|
NbBundle.getMessage(IngestMessage.class, "IngestMessage.exception.typeSrcSubjNotNull.msg"));
|
||||||
}
|
}
|
||||||
return new IngestMessage(ID, messageType, source, subject, detailsHtml, null);
|
return new IngestMessage(ID, messageType, source, subject, detailsHtml, null);
|
||||||
}
|
}
|
||||||
@ -204,7 +207,8 @@ public class IngestMessage {
|
|||||||
*/
|
*/
|
||||||
public static IngestMessage createErrorMessage(long ID, IngestModuleAbstract source, String subject, String detailsHtml) {
|
public static IngestMessage createErrorMessage(long ID, IngestModuleAbstract source, String subject, String detailsHtml) {
|
||||||
if (source == null || subject == null) {
|
if (source == null || subject == null) {
|
||||||
throw new IllegalArgumentException("source and subject cannot be null");
|
throw new IllegalArgumentException(
|
||||||
|
NbBundle.getMessage(IngestMessage.class, "IngestMessage.exception.srcSubjNotNull.msg"));
|
||||||
}
|
}
|
||||||
return new IngestMessage(ID, MessageType.ERROR, source, subject, detailsHtml, null);
|
return new IngestMessage(ID, MessageType.ERROR, source, subject, detailsHtml, null);
|
||||||
}
|
}
|
||||||
@ -219,7 +223,8 @@ public class IngestMessage {
|
|||||||
*/
|
*/
|
||||||
public static IngestMessage createWarningMessage(long ID, IngestModuleAbstract source, String subject, String detailsHtml) {
|
public static IngestMessage createWarningMessage(long ID, IngestModuleAbstract source, String subject, String detailsHtml) {
|
||||||
if (source == null || subject == null) {
|
if (source == null || subject == null) {
|
||||||
throw new IllegalArgumentException("source and subject cannot be null");
|
throw new IllegalArgumentException(
|
||||||
|
NbBundle.getMessage(IngestMessage.class, "IngestMessage.exception.srcSubjNotNull.msg"));
|
||||||
}
|
}
|
||||||
return new IngestMessage(ID, MessageType.WARNING, source, subject, detailsHtml, null);
|
return new IngestMessage(ID, MessageType.WARNING, source, subject, detailsHtml, null);
|
||||||
}
|
}
|
||||||
@ -236,7 +241,8 @@ public class IngestMessage {
|
|||||||
*/
|
*/
|
||||||
public static IngestMessage createDataMessage(long ID, IngestModuleAbstract source, String subject, String detailsHtml, String uniqueKey, BlackboardArtifact data) {
|
public static IngestMessage createDataMessage(long ID, IngestModuleAbstract source, String subject, String detailsHtml, String uniqueKey, BlackboardArtifact data) {
|
||||||
if (source == null || subject == null || detailsHtml == null || data == null) {
|
if (source == null || subject == null || detailsHtml == null || data == null) {
|
||||||
throw new IllegalArgumentException("source, subject, details and data cannot be null");
|
throw new IllegalArgumentException(
|
||||||
|
NbBundle.getMessage(IngestMessage.class, "IngestMessage.exception.srcSubjDetailsDataNotNull.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
IngestMessage im = new IngestMessage(ID, MessageType.DATA, source, subject, detailsHtml, uniqueKey);
|
IngestMessage im = new IngestMessage(ID, MessageType.DATA, source, subject, detailsHtml, uniqueKey);
|
||||||
|
@ -38,6 +38,8 @@ import java.util.Map;
|
|||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import javax.swing.JLabel;
|
import javax.swing.JLabel;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.JTable;
|
import javax.swing.JTable;
|
||||||
import javax.swing.ListSelectionModel;
|
import javax.swing.ListSelectionModel;
|
||||||
@ -52,8 +54,6 @@ import javax.swing.table.TableCellRenderer;
|
|||||||
import org.sleuthkit.autopsy.ingest.IngestMessage.*;
|
import org.sleuthkit.autopsy.ingest.IngestMessage.*;
|
||||||
import org.sleuthkit.datamodel.BlackboardArtifact;
|
import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||||
import java.util.logging.Level;
|
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notification window showing messages from modules to user
|
* Notification window showing messages from modules to user
|
||||||
@ -300,7 +300,10 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", e);
|
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to IngestMessagePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "IngestMessagePanel.moduleErr"),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestMessagePanel.moduleErr.errListenUpdates.text"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
//update labels
|
//update labels
|
||||||
@ -325,7 +328,10 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", e);
|
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to IngestMessagePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "IngestMessagePanel.moduleErr"),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestMessagePanel.moduleErr.errListenUpdates.text"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -344,7 +350,10 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", e);
|
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to IngestMessagePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "IngestMessagePanel.moduleErr"),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestMessagePanel.moduleErr.errListenUpdates.text"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -357,13 +366,21 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
|
|||||||
}
|
}
|
||||||
catch (Exception ee) {
|
catch (Exception ee) {
|
||||||
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", ee);
|
logger.log(Level.SEVERE, "IngestMessagePanel listener threw exception", ee);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to IngestMessagePanel updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "IngestMessagePanel.moduleErr"),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestMessagePanel.moduleErr.errListenUpdates.text"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MessageTableModel extends AbstractTableModel {
|
private class MessageTableModel extends AbstractTableModel {
|
||||||
|
|
||||||
private String[] columnNames = new String[]{"Module", "Num", "New?", "Subject", "Timestamp"};
|
private String[] columnNames = new String[]{
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestMessagePanel.MsgTableMod.colNames.module"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestMessagePanel.MsgTableMod.colNames.num"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestMessagePanel.MsgTableMod.colNames.new"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestMessagePanel.MsgTableMod.colNames.subject"),
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestMessagePanel.MsgTableMod.colNames.timestamp")};
|
||||||
private List<TableEntry> messageData = new ArrayList<TableEntry>();
|
private List<TableEntry> messageData = new ArrayList<TableEntry>();
|
||||||
//for keeping track of messages to group, per module, by uniqness
|
//for keeping track of messages to group, per module, by uniqness
|
||||||
private Map<IngestModuleAbstract, Map<String, List<IngestMessageGroup>>> groupings = new HashMap<IngestModuleAbstract, Map<String, List<IngestMessageGroup>>>();
|
private Map<IngestModuleAbstract, Map<String, List<IngestMessageGroup>>> groupings = new HashMap<IngestModuleAbstract, Map<String, List<IngestMessageGroup>>>();
|
||||||
@ -845,7 +862,8 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
|
|||||||
if (value instanceof Boolean) {
|
if (value instanceof Boolean) {
|
||||||
boolVal = ((Boolean)value).booleanValue();
|
boolVal = ((Boolean)value).booleanValue();
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Tried to use BooleanRenderer on non-boolean value.");
|
throw new RuntimeException(NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestMessagePanel.BooleanRenderer.exception.nonBoolVal.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
String aValue = boolVal ? bulletChar : "";
|
String aValue = boolVal ? bulletChar : "";
|
||||||
@ -928,7 +946,8 @@ class IngestMessagePanel extends JPanel implements TableModelListener {
|
|||||||
DateFormat df = new SimpleDateFormat("HH:mm:ss");
|
DateFormat df = new SimpleDateFormat("HH:mm:ss");
|
||||||
aValue = df.format(date);
|
aValue = df.format(date);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Tried to use DateRenderer on non-Date value.");
|
throw new RuntimeException(NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestMessagePanel.DateRenderer.exception.nonDateVal.text"));
|
||||||
}
|
}
|
||||||
|
|
||||||
Component cell = super.getTableCellRendererComponent(table, aValue, isSelected, hasFocus, row, column);
|
Component cell = super.getTableCellRendererComponent(table, aValue, isSelected, hasFocus, row, column);
|
||||||
|
@ -249,11 +249,12 @@ import org.sleuthkit.datamodel.Content;
|
|||||||
@Override
|
@Override
|
||||||
public void displayReport(String ingestReport) {
|
public void displayReport(String ingestReport) {
|
||||||
|
|
||||||
Object[] options = {"OK",
|
Object[] options = {NbBundle.getMessage(this.getClass(), "IngestMessageTopComponent.displayReport.option.OK"),
|
||||||
"Generate Report"};
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestMessageTopComponent.displayReport.option.GenRpt")};
|
||||||
final int choice = JOptionPane.showOptionDialog(null,
|
final int choice = JOptionPane.showOptionDialog(null,
|
||||||
ingestReport,
|
ingestReport,
|
||||||
"Ingest Report",
|
NbBundle.getMessage(this.getClass(), "IngestMessageTopComponent.msgDlg.ingestRpt.text"),
|
||||||
JOptionPane.YES_NO_OPTION,
|
JOptionPane.YES_NO_OPTION,
|
||||||
JOptionPane.INFORMATION_MESSAGE,
|
JOptionPane.INFORMATION_MESSAGE,
|
||||||
null,
|
null,
|
||||||
|
@ -48,10 +48,7 @@ import javax.xml.parsers.DocumentBuilder;
|
|||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
import javax.xml.parsers.ParserConfigurationException;
|
import javax.xml.parsers.ParserConfigurationException;
|
||||||
import org.openide.modules.ModuleInfo;
|
import org.openide.modules.ModuleInfo;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.*;
|
||||||
import org.openide.util.Lookup;
|
|
||||||
import org.openide.util.LookupEvent;
|
|
||||||
import org.openide.util.LookupListener;
|
|
||||||
import org.reflections.Reflections;
|
import org.reflections.Reflections;
|
||||||
import org.reflections.scanners.ResourcesScanner;
|
import org.reflections.scanners.ResourcesScanner;
|
||||||
import org.reflections.scanners.SubTypesScanner;
|
import org.reflections.scanners.SubTypesScanner;
|
||||||
@ -611,7 +608,10 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
|||||||
}
|
}
|
||||||
catch (Exception e) {
|
catch (Exception e) {
|
||||||
logger.log(Level.SEVERE, "IngestModuleLoader listener threw exception", e);
|
logger.log(Level.SEVERE, "IngestModuleLoader listener threw exception", e);
|
||||||
MessageNotifyUtil.Notify.show("Module Error", "A module caused an error listening to IngestModuleLoader updates. See log to determine which module. Some data could be incomplete.", MessageNotifyUtil.MessageType.ERROR);
|
MessageNotifyUtil.Notify.show(NbBundle.getMessage(this.getClass(), "IngestModuleLoader.moduleErr"),
|
||||||
|
NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestModuleLoader.moduleErr.errListenUpdates.msg"),
|
||||||
|
MessageNotifyUtil.MessageType.ERROR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -633,7 +633,8 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
|||||||
* @param newOrder new order to set
|
* @param newOrder new order to set
|
||||||
*/
|
*/
|
||||||
void setModuleOrder(IngestModuleLoader.XmlPipelineRaw.PIPELINE_TYPE pipeLineType, String moduleLocation, int newOrder) throws IngestModuleLoaderException {
|
void setModuleOrder(IngestModuleLoader.XmlPipelineRaw.PIPELINE_TYPE pipeLineType, String moduleLocation, int newOrder) throws IngestModuleLoaderException {
|
||||||
throw new IngestModuleLoaderException("Not yet implemented");
|
throw new IngestModuleLoaderException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestModuleLoader.exception.notImplemented.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -665,7 +666,9 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pipeline == null) {
|
if (pipeline == null) {
|
||||||
throw new IngestModuleLoaderException("Could not find expected pipeline of type: " + pipelineType.toString() + ", cannot add autodiscovered module: " + moduleLocation);
|
throw new IngestModuleLoaderException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestModuleLoader.exception.cantFindPipeline.msg",
|
||||||
|
pipelineType.toString(), moduleLocation));
|
||||||
} else {
|
} else {
|
||||||
pipeline.modules.add(modRaw);
|
pipeline.modules.add(modRaw);
|
||||||
logger.log(Level.INFO, "Added a new module " + moduleClass.getName() + " to pipeline " + pipelineType.toString());
|
logger.log(Level.INFO, "Added a new module " + moduleClass.getName() + " to pipeline " + pipelineType.toString());
|
||||||
@ -706,8 +709,9 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
|||||||
Document doc = docBuilder.newDocument();
|
Document doc = docBuilder.newDocument();
|
||||||
|
|
||||||
|
|
||||||
Comment comment = doc.createComment("Saved by: " + getClass().getName()
|
Comment comment = doc.createComment(
|
||||||
+ " on: " + dateFormatter.format(System.currentTimeMillis()));
|
NbBundle.getMessage(this.getClass(), "IngestModuleLoader.save.comment.text", getClass().getName(),
|
||||||
|
dateFormatter.format(System.currentTimeMillis())));
|
||||||
doc.appendChild(comment);
|
doc.appendChild(comment);
|
||||||
Element rootEl = doc.createElement(IngestModuleLoader.XmlPipelineRaw.XML_PIPELINE_ROOT);
|
Element rootEl = doc.createElement(IngestModuleLoader.XmlPipelineRaw.XML_PIPELINE_ROOT);
|
||||||
doc.appendChild(rootEl);
|
doc.appendChild(rootEl);
|
||||||
@ -885,18 +889,23 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
|||||||
private void loadRawPipeline() throws IngestModuleLoaderException {
|
private void loadRawPipeline() throws IngestModuleLoaderException {
|
||||||
final Document doc = XMLUtil.loadDoc(IngestModuleLoader.class, absFilePath, XSDFILE);
|
final Document doc = XMLUtil.loadDoc(IngestModuleLoader.class, absFilePath, XSDFILE);
|
||||||
if (doc == null) {
|
if (doc == null) {
|
||||||
throw new IngestModuleLoaderException("Could not load pipeline config XML: " + this.absFilePath);
|
throw new IngestModuleLoaderException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestModuleLoader.loadRawPipeline.exception.cantLoadXML.msg",
|
||||||
|
this.absFilePath));
|
||||||
}
|
}
|
||||||
Element root = doc.getDocumentElement();
|
Element root = doc.getDocumentElement();
|
||||||
if (root == null) {
|
if (root == null) {
|
||||||
String msg = "Error loading pipeline configuration: invalid file format.";
|
String msg = NbBundle
|
||||||
|
.getMessage(this.getClass(), "IngestModuleLoader.loadRawPipeline.exception.invalidFileFormat.msg");
|
||||||
logger.log(Level.SEVERE, msg);
|
logger.log(Level.SEVERE, msg);
|
||||||
throw new IngestModuleLoaderException(msg);
|
throw new IngestModuleLoaderException(msg);
|
||||||
}
|
}
|
||||||
NodeList pipelineNodes = root.getElementsByTagName(IngestModuleLoader.XmlPipelineRaw.XML_PIPELINE_EL);
|
NodeList pipelineNodes = root.getElementsByTagName(IngestModuleLoader.XmlPipelineRaw.XML_PIPELINE_EL);
|
||||||
int numPipelines = pipelineNodes.getLength();
|
int numPipelines = pipelineNodes.getLength();
|
||||||
if (numPipelines == 0) {
|
if (numPipelines == 0) {
|
||||||
throw new IngestModuleLoaderException("No pipelines found in the pipeline configuration: " + absFilePath);
|
throw new IngestModuleLoaderException(NbBundle.getMessage(this.getClass(),
|
||||||
|
"IngestModuleLoader.loadRawPipeline.exception.noPipelinesInConf.msg",
|
||||||
|
absFilePath));
|
||||||
}
|
}
|
||||||
for (int pipelineNum = 0; pipelineNum < numPipelines; ++pipelineNum) {
|
for (int pipelineNum = 0; pipelineNum < numPipelines; ++pipelineNum) {
|
||||||
//process pipelines
|
//process pipelines
|
||||||
@ -1026,7 +1035,8 @@ import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
|||||||
return types[i];
|
return types[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new IllegalArgumentException("No PIPELINE_TYPE for string: " + s);
|
throw new IllegalArgumentException(
|
||||||
|
NbBundle.getMessage(IngestModuleLoader.class, "IngestModuleLoader.exception.noPipelineTypeForStr.msg", s));
|
||||||
}
|
}
|
||||||
private static final String XML_PIPELINE_ROOT = "PIPELINE_CONFIG";
|
private static final String XML_PIPELINE_ROOT = "PIPELINE_CONFIG";
|
||||||
private static final String XML_PIPELINE_EL = "PIPELINE";
|
private static final String XML_PIPELINE_EL = "PIPELINE";
|
||||||
|
@ -27,6 +27,8 @@ import java.io.IOException;
|
|||||||
import java.util.logging.FileHandler;
|
import java.util.logging.FileHandler;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.SimpleFormatter;
|
import java.util.logging.SimpleFormatter;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
import javax.swing.Timer;
|
import javax.swing.Timer;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.Exceptions;
|
||||||
@ -164,9 +166,9 @@ import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
|||||||
MONITOR_LOGGER.log(Level.SEVERE, "Stopping ingest due to low disk space on disk " + diskPath);
|
MONITOR_LOGGER.log(Level.SEVERE, "Stopping ingest due to low disk space on disk " + diskPath);
|
||||||
logger.log(Level.SEVERE, "Stopping ingest due to low disk space on disk " + diskPath);
|
logger.log(Level.SEVERE, "Stopping ingest due to low disk space on disk " + diskPath);
|
||||||
manager.stopAll();
|
manager.stopAll();
|
||||||
manager.postMessage(IngestMessage.createManagerErrorMessage("Ingest stopped - low disk space on " + diskPath,
|
manager.postMessage(IngestMessage.createManagerErrorMessage(
|
||||||
"Stopping ingest due to low disk space on disk " + diskPath
|
NbBundle.getMessage(this.getClass(), "IngestMonitor.mgrErrMsg.lowDiskSpace.title", diskPath),
|
||||||
+ ". \nEnsure the Case drive has at least 1GB free space and restart ingest."));
|
NbBundle.getMessage(this.getClass(), "IngestMonitor.mgrErrMsg.lowDiskSpace.msg", diskPath)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,8 +31,9 @@ import java.util.logging.Level;
|
|||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
import org.sleuthkit.autopsy.casemodule.Case;
|
import org.sleuthkit.autopsy.casemodule.Case;
|
||||||
import org.sleuthkit.autopsy.ingest.IngestScheduler.FileScheduler.FileTask;
|
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
import org.sleuthkit.datamodel.Content;
|
import org.sleuthkit.datamodel.Content;
|
||||||
import org.sleuthkit.datamodel.ContentVisitor;
|
import org.sleuthkit.datamodel.ContentVisitor;
|
||||||
@ -134,15 +135,18 @@ class IngestScheduler {
|
|||||||
@Override
|
@Override
|
||||||
public synchronized String toString() {
|
public synchronized String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("\nRootDirs(sorted), size: ").append(rootProcessTasks.size());
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestScheduler.FileSched.toString.rootDirs.text",
|
||||||
|
rootProcessTasks.size()));
|
||||||
for (FileTask task : rootProcessTasks) {
|
for (FileTask task : rootProcessTasks) {
|
||||||
sb.append(task.toString()).append(" ");
|
sb.append(task.toString()).append(" ");
|
||||||
}
|
}
|
||||||
sb.append("\nCurDirs(stack), size: ").append(curDirProcessTasks.size());
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestScheduler.FileSched.toString.curDirs.text",
|
||||||
|
curDirProcessTasks.size()));
|
||||||
for (FileTask task : curDirProcessTasks) {
|
for (FileTask task : curDirProcessTasks) {
|
||||||
sb.append(task.toString()).append(" ");
|
sb.append(task.toString()).append(" ");
|
||||||
}
|
}
|
||||||
sb.append("\nCurFiles, size: ").append(curFileProcessTasks.size());
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestScheduler.FileSched.toString.curFiles.text",
|
||||||
|
curFileProcessTasks.size()));
|
||||||
for (FileTask task : curFileProcessTasks) {
|
for (FileTask task : curFileProcessTasks) {
|
||||||
sb.append(task.toString()).append(" ");
|
sb.append(task.toString()).append(" ");
|
||||||
}
|
}
|
||||||
@ -224,13 +228,13 @@ class IngestScheduler {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
try {
|
try {
|
||||||
return "ProcessTask{" + "file=" + file.getId() + ": "
|
return NbBundle.getMessage(this.getClass(), "IngestScheduler.fileTask.toString.long", file.getId(),
|
||||||
+ file.getUniquePath() + "}"; // + ", dataSourceTask=" + dataSourceTask + '}';
|
file.getUniquePath()); // + ", dataSourceTask=" + dataSourceTask + '}';
|
||||||
} catch (TskCoreException ex) {
|
} catch (TskCoreException ex) {
|
||||||
logger.log(Level.SEVERE, "Cound not get unique path of file in queue, ", ex);
|
logger.log(Level.SEVERE, "Cound not get unique path of file in queue, ", ex);
|
||||||
}
|
}
|
||||||
return "ProcessTask{" + "file=" + file.getId() + ": "
|
return NbBundle.getMessage(this.getClass(), "IngestScheduler.fileTask.toString.short", file.getId(),
|
||||||
+ file.getName() + '}';
|
file.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -432,7 +436,8 @@ class IngestScheduler {
|
|||||||
@Override
|
@Override
|
||||||
public synchronized FileTask next() {
|
public synchronized FileTask next() {
|
||||||
if (!hasNext()) {
|
if (!hasNext()) {
|
||||||
throw new IllegalStateException("No next ProcessTask, check hasNext() first!");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestScheduler.FileTask.next.exception.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
//dequeue the last in the list
|
//dequeue the last in the list
|
||||||
@ -502,7 +507,8 @@ class IngestScheduler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove() {
|
public void remove() {
|
||||||
throw new UnsupportedOperationException("Not supported.");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestScheduler.remove.exception.notSupported.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -933,7 +939,8 @@ class IngestScheduler {
|
|||||||
@Override
|
@Override
|
||||||
public synchronized DataSourceTask<IngestModuleDataSource> next() throws IllegalStateException {
|
public synchronized DataSourceTask<IngestModuleDataSource> next() throws IllegalStateException {
|
||||||
if (!hasNext()) {
|
if (!hasNext()) {
|
||||||
throw new IllegalStateException("There is no data source tasks in the queue, check hasNext()");
|
throw new IllegalStateException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestScheduler.DataSourceScheduler.exception.next.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
final DataSourceTask<IngestModuleDataSource> ret = tasks.pollFirst();
|
final DataSourceTask<IngestModuleDataSource> ret = tasks.pollFirst();
|
||||||
@ -960,7 +967,8 @@ class IngestScheduler {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void remove() {
|
public void remove() {
|
||||||
throw new UnsupportedOperationException("Removing of scheduled data source ingest tasks is not supported. ");
|
throw new UnsupportedOperationException(
|
||||||
|
NbBundle.getMessage(this.getClass(), "IngestScheduler.DataSourceScheduler.exception.remove.msg"));
|
||||||
}
|
}
|
||||||
|
|
||||||
synchronized void empty() {
|
synchronized void empty() {
|
||||||
@ -974,7 +982,8 @@ class IngestScheduler {
|
|||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
sb.append("DataSourceQueue, size: ").append(getCount());
|
sb.append(NbBundle.getMessage(this.getClass(), "IngestScheduler.DataSourceScheduler.toString.size",
|
||||||
|
getCount()));
|
||||||
for (DataSourceTask<IngestModuleDataSource> task : tasks) {
|
for (DataSourceTask<IngestModuleDataSource> task : tasks) {
|
||||||
sb.append(task.toString()).append(" ");
|
sb.append(task.toString()).append(" ");
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,8 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.ingest;
|
package org.sleuthkit.autopsy.ingest;
|
||||||
|
|
||||||
|
import org.openide.util.NbBundle;
|
||||||
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -45,7 +47,7 @@ public class PipelineContext <T extends IngestModuleAbstract> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return "pipelineContext{" + "task=" + task + '}';
|
return NbBundle.getMessage(this.getClass(), "PipelineContext.toString.text", task);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user