mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-13 08:26:15 +00:00
Merge branch '6773-WebHistoryDiscoveryDetailsViewer' of https://github.com/wschaeferB/autopsy into 6774-DownloadsDiscoveryDetailsViewer
This commit is contained in:
commit
3d77c8d1eb
@ -99,6 +99,10 @@ class ArtifactsListPanel extends JPanel {
|
|||||||
return tableModel.getRowCount() <= 0;
|
return tableModel.getRowCount() <= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Select the first available artifact in the list if it is not empty to
|
||||||
|
* populate the panel to the right.
|
||||||
|
*/
|
||||||
void selectFirst() {
|
void selectFirst() {
|
||||||
if (!isEmpty()) {
|
if (!isEmpty()) {
|
||||||
jTable1.setRowSelectionInterval(0, 0);
|
jTable1.setRowSelectionInterval(0, 0);
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy
|
* Autopsy
|
||||||
*
|
*
|
||||||
* Copyright 2019-2020 Basis Technology Corp.
|
* Copyright 2020 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -50,7 +50,6 @@
|
|||||||
</Properties>
|
</Properties>
|
||||||
<AuxValues>
|
<AuxValues>
|
||||||
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new AnimatedSplitPane()"/>
|
<AuxValue name="JavaCodeGenerator_CreateCodeCustom" type="java.lang.String" value="new AnimatedSplitPane()"/>
|
||||||
<AuxValue name="JavaCodeGenerator_LayoutCodePost" type="java.lang.String" value="setDetailsVisible(false);"/>
|
|
||||||
</AuxValues>
|
</AuxValues>
|
||||||
<Constraints>
|
<Constraints>
|
||||||
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
|
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
|
||||||
|
@ -151,7 +151,6 @@ public final class DiscoveryTopComponent extends TopComponent {
|
|||||||
DiscoveryEventUtils.getDiscoveryEventBus().unregister(groupListPanel);
|
DiscoveryEventUtils.getDiscoveryEventBus().unregister(groupListPanel);
|
||||||
DiscoveryEventUtils.getDiscoveryEventBus().unregister(resultsPanel);
|
DiscoveryEventUtils.getDiscoveryEventBus().unregister(resultsPanel);
|
||||||
DiscoveryEventUtils.getDiscoveryEventBus().unregister(rightSplitPane.getBottomComponent());
|
DiscoveryEventUtils.getDiscoveryEventBus().unregister(rightSplitPane.getBottomComponent());
|
||||||
setDetailsVisible(false);
|
|
||||||
super.componentClosed();
|
super.componentClosed();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -182,9 +181,6 @@ public final class DiscoveryTopComponent extends TopComponent {
|
|||||||
rightSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
|
rightSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
|
||||||
rightSplitPane.setResizeWeight(1.0);
|
rightSplitPane.setResizeWeight(1.0);
|
||||||
rightSplitPane.setPreferredSize(new java.awt.Dimension(800, 700));
|
rightSplitPane.setPreferredSize(new java.awt.Dimension(800, 700));
|
||||||
|
|
||||||
setDetailsVisible(false);
|
|
||||||
|
|
||||||
mainSplitPane.setRightComponent(rightSplitPane);
|
mainSplitPane.setRightComponent(rightSplitPane);
|
||||||
|
|
||||||
add(mainSplitPane, java.awt.BorderLayout.CENTER);
|
add(mainSplitPane, java.awt.BorderLayout.CENTER);
|
||||||
@ -295,11 +291,6 @@ public final class DiscoveryTopComponent extends TopComponent {
|
|||||||
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchInProgress_text(searchType.name()));
|
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchInProgress_text(searchType.name()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setDetailsVisible(boolean isVisible) {
|
|
||||||
rightSplitPane.getComponent(1).setVisible(isVisible);
|
|
||||||
rightSplitPane.getComponent(2).setVisible(isVisible);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribe to the SearchCompleteEvent for updating the UI accordingly.
|
* Subscribe to the SearchCompleteEvent for updating the UI accordingly.
|
||||||
*
|
*
|
||||||
@ -334,7 +325,6 @@ public final class DiscoveryTopComponent extends TopComponent {
|
|||||||
} else {
|
} else {
|
||||||
rightSplitPane.setBottomComponent(new FileDetailsPanel());
|
rightSplitPane.setBottomComponent(new FileDetailsPanel());
|
||||||
}
|
}
|
||||||
setDetailsVisible(true);
|
|
||||||
DiscoveryEventUtils.getDiscoveryEventBus().register(rightSplitPane.getBottomComponent());
|
DiscoveryEventUtils.getDiscoveryEventBus().register(rightSplitPane.getBottomComponent());
|
||||||
descriptionText += searchCompleteEvent.getFilters().stream().map(AbstractFilter::getDesc).collect(Collectors.joining("; "));
|
descriptionText += searchCompleteEvent.getFilters().stream().map(AbstractFilter::getDesc).collect(Collectors.joining("; "));
|
||||||
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchComplete_text(descriptionText));
|
progressMessageTextArea.setText(Bundle.DiscoveryTopComponent_searchComplete_text(descriptionText));
|
||||||
|
@ -107,10 +107,16 @@ final class DomainArtifactsTabPanel extends JPanel {
|
|||||||
void setStatus(ArtifactRetrievalStatus status) {
|
void setStatus(ArtifactRetrievalStatus status) {
|
||||||
this.status = status;
|
this.status = status;
|
||||||
if (status == ArtifactRetrievalStatus.UNPOPULATED && rightPanel != null) {
|
if (status == ArtifactRetrievalStatus.UNPOPULATED && rightPanel != null) {
|
||||||
rightPanel.setArtifact(null);
|
rightPanel.setArtifact(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the event which indicates the artifacts have been retrieved.
|
||||||
|
*
|
||||||
|
* @param artifactListEvent The event which indicates the artifacts have
|
||||||
|
* been retrieved.
|
||||||
|
*/
|
||||||
@Subscribe
|
@Subscribe
|
||||||
void handleArtifactListRetrievedEvent(DiscoveryEventUtils.ArtifactListRetrievedEvent artifactListEvent) {
|
void handleArtifactListRetrievedEvent(DiscoveryEventUtils.ArtifactListRetrievedEvent artifactListEvent) {
|
||||||
SwingUtilities.invokeLater(() -> {
|
SwingUtilities.invokeLater(() -> {
|
||||||
|
@ -79,7 +79,7 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
|
|
||||||
private static final int MBOX_SIZE_TO_SPLIT = 1048576000;
|
private static final int MBOX_SIZE_TO_SPLIT = 1048576000;
|
||||||
private Case currentCase;
|
private Case currentCase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Empty constructor.
|
* Empty constructor.
|
||||||
*/
|
*/
|
||||||
@ -139,6 +139,10 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
boolean isPstFile = PstParser.isPstFile(abstractFile);
|
boolean isPstFile = PstParser.isPstFile(abstractFile);
|
||||||
boolean isVcardFile = VcardParser.isVcardFile(abstractFile);
|
boolean isVcardFile = VcardParser.isVcardFile(abstractFile);
|
||||||
|
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return ProcessResult.OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (isMbox || isEMLFile || isPstFile || isVcardFile ) {
|
if (isMbox || isEMLFile || isPstFile || isVcardFile ) {
|
||||||
try {
|
try {
|
||||||
communicationArtifactsHelper = new CommunicationArtifactsHelper(currentCase.getSleuthkitCase(),
|
communicationArtifactsHelper = new CommunicationArtifactsHelper(currentCase.getSleuthkitCase(),
|
||||||
@ -213,6 +217,9 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
Iterator<EmailMessage> pstMsgIterator = parser.getEmailMessageIterator();
|
Iterator<EmailMessage> pstMsgIterator = parser.getEmailMessageIterator();
|
||||||
if (pstMsgIterator != null) {
|
if (pstMsgIterator != null) {
|
||||||
processEmails(parser.getPartialEmailMessages(), pstMsgIterator , abstractFile);
|
processEmails(parser.getPartialEmailMessages(), pstMsgIterator , abstractFile);
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return ProcessResult.OK;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// sometimes parser returns ParseResult=OK but there are no messages
|
// sometimes parser returns ParseResult=OK but there are no messages
|
||||||
postErrorMessage(
|
postErrorMessage(
|
||||||
@ -321,6 +328,9 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
}
|
}
|
||||||
|
|
||||||
processMboxFile(file, abstractFile, emailFolder);
|
processMboxFile(file, abstractFile, emailFolder);
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return ProcessResult.OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (file.delete() == false) {
|
if (file.delete() == false) {
|
||||||
logger.log(Level.INFO, "Failed to delete temp file: {0}", file.getName()); //NON-NLS
|
logger.log(Level.INFO, "Failed to delete temp file: {0}", file.getName()); //NON-NLS
|
||||||
@ -349,7 +359,9 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
if (splitFile.delete() == false) {
|
if (splitFile.delete() == false) {
|
||||||
logger.log(Level.INFO, "Failed to delete temp file: {0}", splitFile); //NON-NLS
|
logger.log(Level.INFO, "Failed to delete temp file: {0}", splitFile); //NON-NLS
|
||||||
}
|
}
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return ProcessResult.OK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -385,6 +397,9 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
List<EmailMessage> emails = new ArrayList<>();
|
List<EmailMessage> emails = new ArrayList<>();
|
||||||
if(emailIterator != null) {
|
if(emailIterator != null) {
|
||||||
while(emailIterator.hasNext()) {
|
while(emailIterator.hasNext()) {
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
EmailMessage emailMessage = emailIterator.next();
|
EmailMessage emailMessage = emailIterator.next();
|
||||||
if(emailMessage != null) {
|
if(emailMessage != null) {
|
||||||
emails.add(emailMessage);
|
emails.add(emailMessage);
|
||||||
@ -526,6 +541,10 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
|
|
||||||
int msgCnt = 0;
|
int msgCnt = 0;
|
||||||
while(fullMessageIterator.hasNext()) {
|
while(fullMessageIterator.hasNext()) {
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
EmailMessage current = fullMessageIterator.next();
|
EmailMessage current = fullMessageIterator.next();
|
||||||
|
|
||||||
if(current == null) {
|
if(current == null) {
|
||||||
@ -550,6 +569,9 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
|
|
||||||
if (derivedFiles.isEmpty() == false) {
|
if (derivedFiles.isEmpty() == false) {
|
||||||
for (AbstractFile derived : derivedFiles) {
|
for (AbstractFile derived : derivedFiles) {
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
services.fireModuleContentEvent(new ModuleContentEvent(derived));
|
services.fireModuleContentEvent(new ModuleContentEvent(derived));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -675,6 +697,10 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
String senderAddress;
|
String senderAddress;
|
||||||
senderAddressList.addAll(findEmailAddresess(from));
|
senderAddressList.addAll(findEmailAddresess(from));
|
||||||
|
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
AccountFileInstance senderAccountInstance = null;
|
AccountFileInstance senderAccountInstance = null;
|
||||||
|
|
||||||
if (senderAddressList.size() == 1) {
|
if (senderAddressList.size() == 1) {
|
||||||
@ -690,13 +716,20 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
logger.log(Level.WARNING, "Failed to find sender address, from = {0}", from); //NON-NLS
|
logger.log(Level.WARNING, "Failed to find sender address, from = {0}", from); //NON-NLS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
List<String> recipientAddresses = new ArrayList<>();
|
List<String> recipientAddresses = new ArrayList<>();
|
||||||
recipientAddresses.addAll(findEmailAddresess(to));
|
recipientAddresses.addAll(findEmailAddresess(to));
|
||||||
recipientAddresses.addAll(findEmailAddresess(cc));
|
recipientAddresses.addAll(findEmailAddresess(cc));
|
||||||
recipientAddresses.addAll(findEmailAddresess(bcc));
|
recipientAddresses.addAll(findEmailAddresess(bcc));
|
||||||
|
|
||||||
List<AccountFileInstance> recipientAccountInstances = new ArrayList<>();
|
List<AccountFileInstance> recipientAccountInstances = new ArrayList<>();
|
||||||
recipientAddresses.forEach((addr) -> {
|
for (String addr : recipientAddresses) {
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
AccountFileInstance recipientAccountInstance =
|
AccountFileInstance recipientAccountInstance =
|
||||||
currentCase.getSleuthkitCase().getCommunicationsManager().createAccountFileInstance(Account.Type.EMAIL, addr,
|
currentCase.getSleuthkitCase().getCommunicationsManager().createAccountFileInstance(Account.Type.EMAIL, addr,
|
||||||
@ -706,7 +739,7 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
catch(TskCoreException ex) {
|
catch(TskCoreException ex) {
|
||||||
logger.log(Level.WARNING, "Failed to create account for email address " + addr, ex); //NON-NLS
|
logger.log(Level.WARNING, "Failed to create account for email address " + addr, ex); //NON-NLS
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
addArtifactAttribute(headers, ATTRIBUTE_TYPE.TSK_HEADERS, bbattributes);
|
addArtifactAttribute(headers, ATTRIBUTE_TYPE.TSK_HEADERS, bbattributes);
|
||||||
addArtifactAttribute(from, ATTRIBUTE_TYPE.TSK_EMAIL_FROM, bbattributes);
|
addArtifactAttribute(from, ATTRIBUTE_TYPE.TSK_EMAIL_FROM, bbattributes);
|
||||||
@ -731,12 +764,23 @@ public final class ThunderbirdMboxFileIngestModule implements FileIngestModule {
|
|||||||
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
bbart = abstractFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG);
|
bbart = abstractFile.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG);
|
||||||
bbart.addAttributes(bbattributes);
|
bbart.addAttributes(bbattributes);
|
||||||
|
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
// Add account relationships
|
// Add account relationships
|
||||||
currentCase.getSleuthkitCase().getCommunicationsManager().addRelationships(senderAccountInstance, recipientAccountInstances, bbart,Relationship.Type.MESSAGE, dateL);
|
currentCase.getSleuthkitCase().getCommunicationsManager().addRelationships(senderAccountInstance, recipientAccountInstances, bbart,Relationship.Type.MESSAGE, dateL);
|
||||||
|
|
||||||
|
if (context.fileIngestIsCancelled()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
// index the artifact for keyword search
|
// index the artifact for keyword search
|
||||||
|
Loading…
x
Reference in New Issue
Block a user