mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-16 01:37:43 +00:00
Merge branch 'release-4.5.0' of https://github.com/sleuthkit/autopsy into 3081-CorrelationEngineCorrectReset
This commit is contained in:
commit
162c87b9a9
@ -570,7 +570,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
preparedStatement.setString(2, eamInstance.getEamDataSource().getDeviceID());
|
||||
preparedStatement.setString(3, eamArtifact.getCorrelationValue());
|
||||
preparedStatement.setString(4, eamInstance.getFilePath());
|
||||
preparedStatement.setString(5, eamInstance.getKnownStatus().name());
|
||||
preparedStatement.setByte(5, eamInstance.getKnownStatus().getFileKnownValue());
|
||||
if ("".equals(eamInstance.getComment())) {
|
||||
preparedStatement.setNull(6, Types.INTEGER);
|
||||
} else {
|
||||
@ -957,7 +957,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
bulkPs.setString(2, eamInstance.getEamDataSource().getDeviceID());
|
||||
bulkPs.setString(3, eamArtifact.getCorrelationValue());
|
||||
bulkPs.setString(4, eamInstance.getFilePath());
|
||||
bulkPs.setString(5, eamInstance.getKnownStatus().name());
|
||||
bulkPs.setByte(5, eamInstance.getKnownStatus().getFileKnownValue());
|
||||
if ("".equals(eamInstance.getComment())) {
|
||||
bulkPs.setNull(6, Types.INTEGER);
|
||||
} else {
|
||||
@ -1109,7 +1109,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
int instance_id = resultSet.getInt("id");
|
||||
preparedUpdate = conn.prepareStatement(sqlUpdate.toString());
|
||||
|
||||
preparedUpdate.setString(1, knownStatus.name());
|
||||
preparedUpdate.setByte(1, knownStatus.getFileKnownValue());
|
||||
// NOTE: if the user tags the same instance as BAD multiple times,
|
||||
// the comment from the most recent tagging is the one that will
|
||||
// prevail in the DB.
|
||||
@ -1184,7 +1184,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
try {
|
||||
preparedStatement = conn.prepareStatement(sql.toString());
|
||||
preparedStatement.setString(1, value);
|
||||
preparedStatement.setString(2, TskData.FileKnown.BAD.name());
|
||||
preparedStatement.setByte(2, TskData.FileKnown.BAD.getFileKnownValue());
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
while (resultSet.next()) {
|
||||
artifactInstance = getEamArtifactInstanceFromResultSet(resultSet);
|
||||
@ -1226,7 +1226,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
try {
|
||||
preparedStatement = conn.prepareStatement(sql.toString());
|
||||
preparedStatement.setString(1, value);
|
||||
preparedStatement.setString(2, TskData.FileKnown.BAD.name());
|
||||
preparedStatement.setByte(2, TskData.FileKnown.BAD.getFileKnownValue());
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
resultSet.next();
|
||||
badInstances = resultSet.getLong(1);
|
||||
@ -1277,7 +1277,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
try {
|
||||
preparedStatement = conn.prepareStatement(sql.toString());
|
||||
preparedStatement.setString(1, value);
|
||||
preparedStatement.setString(2, TskData.FileKnown.BAD.name());
|
||||
preparedStatement.setByte(2, TskData.FileKnown.BAD.getFileKnownValue());
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
while (resultSet.next()) {
|
||||
caseNames.add(resultSet.getString("case_name"));
|
||||
@ -1319,7 +1319,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
try {
|
||||
preparedStatement = conn.prepareStatement(String.format(sql, EamDbUtil.correlationTypeToReferenceTableName(aType)));
|
||||
preparedStatement.setString(1, value);
|
||||
preparedStatement.setString(2, TskData.FileKnown.BAD.name());
|
||||
preparedStatement.setByte(2, TskData.FileKnown.BAD.getFileKnownValue());
|
||||
resultSet = preparedStatement.executeQuery();
|
||||
resultSet.next();
|
||||
badInstances = resultSet.getLong(1);
|
||||
@ -1532,7 +1532,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
preparedStatement = conn.prepareStatement(String.format(sql, EamDbUtil.correlationTypeToReferenceTableName(correlationType)));
|
||||
preparedStatement.setInt(1, eamGlobalFileInstance.getGlobalSetID());
|
||||
preparedStatement.setString(2, eamGlobalFileInstance.getMD5Hash());
|
||||
preparedStatement.setString(3, eamGlobalFileInstance.getKnownStatus().name());
|
||||
preparedStatement.setByte(3, eamGlobalFileInstance.getKnownStatus().getFileKnownValue());
|
||||
preparedStatement.setString(4, eamGlobalFileInstance.getComment());
|
||||
preparedStatement.executeUpdate();
|
||||
} catch (SQLException ex) {
|
||||
@ -1565,7 +1565,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
for (EamGlobalFileInstance globalInstance : globalInstances) {
|
||||
bulkPs.setInt(1, globalInstance.getGlobalSetID());
|
||||
bulkPs.setString(2, globalInstance.getMD5Hash());
|
||||
bulkPs.setString(3, globalInstance.getKnownStatus().name());
|
||||
bulkPs.setByte(3, globalInstance.getKnownStatus().getFileKnownValue());
|
||||
bulkPs.setString(4, globalInstance.getComment());
|
||||
bulkPs.addBatch();
|
||||
}
|
||||
@ -1948,7 +1948,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
new EamDataSource(resultSet.getString("device_id"), resultSet.getString("name")),
|
||||
resultSet.getString("file_path"),
|
||||
resultSet.getString("comment"),
|
||||
TskData.FileKnown.valueOf(resultSet.getString("known_status")),
|
||||
TskData.FileKnown.valueOf(resultSet.getByte("known_status")),
|
||||
EamArtifactInstance.GlobalStatus.LOCAL
|
||||
);
|
||||
|
||||
@ -1996,7 +1996,7 @@ public abstract class AbstractSqlEamDb implements EamDb {
|
||||
resultSet.getInt("id"),
|
||||
resultSet.getInt("reference_set_id"),
|
||||
resultSet.getString("value"),
|
||||
TskData.FileKnown.valueOf(resultSet.getString("known_status")),
|
||||
TskData.FileKnown.valueOf(resultSet.getByte("known_status")),
|
||||
resultSet.getString("comment")
|
||||
);
|
||||
|
||||
|
@ -1,7 +1,20 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
* Central Repository
|
||||
*
|
||||
* Copyright 2015-2017 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.centralrepository.datamodel;
|
||||
|
||||
|
@ -380,7 +380,7 @@ public final class PostgresEamDbSettings {
|
||||
createReferenceTypesTableTemplate.append("id SERIAL PRIMARY KEY,");
|
||||
createReferenceTypesTableTemplate.append("reference_set_id integer,");
|
||||
createReferenceTypesTableTemplate.append("value text NOT NULL,");
|
||||
createReferenceTypesTableTemplate.append("known_status text NOT NULL,");
|
||||
createReferenceTypesTableTemplate.append("known_status integer NOT NULL,");
|
||||
createReferenceTypesTableTemplate.append("comment text,");
|
||||
createReferenceTypesTableTemplate.append("CONSTRAINT %s_multi_unique UNIQUE (reference_set_id, value),");
|
||||
createReferenceTypesTableTemplate.append("foreign key (reference_set_id) references reference_sets(id) ON UPDATE SET NULL ON DELETE SET NULL");
|
||||
@ -408,7 +408,7 @@ public final class PostgresEamDbSettings {
|
||||
createArtifactInstancesTableTemplate.append("data_source_id integer,");
|
||||
createArtifactInstancesTableTemplate.append("value text NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("file_path text NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("known_status text NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("known_status integer NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("comment text,");
|
||||
createArtifactInstancesTableTemplate.append("CONSTRAINT %s_multi_unique_ UNIQUE (case_id, data_source_id, value, file_path),");
|
||||
createArtifactInstancesTableTemplate.append("foreign key (case_id) references cases(id) ON UPDATE SET NULL ON DELETE SET NULL,");
|
||||
|
@ -322,7 +322,7 @@ public final class SqliteEamDbSettings {
|
||||
createReferenceTypesTableTemplate.append("id integer primary key autoincrement NOT NULL,");
|
||||
createReferenceTypesTableTemplate.append("reference_set_id integer,");
|
||||
createReferenceTypesTableTemplate.append("value text NOT NULL,");
|
||||
createReferenceTypesTableTemplate.append("known_status text NOT NULL,");
|
||||
createReferenceTypesTableTemplate.append("known_status integer NOT NULL,");
|
||||
createReferenceTypesTableTemplate.append("comment text,");
|
||||
createReferenceTypesTableTemplate.append("CONSTRAINT %s_multi_unique UNIQUE(reference_set_id, value) ON CONFLICT IGNORE,");
|
||||
createReferenceTypesTableTemplate.append("foreign key (reference_set_id) references reference_sets(id) ON UPDATE SET NULL ON DELETE SET NULL");
|
||||
@ -350,7 +350,7 @@ public final class SqliteEamDbSettings {
|
||||
createArtifactInstancesTableTemplate.append("data_source_id integer,");
|
||||
createArtifactInstancesTableTemplate.append("value text NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("file_path text NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("known_status text NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("known_status integer NOT NULL,");
|
||||
createArtifactInstancesTableTemplate.append("comment text,");
|
||||
createArtifactInstancesTableTemplate.append("CONSTRAINT %s_multi_unique UNIQUE(case_id, data_source_id, value, file_path) ON CONFLICT IGNORE,");
|
||||
createArtifactInstancesTableTemplate.append("foreign key (case_id) references cases(id) ON UPDATE SET NULL ON DELETE SET NULL,");
|
||||
|
@ -1,7 +1,20 @@
|
||||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
* Central Repository
|
||||
*
|
||||
* Copyright 2015-2017 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.centralrepository.optionspanel;
|
||||
|
||||
|
@ -21,18 +21,19 @@ package org.sleuthkit.autopsy.corecomponents;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResult;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JComponent;
|
||||
import org.openide.explorer.ExplorerManager;
|
||||
import org.openide.explorer.ExplorerUtils;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.windows.TopComponent;
|
||||
import org.openide.nodes.Node;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.windows.Mode;
|
||||
import org.openide.windows.RetainLocation;
|
||||
import org.openide.windows.TopComponent;
|
||||
import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.actions.AddBookmarkTagAction;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResult;
|
||||
import org.sleuthkit.autopsy.corecomponentinterfaces.DataResultViewer;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
|
||||
@ -55,11 +56,12 @@ import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
* Implements DataResult interface by delegating to the encapsulated
|
||||
* DataResultPanel.
|
||||
*/
|
||||
@RetainLocation("editor")
|
||||
public class DataResultTopComponent extends TopComponent implements DataResult, ExplorerManager.Provider {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(DataResultTopComponent.class.getName());
|
||||
private ExplorerManager explorerManager = new ExplorerManager();
|
||||
private DataResultPanel dataResultPanel; //embedded component with all the logic
|
||||
private final ExplorerManager explorerManager = new ExplorerManager();
|
||||
private final DataResultPanel dataResultPanel; //embedded component with all the logic
|
||||
private boolean isMain;
|
||||
private String customModeName;
|
||||
|
||||
@ -86,7 +88,7 @@ public class DataResultTopComponent extends TopComponent implements DataResult,
|
||||
*
|
||||
* @param name unique name of the data result window, also
|
||||
* used as title
|
||||
* @param customModeName custom mode to dock into
|
||||
* @param mode custom mode to dock into
|
||||
* @param customContentViewer custom content viewer to send selection events
|
||||
* to
|
||||
*/
|
||||
@ -255,16 +257,10 @@ public class DataResultTopComponent extends TopComponent implements DataResult,
|
||||
if (customModeName != null) {
|
||||
Mode mode = WindowManager.getDefault().findMode(customModeName);
|
||||
if (mode != null) {
|
||||
StringBuilder message = new StringBuilder("Found custom mode, setting: "); //NON-NLS
|
||||
message.append(customModeName);
|
||||
logger.log(Level.INFO, message.toString());
|
||||
logger.log(Level.INFO, "Found custom mode, setting: {0}", customModeName);//NON-NLS
|
||||
mode.dockInto(this);
|
||||
|
||||
} else {
|
||||
StringBuilder message = new StringBuilder("Could not find mode: "); //NON-NLS
|
||||
message.append(customModeName);
|
||||
message.append(", will dock into the default one"); //NON-NLS
|
||||
logger.log(Level.WARNING, message.toString());
|
||||
logger.log(Level.WARNING, "Could not find mode: {0}, will dock into the default one", customModeName);//NON-NLS
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -148,37 +148,6 @@ public final class AutoIngestJob implements Comparable<AutoIngestJob>, Serializa
|
||||
this.stageDetails = this.getProcessingStageDetails();
|
||||
}
|
||||
|
||||
/**
|
||||
* Copy constructs an automated ingest job.
|
||||
*
|
||||
* @param job The job to be copied.
|
||||
*/
|
||||
AutoIngestJob(AutoIngestJob job) {
|
||||
/*
|
||||
* Version 0 fields.
|
||||
*/
|
||||
this.manifest = job.getManifest(); // Manifest is immutable.
|
||||
this.nodeName = job.getProcessingHostName();
|
||||
this.caseDirectoryPath = job.getCaseDirectoryPath().toString();
|
||||
this.priority = job.getPriority();
|
||||
this.stage = job.getProcessingStage();
|
||||
this.stageStartDate = job.getProcessingStageStartDate();
|
||||
this.dataSourceProcessor = job.getDataSourceProcessor();
|
||||
this.ingestJob = job.getIngestJob();
|
||||
this.cancelled = job.isCanceled();
|
||||
this.completed = job.isCompleted();
|
||||
this.completedDate = new Date(job.getCompletedDate().getTime());
|
||||
this.errorsOccurred = job.getErrorsOccurred();
|
||||
|
||||
/*
|
||||
* Version 1 fields.
|
||||
*/
|
||||
this.version = job.getVersion();
|
||||
this.processingStatus = job.getProcessingStatus();
|
||||
this.numberOfCrashes = job.getNumberOfCrashes();
|
||||
this.stageDetails = job.getProcessingStageDetails(); // StageDetails is immutable.
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the job manifest.
|
||||
*
|
||||
@ -323,13 +292,6 @@ public final class AutoIngestJob implements Comparable<AutoIngestJob>, Serializa
|
||||
this.dataSourceProcessor = dataSourceProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the data source processor for the job.
|
||||
*/
|
||||
private DataSourceProcessor getDataSourceProcessor() {
|
||||
return this.dataSourceProcessor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the ingest job for the auto ingest job. Used for obtaining
|
||||
* processing stage details, cancelling the currently running data source
|
||||
@ -536,15 +498,6 @@ public final class AutoIngestJob implements Comparable<AutoIngestJob>, Serializa
|
||||
return -this.getManifest().getDateFileCreated().compareTo(otherJob.getManifest().getDateFileCreated());
|
||||
}
|
||||
|
||||
/**
|
||||
* gest the version number of the job data.
|
||||
*
|
||||
* @return The version number.
|
||||
*/
|
||||
private int getVersion() {
|
||||
return this.version;
|
||||
}
|
||||
|
||||
/**
|
||||
* Comparator that supports doing a descending sort of jobs based on job
|
||||
* completion date.
|
||||
|
@ -142,7 +142,7 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
jobsSnapshot.removePendingJob(event.getJob());
|
||||
jobsSnapshot.addOrReplaceRunningJob(event.getJob());
|
||||
setChanged();
|
||||
notifyObservers(jobsSnapshot.deepCopy());
|
||||
notifyObservers(jobsSnapshot);
|
||||
}
|
||||
}
|
||||
|
||||
@ -160,7 +160,7 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
jobsSnapshot.removePendingJob(job);
|
||||
jobsSnapshot.addOrReplaceRunningJob(job);
|
||||
setChanged();
|
||||
notifyObservers(jobsSnapshot.deepCopy());
|
||||
notifyObservers(jobsSnapshot);
|
||||
}
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
jobsSnapshot.removeRunningJob(job);
|
||||
jobsSnapshot.addOrReplaceCompletedJob(job);
|
||||
setChanged();
|
||||
notifyObservers(jobsSnapshot.deepCopy());
|
||||
notifyObservers(jobsSnapshot);
|
||||
}
|
||||
}
|
||||
|
||||
@ -207,7 +207,7 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
*/
|
||||
JobsSnapshot getJobsSnapshot() {
|
||||
synchronized (jobsLock) {
|
||||
return jobsSnapshot.deepCopy();
|
||||
return jobsSnapshot;
|
||||
}
|
||||
}
|
||||
|
||||
@ -221,7 +221,7 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
JobsSnapshot refreshJobsSnapshot() {
|
||||
synchronized (jobsLock) {
|
||||
jobsSnapshot = queryCoordinationService();
|
||||
return jobsSnapshot.deepCopy();
|
||||
return jobsSnapshot;
|
||||
}
|
||||
}
|
||||
|
||||
@ -323,7 +323,7 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
}).start();
|
||||
|
||||
}
|
||||
return jobsSnapshot.deepCopy();
|
||||
return jobsSnapshot;
|
||||
}
|
||||
}
|
||||
|
||||
@ -345,7 +345,7 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
synchronized (jobsLock) {
|
||||
jobsSnapshot = queryCoordinationService();
|
||||
setChanged();
|
||||
notifyObservers(jobsSnapshot.deepCopy());
|
||||
notifyObservers(jobsSnapshot);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -468,27 +468,8 @@ public final class AutoIngestMonitor extends Observable implements PropertyChang
|
||||
jobSet.add(job);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a deep copy of a jobs snapshot.
|
||||
*
|
||||
* @return The deep copy.
|
||||
*/
|
||||
private JobsSnapshot deepCopy() {
|
||||
JobsSnapshot copy = new JobsSnapshot();
|
||||
this.pendingJobs.forEach((job) -> {
|
||||
this.addOrReplacePendingJob(new AutoIngestJob(job));
|
||||
});
|
||||
this.runningJobs.forEach((job) -> {
|
||||
this.addOrReplacePendingJob(new AutoIngestJob(job));
|
||||
});
|
||||
this.completedJobs.forEach((job) -> {
|
||||
this.addOrReplacePendingJob(new AutoIngestJob(job));
|
||||
});
|
||||
return copy;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Exception type thrown when there is an error completing an auto ingest
|
||||
* monitor operation.
|
||||
|
Loading…
x
Reference in New Issue
Block a user