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);
101 return DATA_SOURCE_TYPE;
159 if (!setDataSourceOptionsCalled) {
161 deviceId = UUID.randomUUID().toString();
167 run(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, progressMonitor, callback);
192 run(deviceId, imagePath, 0, timeZone, ignoreFatOrphanFiles, progressMonitor, callback);
218 addImageTask =
new AddImageTask(deviceId, imagePath, sectorSize, timeZone, ignoreFatOrphanFiles, null, progressMonitor, callback);
219 new Thread(addImageTask).start();
231 if (null != addImageTask) {
232 addImageTask.cancelTask();
245 ignoreFatOrphanFiles =
false;
247 setDataSourceOptionsCalled =
false;
251 for (FileFilter filter : filters) {
252 if (filter.accept(file)) {
263 if (!isAcceptedByFiler(dataSourcePath.toFile(), filtersList)) {
274 }
catch (Exception ex) {
284 this.deviceId = deviceId;
285 this.imagePath = dataSourcePath.toString();
287 this.timeZone = Calendar.getInstance().getTimeZone().getID();
288 this.ignoreFatOrphanFiles =
false;
289 setDataSourceOptionsCalled =
true;
290 run(deviceId, dataSourcePath.toString(), sectorSize, timeZone, ignoreFatOrphanFiles, progressMonitor, callBack);
308 this.deviceId = UUID.randomUUID().toString();
309 this.imagePath = imagePath;
311 this.timeZone = Calendar.getInstance().getTimeZone().getID();
312 this.ignoreFatOrphanFiles = ignoreFatOrphanFiles;
313 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)