1 package com.sslexplorer.agent; 2 3 import java.net.InetAddress ; 4 5 import com.sslexplorer.boot.RequestHandlerRequest; 6 import com.sslexplorer.security.LogonControllerFactory; 7 import com.sslexplorer.security.SessionInfo; 8 import com.sslexplorer.security.User; 9 import com.sslexplorer.util.TicketGenerator; 10 11 public class DefaultAgentCallback extends BasicAuthenticatorAgentCallback { 12 13 public static final String DEFAULT_AGENT_TYPE = "sslexplorerAgent"; 14 15 public AgentTunnel createAgent(String remoteHost, User user, String type, 16 RequestHandlerRequest connectionParameters) throws AgentException { 17 18 if (type.equals(DEFAULT_AGENT_TYPE)) { 19 20 String ticket = (String ) connectionParameters.getParameters().get("ticket"); 21 22 if (ticket == null) { 23 24 ticket = (String )connectionParameters.getAttribute("directAgentTicket"); 25 26 if(ticket==null) 27 throw new AgentException(""); 28 } 29 30 SessionInfo session = DefaultAgentManager.getInstance() 31 .getSessionByAgentId(ticket); 32 33 if (session == null) 34 throw new AgentException(""); 35 36 AgentTunnel t = new AgentTunnel(ticket, session, user, 37 DEFAULT_AGENT_TYPE, new DefaultAgentChannelFactory()); 38 DefaultAgentManager.getInstance().registerAgent(ticket, session, t); 39 AgentUnregisterHook.register(session); 40 return t; 41 42 } else { 43 throw new AgentException(""); 44 } 45 } 46 47 public User authenticate(RequestHandlerRequest request) { 48 51 if (request.getField("Authorization") != null) { 52 User user = super.authenticate(request); 53 54 if (user != null) { 55 56 try { 57 58 SessionInfo session = SessionInfo.nextSession(null, 59 TicketGenerator.getInstance().generateUniqueTicket( 60 "DAGENT"), user, InetAddress 61 .getByName(request.getRemoteAddr()), 62 SessionInfo.AGENT, request.getField("User-Agent") 63 .toString()); 64 LogonControllerFactory.getInstance().getActiveSessions() 65 .put(session.getLogonTicket(), session); 66 request.setAttribute("directAgentTicket", DefaultAgentManager.getInstance().registerPendingAgent( 67 session)); 68 69 AgentUnregisterHook.register(session); 70 return user; 71 } catch (Exception e) { 72 log.error("Failed to configure session.", e); 73 } 74 75 } 76 return null; 77 } else { 78 String ticket = (String ) request.getParameters().get("ticket"); 79 if(ticket != null) { 80 SessionInfo session = DefaultAgentManager.getInstance() 81 .getSessionByAgentId( 82 ticket); 83 84 if (session != null 86 && DefaultAgentManager.getInstance().getAgentBySession( 87 session) == null) 88 return session.getUser(); 89 } 90 91 return null; 92 } 93 94 } 95 96 } 97 | Popular Tags |