mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-17 18:17:43 +00:00
Merge branch 'collaborative' of https://github.com/sleuthkit/autopsy into messaging
This commit is contained in:
commit
a9ca930a60
52
BUILDING.txt
52
BUILDING.txt
@ -1,8 +1,8 @@
|
||||
Last Updated: Sept 17, 2014
|
||||
Last Updated: 21 April 2015
|
||||
|
||||
This file outlines what it takes to build Autopsy from source.
|
||||
|
||||
Note that it currently only works out of the box on Windows. We
|
||||
Note that it currently only works out-of-the-box on Windows. We
|
||||
are working on getting the process working under non-Windows systems.
|
||||
It generally works, but needs some custom mangling to find the
|
||||
correct C libraries.
|
||||
@ -11,7 +11,9 @@ correct C libraries.
|
||||
STEPS:
|
||||
1) Get Java Setup
|
||||
|
||||
1a) Download and install JDK version 1.8. You can now use 32-bit or 64-bit, but special work is needed to get The Sleuth Kit to compile as 64-bit. So, 32-bit is easier.
|
||||
1a) Download and install JDK version 1.8. You can now use 32-bit or 64-bit, but
|
||||
special work is needed to get The Sleuth Kit to compile as 64-bit. So, 32-bit
|
||||
is easier, but if you intend to use PostgreSQL, choose 64-bit.
|
||||
|
||||
Autopsy has been used and tested with Oracle JavaSE and the included JavaFX support
|
||||
(http://www.oracle.com/technetwork/java/javase/downloads/index.html).
|
||||
@ -28,8 +30,8 @@ but it is a recommended IDE to use for development of Autopsy modules.
|
||||
need to set JRE_HOME_32 to the root 32-bit JRE directory and/or JRE_HOME_64
|
||||
to the root 64-bit JRE directory.
|
||||
|
||||
1e) (optional) For some Autopsy features to be functional, you need to add java executable to the system PATH.
|
||||
|
||||
1e) (optional) For some Autopsy features to be functional, you need to add the
|
||||
java executable to the system PATH.
|
||||
|
||||
|
||||
2) Get Sleuth Kit Setup
|
||||
@ -43,18 +45,29 @@ our 64-bit version of libewf:
|
||||
|
||||
2b) Set LIBEWF_HOME environment variable to root directory of LIBEWF
|
||||
|
||||
2c) Download and build a Release version of Sleuth Kit (TSK) 4.0. You
|
||||
need to build the tsk_jni project. You can use a released version or
|
||||
download the latest from github:
|
||||
2c) Download and install PostgreSQL 9.4 or above. The official releases are
|
||||
from: http://www.postgresql.org/download/
|
||||
|
||||
2d) Set the POSTGRESQL_HOME_64 environment variable to point to the
|
||||
PostgreSQL folder containing, but not including, the bin folder.
|
||||
Example: POSTGRESQL_HOME_64=C:\Program Files\PostgreSQL\9.4
|
||||
|
||||
2d) Download and build a Release version of Sleuth Kit (TSK) 4.0. See
|
||||
win32\BUILDING.txt in the TSK package for more information. You need to
|
||||
build the tsk_jni project. Select the Debug_PostgreSQL x64 or
|
||||
Release_PostgreSQL x64 target. You can use a released version or download
|
||||
the latest from github:
|
||||
- git://github.com/sleuthkit/sleuthkit.git
|
||||
|
||||
2d) Build the TSK JAR file by typing 'ant' in bindings/java in the
|
||||
TSK source code folder from a command line. You can also add the
|
||||
code to a NetBeans project and build it from there.
|
||||
2e) Build the TSK JAR file by typing 'ant PostgreSQL' in bindings/java in the
|
||||
TSK source code folder from a command line. Note it is case sensitive. You
|
||||
can also add the code to a NetBeans project and build it from there,
|
||||
selecting the PostgreSQL target. For TSK, the default is SQLite, which is
|
||||
not enough for Autopsy. You must use the PostgreSQL target.
|
||||
|
||||
2e) Set TSK_HOME environment variable to the root directory of TSK
|
||||
2f) Set TSK_HOME environment variable to the root directory of TSK
|
||||
|
||||
2f) On Non-Windows systems, you will need to do a 'make install'
|
||||
2g) On Non-Windows systems, you will need to do a 'make install'
|
||||
from the TSK root directory to install the libraries and such in
|
||||
the needed places (i.e. '/usr/local').
|
||||
|
||||
@ -85,12 +98,13 @@ and by submitting pull requests to the main Autopsy repository.
|
||||
5) Compile Autopsy
|
||||
5a) using Netbeans IDE:
|
||||
- Start NetBeans IDE and open the Autopsy project.
|
||||
- Choose to build the Autopsy project / module. It is the highest
|
||||
level project that will then cause the other modules to be compiled.
|
||||
- To build Autopsy, PostgreSQL is required to be installed.
|
||||
- Choose to build the Autopsy project / module. It is the highest level project
|
||||
that will cause the other modules to be compiled.
|
||||
|
||||
5b) without Netbeans IDE (requires JDK and ant >= 1.7.1):
|
||||
- from root directory of Autopsy source execute:
|
||||
ant build
|
||||
ant
|
||||
(to build Autopsy)
|
||||
ant run
|
||||
(to run Autopsy)
|
||||
@ -102,8 +116,10 @@ the build process.
|
||||
|
||||
- The Sleuth Kit Java datamodel JAR file has native JNI libraries
|
||||
that are copied into it. These JNI libraries have dependencies on
|
||||
libewf and zlib. On non-Windows platforms, the JNI library also has
|
||||
a dependency on libtsk (on Windows, it is compiled into libtsk_jni).
|
||||
libewf and zlib. If you are using PostgreSQL, the dependencies are on libewf,
|
||||
zlib, libpq, libintl-8, libeay32, and ssleay32 DLL files. On non-Windows
|
||||
platforms, the JNI library also has a dependency on libtsk (on Windows,
|
||||
it is compiled into libtsk_jni).
|
||||
|
||||
- NetBeans uses ant to build Autopsy. The build target copies the
|
||||
TSK datamodel JAR file into the project. If you want to use the
|
||||
|
@ -4,5 +4,5 @@
|
||||
<Set name="contextPath"><SystemProperty name="hostContext" default="/solr"/></Set>
|
||||
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/solr.war</Set>
|
||||
<Set name="defaultsDescriptor"><SystemProperty name="jetty.home"/>/etc/webdefault.xml</Set>
|
||||
<Set name="tempDirectory"><Property name="jetty.home" default="."/>/solr-webapp</Set>
|
||||
|
||||
</Configure>
|
||||
|
@ -60,6 +60,7 @@ import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.apache.solr.common.SolrInputDocument;
|
||||
import org.apache.solr.client.solrj.impl.XMLResponseParser;
|
||||
import org.apache.solr.client.solrj.response.CoreAdminResponse;
|
||||
import org.apache.solr.common.SolrDocument;
|
||||
import org.apache.solr.common.SolrException;
|
||||
import org.sleuthkit.autopsy.casemodule.Case.CaseType;
|
||||
@ -514,8 +515,17 @@ public class Server {
|
||||
*/
|
||||
synchronized void stop() {
|
||||
|
||||
try {
|
||||
// Close any open core before stopping server
|
||||
closeCore();
|
||||
}
|
||||
catch (KeywordSearchModuleException e) {
|
||||
logger.log(Level.WARNING, "Failed to close core: ", e); //NON-NLS
|
||||
}
|
||||
|
||||
try {
|
||||
logger.log(Level.INFO, "Stopping Solr server from: " + solrFolder.getAbsolutePath()); //NON-NLS
|
||||
|
||||
//try graceful shutdown
|
||||
final String [] SOLR_STOP_CMD = {
|
||||
javaPath,
|
||||
@ -653,6 +663,7 @@ public class Server {
|
||||
if (currentCore == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
currentCore.close();
|
||||
currentCore = null;
|
||||
serverAction.putValue(CORE_EVT, CORE_EVT_STATES.STOPPED);
|
||||
@ -971,11 +982,6 @@ public class Server {
|
||||
NbBundle.getMessage(this.getClass(), "Server.openCore.exception.msg"));
|
||||
}
|
||||
|
||||
CoreAdminRequest.Create createCore = new CoreAdminRequest.Create();
|
||||
createCore.setDataDir(dataDir.getAbsolutePath());
|
||||
createCore.setCoreName(coreName);
|
||||
createCore.setConfigSet("AutopsyConfig");
|
||||
|
||||
if (caseType == CaseType.SINGLE_USER_CASE) {
|
||||
currentSolrServer = this.localSolrServer;
|
||||
//createCore.setInstanceDir(instanceDir);
|
||||
@ -984,9 +990,18 @@ public class Server {
|
||||
currentSolrServer = connectToRemoteSolrServer();
|
||||
}
|
||||
|
||||
currentSolrServer.request(createCore);
|
||||
if (!isCoreLoaded(coreName)) {
|
||||
CoreAdminRequest.Create createCore = new CoreAdminRequest.Create();
|
||||
createCore.setDataDir(dataDir.getAbsolutePath());
|
||||
createCore.setCoreName(coreName);
|
||||
createCore.setConfigSet("AutopsyConfig"); //NON-NLS
|
||||
createCore.setIsLoadOnStartup(false);
|
||||
createCore.setIsTransient(true);
|
||||
|
||||
final Core newCore = new Core(coreName);
|
||||
currentSolrServer.request(createCore);
|
||||
}
|
||||
|
||||
final Core newCore = new Core(coreName, caseType);
|
||||
|
||||
return newCore;
|
||||
|
||||
@ -1006,16 +1021,32 @@ public class Server {
|
||||
return new HttpSolrServer("http://" + host + ":" + port + "/solr");
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines whether the Solr core with the given name already exists.
|
||||
* @param coreName
|
||||
* @return true if core exists, otherwise false.
|
||||
* @throws SolrServerException
|
||||
* @throws IOException
|
||||
*/
|
||||
private boolean isCoreLoaded(String coreName) throws SolrServerException, IOException {
|
||||
CoreAdminResponse response = CoreAdminRequest.getStatus(coreName, currentSolrServer);
|
||||
return response.getCoreStatus(coreName).get("instanceDir") != null; //NON-NLS
|
||||
}
|
||||
|
||||
class Core {
|
||||
|
||||
// handle to the core in Solr
|
||||
private String name;
|
||||
private final String name;
|
||||
|
||||
private final CaseType caseType;
|
||||
|
||||
// the server to access a core needs to be built from a URL with the
|
||||
// core in it, and is only good for core-specific operations
|
||||
private HttpSolrServer solrCore;
|
||||
private final HttpSolrServer solrCore;
|
||||
|
||||
private Core(String name) {
|
||||
private Core(String name, CaseType caseType) {
|
||||
this.name = name;
|
||||
this.caseType = caseType;
|
||||
|
||||
this.solrCore = new HttpSolrServer(currentSolrServer.getBaseURL() + "/" + name);
|
||||
|
||||
@ -1119,6 +1150,11 @@ public class Server {
|
||||
}
|
||||
|
||||
synchronized void close() throws KeywordSearchModuleException {
|
||||
// We only unload cores for "single-user" cases.
|
||||
if (this.caseType == CaseType.MULTI_USER_CASE) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
CoreAdminRequest.unloadCore(this.name, currentSolrServer);
|
||||
} catch (SolrServerException ex) {
|
||||
|
@ -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="Autopsy3" basedir=".">
|
||||
<project name="Autopsy3" default="build" basedir=".">
|
||||
<description>Builds the module suite Autopsy3.</description>
|
||||
|
||||
<import file="nbproject/build-impl.xml"/>
|
||||
|
Loading…
x
Reference in New Issue
Block a user