Autopsy  4.18.0
Graphical digital forensics platform for The Sleuth Kit and other tools.
Classes | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
org.sleuthkit.autopsy.keywordsearch.Server Class Reference

Classes

class  Collection
 
enum  CORE_EVT_STATES
 
class  IndexingServerProperties
 
class  InputStreamPrinterThread
 
enum  Schema
 
class  ServerAction
 
enum  SOLR_VERSION
 
class  SolrServerNoPortException
 

Public Member Functions

void addServerActionListener (PropertyChangeListener l)
 
void finalize () throws java.lang.Throwable
 
String getSolrContent (final Content content) throws NoOpenCoreException
 
String getSolrContent (final Content content, int chunkID) throws NoOpenCoreException
 
String getSolrContent (final long objectID) throws NoOpenCoreException
 
String getSolrContent (final long objectID, final int chunkID) throws NoOpenCoreException
 
QueryResponse query (SolrQuery sq) throws KeywordSearchModuleException, NoOpenCoreException, IOException
 
QueryResponse query (SolrQuery sq, SolrRequest.METHOD method) throws KeywordSearchModuleException, NoOpenCoreException
 
boolean queryIsIndexed (long contentID) throws KeywordSearchModuleException, NoOpenCoreException
 
int queryNumFileChunks (long fileID) throws KeywordSearchModuleException, NoOpenCoreException
 
int queryNumIndexedChunks () throws KeywordSearchModuleException, NoOpenCoreException
 
int queryNumIndexedDocuments () throws KeywordSearchModuleException, NoOpenCoreException
 
int queryNumIndexedFiles () throws KeywordSearchModuleException, NoOpenCoreException
 
TermsResponse queryTerms (SolrQuery sq) throws KeywordSearchModuleException, NoOpenCoreException
 

Static Public Member Functions

static String getChunkIdString (long parentID, int childID)
 
static IndexingServerProperties getMultiUserServerProperties (String caseDirectory)
 
static void selectSolrServerForCase (Path rootOutputDirectory, Path caseDirectoryPath) throws KeywordSearchModuleException
 

Static Public Attributes

static final String CHUNK_ID_SEPARATOR = "_"
 
static final String CORE_EVT = "CORE_EVT"
 
static final Charset DEFAULT_INDEXED_TEXT_CHARSET = Charset.forName("UTF-8")
 default Charset to index text as More...
 
static final String HL_ANALYZE_CHARS_UNLIMITED = "500000"
 
static final char ID_CHUNK_SEP = '_'
 
static final long MAX_CONTENT_SIZE = 1L * 31 * 1024 * 1024
 

Private Member Functions

void backupCollection (String collectionName, String backupName, String pathToBackupLocation) throws SolrServerException, IOException, KeywordSearchModuleException
 
boolean collectionExists (String collectionName) throws SolrServerException, IOException
 
HttpSolrClient configureMultiUserConnection (Case theCase, Index index, String name) throws KeywordSearchModuleException
 
void configureSolrConnection (Case theCase, Index index) throws KeywordSearchModuleException, SolrServerNoPortException
 
void connectToEmbeddedSolrServer () throws SolrServerException, IOException
 
void connectToSolrServer (HttpSolrClient solrServer) throws SolrServerException, IOException
 
boolean coreIndexFolderExists (String coreName) throws SolrServerException, IOException
 
boolean coreIsLoaded (String coreName) throws SolrServerException, IOException
 
void createMultiUserCollection (String collectionName, int numShardsToUse) throws KeywordSearchModuleException, SolrServerException, IOException
 
CloudSolrClient getCloudSolrClient (String host, String port, String defaultCollectionName) throws KeywordSearchModuleException
 
ConcurrentUpdateSolrClient getConcurrentClient (String solrUrl)
 
int getNumShardsToUse () throws KeywordSearchModuleException
 
HttpSolrClient getSolrClient (String solrUrl)
 
