📄 coreservlet.java
字号:
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 + -