19 package org.sleuthkit.autopsy.casemodule;
22 import java.nio.file.Path;
23 import javax.swing.JPanel;
24 import java.util.ArrayList;
25 import java.util.Calendar;
26 import java.util.List;
27 import java.util.UUID;
28 import javax.swing.filechooser.FileFilter;
29 import org.openide.util.NbBundle;
30 import org.openide.util.lookup.ServiceProvider;
31 import org.openide.util.lookup.ServiceProviders;
44 @ServiceProviders(value={
45 @ServiceProvider(service=DataSourceProcessor.class),
46 @ServiceProvider(service=AutoIngestDataSourceProcessor.class)}
50 private final static String DATA_SOURCE_TYPE = NbBundle.getMessage(
ImageDSProcessor.class,
"ImageDSProcessor.dsType.text");
51 private static final List<String> allExt =
new ArrayList<>();
55 private static final String ALL_DESC = NbBundle.getMessage(
ImageDSProcessor.class,
"ImageDSProcessor.allDesc.text");
57 private static final List<FileFilter> filtersList =
new ArrayList<>();
72 filtersList.add(allFilter);
73 filtersList.add(rawFilter);
74 filtersList.add(encaseFilter);
77 if(!System.getProperty(
"os.name").toLowerCase().contains(
"mac")){
78 filtersList.add(virtualMachineFilter);
98 static List<FileFilter> getFileFiltersList() {
110 return DATA_SOURCE_TYPE;
168 if (!setDataSourceOptionsCalled) {
170 deviceId = UUID.randomUUID().toString();
176 run(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, progressMonitor, callback);
201 run(deviceId, imagePath, 0, timeZone, ignoreFatOrphanFiles, progressMonitor, callback);
227 addImageTask =
new AddImageTask(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, null, progressMonitor, callback);
228 new Thread(addImageTask).start();
240 if (null != addImageTask) {
241 addImageTask.cancelTask();
254 ignoreFatOrphanFiles =
false;
256 setDataSourceOptionsCalled =
false;
260 for (FileFilter filter : filters) {
261 if (filter.accept(file)) {
272 if (!isAcceptedByFiler(dataSourcePath.toFile(), filtersList)) {
283 }
catch (Exception ex) {
293 this.deviceId = deviceId;
294 this.imagePath = dataSourcePath.toString();
296 this.timeZone = Calendar.getInstance().getTimeZone().getID();
297 this.ignoreFatOrphanFiles =
false;
298 setDataSourceOptionsCalled =
true;
299 run(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, progressMonitor, callBack);
317 this.deviceId = UUID.randomUUID().toString();
318 this.imagePath = imagePath;
320 this.timeZone = Calendar.getInstance().getTimeZone().getID();
321 this.ignoreFatOrphanFiles = ignoreFatOrphanFiles;
322 setDataSourceOptionsCalled =
true;
boolean getNoFatOrphans()
void process(String deviceId, Path dataSourcePath, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callBack)
String getDataSourceType()
static boolean isAcceptedByFiler(File file, List< FileFilter > filters)
static final String RAW_IMAGE_DESC
static final String VIRTUAL_MACHINE_DESC
static synchronized ImageFilePanel createInstance(String context, List< FileFilter > fileChooserFilters)
AddImageTask addImageTask
void run(String deviceId, String imagePath, String timeZone, boolean ignoreFatOrphanFiles, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback)
static final String ENCASE_IMAGE_DESC
void run(String deviceId, String imagePath, int sectorSize, String timeZone, boolean ignoreFatOrphanFiles, DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback)
boolean ignoreFatOrphanFiles
static final List< String > VIRTUAL_MACHINE_EXTS
static final List< String > ENCASE_IMAGE_EXTS
void setDataSourceOptions(String imagePath, String timeZone, boolean ignoreFatOrphanFiles)
boolean setDataSourceOptionsCalled
static boolean imageHasFileSystem(Path dataSourcePath)
void run(DataSourceProcessorProgressMonitor progressMonitor, DataSourceProcessorCallback callback)
static Case getCurrentCaseThrows()
final ImageFilePanel configPanel
static final List< String > RAW_IMAGE_EXTS
int canProcess(Path dataSourcePath)