List< String > getSolrServerList (String host, String port) throws KeywordSearchModuleException
 
List< String > getSolrServerList (HttpSolrClient solrServer) throws KeywordSearchModuleException
 
void initSettings ()
 
Collection openCore (Case theCase, Index index) throws KeywordSearchModuleException
 
void restoreCollection (String backupName, String restoreCollectionName, String pathToBackupLocation) throws SolrServerException, IOException, KeywordSearchModuleException
 
Process runLocalSolr4ControlCommand (List< String > solrArguments) throws IOException
 
Process runLocalSolr8ControlCommand (List< String > solrArguments) throws IOException
 
void stopLocalSolr ()
 

Private Attributes

Collection currentCollection
 
final ReentrantReadWriteLock currentCoreLock
 
Process curSolrProcess = null
 
InputStreamPrinterThread errorRedirectThread
 
String javaPath = "java"
 
SOLR_VERSION localServerVersion = SOLR_VERSION.SOLR8
 
File localSolrFolder
 
HttpSolrClient localSolrServer = null
 
int localSolrServerPort = 0
 
int localSolrStopPort = 0
 
HttpSolrClient remoteSolrServer
 
final ServerAction serverAction
 

Static Private Attributes

static final String CORE_PROPERTIES = "core.properties"
 
static final boolean DEBUG = false
 
static final int EMBEDDED_SERVER_RETRY_WAIT_SEC = 5
 
static final String KEY = "jjk#09s"
 
static final Logger logger = Logger.getLogger(Server.class.getName())
 
static final int NUM_COLLECTION_CREATION_RETRIES = 5
 
static final int NUM_EMBEDDED_SERVER_RETRIES = 12
 
static final String SOLR = "solr"
 

Detailed Description

Handles management of a either a local or centralized Solr server and its collections or cores.

Definition at line 108 of file Server.java.

Member Function Documentation

void org.sleuthkit.autopsy.keywordsearch.Server.addServerActionListener ( PropertyChangeListener  l)

Definition at line 411 of file Server.java.

void org.sleuthkit.autopsy.keywordsearch.Server.backupCollection ( String  collectionName,
String  backupName,
String  pathToBackupLocation 
) throws SolrServerException, IOException, KeywordSearchModuleException
private

Definition at line 1287 of file Server.java.

boolean org.sleuthkit.autopsy.keywordsearch.Server.collectionExists ( String  collectionName) throws SolrServerException, IOException
private
HttpSolrClient org.sleuthkit.autopsy.keywordsearch.Server.configureMultiUserConnection ( Case  theCase,
Index  index,
String  name 
) throws KeywordSearchModuleException
private

Returns a fully configured Solr client to be used for the current case. Checks the version of Solr index for the current case (Solr 4 or 8), gets connection info for the appropriate Solr server, and configures the Solr client.

Parameters
theCaseCurrent case
indexIndex object for the current case
nameName of the Solr collection
Returns
Fully configured Solr client.
Exceptions
KeywordSearchModuleException

Definition at line 657 of file Server.java.

References org.sleuthkit.autopsy.keywordsearch.Server.getMultiUserServerProperties(), org.sleuthkit.autopsy.keywordsearch.Server.getSolrClient(), org.sleuthkit.autopsy.keywordsearch.Server.IndexingServerProperties.host, and org.sleuthkit.autopsy.keywordsearch.Server.IndexingServerProperties.port.

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.configureSolrConnection().

void org.sleuthkit.autopsy.keywordsearch.Server.configureSolrConnection ( Case  theCase,
Index  index 
) throws KeywordSearchModuleException, SolrServerNoPortException
private
void org.sleuthkit.autopsy.keywordsearch.Server.connectToEmbeddedSolrServer ( ) throws SolrServerException, IOException
private

Attempts to connect to the local Solr server, which is NOT running in SolrCloud mode.

Exceptions
SolrServerException
IOException

Definition at line 1933 of file Server.java.

