1 package com.sslexplorer.extensions.types; 2 3 import java.io.File ; 4 import java.io.IOException ; 5 import java.util.HashMap ; 6 import java.util.Iterator ; 7 import java.util.Map ; 8 9 import org.jdom.Element; 10 11 import com.sslexplorer.agent.AgentExtensionDefinition; 12 import com.sslexplorer.agent.AgentExtensionVerifier; 13 import com.sslexplorer.agent.AgentTunnel; 14 import com.sslexplorer.agent.DefaultAgentManager; 15 import com.sslexplorer.boot.ContextHolder; 16 import com.sslexplorer.core.CoreUtil; 17 import com.sslexplorer.extensions.ExtensionDescriptor; 18 import com.sslexplorer.extensions.ExtensionException; 19 import com.sslexplorer.security.SessionInfo; 20 21 22 23 28 public class DefaultAgentType extends AbstractJavaType { 29 private static Map <String , AgentExtensionDefinition> agentExtensions = new HashMap <String , AgentExtensionDefinition>(); 30 31 32 35 public final static String TYPE = "defaultAgent"; 36 37 40 public DefaultAgentType() { 41 super(TYPE, false); 42 } 43 44 47 public boolean isHidden() { 48 return true; 49 } 50 51 54 public void start(ExtensionDescriptor descriptor, Element element) throws ExtensionException { 55 super.start(descriptor, element); 56 try { 57 if(descriptor.containsFile("agent-en.jar")) { 58 ContextHolder.getContext().addContextLoaderURL(descriptor.getFile("agent-en.jar").toURL()); 59 } 60 if(descriptor.containsFile("launcher-en.jar")) { 61 ContextHolder.getContext().addContextLoaderURL(descriptor.getFile("launcher-en.jar").toURL()); 62 } 63 } 64 catch(IOException ioe) { 65 throw new ExtensionException(ExtensionException.INTERNAL_ERROR, ioe, "Failed to configure classpath for agent."); 66 } 67 } 68 69 72 public void descriptorCreated(Element element, SessionInfo session) throws IOException { 73 Element agents = new Element("agents"); 74 String extensionClasses = ""; 75 76 for (Iterator it = agentExtensions.values().iterator(); it.hasNext();) { 77 AgentExtensionDefinition def = (AgentExtensionDefinition) it.next(); 78 79 if(PluginType.getPlugin(def.getPlugin()) instanceof AgentExtensionVerifier) { 80 if(!((AgentExtensionVerifier)PluginType.getPlugin(def.getPlugin())).verifyAccess(def.getName(), 81 session.getUser())) 82 continue; 83 } 84 Element a = (Element)def.getAgentXML().clone(); 85 86 if (def.getClassName() != null) { 87 extensionClasses += (extensionClasses.equals("") ? def.getClassName() : "," + def.getClassName()); 88 } 89 90 agents.addContent(a); 91 } 92 93 if (agents.getChildren().size() > 0) { 95 agents.setAttribute("extensionClasses", extensionClasses); 96 element.addContent(0, agents); 97 } 98 99 } 100 101 104 public static void addAgentExtension(AgentExtensionDefinition agent) { 105 agentExtensions.put(agent.getName(), agent); 106 } 107 108 111 public static void removeAgentExtension(AgentExtensionDefinition agent) { 112 agentExtensions.remove(agent.getName()); 113 } 114 115 118 public String getTypeBundle() { 119 return "extensions"; 120 } 121 122 } 123 | Popular Tags |