mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-12 16:06:15 +00:00
Rename of mboxemail and additions of thunderbirdparser class.
This commit is contained in:
parent
050e48bd5f
commit
88b61d9981
@ -1,8 +1,8 @@
|
||||
#Updated by build script
|
||||
#Thu, 07 Jun 2012 13:38:12 -0700
|
||||
#Mon, 18 Jun 2012 14:35:03 -0700
|
||||
OpenIDE-Module-Name=CoreUtils
|
||||
|
||||
|
||||
app.name=Autopsy
|
||||
app.version=20120607
|
||||
app.version=20120618
|
||||
build.type=DEVELOPMENT
|
||||
|
@ -1,6 +0,0 @@
|
||||
Manifest-Version: 1.0
|
||||
OpenIDE-Module: org.sleuthkit.autopsy.mboxparser
|
||||
OpenIDE-Module-Layer: org/sleuthkit/autopsy/mboxparser/layer.xml
|
||||
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/mboxparser/Bundle.properties
|
||||
OpenIDE-Module-Specification-Version: 1.0
|
||||
|
@ -1,57 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://www.netbeans.org/ns/project/1">
|
||||
<type>org.netbeans.modules.apisupport.project</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
|
||||
<code-name-base>org.sleuthkit.autopsy.mboxparser</code-name-base>
|
||||
<suite-component/>
|
||||
<module-dependencies>
|
||||
<dependency>
|
||||
<code-name-base>org.sleuthkit.autopsy.casemodule</code-name-base>
|
||||
<build-prerequisite/>
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>1</release-version>
|
||||
<specification-version>1.0</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<code-name-base>org.sleuthkit.autopsy.coreutils</code-name-base>
|
||||
<build-prerequisite/>
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>0-1</release-version>
|
||||
<specification-version>0.0</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<code-name-base>org.sleuthkit.autopsy.datamodel</code-name-base>
|
||||
<build-prerequisite/>
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>1</release-version>
|
||||
<specification-version>1.0</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<code-name-base>org.sleuthkit.autopsy.ingest</code-name-base>
|
||||
<build-prerequisite/>
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<release-version>0-1</release-version>
|
||||
<specification-version>1.0</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
</module-dependencies>
|
||||
<public-packages/>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/tika-core-1.1.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/tika-core-1.1.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
<class-path-extension>
|
||||
<runtime-relative-path>ext/tika-parsers-1.1.jar</runtime-relative-path>
|
||||
<binary-origin>release/modules/ext/tika-parsers-1.1.jar</binary-origin>
|
||||
</class-path-extension>
|
||||
</data>
|
||||
</configuration>
|
||||
</project>
|
@ -1 +0,0 @@
|
||||
OpenIDE-Module-Name=MboxEmailModule
|
@ -1,206 +0,0 @@
|
||||
package org.sleuthkit.autopsy.mboxparser;
|
||||
|
||||
import java.io.*;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.apache.tika.Tika;
|
||||
import org.apache.tika.exception.TikaException;
|
||||
import org.apache.tika.metadata.Metadata;
|
||||
import org.apache.tika.mime.MimeTypes;
|
||||
import org.apache.tika.mime.MediaType;
|
||||
import org.apache.tika.parser.ParseContext;
|
||||
import org.apache.tika.parser.Parser;
|
||||
import org.apache.tika.parser.mbox.MboxParser;
|
||||
import org.apache.tika.sax.BodyContentHandler;
|
||||
import org.xml.sax.ContentHandler;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class MboxEmailParser {
|
||||
|
||||
|
||||
private InputStream stream;
|
||||
//Tika object
|
||||
private Tika tika;
|
||||
private Metadata metadata;
|
||||
private ContentHandler contentHandler;
|
||||
private String mimeType;
|
||||
private Parser parser;
|
||||
private ParseContext context;
|
||||
|
||||
private static ArrayList<String> tikaMimeTypes;
|
||||
|
||||
static
|
||||
{
|
||||
tikaMimeTypes = new ArrayList<String>();
|
||||
tikaMimeTypes.add(MimeTypes.OCTET_STREAM);
|
||||
tikaMimeTypes.add(MimeTypes.PLAIN_TEXT);
|
||||
tikaMimeTypes.add(MimeTypes.XML);
|
||||
}
|
||||
|
||||
public MboxEmailParser()
|
||||
{
|
||||
this.tika = new Tika();
|
||||
}
|
||||
|
||||
public MboxEmailParser(InputStream inStream)
|
||||
{
|
||||
this.tika = new Tika();
|
||||
this.stream = inStream;
|
||||
}
|
||||
|
||||
public MboxEmailParser(String filepath)
|
||||
{
|
||||
this.tika = new Tika();
|
||||
this.stream = this.getClass().getResourceAsStream(filepath);
|
||||
}
|
||||
|
||||
private void init() throws IOException
|
||||
{
|
||||
this.tika.setMaxStringLength(10*1024*1024);
|
||||
this.metadata = new Metadata();
|
||||
//Set MIME Type
|
||||
this.mimeType = tika.detect(this.stream);
|
||||
this.parser = new MboxParser();
|
||||
this.context = new ParseContext();
|
||||
|
||||
this.contentHandler = new BodyContentHandler(-1);
|
||||
//Seems like setting this causes the metadata not to output all of it.
|
||||
// this.metadata.set(Metadata.CONTENT_TYPE, this.mimeType);
|
||||
}
|
||||
|
||||
public void parse() throws FileNotFoundException, IOException, SAXException, TikaException
|
||||
{
|
||||
init();
|
||||
// this.metadata = new Metadata();
|
||||
//String mimeType = tika.detect(this.stream);
|
||||
parser.parse(this.stream,this.contentHandler, this.metadata, context);
|
||||
}
|
||||
|
||||
public void parse(InputStream inStream) throws FileNotFoundException, IOException, SAXException, TikaException
|
||||
{
|
||||
init();
|
||||
parser.parse(inStream,this.contentHandler, this.metadata, context);
|
||||
String blbha = "stop";
|
||||
}
|
||||
|
||||
public Metadata getMetadata()
|
||||
{
|
||||
return this.metadata;
|
||||
}
|
||||
|
||||
|
||||
//Returns message content, i.e. plain text or html
|
||||
public String getContent()
|
||||
{
|
||||
return this.contentHandler.toString();
|
||||
}
|
||||
|
||||
public String detectEmailFileFormat(String filepath) throws IOException
|
||||
{
|
||||
return this.tika.detect(filepath);
|
||||
}
|
||||
|
||||
//Detects the mime type from the first few bytes of the document
|
||||
public String detectMediaTypeFromBytes(byte[] firstFewBytes, String inDocName)
|
||||
{
|
||||
return this.tika.detect(firstFewBytes, inDocName);
|
||||
}
|
||||
|
||||
|
||||
public boolean isValidMimeTypeMbox(byte[] buffer)
|
||||
{
|
||||
return (new String(buffer)).startsWith("From ");
|
||||
}
|
||||
|
||||
//This assumes the file/stream was parsed since we are looking at the metadata
|
||||
public boolean isValidMboxType()
|
||||
{
|
||||
return this.metadata.get(Metadata.CONTENT_TYPE).equals("application/mbox");
|
||||
}
|
||||
|
||||
//Get email subject
|
||||
public String getSubject()
|
||||
{
|
||||
return this.metadata.get(Metadata.SUBJECT);
|
||||
}
|
||||
|
||||
public String getTitle()
|
||||
{
|
||||
return this.metadata.get(Metadata.TITLE);
|
||||
}
|
||||
|
||||
public Long getDateCreated()
|
||||
{
|
||||
Long epochtime;
|
||||
Long ftime = (long) 0;
|
||||
|
||||
try {
|
||||
String datetime = this.metadata.get(Metadata.DATE);
|
||||
epochtime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(datetime).getTime();
|
||||
ftime = epochtime.longValue();
|
||||
ftime = ftime / 1000;
|
||||
} catch (ParseException ex) {
|
||||
Logger.getLogger(MboxFileIngestService.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
return ftime;
|
||||
}
|
||||
|
||||
public String getApplication()
|
||||
{
|
||||
String client;
|
||||
String userAgent = "";
|
||||
userAgent = this.metadata.get("MboxParser-user-agent");
|
||||
if(userAgent.matches("(?i).*Thunderbird.*"))
|
||||
{
|
||||
client = "Thunderbird";
|
||||
}
|
||||
else{
|
||||
client = "Unknown";
|
||||
}
|
||||
return client;
|
||||
}
|
||||
|
||||
public String getContenType()
|
||||
{
|
||||
return this.metadata.get(Metadata.CONTENT_TYPE);
|
||||
}
|
||||
|
||||
public String getContenEncoding()
|
||||
{
|
||||
return this.metadata.get(Metadata.CONTENT_ENCODING);
|
||||
}
|
||||
|
||||
public String getFrom()
|
||||
{
|
||||
return this.metadata.get(Metadata.AUTHOR);
|
||||
}
|
||||
|
||||
public String getTo()
|
||||
{
|
||||
return this.metadata.get(Metadata.MESSAGE_TO);
|
||||
}
|
||||
|
||||
public String getCC()
|
||||
{
|
||||
return this.metadata.get(Metadata.MESSAGE_CC);
|
||||
}
|
||||
|
||||
public String getBCC()
|
||||
{
|
||||
return this.metadata.get(Metadata.MESSAGE_BCC);
|
||||
}
|
||||
|
||||
public String getRecipientAddress()
|
||||
{
|
||||
return this.metadata.get(Metadata.MESSAGE_RECIPIENT_ADDRESS);
|
||||
}
|
||||
|
||||
public String getMboxSupportedMediaType()
|
||||
{
|
||||
return MediaType.application("mbox").getType();
|
||||
}
|
||||
}
|
@ -1,195 +0,0 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2011 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.mboxparser;
|
||||
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import org.apache.tika.exception.TikaException;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManagerProxy;
|
||||
import org.sleuthkit.autopsy.ingest.IngestMessage;
|
||||
import org.sleuthkit.autopsy.ingest.IngestMessage.MessageType;
|
||||
import org.sleuthkit.autopsy.ingest.IngestServiceAbstract.*;
|
||||
import org.sleuthkit.autopsy.ingest.IngestServiceAbstractFile;
|
||||
import org.sleuthkit.autopsy.ingest.ServiceDataEvent;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifact;
|
||||
import org.sleuthkit.datamodel.BlackboardArtifact.ARTIFACT_TYPE;
|
||||
import org.sleuthkit.datamodel.BlackboardAttribute;
|
||||
import org.sleuthkit.datamodel.BlackboardAttribute.ATTRIBUTE_TYPE;
|
||||
import org.sleuthkit.datamodel.ReadContentInputStream;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
import org.sleuthkit.datamodel.TskException;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class MboxFileIngestService implements IngestServiceAbstractFile {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(MboxFileIngestService.class.getName());
|
||||
private static MboxFileIngestService instance = null;
|
||||
private IngestManagerProxy managerProxy;
|
||||
private static int messageId = 0;
|
||||
private static final String classname = "Mbox Parser";
|
||||
|
||||
public static synchronized MboxFileIngestService getDefault() {
|
||||
if (instance == null) {
|
||||
instance = new MboxFileIngestService();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProcessResult process(AbstractFile fsContent) {
|
||||
MboxEmailParser mbox = new MboxEmailParser();
|
||||
boolean isMbox = false;
|
||||
|
||||
try {
|
||||
byte[] t = new byte[(int) 128];
|
||||
int byteRead = fsContent.read(t, 0, 128);
|
||||
isMbox = mbox.isValidMimeTypeMbox(t);
|
||||
} catch (TskException ex) {
|
||||
Logger.getLogger(MboxFileIngestService.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
|
||||
if (isMbox) {
|
||||
managerProxy.postMessage(IngestMessage.createMessage(++messageId, MessageType.INFO, this, "Processing " + fsContent.getName()));
|
||||
try {
|
||||
ReadContentInputStream contentStream = new ReadContentInputStream(fsContent);
|
||||
mbox.parse(contentStream);
|
||||
String content = mbox.getContent();
|
||||
String client = mbox.getApplication();
|
||||
String from = mbox.getFrom();
|
||||
String to = mbox.getTo();
|
||||
Long date = mbox.getDateCreated();
|
||||
String subject = mbox.getSubject();
|
||||
String cc = mbox.getCC();
|
||||
String bcc = mbox.getBCC();
|
||||
Collection<BlackboardAttribute> bbattributes = new ArrayList<BlackboardAttribute>();
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_TO.getTypeID(), classname, "", to));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_CC.getTypeID(), classname, "", cc));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_BCC.getTypeID(), classname, "", bcc));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_FROM.getTypeID(), classname, "", from));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_CONTENT_PLAIN.getTypeID(), classname, "", content));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_EMAIL_CONTENT_HTML.getTypeID(), classname, "", content));
|
||||
//bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_MSG_ID.getTypeID(), classname, "",));
|
||||
//bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_MSG_REPLY_ID.getTypeID(), classname, "",));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_DATETIME_RCVD.getTypeID(), classname, "", date));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_DATETIME_SENT.getTypeID(), classname, "", date));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_SUBJECT.getTypeID(), classname, "", subject));
|
||||
bbattributes.add(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_PROG_NAME.getTypeID(), classname, "", client));
|
||||
BlackboardArtifact bbart;
|
||||
try {
|
||||
bbart = fsContent.newArtifact(BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG);
|
||||
bbart.addAttributes(bbattributes);
|
||||
} catch (TskCoreException ex) {
|
||||
Logger.getLogger(MboxFileIngestService.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
|
||||
|
||||
|
||||
IngestManager.fireServiceDataEvent(new ServiceDataEvent(classname, BlackboardArtifact.ARTIFACT_TYPE.TSK_EMAIL_MSG));
|
||||
} catch (FileNotFoundException ex) {
|
||||
Logger.getLogger(MboxFileIngestService.class.getName()).log(Level.SEVERE, null, ex);
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(MboxFileIngestService.class.getName()).log(Level.SEVERE, null, ex);
|
||||
} catch (SAXException ex) {
|
||||
Logger.getLogger(MboxFileIngestService.class.getName()).log(Level.SEVERE, null, ex);
|
||||
} catch (TikaException ex) {
|
||||
Logger.getLogger(MboxFileIngestService.class.getName()).log(Level.SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
|
||||
return ProcessResult.OK;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void complete() {
|
||||
logger.log(Level.INFO, "complete()");
|
||||
managerProxy.postMessage(IngestMessage.createMessage(++messageId, MessageType.INFO, this, "COMPLETE"));
|
||||
|
||||
//service specific cleanup due completion here
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Mbox Parser";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return "This class parses through a file to determine if it is an mbox file and if so, populates an email artifact for it in the blackboard.";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void init(IngestManagerProxy managerProxy) {
|
||||
logger.log(Level.INFO, "init()");
|
||||
this.managerProxy = managerProxy;
|
||||
|
||||
//service specific initialization here
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stop() {
|
||||
logger.log(Level.INFO, "stop()");
|
||||
|
||||
//service specific cleanup due interruption here
|
||||
}
|
||||
|
||||
@Override
|
||||
public ServiceType getType() {
|
||||
return ServiceType.AbstractFile;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasSimpleConfiguration() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAdvancedConfiguration() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public javax.swing.JPanel getSimpleConfiguration() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public javax.swing.JPanel getAdvancedConfiguration() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasBackgroundJobsRunning() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveAdvancedConfiguration() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveSimpleConfiguration() {
|
||||
}
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
build.xml.data.CRC32=d23c11ef
|
||||
build.xml.data.CRC32=d1b02431
|
||||
build.xml.script.CRC32=bbb1c310
|
||||
build.xml.stylesheet.CRC32=a56c6a5b@1.46.2
|
||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||
nbproject/build-impl.xml.data.CRC32=d23c11ef
|
||||
nbproject/build-impl.xml.data.CRC32=d1b02431
|
||||
nbproject/build-impl.xml.script.CRC32=1562aec2
|
||||
nbproject/build-impl.xml.stylesheet.CRC32=238281d1@1.46.2
|
||||
|
@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
|
||||
<!-- for some information on what you could do (e.g. targets to override). -->
|
||||
<!-- If you delete this file and reopen the project it will be recreated. -->
|
||||
<project name="org.sleuthkit.autopsy.mboxparser" default="netbeans" basedir=".">
|
||||
<description>Builds, tests, and runs the project org.sleuthkit.autopsy.mboxparser.</description>
|
||||
<import file="nbproject/build-impl.xml"/>
|
||||
</project>
|
@ -1,6 +0,0 @@
|
||||
Manifest-Version: 1.0
|
||||
OpenIDE-Module: org.sleuthkit.autopsy.mboxparser
|
||||
OpenIDE-Module-Layer: org/sleuthkit/autopsy/mboxparser/layer.xml
|
||||
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/mboxparser/Bundle.properties
|
||||
OpenIDE-Module-Specification-Version: 1.0
|
||||
|
@ -1,45 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--
|
||||
*** GENERATED FROM project.xml - DO NOT EDIT ***
|
||||
*** EDIT ../build.xml INSTEAD ***
|
||||
-->
|
||||
<project name="org.sleuthkit.autopsy.mboxparser-impl" basedir="..">
|
||||
<fail message="Please build using Ant 1.7.1 or higher.">
|
||||
<condition>
|
||||
<not>
|
||||
<antversion atleast="1.7.1"/>
|
||||
</not>
|
||||
</condition>
|
||||
</fail>
|
||||
<property file="nbproject/private/suite-private.properties"/>
|
||||
<property file="nbproject/suite.properties"/>
|
||||
<fail unless="suite.dir">You must set 'suite.dir' to point to your containing module suite</fail>
|
||||
<property file="${suite.dir}/nbproject/private/platform-private.properties"/>
|
||||
<property file="${suite.dir}/nbproject/platform.properties"/>
|
||||
<macrodef name="property" uri="http://www.netbeans.org/ns/nb-module-project/2">
|
||||
<attribute name="name"/>
|
||||
<attribute name="value"/>
|
||||
<sequential>
|
||||
<property name="@{name}" value="${@{value}}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
<macrodef name="evalprops" uri="http://www.netbeans.org/ns/nb-module-project/2">
|
||||
<attribute name="property"/>
|
||||
<attribute name="value"/>
|
||||
<sequential>
|
||||
<property name="@{property}" value="@{value}"/>
|
||||
</sequential>
|
||||
</macrodef>
|
||||
<property file="${user.properties.file}"/>
|
||||
<nbmproject2:property name="harness.dir" value="nbplatform.${nbplatform.active}.harness.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
|
||||
<nbmproject2:property name="nbplatform.active.dir" value="nbplatform.${nbplatform.active}.netbeans.dest.dir" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
|
||||
<nbmproject2:evalprops property="cluster.path.evaluated" value="${cluster.path}" xmlns:nbmproject2="http://www.netbeans.org/ns/nb-module-project/2"/>
|
||||
<fail message="Path to 'platform' cluster missing in $${cluster.path} property or using corrupt Netbeans Platform (missing harness).">
|
||||
<condition>
|
||||
<not>
|
||||
<contains string="${cluster.path.evaluated}" substring="platform"/>
|
||||
</not>
|
||||
</condition>
|
||||
</fail>
|
||||
<import file="${harness.dir}/build.xml"/>
|
||||
</project>
|
@ -1,100 +0,0 @@
|
||||
cluster.path=\
|
||||
${nbplatform.active.dir}/harness:\
|
||||
${nbplatform.active.dir}/java:\
|
||||
${nbplatform.active.dir}/platform
|
||||
disabled.modules=\
|
||||
org.apache.tools.ant.module,\
|
||||
org.netbeans.api.debugger.jpda,\
|
||||
org.netbeans.api.java,\
|
||||
org.netbeans.libs.cglib,\
|
||||
org.netbeans.libs.javacapi,\
|
||||
org.netbeans.libs.javacimpl,\
|
||||
org.netbeans.libs.jsr223,\
|
||||
org.netbeans.libs.springframework,\
|
||||
org.netbeans.modules.ant.browsetask,\
|
||||
org.netbeans.modules.ant.debugger,\
|
||||
org.netbeans.modules.ant.freeform,\
|
||||
org.netbeans.modules.ant.grammar,\
|
||||
org.netbeans.modules.ant.kit,\
|
||||
org.netbeans.modules.beans,\
|
||||
org.netbeans.modules.classfile,\
|
||||
org.netbeans.modules.dbschema,\
|
||||
org.netbeans.modules.debugger.jpda,\
|
||||
org.netbeans.modules.debugger.jpda.ant,\
|
||||
org.netbeans.modules.debugger.jpda.projects,\
|
||||
org.netbeans.modules.debugger.jpda.ui,\
|
||||
org.netbeans.modules.form,\
|
||||
org.netbeans.modules.form.j2ee,\
|
||||
org.netbeans.modules.form.kit,\
|
||||
org.netbeans.modules.hibernate,\
|
||||
org.netbeans.modules.hibernatelib,\
|
||||
org.netbeans.modules.hudson.ant,\
|
||||
org.netbeans.modules.hudson.maven,\
|
||||
org.netbeans.modules.i18n,\
|
||||
org.netbeans.modules.i18n.form,\
|
||||
org.netbeans.modules.j2ee.core.utilities,\
|
||||
org.netbeans.modules.j2ee.eclipselink,\
|
||||
org.netbeans.modules.j2ee.eclipselinkmodelgen,\
|
||||
org.netbeans.modules.j2ee.jpa.refactoring,\
|
||||
org.netbeans.modules.j2ee.jpa.verification,\
|
||||
org.netbeans.modules.j2ee.metadata,\
|
||||
org.netbeans.modules.j2ee.metadata.model.support,\
|
||||
org.netbeans.modules.j2ee.persistence,\
|
||||
org.netbeans.modules.j2ee.persistence.kit,\
|
||||
org.netbeans.modules.j2ee.persistenceapi,\
|
||||
org.netbeans.modules.j2ee.toplinklib,\
|
||||
org.netbeans.modules.java.api.common,\
|
||||
org.netbeans.modules.java.debug,\
|
||||
org.netbeans.modules.java.editor,\
|
||||
org.netbeans.modules.java.editor.lib,\
|
||||
org.netbeans.modules.java.examples,\
|
||||
org.netbeans.modules.java.freeform,\
|
||||
org.netbeans.modules.java.guards,\
|
||||
org.netbeans.modules.java.helpset,\
|
||||
org.netbeans.modules.java.hints,\
|
||||
org.netbeans.modules.java.hints.processor,\
|
||||
org.netbeans.modules.java.j2seplatform,\
|
||||
org.netbeans.modules.java.j2seproject,\
|
||||
org.netbeans.modules.java.kit,\
|
||||
org.netbeans.modules.java.lexer,\
|
||||
org.netbeans.modules.java.navigation,\
|
||||
org.netbeans.modules.java.platform,\
|
||||
org.netbeans.modules.java.preprocessorbridge,\
|
||||
org.netbeans.modules.java.project,\
|
||||
org.netbeans.modules.java.source,\
|
||||
org.netbeans.modules.java.source.ant,\
|
||||
org.netbeans.modules.java.sourceui,\
|
||||
org.netbeans.modules.javadoc,\
|
||||
org.netbeans.modules.javawebstart,\
|
||||
org.netbeans.modules.jellytools,\
|
||||
org.netbeans.modules.jellytools.java,\
|
||||
org.netbeans.modules.junit,\
|
||||
org.netbeans.modules.maven,\
|
||||
org.netbeans.modules.maven.coverage,\
|
||||
org.netbeans.modules.maven.embedder,\
|
||||
org.netbeans.modules.maven.grammar,\
|
||||
org.netbeans.modules.maven.graph,\
|
||||
org.netbeans.modules.maven.hints,\
|
||||
org.netbeans.modules.maven.indexer,\
|
||||
org.netbeans.modules.maven.junit,\
|
||||
org.netbeans.modules.maven.kit,\
|
||||
org.netbeans.modules.maven.model,\
|
||||
org.netbeans.modules.maven.osgi,\
|
||||
org.netbeans.modules.maven.persistence,\
|
||||
org.netbeans.modules.maven.repository,\
|
||||
org.netbeans.modules.maven.search,\
|
||||
org.netbeans.modules.maven.spring,\
|
||||
org.netbeans.modules.projectimport.eclipse.core,\
|
||||
org.netbeans.modules.projectimport.eclipse.j2se,\
|
||||
org.netbeans.modules.refactoring.java,\
|
||||
org.netbeans.modules.spellchecker.bindings.java,\
|
||||
org.netbeans.modules.spring.beans,\
|
||||
org.netbeans.modules.swingapp,\
|
||||
org.netbeans.modules.websvc.jaxws21,\
|
||||
org.netbeans.modules.websvc.jaxws21api,\
|
||||
org.netbeans.modules.websvc.saas.codegen.java,\
|
||||
org.netbeans.modules.xml.jaxb,\
|
||||
org.netbeans.modules.xml.tools.java,\
|
||||
org.openide.compat,\
|
||||
org.openide.util.enumerations
|
||||
nbplatform.active=default
|
@ -1,2 +0,0 @@
|
||||
javac.source=1.6
|
||||
javac.compilerargs=-Xlint -Xlint:-serial
|
@ -1 +0,0 @@
|
||||
suite.dir=${basedir}/..
|
Binary file not shown.
Binary file not shown.
@ -1 +0,0 @@
|
||||
OpenIDE-Module-Name=ThunderbirdMboxEmailModule
|
@ -1,11 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
|
||||
<filesystem>
|
||||
<folder name="Services">
|
||||
<file name="org-sleuthkit-autopsy-mboxparser-MboxFileIngestService.instance">
|
||||
<attr name="instanceOf" stringvalue="org.sleuthkit.autopsy.ingest.IngestServiceAbstractFile"/>
|
||||
<attr name="instanceCreate" methodvalue="org.sleuthkit.autopsy.mboxparser.MboxFileIngestService.getDefault"/>
|
||||
<attr name="position" intvalue="1100"/>
|
||||
</file>
|
||||
</folder>
|
||||
</filesystem>
|
@ -30,7 +30,7 @@ modules=\
|
||||
${project.org.sleuthkit.autopsy.recentactivity}:\
|
||||
${project.org.sleuthkit.autopsy.report}:\
|
||||
${project.org.sleuthkit.autopsy.testing}:\
|
||||
${project.org.sleuthkit.autopsy.mboxparser}
|
||||
${project.org.sleuthkit.autopsy.thunderbirdparser}
|
||||
project.org.sleuthkit.autopsy.casemodule=Case
|
||||
project.org.sleuthkit.autopsy.corecomponentinterfaces=CoreComponentInterfaces
|
||||
project.org.sleuthkit.autopsy.corecomponents=CoreComponents
|
||||
@ -40,10 +40,10 @@ project.org.sleuthkit.autopsy.filesearch=FileSearch
|
||||
project.org.sleuthkit.autopsy.hashdatabase=HashDatabase
|
||||
project.org.sleuthkit.autopsy.ingest=Ingest
|
||||
project.org.sleuthkit.autopsy.keywordsearch=KeywordSearch
|
||||
project.org.sleuthkit.autopsy.mboxparser=MboxEmailModule
|
||||
project.org.sleuthkit.autopsy.menuactions=MenuActions
|
||||
project.org.sleuthkit.autopsy.datamodel=DataModel
|
||||
project.org.sleuthkit.autopsy.recentactivity=RecentActivity
|
||||
project.org.sleuthkit.autopsy.report=Report
|
||||
project.org.sleuthkit.autopsy.testing=Testing
|
||||
|
||||
project.org.sleuthkit.autopsy.thunderbirdparser=thunderbirdparser
|
||||
|
@ -2,7 +2,7 @@
|
||||
<!-- You may freely edit this file. See harness/README in the NetBeans platform -->
|
||||
<!-- for some information on what you could do (e.g. targets to override). -->
|
||||
<!-- If you delete this file and reopen the project it will be recreated. -->
|
||||
<project name="org.sleuthkit.autopsy.mboxparser" default="netbeans" basedir=".">
|
||||
<description>Builds, tests, and runs the project org.sleuthkit.autopsy.mboxparser.</description>
|
||||
<project name="org.sleuthkit.autopsy.thunderbirdparser" default="netbeans" basedir=".">
|
||||
<description>Builds, tests, and runs the project org.sleuthkit.autopsy.thunderbirdparser.</description>
|
||||
<import file="nbproject/build-impl.xml"/>
|
||||
</project>
|
6
thunderbirdparser/manifest.mf
Normal file
6
thunderbirdparser/manifest.mf
Normal file
@ -0,0 +1,6 @@
|
||||
Manifest-Version: 1.0
|
||||
OpenIDE-Module: org.sleuthkit.autopsy.thunderbirdparser
|
||||
OpenIDE-Module-Layer: org/sleuthkit/autopsy/thunderbirdparser/layer.xml
|
||||
OpenIDE-Module-Localizing-Bundle: org/sleuthkit/autopsy/thunderbirdparser/Bundle.properties
|
||||
OpenIDE-Module-Specification-Version: 1.0
|
||||
|
@ -3,7 +3,7 @@
|
||||
*** GENERATED FROM project.xml - DO NOT EDIT ***
|
||||
*** EDIT ../build.xml INSTEAD ***
|
||||
-->
|
||||
<project name="org.sleuthkit.autopsy.mboxparser-impl" basedir="..">
|
||||
<project name="org.sleuthkit.autopsy.thunderbirdparser-impl" basedir="..">
|
||||
<fail message="Please build using Ant 1.7.1 or higher.">
|
||||
<condition>
|
||||
<not>
|
@ -3,7 +3,7 @@
|
||||
<type>org.netbeans.modules.apisupport.project</type>
|
||||
<configuration>
|
||||
<data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
|
||||
<code-name-base>org.sleuthkit.autopsy.mboxparser</code-name-base>
|
||||
<code-name-base>org.sleuthkit.autopsy.thunderbirdparser</code-name-base>
|
||||
<suite-component/>
|
||||
<module-dependencies>
|
||||
<dependency>
|
||||
@ -42,6 +42,14 @@
|
||||
<specification-version>1.0</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<code-name-base>org.sleuthkit.autopsy.recentactivity</code-name-base>
|
||||
<build-prerequisite/>
|
||||
<compile-dependency/>
|
||||
<run-dependency>
|
||||
<specification-version>1.0</specification-version>
|
||||
</run-dependency>
|
||||
</dependency>
|
||||
</module-dependencies>
|
||||
<public-packages/>
|
||||
<class-path-extension>
|
@ -0,0 +1 @@
|
||||
OpenIDE-Module-Name=ThunderbirdParser
|
@ -153,7 +153,7 @@ public class ThunderbirdEmailParser {
|
||||
|
||||
public String getFrom()
|
||||
{
|
||||
return this.metadata.get(Metadata.MESSAGE_FROM);
|
||||
return this.metadata.get(Metadata.AUTHOR);
|
||||
}
|
||||
|
||||
public String getTo()
|
@ -48,7 +48,7 @@ public class ThunderbirdMboxFileIngestService implements IngestServiceAbstractFi
|
||||
private static ThunderbirdMboxFileIngestService instance = null;
|
||||
private IngestManagerProxy managerProxy;
|
||||
private static int messageId = 0;
|
||||
private static final String classname = "Mbox Parser";
|
||||
private static final String classname = "Thunderbird Parser";
|
||||
|
||||
public static synchronized ThunderbirdMboxFileIngestService getDefault() {
|
||||
if (instance == null) {
|
@ -2,9 +2,9 @@
|
||||
<!DOCTYPE filesystem PUBLIC "-//NetBeans//DTD Filesystem 1.2//EN" "http://www.netbeans.org/dtds/filesystem-1_2.dtd">
|
||||
<filesystem>
|
||||
<folder name="Services">
|
||||
<file name="org-sleuthkit-autopsy-mboxparser-MboxFileIngestService.instance">
|
||||
<file name="org-sleuthkit-autopsy-thunderbirdparser-ThunderbirdMboxFilervice.instance">
|
||||
<attr name="instanceOf" stringvalue="org.sleuthkit.autopsy.ingest.IngestServiceAbstractFile"/>
|
||||
<attr name="instanceCreate" methodvalue="org.sleuthkit.autopsy.mboxparser.MboxFileIngestService.getDefault"/>
|
||||
<attr name="instanceCreate" methodvalue="org.sleuthkit.autopsy.thunderbirdparser.ThunderbirdMboxFileIngestService.getDefault"/>
|
||||
<attr name="position" intvalue="1100"/>
|
||||
</file>
|
||||
</folder>
|
Loading…
x
Reference in New Issue
Block a user