20 package org.sleuthkit.autopsy.report.modules.caseuco;
22 import java.io.IOException;
23 import java.nio.file.Files;
24 import java.nio.file.Path;
25 import java.nio.file.Paths;
26 import java.util.ArrayDeque;
27 import java.util.Deque;
28 import java.util.HashSet;
29 import java.util.List;
31 import java.util.logging.Level;
32 import java.util.stream.Collectors;
33 import javax.swing.JPanel;
34 import org.openide.util.NbBundle;
58 add(TskData.TSK_FS_META_TYPE_ENUM.TSK_FS_META_TYPE_UNDEF.getValue());
59 add(TskData.TSK_FS_META_TYPE_ENUM.TSK_FS_META_TYPE_REG.getValue());
60 add(TskData.TSK_FS_META_TYPE_ENUM.TSK_FS_META_TYPE_VIRT.getValue());
77 return NbBundle.getMessage(this.getClass(),
"CaseUcoReportModule.getName.text");
87 return REPORT_FILE_NAME +
"." +
EXTENSION;
92 return NbBundle.getMessage(this.getClass(),
"CaseUcoReportModule.getDesc.text");
116 "CaseUcoReportModule.notInitialized=CASE-UCO settings panel has not been initialized",
117 "CaseUcoReportModule.noDataSourceSelected=No data source selected for CASE-UCO report",
118 "CaseUcoReportModule.ioError=I/O error encountered while generating report",
119 "CaseUcoReportModule.noCaseOpen=No case is currently open",
120 "CaseUcoReportModule.tskCoreException=TskCoreException [%s] encountered while generating the report. Please reference the log for more details.",
121 "CaseUcoReportModule.processingDataSource=Processing datasource: %s",
122 "CaseUcoReportModule.ingestWarning=Warning, this report will be created before ingest services completed",
123 "CaseUcoReportModule.unableToCreateDirectories=Unable to create directory for CASE-UCO report",
124 "CaseUcoReportModule.srcModuleName=CASE-UCO Report"
135 Files.createDirectories(reportDirectory);
136 }
catch (IOException ex) {
137 logger.log(Level.WARNING,
"Unable to create directory for CASE-UCO report.", ex);
139 Bundle.CaseUcoReportModule_unableToCreateDirectories());
151 .filter((dataSource) -> {
158 .collect(Collectors.toList());
162 progressPanel.
start();
165 for(
int i = 0; i < dataSources.size(); i++) {
166 Content dataSource = dataSources.get(i);
168 Bundle.CaseUcoReportModule_processingDataSource(),
169 dataSource.getName()));
179 Bundle.CaseUcoReportModule_srcModuleName(),
182 }
catch (IOException ex) {
183 logger.log(Level.WARNING,
"I/O error encountered while generating the report.", ex);
185 Bundle.CaseUcoReportModule_ioError());
187 logger.log(Level.WARNING,
"No case open.", ex);
189 Bundle.CaseUcoReportModule_noCaseOpen());
190 }
catch (TskCoreException ex) {
191 logger.log(Level.WARNING,
"TskCoreException encounted while generating the report.", ex);
193 String.format(Bundle.CaseUcoReportModule_tskCoreException(), ex.toString()));
215 Deque<Content> stack =
new ArrayDeque<>();
216 stack.addAll(dataSource.getChildren());
219 while(!stack.isEmpty()) {
220 Content current = stack.pop();
221 if(current instanceof AbstractFile) {
222 AbstractFile f = (AbstractFile) (current);
223 if(SUPPORTED_TYPES.contains(f.getMetaType().getValue())) {
224 generator.addFile(f, dataSource);
228 for(Content child : current.getChildren()) {
List< Content > getDataSources()
void warnIngest(ReportProgressPanel progressPanel)
static synchronized IngestManager getInstance()
void addCase(Case caseObj)
static final Set< Short > SUPPORTED_TYPES
void complete(ReportStatus reportStatus)
boolean isIngestRunning()
void addDataSource(Content dataSource, Case parentCase)
void addReport(String localPath, String srcModuleName, String reportName)
void performDepthFirstSearch(Content dataSource, CaseUcoReportGenerator generator)
JPanel getConfigurationPanel()
static final String REPORT_FILE_NAME
void setIndeterminate(boolean indeterminate)
static final String EXTENSION
boolean supportsDataSourceSelection()
static final CaseUcoReportModule SINGLE_INSTANCE
static final Logger logger
void setMaximumProgress(int max)
void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel)
String getRelativeFilePath()
static String getReportFileName()
static synchronized CaseUcoReportModule getDefault()
List< Long > getSelectedDataSources()
synchronized static Logger getLogger(String name)
static Case getCurrentCaseThrows()
void updateStatusLabel(String statusMessage)
String getReportDirectoryPath()
void setProgress(int value)