mirror of
https://github.com/elisspace/autopsy.git
synced 2026-09-27 21:16:59 +00:00
Merge branch 'develop' of github.com:sleuthkit/autopsy into CloudClientLatest
This commit is contained in:
@@ -262,9 +262,7 @@ public class CentralRepoDbUtil {
|
||||
* used
|
||||
*/
|
||||
public static void setUseCentralRepo(boolean centralRepoCheckBoxIsSelected) {
|
||||
if (!centralRepoCheckBoxIsSelected) {
|
||||
closePersonasTopComponent();
|
||||
}
|
||||
closePersonasTopComponent();
|
||||
ModuleSettings.setConfigSetting(CENTRAL_REPO_NAME, CENTRAL_REPO_USE_KEY, Boolean.toString(centralRepoCheckBoxIsSelected));
|
||||
}
|
||||
|
||||
|
||||
@@ -1085,8 +1085,19 @@ abstract class RdbmsCentralRepo implements CentralRepository {
|
||||
// Get the account fom the accounts table
|
||||
String normalizedAccountID = CentralRepoAccount.normalizeAccountIdentifier(crAccountType, accountUniqueID);
|
||||
|
||||
String insertSQL = "INSERT INTO accounts (account_type_id, account_unique_identifier) "
|
||||
+ "VALUES (?, ?) " + getConflictClause();
|
||||
// insert the account. If there is a conflict, ignore it.
|
||||
String insertSQL;
|
||||
switch (CentralRepoDbManager.getSavedDbChoice().getDbPlatform()) {
|
||||
case POSTGRESQL:
|
||||
insertSQL = "INSERT INTO accounts (account_type_id, account_unique_identifier) VALUES (?, ?) " + getConflictClause(); //NON-NLS
|
||||
break;
|
||||
case SQLITE:
|
||||
insertSQL = "INSERT OR IGNORE INTO accounts (account_type_id, account_unique_identifier) VALUES (?, ?) "; //NON-NLS
|
||||
break;
|
||||
default:
|
||||
throw new CentralRepoException(String.format("Cannot add account to currently selected CR database platform %s", CentralRepoDbManager.getSavedDbChoice().getDbPlatform())); //NON-NLS
|
||||
}
|
||||
|
||||
|
||||
try (Connection connection = connect();
|
||||
PreparedStatement preparedStatement = connection.prepareStatement(insertSQL);) {
|
||||
|
||||
+18
@@ -43,6 +43,7 @@ import javax.swing.event.DocumentListener;
|
||||
import javax.swing.filechooser.FileFilter;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.NbBundle.Messages;
|
||||
import org.openide.windows.TopComponent;
|
||||
import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbChoice;
|
||||
import org.sleuthkit.autopsy.centralrepository.datamodel.CentralRepoDbManager;
|
||||
@@ -660,6 +661,8 @@ public class EamDbSettingsDialog extends JDialog {
|
||||
* found.
|
||||
*/
|
||||
private static boolean testStatusAndCreate(Component parent, CentralRepoDbManager manager, EamDbSettingsDialog dialog) {
|
||||
closePersonasTopComponent();
|
||||
|
||||
parent.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
|
||||
manager.testStatus();
|
||||
|
||||
@@ -690,6 +693,21 @@ public class EamDbSettingsDialog extends JDialog {
|
||||
parent.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Closes Personas top component if it exists.
|
||||
*/
|
||||
private static void closePersonasTopComponent() {
|
||||
SwingUtilities.invokeLater(() -> {
|
||||
TopComponent personasWindow = WindowManager.getDefault().findTopComponent("PersonasTopComponent");
|
||||
if (personasWindow != null && personasWindow.isOpened()) {
|
||||
personasWindow.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This method returns if changes to the central repository configuration
|
||||
|
||||
+14
-24
@@ -20,6 +20,8 @@ package org.sleuthkit.autopsy.centralrepository.persona;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.awt.event.ComponentAdapter;
|
||||
import java.awt.event.ComponentEvent;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -60,28 +62,6 @@ public final class PersonasTopComponent extends TopComponent {
|
||||
private List<Persona> currentResults = null;
|
||||
private Persona selectedPersona = null;
|
||||
|
||||
/**
|
||||
* Listens for when this component will be rendered and executes a search to
|
||||
* update gui when it is displayed.
|
||||
*/
|
||||
private final AncestorListener onAddListener = new AncestorListener() {
|
||||
@Override
|
||||
public void ancestorAdded(AncestorEvent event) {
|
||||
resetSearchControls();
|
||||
setKeywordSearchEnabled(false, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ancestorRemoved(AncestorEvent event) {
|
||||
//Empty
|
||||
}
|
||||
|
||||
@Override
|
||||
public void ancestorMoved(AncestorEvent event) {
|
||||
//Empty
|
||||
}
|
||||
};
|
||||
|
||||
@Messages({
|
||||
"PersonasTopComponent_Name=Personas",
|
||||
"PersonasTopComponent_delete_exception_Title=Delete failure",
|
||||
@@ -165,7 +145,17 @@ public final class PersonasTopComponent extends TopComponent {
|
||||
}
|
||||
});
|
||||
|
||||
addAncestorListener(onAddListener);
|
||||
/**
|
||||
* Listens for when this component will be rendered and executes a
|
||||
* search to update gui when it is displayed.
|
||||
*/
|
||||
addComponentListener(new ComponentAdapter() {
|
||||
@Override
|
||||
public void componentShown(ComponentEvent e) {
|
||||
resetSearchControls();
|
||||
setKeywordSearchEnabled(false, true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -276,7 +266,7 @@ public final class PersonasTopComponent extends TopComponent {
|
||||
}
|
||||
|
||||
@Messages({
|
||||
"PersonasTopComponent_search_exception_Title=Search failure",
|
||||
"PersonasTopComponent_search_exception_Title=There was a failure during the search. Try opening a case to fully initialize the central repository database.",
|
||||
"PersonasTopComponent_search_exception_msg=Failed to search personas.",
|
||||
"PersonasTopComponent_noCR_msg=Central Repository is not enabled.",})
|
||||
private void executeSearch() {
|
||||
|
||||
@@ -18,7 +18,9 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.communications.relationships;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.AbstractAction;
|
||||
import javax.swing.Action;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.openide.nodes.Sheet;
|
||||
@@ -55,6 +57,8 @@ class MessageNode extends BlackboardArtifactNode {
|
||||
|
||||
private final Action preferredAction;
|
||||
|
||||
private final Action defaultNoopAction = new DefaultMessageAction();
|
||||
|
||||
MessageNode(BlackboardArtifact artifact, String threadID, Action preferredAction) {
|
||||
super(artifact);
|
||||
|
||||
@@ -148,7 +152,7 @@ class MessageNode extends BlackboardArtifactNode {
|
||||
|
||||
@Override
|
||||
public Action getPreferredAction() {
|
||||
return preferredAction;
|
||||
return preferredAction != null ? preferredAction : defaultNoopAction;
|
||||
}
|
||||
|
||||
private int getAttachmentsCount() throws TskCoreException {
|
||||
@@ -171,4 +175,17 @@ class MessageNode extends BlackboardArtifactNode {
|
||||
|
||||
return attachmentsCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* A no op action to override the default action of BlackboardArtifactNode
|
||||
*/
|
||||
private class DefaultMessageAction extends AbstractAction {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
// Do Nothing.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,59 @@
|
||||
---------------- VERSION 4.16.0 --------------
|
||||
Ingest:
|
||||
- Added streaming ingest capability for disk images that allow files to be analyzed as soon as they are added to the database.
|
||||
- Changed backend code so that disk image-based files are added by Java code instead of C/C++ code.
|
||||
|
||||
Ingest Modules:
|
||||
- Include Interesting File set rules for cloud storage, encryption, cryptocurrency and privacy programs.
|
||||
- Updated PhotoRec 7.1 and include 64-bit version
|
||||
- Updated RegRipper in Recent Activity to 2.8
|
||||
- Create artifacts for Prefetch, Background Activity Monitor, and System Resource Usage.
|
||||
- Support MBOX files greater than 2GB
|
||||
- Document metadata is saved as explicit artifacts and added to the timeline.
|
||||
- New “no change” hashset type that does not change status of file.
|
||||
|
||||
|
||||
Central Repository / Personas:
|
||||
- Accounts in the Central Repository can be grouped together and associated with a digital persona
|
||||
- All accounts are now stored in the Central Repository to support correlation and persona creation.
|
||||
|
||||
Content viewers:
|
||||
- Created artifact-specific viewers in the Results viewer for contact book and call log.
|
||||
- Moved Message viewer to a Results sub-viewer and expanded to show accounts.
|
||||
- Added Application sub-viewer for PDF files based on IcePDF.
|
||||
- Annotation viewer now includes comments from hash set hit and interesting file set hit artifacts
|
||||
|
||||
Geolocation Viewer
|
||||
- Different data types now are displayed using different colors
|
||||
- Track points in a track are now displayed as small, connected circles instead of full pins.
|
||||
- Filter panel shows only data sources with geo location data.
|
||||
- Geolocation artifact points can be tagged and commented upon
|
||||
|
||||
File Discovery
|
||||
- Changed UI to have more of a search flow and content viewer is hidden until an item is selected.
|
||||
|
||||
Reports
|
||||
- Can be generated for a single data source instead of the entire case.
|
||||
- CASE / UCO report module now includes artifacts in addition to files.
|
||||
- Added backend concept of Tag Sets to support Project Vic categories from different countries.
|
||||
|
||||
Performance:
|
||||
- Add throttling of UI refreshes to ensure data is quickly displayed and the tree does not get backed up with requests.
|
||||
- Improved efficiency of adding a data source with many orphan files
|
||||
- Improved efficiency of loading file systems
|
||||
- Jython interpreter is preloaded at application startup
|
||||
|
||||
Misc bug fixes and improvements
|
||||
- Fixed bug from last release where hex content viewer text was no longer fixed width
|
||||
- Altered locking to allow multiple data sources to be added at once more smoothly and to support batch inserts of file data
|
||||
- Central repository comments will no longer store tag descriptions
|
||||
- Account type nodes in the Accounts tree show counts
|
||||
- Full time stamps displayed for messages in ingest inbox
|
||||
- More detailed status during file exports
|
||||
- Improved efficiency of adding timeline events
|
||||
- Fixed bug with CVT most recent filter
|
||||
- Improved documentation and support for running on Linux/macOS
|
||||
|
||||
---------------- VERSION 4.15.0 --------------
|
||||
New UI Features:
|
||||
- Added Document view to File Discovery.
|
||||
|
||||
Reference in New Issue
Block a user