public static void main(final String[] args)
throws IOException, FileNotFoundException, InterruptedException, AlgorithmException {
Config config = null;
Synchro synchro = null;
Background background = null;
GUI gui = null;
Main main = null;
SNMPManager snmp_manager = null;
CaptureManager capture_mgr = null;
if (args.length > 0) {
if (args.length == 4 && args[0].equals("import") && args[1].equals("source")) {
importGenericSrc(args);
return;
}
log.error("invalid arguments");
System.exit(1);
}
// Get configuration properties
config = new Config();
// Set debug level
// debug level 1: simulate hundreds of ping per second to check the DB and hibernate abilities to handle lots of events
config.setDebugLevel(0);
// Read general logging rules
GenericTools.initLogEngine(config);
log.info(config.getString("log_engine_initialized"));
log.info(config.getString("begin"));
/*
final MessageBox dialog = new MessageBox(new Shell(new org.eclipse.swt.widgets.Display()),
SWT.ICON_QUESTION | SWT.YES | SWT.NO);
// traduire
dialog.setText("GNetWatch startup");
dialog.setMessage("Database Selection:\ndo you want to erase the current database content ?");
dialog.open();
*/
// Initialize Object-Relational mapping
synchro = new Synchro(config);
// Do not check SSL certificates
SSLContext ssl_context = null;
try {
ssl_context = SSLContext.getInstance("SSL");
ssl_context.init(null, new TrustManager [] { new NoCheckTrustManager() }, new SecureRandom());
} catch (final NoSuchAlgorithmException ex) {
log.error("Exception", ex);
} catch (final KeyManagementException ex) {
log.error("Exception", ex);
}
HttpsURLConnection.setDefaultSSLSocketFactory(ssl_context.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier () {
public final boolean verify(String hostname, SSLSession session) {
return true;
}
});
// Initialize background processes management
background = new Background(config);
background.createBackgroundThread();
// Initialize packet capture on every interface
capture_mgr = new CaptureManager(config);
// Initialize main processes management
main = new Main(config, capture_mgr);
// Build SNMP Manager
snmp_manager = new SNMPManager();
// Build GUI
gui = new GUI(config, background, main, snmp_manager, synchro);
main.setGUI(gui);
capture_mgr.setGUI(gui);
gui.waitForCreation();
// Initial configuration
gui.createFromXML(gui.getConfig().getProperty("initialobjects"));
// Move the GUI to the top of the drawing order
gui.showGUI();
// merge events at startup
background.informQueue("merge-1", gui);
// Wait for the GUI to terminate
gui.join();
// The GUI is now closed
log.info(config.getString("end"));
// Stop every application thread
config.setEnd();
gui.end();
background.end();
capture_mgr.unRegisterAllListeners();
// stop synchronizing
synchro.end();