23 package org.sleuthkit.autopsy.recentactivity;
 
   26 import java.nio.file.Paths;
 
   27 import java.util.ArrayList;
 
   28 import java.util.List;
 
   29 import java.util.logging.Level;
 
   30 import org.openide.util.NbBundle;
 
   49     private final List<Extract> 
extractors = 
new ArrayList<>();
 
   65             iexplore = 
new ExtractIE();
 
   66             edge = 
new ExtractEdge();
 
   71         Extract registry = 
new ExtractRegistry();
 
   72         Extract recentDocuments = 
new RecentDocumentsByLnk();
 
   73         Extract chrome = 
new Chrome();
 
   74         Extract firefox = 
new Firefox();
 
   75         Extract SEUQA = 
new SearchEngineURLQueryAnalyzer();
 
   76         Extract osExtract = 
new ExtractOs();
 
   77         Extract dataSourceAnalyzer = 
new DataSourceUsageAnalyzer();
 
   78         Extract safari = 
new ExtractSafari();
 
   79         Extract zoneInfo = 
new ExtractZoneIdentifier();
 
   81         extractors.add(chrome);
 
   82         extractors.add(firefox);
 
   83         extractors.add(iexplore);
 
   85         extractors.add(safari);
 
   86         extractors.add(recentDocuments);
 
   87         extractors.add(SEUQA); 
 
   88         extractors.add(registry); 
 
   89         extractors.add(osExtract); 
 
   90         extractors.add(dataSourceAnalyzer); 
 
   91         extractors.add(zoneInfo); 
 
   93         browserExtractors.add(chrome);
 
   94         browserExtractors.add(firefox);
 
   95         browserExtractors.add(iexplore);
 
   96         browserExtractors.add(edge);
 
   97         browserExtractors.add(safari);
 
   99         for (Extract extractor : extractors) {
 
  107                 NbBundle.getMessage(this.getClass(),
 
  108                         "RAImageIngestModule.process.started",
 
  109                         dataSource.getName())));
 
  113         ArrayList<String> errors = 
new ArrayList<>();
 
  115         for (
int i = 0; i < extractors.size(); i++) {
 
  116             Extract extracter = extractors.get(i);
 
  118                 logger.log(Level.INFO, 
"Recent Activity has been canceled, quitting before {0}", extracter.getName()); 
 
  122             progressBar.
progress(extracter.getName(), i);
 
  125                 extracter.process(dataSource, context, progressBar);
 
  126             } 
catch (Exception ex) {
 
  127                 logger.log(Level.SEVERE, 
"Exception occurred in " + extracter.getName(), ex); 
 
  128                 subCompleted.append(NbBundle.getMessage(
this.getClass(), 
"RAImageIngestModule.process.errModFailed",
 
  129                         extracter.getName()));
 
  134             errors.addAll(extracter.getErrorMessages());
 
  138         StringBuilder errorMessage = 
new StringBuilder();
 
  139         String errorMsgSubject;
 
  141         if (errors.isEmpty() == 
false) {
 
  144                     NbBundle.getMessage(
this.getClass(), 
"RAImageIngestModule.process.errMsg.errsEncountered"));
 
  145             for (String msg : errors) {
 
  146                 errorMessage.append(
"<li>").append(msg).append(
"</li>\n"); 
 
  148             errorMessage.append(
"</ul>\n"); 
 
  150             if (errors.size() == 1) {
 
  151                 errorMsgSubject = NbBundle.getMessage(this.getClass(), 
"RAImageIngestModule.process.errMsgSub.oneErr");
 
  153                 errorMsgSubject = NbBundle.getMessage(this.getClass(),
 
  154                         "RAImageIngestModule.process.errMsgSub.nErrs", errors.size());
 
  157             errorMessage.append(NbBundle.getMessage(
this.getClass(), 
"RAImageIngestModule.process.errMsg.noErrs"));
 
  158             errorMsgSubject = NbBundle.getMessage(this.getClass(), 
"RAImageIngestModule.process.errMsgSub.noErrs");
 
  161                 NbBundle.getMessage(this.getClass(),
 
  162                         "RAImageIngestModule.process.ingestMsg.finished",
 
  163                         dataSource.getName(), errorMsgSubject),
 
  164                 errorMessage.toString());
 
  167         StringBuilder historyMsg = 
new StringBuilder();
 
  169                 NbBundle.getMessage(
this.getClass(), 
"RAImageIngestModule.process.histMsg.title", dataSource.getName()));
 
  170         for (Extract module : browserExtractors) {
 
  171             historyMsg.append(
"<li>").append(module.getName()); 
 
  172             historyMsg.append(
": ").append((module.foundData()) ? NbBundle
 
  173                     .getMessage(this.getClass(), 
"RAImageIngestModule.process.histMsg.found") : NbBundle
 
  174                     .getMessage(this.getClass(), 
"RAImageIngestModule.process.histMsg.notFnd"));
 
  175             historyMsg.append(
"</li>"); 
 
  177         historyMsg.append(
"</ul>"); 
 
  179                 NbBundle.getMessage(this.getClass(),
 
  180                         "RAImageIngestModule.process.ingestMsg.results",
 
  181                         dataSource.getName()),
 
  182                 historyMsg.toString());
 
  189         for (
int i = 0; i < extractors.size(); i++) {
 
  190             Extract extracter = extractors.get(i);
 
  192                 extracter.complete();
 
  193             } 
catch (Exception ex) {
 
  194                 logger.log(Level.SEVERE, 
"Exception occurred when completing " + extracter.getName(), ex); 
 
  195                 subCompleted.append(NbBundle.getMessage(
this.getClass(), 
"RAImageIngestModule.complete.errMsg.failed",
 
  196                         extracter.getName()));
 
  214         String tmpDir = a_case.
getTempDirectory() + File.separator + 
"RecentActivity" + File.separator + mod; 
 
  215         File dir = 
new File(tmpDir);
 
  216         if (dir.exists() == 
false) {
 
  233         String tmpDir = a_case.
getModuleDirectory() + File.separator + 
"RecentActivity" + File.separator + mod; 
 
  234         File dir = 
new File(tmpDir);
 
  235         if (dir.exists() == 
false) {
 
  249                             "RecentActivity").normalize().toString() ;  
 
String getModuleOutputDirectoryRelativePath()
final List< Extract > extractors
static final Logger logger
String getTempDirectory()
static String getRATempPath(Case a_case, String mod)
StringBuilder subCompleted
static IngestMessage createMessage(MessageType messageType, String source, String subject, String detailsHtml)
ProcessResult process(Content dataSource, DataSourceIngestModuleProgress progressBar)
static String getRAOutputPath(Case a_case, String mod)
void postMessage(final IngestMessage message)
String getModuleDirectory()
void startUp(IngestJobContext context)
boolean dataSourceIngestIsCancelled()
final List< Extract > browserExtractors
void switchToDeterminate(int workUnits)
synchronized static Logger getLogger(String name)
static Case getCurrentCaseThrows()
void progress(int workUnits)
static synchronized IngestServices getInstance()