⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.java

📁 这是linux下ssl vpn的实现程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
            registerKeyStores();

            //
            threadGroup = new ThreadGroup("MainThreadGroup");

            if (install) {
                setupMode();

            } else {
                normalMode();
                redirectFromHttpsMode();
            }
        } catch (Throwable t) {
            startupException = t;
            log.error("Failed to start SSL Explorer. " + t.getMessage(), t);
            return new Integer(1);
        }

        return null;
    }

    /*
     * (non-Javadoc)
     * 
     * @see org.tanukisoftware.wrapper.WrapperListener#controlEvent(int)
     */
    public void controlEvent(int evt) {
        if (evt == WrapperManager.WRAPPER_CTRL_C_EVENT) {
            if (log.isInfoEnabled())
                log.info("Got CTRL+C event");
            WrapperManager.stop(0);
        } else if (evt == WrapperManager.WRAPPER_CTRL_CLOSE_EVENT) {
            if (log.isInfoEnabled())
                log.info("Got windows close event, ignoring.");
        } else if (evt == WrapperManager.WRAPPER_CTRL_LOGOFF_EVENT) {
            if (log.isInfoEnabled())
                log.info("Got windows logoff event, ignoring.");
        } else if (evt == WrapperManager.WRAPPER_CTRL_SHUTDOWN_EVENT) {
            if (log.isInfoEnabled())
                log.info("Got shutdown event");
            WrapperManager.stop(0);
        } else {
            if (log.isInfoEnabled())
                log.info("Got unknown control event " + evt + ", ignoring.");
        }

    }

    /*
     * (non-Javadoc)
     * 
     * @see org.tanukisoftware.wrapper.WrapperListener#stop(int)
     */
    public int stop(int exitCode) {
        if (log != null) {
            if (log.isInfoEnabled())
                log.info("Shutting down SSL Explorer.");
        }
        if (useWrapper) {
            WrapperManager.signalStopping(20000);
        }

        // TODO This really screws up wrapper on windows - no idea why
        if (server != null && server.isStarted()) {
            try {
                server.stop(false);
            } catch (InterruptedException e) {
                if (log != null) {
                    if (log.isInfoEnabled())
                        log.info("Failed to stop server.", e);
                }
            }
        }

        // Inform all context listeners of what is happening
        for (int i = contextListeners.size() - 1; i >= 0; i--) {
            ((ContextListener) contextListeners.get(i)).stopped();
        }

        // 
        if (log.isInfoEnabled()) {
            log.info("Flushing preferences");
        }
        try {
            ContextHolder.getContext().getPreferences().flush();
        } catch (BackingStoreException bse) {
            log.error("Failed to flush context preferences.", bse);
        }
        try {
            Preferences.systemRoot().flush();
        } catch (BackingStoreException bse) {
            log.error("Failed to flush system preferences");
        }

        return exitCode;
    }

    void copyNode(Preferences from, Preferences to) throws BackingStoreException {
        String[] keys = from.keys();
        for (int i = 0; i < keys.length; i++) {
            to.put(keys[i], from.get(keys[i], ""));
        }
        String childNodes[] = from.childrenNames();
        for (int i = 0; i < childNodes.length; i++) {
            Preferences cn = from.node(childNodes[i]);
            Preferences tn = to.node(childNodes[i]);
            copyNode(cn, tn);
        }
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#isSetupMode()
     */
    public boolean isSetupMode() {
        return install;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#isRestartAvailableMode()
     */
    public boolean isRestartAvailableMode() {
        return useWrapper && !isSetupMode();
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#shutdown(boolean)
     */
    public void shutdown(boolean restart) {
        shuttingDown = true;
        if (useWrapper) {
            if (restart) {
                WrapperManager.restart();
            } else {
                WrapperManager.stop(0);
            }
        } else {
            stop(0);
            System.exit(0);
        }

    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getVersion()
     */
    public Version getVersion() {
        return VersionInfo.getVersion();
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getConfDirectory()
     */
    public File getConfDirectory() {
        return CONF_DIR;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getTempDirectory()
     */
    public File getTempDirectory() {
        return TMP_DIR;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getLogDirectory()
     */
    public File getLogDirectory() {
        return LOG_DIR;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getApplicationDirectory()
     */
    public File getApplicationDirectory() {
        return appDir;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getDBDirectory()
     */
    public File getDBDirectory() {
        return DB_DIR;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getMainThread()
     */
    public Thread getMainThread() {
        return mainThread;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#addResourceBase(java.net.URL)
     */
    public void addResourceBase(URL base) {
        if (log.isInfoEnabled())
            log.info("Adding new resource base " + base.toExternalForm());
        ResourceCache cache = new ResourceCache();
        cache.setMimeMap(webappContext.getMimeMap());
        cache.setEncodingMap(webappContext.getEncodingMap());
        cache.setResourceBase(base.toExternalForm());
        try {
            cache.start();
            webappContext.addResourceCache(cache);
            if (httpContext != null) {
                httpContext.addResourceCache(cache);
            }
            resourceCaches.put(base, cache);
        } catch (Exception e) {
            log.error("Failed to add new resource base " + base.toExternalForm() + ".", e);
        }

    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#addResourceBase(java.net.URL)
     */
    public void removeResourceBase(URL base) {
        if (log.isInfoEnabled())
            log.info("Removing resource base " + base.toExternalForm());
        ResourceCache cache = (ResourceCache) resourceCaches.get(base);
        webappContext.removeResourceCache(cache);
        if (httpContext != null) {
            httpContext.removeResourceCache(cache);
        }
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getHostname()
     */
    public String getHostname() {
        return hostname;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#getPort()
     */
    public int getPort() {
        return actualPort;
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#addContextLoaderURL(java.net.URL)
     */
    public void addContextLoaderURL(URL url) {
        webappContext.addContextLoaderURL(url);
    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#registerRequestHandler(com.sslexplorer.boot.RequestHandler)
     */
    public void registerRequestHandler(RequestHandler requestHandler) {
        if (httpContext != null) {
            httpContext.registerRequestHandler(requestHandler);
        }

    }

    /*
     * (non-Javadoc)
     * 
     * @see com.sslexplorer.boot.Context#deregisterRequestHandler(com.sslexplorer.boot.RequestHandler)
     */
    public void deregisterRequestHandler(RequestHandler requestHandler) {
        if (httpContext != null) {
            httpContext.deregisterRequestHandler(requestHandler);
        }
    }

    private void registerKeyStores() throws Exception {
        String defaultKeyStorePassword = getContextProperty("webServer.keystore.sslCertificate.password");
        KeyStoreManager.registerKeyStore(KeyStoreManager.DEFAULT_KEY_STORE, "keystore", false, defaultKeyStorePassword,
            KeyStoreManager.getKeyStoreType(getContextProperty("webServer.keyStoreType")));

        KeyStoreManager.registerKeyStore(KeyStoreManager.SERVER_AUTHENTICATION_CERTIFICATES_KEY_STORE, "keystore", true,
            "sslexplorer", KeyStoreManager.TYPE_JKS);
        KeyStoreManager.registerKeyStore(KeyStoreManager.TRUSTED_SERVER_CERTIFICATES_KEY_STORE, "keystore", true, "sslexplorer",
            KeyStoreManager.TYPE_JKS);

    }

    private void clearTemp() {
        if ("true".equalsIgnoreCase(System.getProperty("sslexplorer.clearTemp"))) {
            if (log.isInfoEnabled())
                log.info("Clearing temporary directory");
            Util.delTree(getTempDirectory());
            if (!getTempDirectory().mkdirs()) {
                log.error("CRITICAL. Failed to recreate the temporary directory " + getTempDirectory() + ".");
            }
        }
    }

    private void initialiseLogging() {
        log = LogFactory.getLog(Main.class);
    }

    private void redirectFromHttpsMode() throws Exception {

        boolean useHTTPRedirect = "true".equals(getContextProperty("webServer.enableHTTPRedirect"));

        if (!useHTTPRedirect) {
            if (log.isInfoEnabled())
                log.info("No HTTP redirect server required.");
            return;
        }
        int port = Integer.parseInt(getContextProperty("webServer.httpRedirectPort"));
        if (port <= 0) {
            if (log.isInfoEnabled())
                log.info("HTTP redirect port " + port + " is invalid");
            return;
        }
        serverLock.start(port);
        server = new Server();
        SocketListener listener = new SocketListener();
        listener.setPort(port);
        listener.setMinThreads(Integer.parseInt(getContextProperty("webServer.minThreads")));
        listener.setMaxThreads(Integer.parseInt(getContextProperty("webServer.maxThreads")));
        listener.setMaxIdleTimeMs(0);
        listener.setLowResourcePersistTimeMs(2000);
        listener.setAcceptQueueSize(0);
        listener.setPoolName("P2");
        server.addListener(listener);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -