mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-06 21:00:22 +00:00
Merge pull request #1166 from rcordovano/messaging_prototype
Messaging prototype
This commit is contained in:
commit
25fa976211
@ -1,6 +1,7 @@
|
|||||||
|
file.reference.activemq-all-5.11.1.jar=C:\\autopsy\\Core\\release\\modules\\ext\\activemq-all-5.11.1.jar
|
||||||
file.reference.jdom-2.0.5-contrib.jar=release/modules/ext/jdom-2.0.5-contrib.jar
|
file.reference.jdom-2.0.5-contrib.jar=release/modules/ext/jdom-2.0.5-contrib.jar
|
||||||
file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar
|
file.reference.jdom-2.0.5.jar=release/modules/ext/jdom-2.0.5.jar
|
||||||
file.reference.jython.jar=C:\\autopsy\\Core\\release\\modules\\ext\\jython.jar
|
file.reference.jython.jar=release/modules/ext/jython.jar
|
||||||
file.reference.jython.jar-1=release/modules/ext/jython.jar
|
file.reference.jython.jar-1=release/modules/ext/jython.jar
|
||||||
file.reference.metadata-extractor-2.6.2.jar=release/modules/ext/metadata-extractor-2.6.2.jar
|
file.reference.metadata-extractor-2.6.2.jar=release/modules/ext/metadata-extractor-2.6.2.jar
|
||||||
file.reference.Rejistry-1.0-SNAPSHOT.jar=release/modules/ext/Rejistry-1.0-SNAPSHOT.jar
|
file.reference.Rejistry-1.0-SNAPSHOT.jar=release/modules/ext/Rejistry-1.0-SNAPSHOT.jar
|
||||||
|
@ -206,14 +206,6 @@
|
|||||||
<runtime-relative-path>ext/jdom-2.0.5.jar</runtime-relative-path>
|
<runtime-relative-path>ext/jdom-2.0.5.jar</runtime-relative-path>
|
||||||
<binary-origin>release/modules/ext/jdom-2.0.5.jar</binary-origin>
|
<binary-origin>release/modules/ext/jdom-2.0.5.jar</binary-origin>
|
||||||
</class-path-extension>
|
</class-path-extension>
|
||||||
<class-path-extension>
|
|
||||||
<runtime-relative-path>ext/Rejistry-1.0-SNAPSHOT.jar</runtime-relative-path>
|
|
||||||
<binary-origin>release/modules/ext/Rejistry-1.0-SNAPSHOT.jar</binary-origin>
|
|
||||||
</class-path-extension>
|
|
||||||
<class-path-extension>
|
|
||||||
<runtime-relative-path>ext/sevenzipjbinding.jar</runtime-relative-path>
|
|
||||||
<binary-origin>release/modules/ext/sevenzipjbinding.jar</binary-origin>
|
|
||||||
</class-path-extension>
|
|
||||||
<class-path-extension>
|
<class-path-extension>
|
||||||
<runtime-relative-path>ext/StixLib.jar</runtime-relative-path>
|
<runtime-relative-path>ext/StixLib.jar</runtime-relative-path>
|
||||||
<binary-origin>release/modules/ext/StixLib.jar</binary-origin>
|
<binary-origin>release/modules/ext/StixLib.jar</binary-origin>
|
||||||
@ -222,6 +214,18 @@
|
|||||||
<runtime-relative-path>ext/sqlite-jdbc-3.7.15-M1.jar</runtime-relative-path>
|
<runtime-relative-path>ext/sqlite-jdbc-3.7.15-M1.jar</runtime-relative-path>
|
||||||
<binary-origin>release/modules/ext/sqlite-jdbc-3.7.15-M1.jar</binary-origin>
|
<binary-origin>release/modules/ext/sqlite-jdbc-3.7.15-M1.jar</binary-origin>
|
||||||
</class-path-extension>
|
</class-path-extension>
|
||||||
|
<class-path-extension>
|
||||||
|
<runtime-relative-path>ext/activemq-all-5.11.1.jar</runtime-relative-path>
|
||||||
|
<binary-origin>release/modules/ext/activemq-all-5.11.1.jar</binary-origin>
|
||||||
|
</class-path-extension>
|
||||||
|
<class-path-extension>
|
||||||
|
<runtime-relative-path>ext/Rejistry-1.0-SNAPSHOT.jar</runtime-relative-path>
|
||||||
|
<binary-origin>release/modules/ext/Rejistry-1.0-SNAPSHOT.jar</binary-origin>
|
||||||
|
</class-path-extension>
|
||||||
|
<class-path-extension>
|
||||||
|
<runtime-relative-path>ext/sevenzipjbinding.jar</runtime-relative-path>
|
||||||
|
<binary-origin>release/modules/ext/sevenzipjbinding.jar</binary-origin>
|
||||||
|
</class-path-extension>
|
||||||
<class-path-extension>
|
<class-path-extension>
|
||||||
<runtime-relative-path>ext/sevenzipjbinding-AllPlatforms.jar</runtime-relative-path>
|
<runtime-relative-path>ext/sevenzipjbinding-AllPlatforms.jar</runtime-relative-path>
|
||||||
<binary-origin>release/modules/ext/sevenzipjbinding-AllPlatforms.jar</binary-origin>
|
<binary-origin>release/modules/ext/sevenzipjbinding-AllPlatforms.jar</binary-origin>
|
||||||
|
BIN
Core/release/modules/ext/activemq-all-5.11.1.jar
Normal file
BIN
Core/release/modules/ext/activemq-all-5.11.1.jar
Normal file
Binary file not shown.
@ -146,6 +146,8 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
// we cache if the case has data in it yet since a few places ask for it and we dont' need to keep going to DB
|
// we cache if the case has data in it yet since a few places ask for it and we dont' need to keep going to DB
|
||||||
private boolean hasData = false;
|
private boolean hasData = false;
|
||||||
|
|
||||||
|
private Messenger messenger;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for the Case class
|
* Constructor for the Case class
|
||||||
*/
|
*/
|
||||||
@ -158,6 +160,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
this.db = db;
|
this.db = db;
|
||||||
this.services = new Services(db);
|
this.services = new Services(db);
|
||||||
db.addErrorObserver(this);
|
db.addErrorObserver(this);
|
||||||
|
messenger = new Messenger(this.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -299,6 +302,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Case newCase = new Case(caseName, caseNumber, examiner, configFilePath, xmlcm, db);
|
Case newCase = new Case(caseName, caseNumber, examiner, configFilePath, xmlcm, db);
|
||||||
|
newCase.messenger.start();
|
||||||
|
|
||||||
changeCase(newCase);
|
changeCase(newCase);
|
||||||
}
|
}
|
||||||
@ -341,6 +345,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
checkImagesExist(db);
|
checkImagesExist(db);
|
||||||
|
|
||||||
Case openedCase = new Case(caseName, caseNumber, examiner, configFilePath, xmlcm, db);
|
Case openedCase = new Case(caseName, caseNumber, examiner, configFilePath, xmlcm, db);
|
||||||
|
openedCase.messenger.start();
|
||||||
|
|
||||||
changeCase(openedCase);
|
changeCase(openedCase);
|
||||||
|
|
||||||
@ -492,6 +497,7 @@ public class Case implements SleuthkitCase.ErrorObserver {
|
|||||||
changeCase(null);
|
changeCase(null);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
messenger.stop();
|
||||||
services.close();
|
services.close();
|
||||||
this.xmlcm.close(); // close the xmlcm
|
this.xmlcm.close(); // close the xmlcm
|
||||||
this.db.close();
|
this.db.close();
|
||||||
|
115
Core/src/org/sleuthkit/autopsy/casemodule/Messenger.java
Normal file
115
Core/src/org/sleuthkit/autopsy/casemodule/Messenger.java
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
/*
|
||||||
|
* Autopsy Forensic Browser
|
||||||
|
*
|
||||||
|
* Copyright 2013-2015 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.casemodule;
|
||||||
|
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
|
import java.beans.PropertyChangeListener;
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.logging.Level;
|
||||||
|
import javax.jms.Connection;
|
||||||
|
import javax.jms.Message;
|
||||||
|
import javax.jms.MessageConsumer;
|
||||||
|
import javax.jms.MessageListener;
|
||||||
|
import javax.jms.MessageProducer;
|
||||||
|
import javax.jms.ObjectMessage;
|
||||||
|
import javax.jms.Session;
|
||||||
|
import javax.jms.TextMessage;
|
||||||
|
import javax.jms.Topic;
|
||||||
|
import org.apache.activemq.ActiveMQConnectionFactory;
|
||||||
|
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||||
|
|
||||||
|
class Messenger implements PropertyChangeListener, MessageListener {
|
||||||
|
|
||||||
|
private static final String BROKER_URL = "tcp://10.1.8.234:61616";
|
||||||
|
private static final Logger logger = Logger.getLogger(Messenger.class.getName());
|
||||||
|
private final String caseName;
|
||||||
|
private Connection connection;
|
||||||
|
private Session session;
|
||||||
|
private MessageProducer producer;
|
||||||
|
|
||||||
|
Messenger(String caseName) {
|
||||||
|
this.caseName = caseName;
|
||||||
|
}
|
||||||
|
|
||||||
|
void start() {
|
||||||
|
try {
|
||||||
|
ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(BROKER_URL);
|
||||||
|
connection = connectionFactory.createConnection();
|
||||||
|
connection.start();
|
||||||
|
session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
|
||||||
|
Topic topic = session.createTopic(caseName);
|
||||||
|
producer = session.createProducer(topic);
|
||||||
|
|
||||||
|
MessageConsumer consumer = session.createConsumer(topic, "event = '" + Case.Events.DATA_SOURCE_ADDED.toString() + "'", true);
|
||||||
|
consumer.setMessageListener(this);
|
||||||
|
|
||||||
|
Case.addPropertyChangeListener(this);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
logger.log(Level.SEVERE, "Startup error", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void stop() {
|
||||||
|
Case.removePropertyChangeListener(this);
|
||||||
|
try {
|
||||||
|
session.close();
|
||||||
|
connection.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
logger.log(Level.SEVERE, "Shutdown error", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void propertyChange(PropertyChangeEvent event) {
|
||||||
|
switch (Case.Events.valueOf(event.getPropertyName())) {
|
||||||
|
case DATA_SOURCE_ADDED:
|
||||||
|
if (null != event.getNewValue()) {
|
||||||
|
send(event);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void send(PropertyChangeEvent event) {
|
||||||
|
try {
|
||||||
|
ObjectMessage message = session.createObjectMessage();
|
||||||
|
message.setStringProperty("event", Case.Events.DATA_SOURCE_ADDED.toString());
|
||||||
|
message.setObject(Case.Events.DATA_SOURCE_ADDED.toString());
|
||||||
|
producer.send(message);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
logger.log(Level.SEVERE, "Publishing error", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onMessage(Message message) {
|
||||||
|
try {
|
||||||
|
if (message instanceof ObjectMessage) {
|
||||||
|
ObjectMessage objMessage = (ObjectMessage) message;
|
||||||
|
String event = (String) objMessage.getObject();
|
||||||
|
logger.log(Level.INFO, "Received {0}", event);
|
||||||
|
}
|
||||||
|
Case.getCurrentCase().notifyNewDataSource(null);
|
||||||
|
} catch (Exception ex) {
|
||||||
|
logger.log(Level.SEVERE, "Publishing error", ex);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user