diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java
index 5c61abbd1f..b85ec86e4f 100644
--- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/casemodule/LocalDiskPanel.java
@@ -18,6 +18,7 @@
*/
package org.sleuthkit.autopsy.casemodule;
+import org.sleuthkit.autopsy.coreutils.LocalDisk;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.form b/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.form
index a2c34ea3f8..432bd9b5c3 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.form
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.form
@@ -148,6 +148,9 @@
+
+
+
diff --git a/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.java b/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.java
index 2b702bef4b..3d697b07ab 100644
--- a/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.java
+++ b/Core/src/org/sleuthkit/autopsy/corecomponents/GeneralPanel.java
@@ -20,6 +20,7 @@ package org.sleuthkit.autopsy.corecomponents;
import java.util.prefs.Preferences;
import org.openide.util.NbPreferences;
+import org.sleuthkit.autopsy.datamodel.ContentUtils;
final class GeneralPanel extends javax.swing.JPanel {
@@ -33,6 +34,7 @@ final class GeneralPanel extends javax.swing.JPanel {
GeneralPanel(GeneralOptionsPanelController controller) {
this.controller = controller;
initComponents();
+ ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
// TODO listen to changes in form fields and call controller.changed()
}
@@ -80,6 +82,11 @@ final class GeneralPanel extends javax.swing.JPanel {
buttonGroup3.add(useGMTTimeRB);
org.openide.awt.Mnemonics.setLocalizedText(useGMTTimeRB, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.useGMTTimeRB.text")); // NOI18N
+ useGMTTimeRB.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ useGMTTimeRBActionPerformed(evt);
+ }
+ });
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(GeneralPanel.class, "GeneralPanel.jLabel3.text")); // NOI18N
@@ -144,6 +151,10 @@ final class GeneralPanel extends javax.swing.JPanel {
// TODO add your handling code here:
}//GEN-LAST:event_useBestViewerRBActionPerformed
+ private void useGMTTimeRBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_useGMTTimeRBActionPerformed
+ ContentUtils.setDisplayInLocalTime(useLocalTimeRB.isSelected());
+ }//GEN-LAST:event_useGMTTimeRBActionPerformed
+
void load() {
boolean keepPreferredViewer = prefs.getBoolean(KEEP_PREFERRED_VIEWER, false);
keepCurrentViewerRB.setSelected(keepPreferredViewer);
diff --git a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDisk.java b/Core/src/org/sleuthkit/autopsy/coreutils/LocalDisk.java
similarity index 97%
rename from Core/src/org/sleuthkit/autopsy/casemodule/LocalDisk.java
rename to Core/src/org/sleuthkit/autopsy/coreutils/LocalDisk.java
index 14853bcc12..c082250dea 100644
--- a/Core/src/org/sleuthkit/autopsy/casemodule/LocalDisk.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/LocalDisk.java
@@ -16,7 +16,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.sleuthkit.autopsy.casemodule;
+package org.sleuthkit.autopsy.coreutils;
/**
* Representation of a PhysicalDisk or partition.
diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/PlatformUtil.java b/Core/src/org/sleuthkit/autopsy/coreutils/PlatformUtil.java
index 40ced93327..1ccc4132a4 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/PlatformUtil.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/PlatformUtil.java
@@ -37,7 +37,6 @@ import org.hyperic.sigar.Sigar;
import org.hyperic.sigar.ptql.ProcessFinder;
import org.openide.modules.InstalledFileLocator;
import org.openide.modules.Places;
-import org.sleuthkit.autopsy.casemodule.LocalDisk;
import org.sleuthkit.datamodel.SleuthkitJNI;
import org.sleuthkit.datamodel.TskCoreException;
diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/AbstractAbstractFileNode.java b/Core/src/org/sleuthkit/autopsy/datamodel/AbstractAbstractFileNode.java
index 6b3a8cbc54..e37bff7245 100644
--- a/Core/src/org/sleuthkit/autopsy/datamodel/AbstractAbstractFileNode.java
+++ b/Core/src/org/sleuthkit/autopsy/datamodel/AbstractAbstractFileNode.java
@@ -161,8 +161,14 @@ public abstract class AbstractAbstractFileNode extends A
@Override
public String toString() {
return "MD5 Hash";
+ }
+ },
+ ObjectID {
+ @Override
+ public String toString() {
+ return "Object ID";
}
- }
+ },
}
@@ -201,6 +207,7 @@ public abstract class AbstractAbstractFileNode extends A
map.put(AbstractFilePropertyType.KNOWN.toString(), content.getKnown().getName());
map.put(AbstractFilePropertyType.HASHSETS.toString(), getHashSetHitsForFile(content));
map.put(AbstractFilePropertyType.MD5HASH.toString(), content.getMd5Hash() == null ? "" : content.getMd5Hash());
+ map.put(AbstractFilePropertyType.ObjectID.toString(), content.getId());
}
diff --git a/Core/src/org/sleuthkit/autopsy/datamodel/ContentUtils.java b/Core/src/org/sleuthkit/autopsy/datamodel/ContentUtils.java
index 121b5a1cfa..9cc844cae6 100644
--- a/Core/src/org/sleuthkit/autopsy/datamodel/ContentUtils.java
+++ b/Core/src/org/sleuthkit/autopsy/datamodel/ContentUtils.java
@@ -50,7 +50,7 @@ public final class ContentUtils {
private final static Logger logger = Logger.getLogger(ContentUtils.class.getName());
private static final SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
private static final SimpleDateFormat dateFormatterISO8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
-
+ private static boolean displayInLocalTime;
// don't instantiate
private ContentUtils() {
throw new AssertionError();
@@ -104,12 +104,11 @@ public final class ContentUtils {
public static String getStringTimeISO8601(long epochSeconds, Content c) {
return getStringTimeISO8601(epochSeconds, getTimeZone(c));
}
-
+
public static TimeZone getTimeZone(Content c) {
- Preferences generalPanelPrefs = NbPreferences.root().node("/org/sleuthkit/autopsy/core");
- boolean useLocalTime = generalPanelPrefs.getBoolean("useLocalTime", true);
+
try {
- if (!useLocalTime) {
+ if (!getDisplayInLocalTime()) {
return TimeZone.getTimeZone("GMT");
}
else {
@@ -360,4 +359,18 @@ public final class ContentUtils {
+ cntnt.getClass().getSimpleName());
}
}
+ /**sets displayInlocalTime value based on button in GeneralPanel.java
+ *
+ * @param flag
+ */
+ public static void setDisplayInLocalTime(boolean flag) {
+ displayInLocalTime = flag;
+ }
+ /** get global timezone setting for displaying time values
+ *
+ * @return
+ */
+ public static boolean getDisplayInLocalTime(){
+ return displayInLocalTime;
+ }
}
diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties
index eca055301d..91b7a67008 100644
--- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties
+++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Bundle.properties
@@ -149,6 +149,9 @@ KeywordSearchIngestModule.init.badInitMsg=Keyword search server was not properly
KeywordSearchIngestModule.init.tryStopSolrMsg={0}
Please try stopping old java Solr process (if it exists) and restart the application.
KeywordSearchIngestModule.init.noKwInLstMsg=No keywords in keyword list.
KeywordSearchIngestModule.init.onlyIdxKwSkipMsg=Only indexing will be done and and keyword search will be skipped (you can still add keyword lists using the Keyword Lists - Add to Ingest).
+KeywordSearchIngestModule.doInBackGround.displayName=Keyword Search
+KeywordSearchIngestModule.doInBackGround.finalizeMsg=Finalizing...
+KeywordSearchIngestModule.doInBackGround.pendingMsg=Working on Keyword Search...
KeywordSearchIngestModule.postIndexSummary.knowFileHeaderLbl=Files with known types
KeywordSearchIngestModule.postIndexSummary.fileGenStringsHead=Files with general strings extracted
KeywordSearchIngestModule.postIndexSummary.mdOnlyLbl=Metadata only was indexed
diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Extract.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Extract.java
index 66a628f389..12b82bbc65 100644
--- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Extract.java
+++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Extract.java
@@ -30,7 +30,6 @@ import java.util.logging.Level;
import org.sleuthkit.autopsy.coreutils.Logger;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.ingest.IngestModuleDataSource;
-import org.sleuthkit.autopsy.report.SQLiteDBConnect;
import org.sleuthkit.datamodel.*;
abstract class Extract extends IngestModuleDataSource{
diff --git a/Core/src/org/sleuthkit/autopsy/report/SQLiteDBConnect.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/SQLiteDBConnect.java
similarity index 98%
rename from Core/src/org/sleuthkit/autopsy/report/SQLiteDBConnect.java
rename to RecentActivity/src/org/sleuthkit/autopsy/recentactivity/SQLiteDBConnect.java
index 97142c840a..067145c5e6 100644
--- a/Core/src/org/sleuthkit/autopsy/report/SQLiteDBConnect.java
+++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/SQLiteDBConnect.java
@@ -20,7 +20,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.sleuthkit.autopsy.report;
+package org.sleuthkit.autopsy.recentactivity;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -32,7 +32,7 @@ import org.sleuthkit.autopsy.coreutils.Logger;
/**
* Database connection class & utilities *
*/
- public class SQLiteDBConnect {
+class SQLiteDBConnect {
public String sDriver = "";
public String sUrl = null;
diff --git a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Util.java b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Util.java
index c5346df9b1..c27d216ae8 100644
--- a/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Util.java
+++ b/RecentActivity/src/org/sleuthkit/autopsy/recentactivity/Util.java
@@ -41,7 +41,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.sleuthkit.autopsy.casemodule.Case;
import org.sleuthkit.autopsy.casemodule.services.FileManager;
-import org.sleuthkit.autopsy.report.SQLiteDBConnect;
import org.sleuthkit.datamodel.AbstractFile;
import org.sleuthkit.datamodel.Content;
import org.sleuthkit.datamodel.TskCoreException;
diff --git a/Testing/test/qa-functional/src/org/sleuthkit/autopsy/testing/RegressionTest.java b/Testing/test/qa-functional/src/org/sleuthkit/autopsy/testing/RegressionTest.java
index 6d6c078280..b331d47518 100755
--- a/Testing/test/qa-functional/src/org/sleuthkit/autopsy/testing/RegressionTest.java
+++ b/Testing/test/qa-functional/src/org/sleuthkit/autopsy/testing/RegressionTest.java
@@ -56,6 +56,7 @@ import org.netbeans.jemmy.operators.JLabelOperator;
import org.netbeans.jemmy.operators.JTabbedPaneOperator;
import org.netbeans.jemmy.operators.JTableOperator;
import org.netbeans.jemmy.operators.JTextFieldOperator;
+import org.netbeans.jemmy.operators.JListOperator;
import org.netbeans.junit.NbModuleSuite;
import org.openide.util.Exceptions;
import org.sleuthkit.autopsy.ingest.IngestManager;
@@ -265,14 +266,13 @@ public class RegressionTest extends TestCase {
}
logger.info("Enqueue took " + (System.currentTimeMillis() - start) + "ms");
while (man.isIngestRunning()) {
-
new Timeout("pausing", 1000).sleep(); // give it a second (or five) to process
}
new Timeout("pausing", 15000).sleep(); // give it a second (or fifteen) to process
- boolean sleep = true;
while (man.areModulesRunning()) {
- new Timeout("pausing", 5000).sleep(); // give it a second (or five) to process
+ new Timeout("pausing", 5000).sleep(); // give it a second (or five) to process
}
+
logger.info("Ingest (including enqueue) took " + (System.currentTimeMillis() - start) + "ms");
// allow keyword search to finish saving artifacts, just in case
// but randomize the timing so that we don't always get the same error
@@ -299,10 +299,13 @@ public class RegressionTest extends TestCase {
logger.info("Generate Report Button");
JDialog reportDialog = JDialogOperator.waitJDialog("Generate Report", false, false);
JDialogOperator reportDialogOperator = new JDialogOperator(reportDialog);
+ JListOperator listOperator = new JListOperator(reportDialogOperator);
JButtonOperator jbo0 = new JButtonOperator(reportDialogOperator, "Next");
DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy-HH-mm-ss");
Date date = new Date();
String datenotime = dateFormat.format(date);
+ listOperator.clickOnItem(1, 1);
+ new Timeout("pausing", 1000).sleep();
jbo0.pushNoBlock();
new Timeout("pausing", 1000).sleep();
JButtonOperator jbo1 = new JButtonOperator(reportDialogOperator, "Finish");
diff --git a/Timeline/src/org/sleuthkit/autopsy/timeline/Timeline.java b/Timeline/src/org/sleuthkit/autopsy/timeline/Timeline.java
index 479b98cfe0..7503d3147b 100644
--- a/Timeline/src/org/sleuthkit/autopsy/timeline/Timeline.java
+++ b/Timeline/src/org/sleuthkit/autopsy/timeline/Timeline.java
@@ -41,7 +41,9 @@ import java.util.List;
import java.util.Locale;
import java.util.Scanner;
import java.util.Stack;
+import java.util.TimeZone;
import java.util.logging.Level;
+import java.util.prefs.Preferences;
import javafx.application.Platform;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
@@ -75,11 +77,11 @@ import org.openide.awt.ActionReference;
import org.openide.awt.ActionReferences;
import org.openide.awt.ActionRegistration;
import org.openide.modules.InstalledFileLocator;
-import org.openide.modules.ModuleInstall;
import org.openide.nodes.Children;
import org.openide.nodes.Node;
import org.openide.util.HelpCtx;
import org.openide.util.NbBundle;
+import org.openide.util.NbPreferences;
import org.openide.util.actions.CallableSystemAction;
import org.openide.util.actions.Presenter;
import org.openide.util.lookup.Lookups;
@@ -97,6 +99,7 @@ import org.sleuthkit.autopsy.datamodel.DisplayableItemNodeVisitor;
import org.sleuthkit.autopsy.datamodel.FileNode;
import org.sleuthkit.autopsy.ingest.IngestManager;
import org.sleuthkit.autopsy.coreutils.ExecUtil;
+import org.sleuthkit.autopsy.datamodel.ContentUtils;
import org.sleuthkit.datamodel.AbstractFile;
import org.sleuthkit.datamodel.SleuthkitCase;
import org.sleuthkit.datamodel.TskCoreException;
@@ -112,7 +115,7 @@ import org.sleuthkit.datamodel.TskCoreException;
*
*/
public class Timeline extends CallableSystemAction implements Presenter.Toolbar, PropertyChangeListener {
-
+
private static final Logger logger = Logger.getLogger(Timeline.class.getName());
private final java.io.File macRoot = InstalledFileLocator.getDefault().locate("mactime", Timeline.class.getPackage().getName(), false);
private TimelineFrame mainFrame; //frame for holding all the elements
@@ -142,12 +145,11 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
private EventHandler fxMouseExitedListener;
private SleuthkitCase skCase;
private boolean fxInited = false;
-
public Timeline() {
super();
fxInited = Installer.isJavaFxInited();
-
+ // TimeZone.setDefault(TimeZone.getTimeZone("UTC")); //sets the default timezone to UTC unless otherwise stated
}
//Swing components and JavafX components don't play super well together
@@ -914,17 +916,35 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
int prevYear = -1;
YearEpoch ye = null;
+
while (scan.hasNextLine()) {
String[] s = scan.nextLine().split(","); //1999-02-08T11:08:08Z, 78706, m..b, rrwxrwxrwx, 0, 0, 8355, /img...
- // break the date into mon, day and year: Note that the ISO times are in GMT
- String[] datetime = s[0].split("T"); //{1999-02-08, 11:08:08Z}
- String[] date = datetime[0].split("-"); // {1999, 02, 08}
+ // break the date into year,month,day,hour,minute, and second: Note that the ISO times are in GMT
+ String delims = "[T:Z\\-]+"; //split by the delimiters
+ String[] date = s[0].split(delims); //{1999,02,08,11,08,08,...}
+
int year = Integer.valueOf(date[0]);
int month = Integer.valueOf(date[1]) - 1; //Months are zero indexed: 1 = February, 6 = July, 11 = December
int day = Integer.valueOf(date[2]); //Days are 1 indexed
+ int hour=Integer.valueOf(date[3]);
+ int minute=Integer.valueOf(date[4]);
+ int second=Integer.valueOf(date[5]);
+
+ Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT")); //set calendar to GMT due to ISO format
+ calendar.set(year, month, day, hour, minute, second);
+ day=calendar.get(Calendar.DAY_OF_MONTH); // this is needed or else timezone change wont work. probably incorrect optimization by compiler
+
+ //conversion to GMT
+
+ if (!ContentUtils.getDisplayInLocalTime()) {
+ calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
+ }
+ else{
+ calendar.setTimeZone(TimeZone.getDefault());// local timezone OF the user. should be what the user SETS at startup
+ }
- // get the object id out of the modified outpu
+ day=calendar.get(Calendar.DAY_OF_MONTH);//get the day which may be affected by timezone change
long ObjId = Long.valueOf(s[4]);
// when the year changes, create and add a new YearEpoch object to the list
@@ -961,7 +981,6 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
// Get report path
String bodyFilePath = moduleDir.getAbsolutePath()
+ java.io.File.separator + currentCase.getName() + "-" + datenotime + ".txt";
-
// Run query to get all files
final String filesAndDirs = "name != '.' "
+ "AND name != '..'";
@@ -1107,7 +1126,7 @@ public class Timeline extends CallableSystemAction implements Presenter.Toolbar,
public void performAction() {
initTimeline();
}
-
+
private void initTimeline() {
if (!Case.existsCurrentCase()) {
return;