mirror of
https://github.com/elisspace/autopsy.git
synced 2026-09-30 06:19:52 +00:00
6865 resolve merge conflicts
This commit is contained in:
@@ -49,8 +49,7 @@ public class CommandLineOptionProcessor extends OptionProcessor {
|
||||
private final Option dataSourceObjectIdOption = Option.requiredArgument('i', "dataSourceObjectId");
|
||||
private final Option addDataSourceCommandOption = Option.withoutArgument('a', "addDataSource");
|
||||
private final Option caseDirOption = Option.requiredArgument('d', "caseDir");
|
||||
private final Option runIngestCommandOption = Option.withoutArgument('r', "runIngest");
|
||||
private final Option ingestProfileOption = Option.requiredArgument('p', "ingestProfile");
|
||||
private final Option runIngestCommandOption = Option.optionalArgument('r', "runIngest");
|
||||
private final Option listAllDataSourcesCommandOption = Option.withoutArgument('l', "listAllDataSources");
|
||||
private final Option generateReportsOption = Option.optionalArgument('g', "generateReports");
|
||||
private final Option defaultArgument = Option.defaultArguments();
|
||||
@@ -76,7 +75,6 @@ public class CommandLineOptionProcessor extends OptionProcessor {
|
||||
set.add(dataSourceObjectIdOption);
|
||||
set.add(caseDirOption);
|
||||
set.add(runIngestCommandOption);
|
||||
set.add(ingestProfileOption);
|
||||
set.add(listAllDataSourcesCommandOption);
|
||||
set.add(generateReportsOption);
|
||||
set.add(defaultArgument);
|
||||
@@ -205,21 +203,6 @@ public class CommandLineOptionProcessor extends OptionProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
String ingestProfile = "";
|
||||
if (values.containsKey(ingestProfileOption)) {
|
||||
|
||||
argDirs = values.get(ingestProfileOption);
|
||||
if (argDirs.length < 1) {
|
||||
handleError("Argument missing from 'ingestProfile' option");
|
||||
}
|
||||
ingestProfile = argDirs[0];
|
||||
|
||||
// verify inputs
|
||||
if (ingestProfile == null || ingestProfile.isEmpty()) {
|
||||
handleError("Missing argument 'ingestProfile'");
|
||||
}
|
||||
}
|
||||
|
||||
// Create commands in order in which they should be executed:
|
||||
// First create the "CREATE_CASE" command, if present
|
||||
if (values.containsKey(createCaseCommandOption)) {
|
||||
@@ -263,9 +246,15 @@ public class CommandLineOptionProcessor extends OptionProcessor {
|
||||
runFromCommandLine = true;
|
||||
}
|
||||
|
||||
String ingestProfile = "";
|
||||
// Add RUN_INGEST command, if present
|
||||
if (values.containsKey(runIngestCommandOption)) {
|
||||
|
||||
argDirs = values.get(runIngestCommandOption);
|
||||
if(argDirs != null && argDirs.length > 0) {
|
||||
ingestProfile = argDirs[0];
|
||||
}
|
||||
|
||||
// 'caseDir' must only be specified if the case is not being created during the current run
|
||||
if (!values.containsKey(createCaseCommandOption) && caseDir.isEmpty()) {
|
||||
// new case is not being created during this run, so 'caseDir' should have been specified
|
||||
|
||||
@@ -87,12 +87,21 @@ SearchData.Frequency.verycommon.displayName=Very Common (100+)
|
||||
SearchData.Score.interesting.displayName=Interesting
|
||||
SearchData.Score.notable.displayName=Notable
|
||||
SearchData.Score.unknown.displayName=Unknown
|
||||
# {0} - artifactTypes
|
||||
SearchFiltering.artifactTypeFilter.desc=Result type(s): {0}
|
||||
SearchFiltering.artifactTypeFilter.or=,
|
||||
# {0} - Data source name
|
||||
# {1} - Data source ID
|
||||
SearchFiltering.DataSourceFilter.datasource={0}({1})
|
||||
# {0} - filters
|
||||
SearchFiltering.DataSourceFilter.desc=Data source(s): {0}
|
||||
SearchFiltering.DataSourceFilter.or=,
|
||||
# {0} - startDate
|
||||
SearchFiltering.dateRangeFilter.after=after: {0}
|
||||
SearchFiltering.dateRangeFilter.and=\ and
|
||||
# {0} - endDate
|
||||
SearchFiltering.dateRangeFilter.before=before: {0}
|
||||
SearchFiltering.dateRangeFilter.lable=Activity date
|
||||
# {0} - filters
|
||||
SearchFiltering.FileTypeFilter.desc=Type: {0}
|
||||
SearchFiltering.FileTypeFilter.or=,
|
||||
|
||||
@@ -13,7 +13,9 @@ DateFilterPanel.invalidRange.text=Range or Only Last must be selected.
|
||||
DateFilterPanel.startAfterEnd.text=Start date should be before the end date when both are enabled.
|
||||
DateFilterPanel.startOrEndNeeded.text=A start or end date must be specified to use the range filter.
|
||||
DiscoveryDialog.name.text=Discovery
|
||||
DiscoveryTopComponent.additionalFilters.text=;
|
||||
DiscoveryTopComponent.cancelButton.text=Cancel Search
|
||||
DiscoveryTopComponent.domainSearch.text=Type: Domain
|
||||
DiscoveryTopComponent.name=\ Discovery
|
||||
DiscoveryTopComponent.newSearch.text=New Search
|
||||
DiscoveryTopComponent.searchCancelled.text=Search has been cancelled.
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.openide.windows.TopComponent;
|
||||
import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.coreutils.ThreadConfined;
|
||||
import org.sleuthkit.autopsy.discovery.search.DiscoveryEventUtils;
|
||||
import org.sleuthkit.autopsy.discovery.search.SearchData.Type;
|
||||
import static org.sleuthkit.autopsy.discovery.search.SearchData.Type.DOMAIN;
|
||||
|
||||
/**
|
||||
@@ -56,6 +57,7 @@ public final class DiscoveryTopComponent extends TopComponent {
|
||||
private final GroupListPanel groupListPanel;
|
||||
private final DetailsPanel detailsPanel;
|
||||
private final ResultsPanel resultsPanel;
|
||||
private Type searchType;
|
||||
private int dividerLocation = -1;
|
||||
private SwingAnimator animator = null;
|
||||
|
||||
@@ -288,7 +290,8 @@ public final class DiscoveryTopComponent extends TopComponent {
|
||||
void handleSearchStartedEvent(DiscoveryEventUtils.SearchStartedEvent searchStartedEvent) {
|
||||
newSearchButton.setText(Bundle.DiscoveryTopComponent_cancelButton_text());
|
||||
progressMessageTextArea.setForeground(Color.red);
|
||||
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchInProgress_text(searchStartedEvent.getType().name()));
|
||||
searchType = searchStartedEvent.getType();
|
||||
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchInProgress_text(searchType.name()));
|
||||
rightSplitPane.getComponent(1).setVisible(searchStartedEvent.getType() != DOMAIN);
|
||||
rightSplitPane.getComponent(2).setVisible(searchStartedEvent.getType() != DOMAIN);
|
||||
}
|
||||
@@ -302,11 +305,22 @@ public final class DiscoveryTopComponent extends TopComponent {
|
||||
@Subscribe
|
||||
@Messages({"DiscoveryTopComponent.newSearch.text=New Search",
|
||||
"# {0} - search",
|
||||
"DiscoveryTopComponent.searchComplete.text=Results with {0}"})
|
||||
"DiscoveryTopComponent.searchComplete.text=Results with {0}",
|
||||
"DiscoveryTopComponent.domainSearch.text=Type: Domain",
|
||||
"DiscoveryTopComponent.additionalFilters.text=; "})
|
||||
void handleSearchCompleteEvent(DiscoveryEventUtils.SearchCompleteEvent searchCompleteEvent) {
|
||||
newSearchButton.setText(Bundle.DiscoveryTopComponent_newSearch_text());
|
||||
progressMessageTextArea.setForeground(Color.black);
|
||||
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchComplete_text(searchCompleteEvent.getFilters().stream().map(AbstractFilter::getDesc).collect(Collectors.joining("; "))));
|
||||
String descriptionText = "";
|
||||
if (searchType == DOMAIN) {
|
||||
//domain does not have a file type filter to add the type information so it is manually added
|
||||
descriptionText = Bundle.DiscoveryTopComponent_domainSearch_text();
|
||||
if (!searchCompleteEvent.getFilters().isEmpty()) {
|
||||
descriptionText += Bundle.DiscoveryTopComponent_additionalFilters_text();
|
||||
}
|
||||
}
|
||||
descriptionText += searchCompleteEvent.getFilters().stream().map(AbstractFilter::getDesc).collect(Collectors.joining("; "));
|
||||
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchComplete_text(descriptionText));
|
||||
progressMessageTextArea.setCaretPosition(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -202,6 +202,7 @@ public final class ILeappFileProcessor {
|
||||
*
|
||||
* @param line a tsv line to process that was read
|
||||
* @param columnNumberToProcess Which columns to process in the tsv line
|
||||
* @param fileName name of file begin processed
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@@ -220,7 +221,7 @@ public final class ILeappFileProcessor {
|
||||
break;
|
||||
}
|
||||
String attrType = attributeType.getValueType().getLabel().toUpperCase();
|
||||
checkAttributeType(bbattributes, attrType, columnValues, columnNumber, attributeType);
|
||||
checkAttributeType(bbattributes, attrType, columnValues, columnNumber, attributeType, fileName);
|
||||
} catch (TskCoreException ex) {
|
||||
throw new IngestModuleException(String.format("Error getting Attribute type for Attribute Name %s", attributeName), ex); //NON-NLS
|
||||
}
|
||||
@@ -234,7 +235,8 @@ public final class ILeappFileProcessor {
|
||||
|
||||
}
|
||||
|
||||
private void checkAttributeType(Collection<BlackboardAttribute> bbattributes, String attrType, String[] columnValues, Integer columnNumber, BlackboardAttribute.Type attributeType) {
|
||||
private void checkAttributeType(Collection<BlackboardAttribute> bbattributes, String attrType, String[] columnValues, Integer columnNumber, BlackboardAttribute.Type attributeType,
|
||||
String fileName) {
|
||||
if (attrType.matches("STRING")) {
|
||||
bbattributes.add(new BlackboardAttribute(attributeType, MODULE_NAME, columnValues[columnNumber]));
|
||||
} else if (attrType.matches("INTEGER")) {
|
||||
@@ -256,7 +258,7 @@ public final class ILeappFileProcessor {
|
||||
} catch (ParseException ex) {
|
||||
// catching error and displaying date that could not be parsed
|
||||
// we set the timestamp to 0 and continue on processing
|
||||
logger.log(Level.WARNING, String.format("Failed to parse date/time %s for attribute.", columnValues[columnNumber]), ex); //NON-NLS
|
||||
logger.log(Level.WARNING, String.format("Failed to parse date/time %s for attribute type %s in file %s.", columnValues[columnNumber], attributeType.getDisplayName(), fileName)); //NON-NLS
|
||||
}
|
||||
} else if (attrType.matches("JSON")) {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user