References org.sleuthkit.autopsy.healthmonitor.HealthMonitor.getTimingMetric(), and org.sleuthkit.autopsy.healthmonitor.HealthMonitor.submitTimingMetric().

void org.sleuthkit.autopsy.keywordsearch.Server.connectToSolrServer ( HttpSolrClient  solrServer) throws SolrServerException, IOException
private

Attempts to connect to the given Solr server, which is running in SoulrCloud mode. This API does not work for the local Solr which is NOT running in SolrCloud mode.

Parameters
solrServer
Exceptions
SolrServerException
IOException

Definition at line 1965 of file Server.java.

References org.sleuthkit.autopsy.healthmonitor.HealthMonitor.getTimingMetric(), and org.sleuthkit.autopsy.healthmonitor.HealthMonitor.submitTimingMetric().

boolean org.sleuthkit.autopsy.keywordsearch.Server.coreIndexFolderExists ( String  coreName) throws SolrServerException, IOException
private

Determines whether or not the index files folder for a Solr core exists. This is used only with embedded Solr server running in non-cloud mode.

Parameters
coreNamethe name of the core.
Returns
true or false
Exceptions
SolrServerException
IOException

Definition at line 1345 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.openCore().

boolean org.sleuthkit.autopsy.keywordsearch.Server.coreIsLoaded ( String  coreName) throws SolrServerException, IOException
private

Determines whether or not a particular Solr core exists and is loaded. This is used only with embedded Solr server running in non-cloud mode.

Parameters
coreNameThe name of the core.
Returns
True if the core exists and is loaded, false if the core does not exist or is not loaded
Exceptions
SolrServerExceptionIf there is a problem communicating with the Solr server.
IOExceptionIf there is a problem communicating with the Solr server.

Definition at line 1328 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.openCore().

void org.sleuthkit.autopsy.keywordsearch.Server.createMultiUserCollection ( String  collectionName,
int  numShardsToUse 
) throws KeywordSearchModuleException, SolrServerException, IOException
private
void org.sleuthkit.autopsy.keywordsearch.Server.finalize ( ) throws java.lang.Throwable

Definition at line 406 of file Server.java.

static String org.sleuthkit.autopsy.keywordsearch.Server.getChunkIdString ( long  parentID,
int  childID 
)
static

Given file parent id and child chunk ID, return the ID string of the chunk as stored in Solr, e.g. FILEID_CHUNKID

Parameters
parentIDthe parent file id (id of the source content)
childIDthe child chunk id
Returns
formatted string id

Definition at line 1923 of file Server.java.

References org.sleuthkit.autopsy.keywordsearch.Server.CHUNK_ID_SEPARATOR.

CloudSolrClient org.sleuthkit.autopsy.keywordsearch.Server.getCloudSolrClient ( String  host,
String  port,
String  defaultCollectionName 
) throws KeywordSearchModuleException
private
ConcurrentUpdateSolrClient org.sleuthkit.autopsy.keywordsearch.Server.getConcurrentClient ( String  solrUrl)
private

Definition at line 366 of file Server.java.

static IndexingServerProperties org.sleuthkit.autopsy.keywordsearch.Server.getMultiUserServerProperties ( String  caseDirectory)
static

Get the host and port for a multi-user case. If the file solrserver.txt exists, then use the values from that file. Otherwise use the settings from the properties file, depending on which version of Solr was used to create the current index. Defaults to using latest Solr version info if an error occurred.

Parameters
caseDirectoryCurrent case directory
Returns
IndexingServerProperties containing the solr host/port for this case

Definition at line 1367 of file Server.java.

References org.sleuthkit.autopsy.core.UserPreferences.getIndexingServerHost(), org.sleuthkit.autopsy.core.UserPreferences.getIndexingServerPort(), org.sleuthkit.autopsy.core.UserPreferences.getSolr4ServerHost(), and org.sleuthkit.autopsy.core.UserPreferences.getSolr4ServerPort().

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.configureMultiUserConnection(), and org.sleuthkit.autopsy.keywordsearch.KeywordSearchIngestModule.startUp().

int org.sleuthkit.autopsy.keywordsearch.Server.getNumShardsToUse ( ) throws KeywordSearchModuleException
private
HttpSolrClient org.sleuthkit.autopsy.keywordsearch.Server.getSolrClient ( String  solrUrl)
private
String org.sleuthkit.autopsy.keywordsearch.Server.getSolrContent ( final Content  content) throws NoOpenCoreException

Get the text contents of the given file as stored in SOLR.

Parameters
contentto get the text for
Returns
content text string or null on error
Exceptions
NoOpenCoreException

Definition at line 1835 of file Server.java.

String org.sleuthkit.autopsy.keywordsearch.Server.getSolrContent ( final Content  content,
int  chunkID 
) throws NoOpenCoreException

Get the text contents of a single chunk for the given file as stored in SOLR.

Parameters
contentto get the text for
chunkIDchunk number to query (starting at 1), or 0 if there is no chunks for that content
Returns
content text string or null if error quering
Exceptions
NoOpenCoreException

Definition at line 1859 of file Server.java.

String org.sleuthkit.autopsy.keywordsearch.Server.getSolrContent ( final long  objectID) throws NoOpenCoreException

Get the text contents for the given object id.

Parameters
objectID
Returns
Exceptions
NoOpenCoreException

Definition at line 1880 of file Server.java.

String org.sleuthkit.autopsy.keywordsearch.Server.getSolrContent ( final long  objectID,
final int  chunkID 
) throws NoOpenCoreException

Get the text contents for the given object id and chunk id.

Parameters
objectID
chunkID
Returns
Exceptions
NoOpenCoreException

Definition at line 1902 of file Server.java.

List<String> org.sleuthkit.autopsy.keywordsearch.Server.getSolrServerList ( String  host,
String  port 
) throws KeywordSearchModuleException
private
List<String> org.sleuthkit.autopsy.keywordsearch.Server.getSolrServerList ( HttpSolrClient  solrServer) throws KeywordSearchModuleException
private

Definition at line 1983 of file Server.java.

void org.sleuthkit.autopsy.keywordsearch.Server.initSettings ( )
private
Collection org.sleuthkit.autopsy.keywordsearch.Server.openCore ( Case  theCase,
Index  index 
) throws KeywordSearchModuleException
private
QueryResponse org.sleuthkit.autopsy.keywordsearch.Server.query ( SolrQuery  sq) throws KeywordSearchModuleException, NoOpenCoreException, IOException

Execute solr query

Parameters
sqquery
Returns
query response
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1703 of file Server.java.

QueryResponse org.sleuthkit.autopsy.keywordsearch.Server.query ( SolrQuery  sq,
SolrRequest.METHOD  method 
) throws KeywordSearchModuleException, NoOpenCoreException

Execute solr query

Parameters
sqthe query
methodhttp method to use
Returns
query response
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1732 of file Server.java.

boolean org.sleuthkit.autopsy.keywordsearch.Server.queryIsIndexed ( long  contentID) throws KeywordSearchModuleException, NoOpenCoreException

Return true if the file is indexed (either as a whole as a chunk)

Parameters
contentID
Returns
true if it is indexed
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1647 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.ExtractedTextViewer.solrHasContent().

int org.sleuthkit.autopsy.keywordsearch.Server.queryNumFileChunks ( long  fileID) throws KeywordSearchModuleException, NoOpenCoreException

Execute query that gets number of indexed file chunks for a file

Parameters
fileIDfile id of the original file broken into chunks and indexed
Returns
int representing number of indexed file chunks, 0 if there is no chunks
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1676 of file Server.java.

int org.sleuthkit.autopsy.keywordsearch.Server.queryNumIndexedChunks ( ) throws KeywordSearchModuleException, NoOpenCoreException

Execute query that gets only number of all Solr file chunks (not logical files) indexed without actually returning the content.

