mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-08 14:19:32 +00:00
Recent Files and File Types adjustments in Directory Tree
This commit is contained in:
parent
608337d3b7
commit
056867d61a
@ -18,8 +18,13 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.datamodel;
|
package org.sleuthkit.autopsy.datamodel;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
import org.openide.nodes.ChildFactory;
|
import org.openide.nodes.ChildFactory;
|
||||||
import org.openide.nodes.Node;
|
import org.openide.nodes.Node;
|
||||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||||
@ -31,6 +36,8 @@ import org.sleuthkit.datamodel.SleuthkitCase;
|
|||||||
public class RecentFilesChildren extends ChildFactory<RecentFiles.RecentFilesFilter>{
|
public class RecentFilesChildren extends ChildFactory<RecentFiles.RecentFilesFilter>{
|
||||||
|
|
||||||
SleuthkitCase skCase;
|
SleuthkitCase skCase;
|
||||||
|
long latestUpdateTime;
|
||||||
|
private final static Logger logger = Logger.getLogger(RecentFilesChildren.class.getName());
|
||||||
|
|
||||||
public RecentFilesChildren(SleuthkitCase skCase) {
|
public RecentFilesChildren(SleuthkitCase skCase) {
|
||||||
this.skCase = skCase;
|
this.skCase = skCase;
|
||||||
@ -39,12 +46,45 @@ public class RecentFilesChildren extends ChildFactory<RecentFiles.RecentFilesFil
|
|||||||
@Override
|
@Override
|
||||||
protected boolean createKeys(List<RecentFiles.RecentFilesFilter> list) {
|
protected boolean createKeys(List<RecentFiles.RecentFilesFilter> list) {
|
||||||
list.addAll(Arrays.asList(RecentFiles.RecentFilesFilter.values()));
|
list.addAll(Arrays.asList(RecentFiles.RecentFilesFilter.values()));
|
||||||
|
latestUpdateTime = getLastTime();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Node createNodeForKey(RecentFiles.RecentFilesFilter key){
|
protected Node createNodeForKey(RecentFiles.RecentFilesFilter key){
|
||||||
return new RecentFilesFilterNode(skCase, key);
|
return new RecentFilesFilterNode(skCase, key, latestUpdateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private long getLastTime() {
|
||||||
|
String query = createMaxQuery("crtime");
|
||||||
|
long maxcr = runTimeQuery(query);
|
||||||
|
query = createMaxQuery("ctime");
|
||||||
|
long maxc = runTimeQuery(query);
|
||||||
|
query = createMaxQuery("mtime");
|
||||||
|
long maxm = runTimeQuery(query);
|
||||||
|
query = createMaxQuery("atime");
|
||||||
|
long maxa = runTimeQuery(query);
|
||||||
|
return Math.max(maxcr, Math.max(maxc, Math.max(maxm, maxa)));
|
||||||
|
}
|
||||||
|
|
||||||
|
private String createMaxQuery(String attr){
|
||||||
|
return "select max(" + attr + ") from tsk_files where " + attr + " < " + System.currentTimeMillis()/1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
private long runTimeQuery(String query) {
|
||||||
|
long result = 0;
|
||||||
|
try {
|
||||||
|
ResultSet rs = skCase.runQuery(query);
|
||||||
|
result = rs.getLong(1);
|
||||||
|
Statement s = rs.getStatement();
|
||||||
|
rs.close();
|
||||||
|
if (s != null)
|
||||||
|
s.close();
|
||||||
|
} catch (SQLException ex) {
|
||||||
|
Logger.getLogger(RecentFilesFilterChildren.class.getName())
|
||||||
|
.log(Level.INFO, "Couldn't get search results", ex);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -44,11 +44,13 @@ public class RecentFilesFilterChildren extends ChildFactory<Content>{
|
|||||||
|
|
||||||
SleuthkitCase skCase;
|
SleuthkitCase skCase;
|
||||||
RecentFilesFilter filter;
|
RecentFilesFilter filter;
|
||||||
|
long latestUpdate;
|
||||||
private final static Logger logger = Logger.getLogger(RecentFilesFilterChildren.class.getName());
|
private final static Logger logger = Logger.getLogger(RecentFilesFilterChildren.class.getName());
|
||||||
|
|
||||||
RecentFilesFilterChildren(RecentFilesFilter filter, SleuthkitCase skCase) {
|
RecentFilesFilterChildren(RecentFilesFilter filter, SleuthkitCase skCase, long latestUpdate) {
|
||||||
this.skCase = skCase;
|
this.skCase = skCase;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
|
this.latestUpdate = latestUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -59,7 +61,6 @@ public class RecentFilesFilterChildren extends ChildFactory<Content>{
|
|||||||
|
|
||||||
private String createQuery(){
|
private String createQuery(){
|
||||||
String query = "select * from tsk_files where ";
|
String query = "select * from tsk_files where ";
|
||||||
long latestUpdate = getLastTime();
|
|
||||||
long threshold = latestUpdate-filter.getDurationSeconds();
|
long threshold = latestUpdate-filter.getDurationSeconds();
|
||||||
query += "(crtime between " + threshold + " and " + latestUpdate + ") or ";
|
query += "(crtime between " + threshold + " and " + latestUpdate + ") or ";
|
||||||
query += "(ctime between " + threshold + " and " + latestUpdate + ") or ";
|
query += "(ctime between " + threshold + " and " + latestUpdate + ") or ";
|
||||||
@ -109,36 +110,4 @@ public class RecentFilesFilterChildren extends ChildFactory<Content>{
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private long getLastTime() {
|
|
||||||
String query = createMaxQuery("crtime");
|
|
||||||
long maxcr = runTimeQuery(query);
|
|
||||||
query = createMaxQuery("ctime");
|
|
||||||
long maxc = runTimeQuery(query);
|
|
||||||
query = createMaxQuery("mtime");
|
|
||||||
long maxm = runTimeQuery(query);
|
|
||||||
query = createMaxQuery("atime");
|
|
||||||
long maxa = runTimeQuery(query);
|
|
||||||
return Math.max(maxcr, Math.max(maxc, Math.max(maxm, maxa)));
|
|
||||||
}
|
|
||||||
|
|
||||||
private String createMaxQuery(String attr){
|
|
||||||
return "select max(" + attr + ") from tsk_files where " + attr + " < " + System.currentTimeMillis()/1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
private long runTimeQuery(String query) {
|
|
||||||
long result = 0;
|
|
||||||
try {
|
|
||||||
ResultSet rs = skCase.runQuery(query);
|
|
||||||
result = rs.getLong(1);
|
|
||||||
Statement s = rs.getStatement();
|
|
||||||
rs.close();
|
|
||||||
if (s != null)
|
|
||||||
s.close();
|
|
||||||
} catch (SQLException ex) {
|
|
||||||
Logger.getLogger(RecentFilesFilterChildren.class.getName())
|
|
||||||
.log(Level.INFO, "Couldn't get search results", ex);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.sleuthkit.autopsy.datamodel;
|
package org.sleuthkit.autopsy.datamodel;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Statement;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import java.util.logging.Logger;
|
||||||
import org.openide.nodes.AbstractNode;
|
import org.openide.nodes.AbstractNode;
|
||||||
import org.openide.nodes.Children;
|
import org.openide.nodes.Children;
|
||||||
import org.openide.nodes.Sheet;
|
import org.openide.nodes.Sheet;
|
||||||
@ -34,12 +40,15 @@ public class RecentFilesFilterNode extends AbstractNode implements DisplayableIt
|
|||||||
SleuthkitCase skCase;
|
SleuthkitCase skCase;
|
||||||
RecentFilesFilter filter;
|
RecentFilesFilter filter;
|
||||||
|
|
||||||
RecentFilesFilterNode(SleuthkitCase skCase, RecentFilesFilter filter) {
|
RecentFilesFilterNode(SleuthkitCase skCase, RecentFilesFilter filter, long latestUpdate) {
|
||||||
super(Children.create(new RecentFilesFilterChildren(filter, skCase), true), Lookups.singleton(filter));
|
super(Children.create(new RecentFilesFilterChildren(filter, skCase, latestUpdate), true), Lookups.singleton(filter));
|
||||||
super.setName(filter.getName());
|
super.setName(filter.getName());
|
||||||
super.setDisplayName(filter.getDisplayName());
|
super.setDisplayName(filter.getDisplayName());
|
||||||
this.skCase = skCase;
|
this.skCase = skCase;
|
||||||
this.filter = filter;
|
this.filter = filter;
|
||||||
|
String tooltip = "Between " + new Date((latestUpdate-filter.getDurationSeconds())*1000).toString();
|
||||||
|
tooltip += "\n and " + new Date(latestUpdate*1000).toString();
|
||||||
|
this.setShortDescription(tooltip);
|
||||||
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/recent-icon.png");
|
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/recent-icon.png");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,10 +30,15 @@ public class SearchFilters implements AutopsyVisitableItem{
|
|||||||
SleuthkitCase skCase;
|
SleuthkitCase skCase;
|
||||||
|
|
||||||
public enum FileSearchFilter implements AutopsyVisitableItem {
|
public enum FileSearchFilter implements AutopsyVisitableItem {
|
||||||
TSK_IMAGE_FILTER(0, "TSK_IMAGE_FILTER", "Images", Arrays.asList(".jpg", ".jpeg", ".png", ".psd", ".nef")),
|
TSK_IMAGE_FILTER(0, "TSK_IMAGE_FILTER", "Images", Arrays.asList(".jpg", ".jpeg", ".png", ".psd", ".nef", ".tiff")),
|
||||||
TSK_VIDEO_FILTER(1, "TSK_VIDEO_FILTER", "Videos", Arrays.asList(".mov", ".avi", ".m4v")),
|
TSK_VIDEO_FILTER(1, "TSK_VIDEO_FILTER", "Videos",
|
||||||
TSK_AUDIO_FILTER(2, "TSK_AUDIO_FILTER", "Audio", Arrays.asList(".mp3", ".aac", ".wav", ".ogg", ".wma", ".m4a")),
|
Arrays.asList(".aaf", ".3gp", ".asf", ".avi", ".m1v", ".m2v", ".m4v",
|
||||||
TSK_DOCUMENT_FILTER(3, "TSK_DOCUMENT_FILTER", "Documents", Arrays.asList(".doc", ".docx", ".pdf", ".xls"));
|
".mov", ".mpeg", ".mpg", ".mpe", ".mp4", ".rm", ".wmv", ".mpv")),
|
||||||
|
TSK_AUDIO_FILTER(2, "TSK_AUDIO_FILTER", "Audio",
|
||||||
|
Arrays.asList(".aiff", ".aif", ".flac", ".wav", ".m4a", ".ape", ".wma", ".mp2",
|
||||||
|
".mp1", ".mp3", ".aac", ".mp4", ".m4p", ".m1a", ".m2a", ".m4r", ".mpa",
|
||||||
|
".m3u", ".mid", ".midi", ".ogg")),
|
||||||
|
TSK_DOCUMENT_FILTER(3, "TSK_DOCUMENT_FILTER", "Documents", Arrays.asList(".doc", ".docx", ".pdf", ".xls", ".rtf", ".txt"));
|
||||||
|
|
||||||
int id;
|
int id;
|
||||||
String name;
|
String name;
|
||||||
|
@ -32,8 +32,8 @@ public class SearchFiltersNode extends AbstractNode implements DisplayableItemNo
|
|||||||
|
|
||||||
SearchFiltersNode(SleuthkitCase skCase) {
|
SearchFiltersNode(SleuthkitCase skCase) {
|
||||||
super(Children.create(new SearchFiltersChildren(skCase), true));
|
super(Children.create(new SearchFiltersChildren(skCase), true));
|
||||||
super.setName("Search Filters");
|
super.setName("File Types");
|
||||||
super.setDisplayName("Search Filters");
|
super.setDisplayName("File Types");
|
||||||
this.skCase = skCase;
|
this.skCase = skCase;
|
||||||
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/filter-icon.png");
|
this.setIconBaseWithExtension("org/sleuthkit/autopsy/images/filter-icon.png");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user