001: /*
002: * GNetWatch
003: * Copyright 2006, 2007 Alexandre Fenyo
004: * gnetwatch@fenyo.net
005: *
006: * This file is part of GNetWatch.
007: *
008: * GNetWatch is free software; you can redistribute it and/or modify
009: * it under the terms of the GNU General Public License as published by
010: * the Free Software Foundation; either version 2 of the License, or
011: * (at your option) any later version.
012: *
013: * GNetWatch is distributed in the hope that it will be useful,
014: * but WITHOUT ANY WARRANTY; without even the implied warranty of
015: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
016: * GNU General Public License for more details.
017: *
018: * You should have received a copy of the GNU General Public License
019: * along with GNetWatch; if not, write to the Free Software
020: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
021: */
022:
023: package net.fenyo.gnetwatch;
024:
025: import java.io.*;
026: import java.util.*;
027: import javax.net.ssl.*;
028: import java.util.regex.Matcher;
029: import java.util.regex.Pattern;
030: import java.security.*;
031: import java.security.cert.*;
032:
033: import net.fenyo.gnetwatch.GUI.*;
034: import net.fenyo.gnetwatch.actions.ExternalCommand;
035: import net.fenyo.gnetwatch.activities.*;
036: import net.fenyo.gnetwatch.data.EventReachable;
037:
038: import org.dom4j.*;
039: import org.dom4j.io.*;
040:
041: import org.apache.commons.logging.*;
042:
043: /**
044: * Manage command line arguments.
045: * @author Alexandre Fenyo
046: * @version $Id: CommandLine.java,v 1.18 2007/03/09 15:42:40 fenyo Exp $
047: *
048: * @todo nothing more.
049: */
050:
051: public class CommandLine {
052: private static Log log = LogFactory.getLog(CommandLine.class);
053:
054: static public class NoCheckTrustManager implements X509TrustManager {
055: private X509TrustManager myTrustManager;
056:
057: public NoCheckTrustManager()
058: throws java.security.NoSuchAlgorithmException {
059: TrustManagerFactory trustManagerFactory = TrustManagerFactory
060: .getInstance("SunX509");
061: try {
062: trustManagerFactory.init((KeyStore) null);
063: myTrustManager = (X509TrustManager) trustManagerFactory
064: .getTrustManagers()[0];
065: } catch (KeyStoreException ex) {
066: log.error("Exception", ex);
067: }
068: }
069:
070: public X509Certificate[] getAcceptedIssuers() {
071: return myTrustManager.getAcceptedIssuers();
072: }
073:
074: public void checkClientTrusted(X509Certificate chain[],
075: String authType) throws CertificateException {
076: }
077:
078: public void checkServerTrusted(X509Certificate chain[],
079: String authType) throws CertificateException {
080: }
081: }
082:
083: /**
084: * General entry point.
085: * @param args command line arguments.
086: * @return void.
087: * @throws IOException io exception.
088: * @throws FileNotFoundException file not found.
089: */
090: public static void main(String[] args) throws IOException,
091: FileNotFoundException, InterruptedException {
092: Config config = null;
093: Synchro synchro = null;
094: Background background = null;
095: GUI gui = null;
096: Main main = null;
097: SNMPManager snmp_manager = null;
098: CaptureManager capture_mgr = null;
099:
100: // Get configuration properties.
101: config = new Config();
102:
103: // Read general logging rules.
104: GenericTools.initLogEngine(config);
105: log.info(config.getString("log_engine_initialized"));
106: log.info(config.getString("begin"));
107:
108: // Initialize Object-Relational mapping
109: // synchro = new Synchro(config);
110:
111: // Do not check SSL certificates
112: SSLContext ssl_context = null;
113: try {
114: ssl_context = SSLContext.getInstance("SSL");
115: ssl_context.init(null,
116: new TrustManager[] { new NoCheckTrustManager() },
117: new SecureRandom());
118: } catch (final NoSuchAlgorithmException ex) {
119: log.error("Exception", ex);
120: } catch (final KeyManagementException ex) {
121: log.error("Exception", ex);
122: }
123: HttpsURLConnection.setDefaultSSLSocketFactory(ssl_context
124: .getSocketFactory());
125: HttpsURLConnection
126: .setDefaultHostnameVerifier(new HostnameVerifier() {
127: public final boolean verify(String hostname,
128: SSLSession session) {
129: return true;
130: }
131: });
132:
133: // Initialize background processes management
134: background = new Background(config);
135: background.createBackgroundThread();
136:
137: // Initialize packet capture on every interface
138: capture_mgr = new CaptureManager(config);
139:
140: // Initialize main processes management
141: main = new Main(config, capture_mgr);
142:
143: // Build SNMP Manager
144: snmp_manager = new SNMPManager();
145:
146: // Build GUI
147: gui = new GUI(config, background, main, snmp_manager);
148: main.setGUI(gui);
149: capture_mgr.setGUI(gui);
150: gui.waitForCreation();
151:
152: // Initial configuration
153: gui
154: .createFromXML(gui.getConfig().getProperty(
155: "initialobjects"));
156:
157: // Wait for the GUI to terminate
158: gui.join();
159: // The GUI is now closed
160: log.info(config.getString("end"));
161:
162: // Stop every application thread
163: config.setEnd();
164: gui.end();
165: background.end();
166: capture_mgr.unRegisterAllListeners();
167: }
168: }
|