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

📄 coreservlet.java

📁 这是linux下ssl vpn的实现程序
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        KeyStoreImportTypeManager.getInstance().registerType(new RootServerCertificateImportType());
        KeyStoreImportTypeManager.getInstance().registerType(new ReplyFromCAImportType());
        KeyStoreImportTypeManager.getInstance().registerType(new ServerAuthenticationKeyImportType());
        KeyStoreImportTypeManager.getInstance().registerType(new TrustedServerCertificateImportType());
        
        // Add the default user databases
        UserDatabaseManager.getInstance().registerDatabase("activeDirectory", ActiveDirectoryUserDatabase.class, "properties");
        UserDatabaseManager.getInstance().registerDatabase("builtIn", JDBCUserDatabase.class, "properties");

        // Only register UNIXAuth if /etc/passwd iailable
        if (new File("/etc/passwd").canRead()) {
            UserDatabaseManager.getInstance().registerDatabase("unixAuth", UNIXUserDatabase.class, "properties");
        }

        // Intialise plugins
        if ("true".equalsIgnoreCase(System.getProperty("sslexplorer.disablePlugins"))) {
            log.warn("Extension manager disabled, extensions wont be initialised");
        } else {
            if (log.isInfoEnabled())
                log.info("Initialising extensions.");
            List toRemove = new ArrayList();
            List initialised = new ArrayList();
            for (Iterator i = pluginManager.plugins(); i.hasNext();) {
                Plugin ex = (Plugin) i.next();
                PluginDefinition def = getPluginManager().getPluginDefinition(ex);
                try {
                    /**
                     * UNIX Auth was rolled into the core at 0.1.13.
                     */
                    if (def.getDescriptor().getId().equals("UNIXAuth")) {
                        throw new Exception(
                                        "The UNIXAuth plugin is no longer required as the UNIX User database feature is now included with the core.");
                    }
                    
                    /* One of the plugins dependencies may have failed to start so we should not
                     * 
                     */ 

                    StringTokenizer t = new StringTokenizer(def.getDependencies(), ",");
                    while (t.hasMoreTokens()) {
                        String depName = t.nextToken();
                        int idx = depName.indexOf("/");
                        if (idx != -1) {
                            depName = depName.substring(0, idx);
                        }
                        Plugin dp = getPluginManager().getPlugin(depName);
                        if(toRemove.contains(dp)) {
                            throw new Exception("A dependency (" + depName + ") failed to initialise.");
                        }
                        else {
                            if(!initialised.contains(dp)) {
                                throw new Exception("A dependency has not yet initialisd. This is usually due to an incorrect 'order' attribute in the plugin definition.");
                            }
                        }
                    }
                    
                    ex.initPlugin(getPluginManager().getPluginDefinition(ex));
                    initialised.add(ex);
                } catch (Throwable t) {
                    toRemove.add(ex);
                    if (ex.getTilesConfigFile() != null) {
                        removeTileConfigurationFile(ex.getTilesConfigFile());
                    }
                    List l = (List) resourceBases.get(ex);
                    if (l != null) {
                        for (Iterator j = l.iterator(); j.hasNext();) {
                            URL u = (URL) j.next();
                            ContextHolder.getContext().removeResourceBase(u);
                        }
                    }
                    log.error("Failed to initialise plugin ", t);
                    try {
                        if (ex.canStopPlugin()) {
                            ex.stopPlugin();
                        }
                    } catch (Throwable t2) {
                        log.error("Failed to stop plugin " + ex.getClass(), t2);
                    }

                    CoreUtil.addMultipleGlobalWarning(GlobalWarning.MANAGEMENT_USERS, new BundleActionMessage("extensions",
                                    "startup.failedToLoadPlugin", def.getDescriptor().getName(), Util.getExceptionMessageChain(t)));
                }
            }
            for (Iterator i = toRemove.iterator(); i.hasNext();) {
                pluginManager.removePlugin((Plugin) i.next());
            }
        }

        // Add any plugin struts configs

        for (int i = 0; i < pluginManager.getPluginCount(); i++) {
            Plugin plugin = pluginManager.getPluginAt(i);
            PluginDefinition pluginDef = pluginManager.getPluginDefinition(plugin);
            digester.push(config);
            String path = "/WEB-INF/" + pluginDef.getDescriptor().getId() + "-struts-config.xml";
            if (log.isInfoEnabled())
            	log.info("Processing plugin struts configuration file " + path);
            try {
                this.parseModuleConfigFile(digester, path);
            } catch (UnavailableException ue) {
                // Don't care
            }
        }

        config.getControllerConfig().setProcessorClass("com.sslexplorer.core.CoreRequestProcessor");
        return config;
    }

    /**
     * Returns the logon controller instance currently in use. Note, this will
     * be <code>null</code> until the servlet has been initialised.
     * 
     * @return the logon controller.
     */
    public LogonController getLogonController() {
        return logonController;
    }

    /**
     * Returns the system database insance currently in use. Note, this will be
     * <code>null</code> until the servlet has been initialised.
     * 
     * @return the system database
     */
    public SystemDatabase getSystemDatabase() {
        return systemDatabase;
    }

    /**
     * Returns the policy database insance currently in use. Note, this will be
     * <code>null</code> until the servlet has been initialised.
     * 
     * @return the policy database
     */
    public PolicyDatabase getPolicyDatabase() {
        return policyDatabase;
    }

    /**
     * Returns the user database instance currently in use. Note, this will be
     * <code>null</code> until the servlet has been initialised.
     * 
     * @return the user database.
     */
    public UserDatabase getUserDatabase() {
        return userDatabase;
    }

    /**
     * Returns an instance of the property database currently in use. Note, this
     * will be <code>null</code> until the servlet has been initialised.
     * 
     * @return property database
     */
    public PropertyDatabase getPropertyDatabase() {
        return propertyDatabase;
    }

    /**
     * 
     */
    public void stopped() {
        if(shuttingDown) {
            throw new RuntimeException("Already shutting down.");
        }
        shuttingDown = true;
        fireCoreEvent(new CoreEvent(this, CoreEventConstants.SERVER_STOPPING, null, null));
        if(notifier != null) {
            notifier.stop();
        }
        UserDatabaseManager.getInstance().closeAll();        
        if(pluginManager != null) {
            if (log.isInfoEnabled())
                log.info("Stopping plugins");
            pluginManager.stop();
        }
        
        if (dbServer != null) {
            dbServer.stop();
        }
        fireCoreEvent(new CoreEvent(this, CoreEventConstants.SERVER_STOPPED, null, null));
    }
    
    /**
     * Get if the system is currently shutting down. This will become true as
     * soon as {@link #stopped()} has been invoked. 
     * 
     * @return shutting down
     */
    public boolean isShuttingDown() {
        return shuttingDown;
    }

    /**
     * Get the request handler that deals with the HTTP CONNECT method.
     * 
     * @return HTTP CONNECT request handle
     */
    public ConnectRequestHandler getConnectProxyMethodHandler() {
        return connectProxyMethodHandler;
    }

    void autoConfigureDevExtensions() {
        List devExtensions = new ArrayList();
        String extensionList = System.getProperty("sslexplorer.devExtensions", "");
        StringTokenizer t = new StringTokenizer(extensionList, ",");
        while(t.hasMoreTokens()) {
            String ext = t.nextToken();
            if (ext.equalsIgnoreCase("all")) {
                File f = new File(System.getProperty("user.dir")).getParentFile();
                File[] dirs = f.listFiles(new FileFilter() {
                    public boolean accept(File pathname) {
                        File f = new File(pathname, "extensions");
                        return f.exists() && f.isDirectory();
                    }
                });
                for (int i = 0; dirs != null && i < dirs.length; i++) {
                    devExtensions.add(dirs[i].getName());
                }
            } else if (ext.equalsIgnoreCase("enterprise")) {
                File f = new File(System.getProperty("user.dir")).getParentFile();
                File[] dirs = f.listFiles(new FileFilter() {
                    public boolean accept(File pathname) {
                        File f = new File(pathname, "extensions");
                        return f.exists() && f.isDirectory() && pathname.getName().indexOf("sslexplorer-enterprise-") != -1;
                    }
                });
                for (int i = 0; dirs != null && i < dirs.length; i++) {
                    devExtensions.add(dirs[i].getName());
                }
            } else {
                if(ext.startsWith("!")) {
                    devExtensions.remove(ext.substring(1));
                }
                else {               
                    devExtensions.add(ext);
                }
            }
        }
        for(Iterator it =  devExtensions.iterator(); it.hasNext(); ) {
            String ext = (String)it.next();
            File d = new File(new File(System.getProperty("user.dir")).getParentFile(), ext);
            File extensionDir = new File(new File(d, "extensions"), d.getName());
            File extensionDescriptor = new File(extensionDir, "extension.xml");
            File webapp = new File(d, "webapp");
            File classes = new File(new File(d, "build"), "classes");
            if (extensionDescriptor.exists()) {
            	if (log.isDebugEnabled())
            		log.debug("Automatically adding extension descriptor '" + extensionDescriptor.getPath() + "'");
                Util.appendToCommaSeparatedSystemProperty("sslexplorer.additionalDescriptors", extensionDescriptor
                                .getAbsolutePath());
            }
            if (webapp.exists()) {
            	if (log.isDebugEnabled())
            		log.debug("Automatically adding webapp resource '" + webapp.getPath() + "'");
                Util.appendToCommaSeparatedSystemProperty("sslexplorer.additionalWebResourceDirectories", webapp
                                .getAbsolutePath());
            }
            if (classes.exists()) {
            	if (log.isDebugEnabled())
            		log.debug("Automatically adding classes directory '" + classes.getPath() + "'");
                Util.appendToCommaSeparatedSystemProperty("sslexplorer.additionalClasspath", classes.getAbsolutePath());
            }
            File privateDir = new File(extensionDir, "private");
            if (privateDir.exists()) {
                File[] jars = privateDir.listFiles(new FileFilter() {
                    public boolean accept(File pathname) {
                        return pathname.getName().toLowerCase().endsWith(".jar");
                    }
                });
                for (int i = 0; jars != null && i < jars.length; i++) {
                	if (log.isDebugEnabled())
                		log.debug("Automatically extension JAR '" + jars[i].getAbsolutePath() + "'");
                    Util.appendToCommaSeparatedSystemProperty("sslexplorer.additionalClasspath", jars[i].getAbsolutePath());
                }
            }
            File nativeDir = new File(new File(d, "build"), "native");
            if(nativeDir.exists()) {
                try {
                    CoreUtil.addLibraryPath(nativeDir.getAbsolutePath());
                    log.warn("Automatically native library directory '" + nativeDir.getAbsolutePath() + "'");
                } catch (IOException ioe) {
                    log.error("Failed to set java library path.", ioe);
                }
            }
        }
    }
    class ClipboardPanel extends DefaultPanel {
        
        ClipboardPanel() {
            super("clipboard", Panel.MESSAGES, 90, "/WEB-INF/jsp/tiles/clipboard.jspf", null);
        }

        public boolean isAvailable(HttpServletRequest request, HttpServletResponse response) {
            boolean available = super.isAvailable(request, response);
            if(available) {
                Clipboard c =  (Clipboard)request.getSession().getAttribute(Constants.CLIPBOARD);
                available = c != null && c.getContent().size() > 0;
            }
            return available;
        }
    }
}

⌨️ 快捷键说明

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