Returns
int representing number of indexed chunks
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1594 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.KeywordSearchIngestModule.shutDown().

int org.sleuthkit.autopsy.keywordsearch.Server.queryNumIndexedDocuments ( ) throws KeywordSearchModuleException, NoOpenCoreException

Execute query that gets only number of all Solr documents indexed (files and chunks) without actually returning the documents

Returns
int representing number of indexed files (files and chunks)
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1620 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.KeywordSearchIngestModule.startUp().

int org.sleuthkit.autopsy.keywordsearch.Server.queryNumIndexedFiles ( ) throws KeywordSearchModuleException, NoOpenCoreException

Execute query that gets only number of all Solr files indexed without actually returning the files. The result does not include chunks, only number of actual files.

Returns
int representing number of indexed files
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1568 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.ExtractAllTermsReport.generateReport(), org.sleuthkit.autopsy.keywordsearch.DropdownToolbar.SearchSettingsChangeListener.propertyChange(), and org.sleuthkit.autopsy.keywordsearch.KeywordSearchIngestModule.shutDown().

TermsResponse org.sleuthkit.autopsy.keywordsearch.Server.queryTerms ( SolrQuery  sq) throws KeywordSearchModuleException, NoOpenCoreException

Execute Solr terms query

Parameters
sqthe query
Returns
terms response
Exceptions
KeywordSearchModuleException
NoOpenCoreException

Definition at line 1760 of file Server.java.

void org.sleuthkit.autopsy.keywordsearch.Server.restoreCollection ( String  backupName,
String  restoreCollectionName,
String  pathToBackupLocation 
) throws SolrServerException, IOException, KeywordSearchModuleException
private

Definition at line 1300 of file Server.java.

Process org.sleuthkit.autopsy.keywordsearch.Server.runLocalSolr4ControlCommand ( List< String >  solrArguments) throws IOException
private

Run a Solr command with the given arguments.

Parameters
solrArgumentsCommand line arguments to pass to the Solr command.
Returns
Exceptions
IOException

Definition at line 546 of file Server.java.

References org.sleuthkit.autopsy.core.UserPreferences.getMaxSolrVMSize().

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.stopLocalSolr().

Process org.sleuthkit.autopsy.keywordsearch.Server.runLocalSolr8ControlCommand ( List< String >  solrArguments) throws IOException
private

Run a Solr command with the given arguments.

Parameters
solrArgumentsCommand line arguments to pass to the Solr command.
Returns
Exceptions
IOException

Definition at line 496 of file Server.java.

References org.sleuthkit.autopsy.core.UserPreferences.getMaxSolrVMSize(), org.sleuthkit.autopsy.coreutils.PlatformUtil.getUserDirectory(), and org.sleuthkit.autopsy.coreutils.PlatformUtil.isWindowsOS().

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.stopLocalSolr().

static void org.sleuthkit.autopsy.keywordsearch.Server.selectSolrServerForCase ( Path  rootOutputDirectory,
Path  caseDirectoryPath 
) throws KeywordSearchModuleException
static

Pick a solr server to use for this case and record it in the case directory. Looks for a file named "solrServerList.txt" in the root output directory - if this does not exist then no server is recorded.

Format of solrServerList.txt: (host),(port) Ex: 10.1.2.34,8983

Parameters
rootOutputDirectory
caseDirectoryPath
Exceptions
KeywordSearchModuleException

Definition at line 1443 of file Server.java.

void org.sleuthkit.autopsy.keywordsearch.Server.stopLocalSolr ( )
private

Member Data Documentation

final String org.sleuthkit.autopsy.keywordsearch.Server.CHUNK_ID_SEPARATOR = "_"
static
final String org.sleuthkit.autopsy.keywordsearch.Server.CORE_EVT = "CORE_EVT"
static
final String org.sleuthkit.autopsy.keywordsearch.Server.CORE_PROPERTIES = "core.properties"
staticprivate

Definition at line 249 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.openCore().

Collection org.sleuthkit.autopsy.keywordsearch.Server.currentCollection
private

Definition at line 272 of file Server.java.

final ReentrantReadWriteLock org.sleuthkit.autopsy.keywordsearch.Server.currentCoreLock
private

Definition at line 273 of file Server.java.

Process org.sleuthkit.autopsy.keywordsearch.Server.curSolrProcess = null
private

Definition at line 237 of file Server.java.

final boolean org.sleuthkit.autopsy.keywordsearch.Server.DEBUG = false
staticprivate

Definition at line 250 of file Server.java.

final Charset org.sleuthkit.autopsy.keywordsearch.Server.DEFAULT_INDEXED_TEXT_CHARSET = Charset.forName("UTF-8")
static

default Charset to index text as

Definition at line 236 of file Server.java.

final int org.sleuthkit.autopsy.keywordsearch.Server.EMBEDDED_SERVER_RETRY_WAIT_SEC = 5
staticprivate

Definition at line 253 of file Server.java.

InputStreamPrinterThread org.sleuthkit.autopsy.keywordsearch.Server.errorRedirectThread
private

Definition at line 276 of file Server.java.

final String org.sleuthkit.autopsy.keywordsearch.Server.HL_ANALYZE_CHARS_UNLIMITED = "500000"
static

Definition at line 227 of file Server.java.

final char org.sleuthkit.autopsy.keywordsearch.Server.ID_CHUNK_SEP = '_'
static

Definition at line 233 of file Server.java.

String org.sleuthkit.autopsy.keywordsearch.Server.javaPath = "java"
private

Definition at line 235 of file Server.java.

final String org.sleuthkit.autopsy.keywordsearch.Server.KEY = "jjk#09s"
staticprivate

Definition at line 241 of file Server.java.

SOLR_VERSION org.sleuthkit.autopsy.keywordsearch.Server.localServerVersion = SOLR_VERSION.SOLR8
private

Definition at line 267 of file Server.java.

File org.sleuthkit.autopsy.keywordsearch.Server.localSolrFolder
private

Definition at line 247 of file Server.java.

HttpSolrClient org.sleuthkit.autopsy.keywordsearch.Server.localSolrServer = null
private

Definition at line 266 of file Server.java.

int org.sleuthkit.autopsy.keywordsearch.Server.localSolrServerPort = 0
private

Definition at line 245 of file Server.java.

int org.sleuthkit.autopsy.keywordsearch.Server.localSolrStopPort = 0
private

Definition at line 246 of file Server.java.

final Logger org.sleuthkit.autopsy.keywordsearch.Server.logger = Logger.getLogger(Server.class.getName())
staticprivate

Definition at line 230 of file Server.java.

final long org.sleuthkit.autopsy.keywordsearch.Server.MAX_CONTENT_SIZE = 1L * 31 * 1024 * 1024
static

Definition at line 229 of file Server.java.

final int org.sleuthkit.autopsy.keywordsearch.Server.NUM_COLLECTION_CREATION_RETRIES = 5
staticprivate

Definition at line 251 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.openCore().

final int org.sleuthkit.autopsy.keywordsearch.Server.NUM_EMBEDDED_SERVER_RETRIES = 12
staticprivate

Definition at line 252 of file Server.java.

HttpSolrClient org.sleuthkit.autopsy.keywordsearch.Server.remoteSolrServer
private

Definition at line 270 of file Server.java.

final ServerAction org.sleuthkit.autopsy.keywordsearch.Server.serverAction
private

Definition at line 275 of file Server.java.

final String org.sleuthkit.autopsy.keywordsearch.Server.SOLR = "solr"
staticprivate

Definition at line 248 of file Server.java.

Referenced by org.sleuthkit.autopsy.keywordsearch.Server.openCore().


The documentation for this class was generated from the following file:

Copyright © 2012-2021 Basis Technology. Generated on: Thu Jul 8 2021
This work is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.