1 19 20 package com.sslexplorer.tunnels.actions; 21 22 import javax.servlet.http.HttpServletRequest ; 23 import javax.servlet.http.HttpServletResponse ; 24 25 import org.apache.commons.logging.Log; 26 import org.apache.commons.logging.LogFactory; 27 import org.apache.struts.Globals; 28 import org.apache.struts.action.ActionForm; 29 import org.apache.struts.action.ActionForward; 30 import org.apache.struts.action.ActionMapping; 31 import org.apache.struts.action.ActionMessage; 32 import org.apache.struts.action.ActionMessages; 33 34 import com.sslexplorer.agent.DefaultAgentManager; 35 import com.sslexplorer.boot.Util; 36 import com.sslexplorer.core.BundleActionMessage; 37 import com.sslexplorer.core.CoreException; 38 import com.sslexplorer.core.RedirectWithMessages; 39 import com.sslexplorer.policyframework.LaunchSession; 40 import com.sslexplorer.policyframework.LaunchSessionFactory; 41 import com.sslexplorer.policyframework.NoPermissionException; 42 import com.sslexplorer.policyframework.PolicyException; 43 import com.sslexplorer.policyframework.actions.AbstractFavoriteResourcesDispatchAction; 44 import com.sslexplorer.security.LogonControllerFactory; 45 import com.sslexplorer.security.SessionInfo; 46 import com.sslexplorer.security.User; 47 import com.sslexplorer.tunnels.TunnelPlugin; 48 import com.sslexplorer.tunnels.TunnelingService; 49 import com.sslexplorer.tunnels.forms.TunnelsForm; 50 51 59 public class ShowTunnelsAction extends AbstractFavoriteResourcesDispatchAction { 60 61 final static Log log = LogFactory.getLog(ShowTunnelsAction.class); 62 63 66 public ShowTunnelsAction() { 67 super(TunnelPlugin.SSL_TUNNEL_RESOURCE_TYPE, TunnelPlugin.SSL_TUNNEL_RESOURCE_TYPE); 68 } 69 70 78 public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, 79 HttpServletResponse response) throws Exception { 80 ActionForward fwd = super.unspecified(mapping, form, request, response); 81 User user = LogonControllerFactory.getInstance().getUser(request); 82 TunnelsForm tunnelsForm = (TunnelsForm) form; 83 SessionInfo session = LogonControllerFactory.getInstance().getSessionInfo(request); 84 tunnelsForm.initialise(session, user, ".name"); 85 tunnelsForm.checkSelectedView(request, response); 86 Util.noCache(response); 87 return fwd; 88 } 89 90 98 public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 99 return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT | SessionInfo.USER_CONSOLE_CONTEXT; 100 } 101 102 112 public ActionForward remove(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 113 throws Exception { 114 ActionForward fwd = super.remove(mapping, form, request, response); 115 ActionMessages msgs = new ActionMessages(); 116 msgs.add(Globals.MESSAGE_KEY, new ActionMessage("tunnels.message.tunnelsRemoved", "1")); 117 saveMessages(request, msgs); 118 return fwd; 119 } 120 121 131 public ActionForward stop(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 132 throws Exception { 133 String launchId = request.getParameter(LaunchSession.LAUNCH_ID); 134 if (launchId == null) 135 throw new PolicyException(PolicyException.INTERNAL_ERROR, "No launchId parameter."); 136 LaunchSession launchSession = LaunchSessionFactory.getInstance().getLaunchSession(launchId); 137 if (launchSession != null) { 138 try { 139 ((TunnelingService) DefaultAgentManager.getInstance().getService(TunnelingService.class)).stopTunnels(launchSession); 140 ActionMessages msgs = new ActionMessages(); 141 msgs.add(Globals.MESSAGE_KEY, new BundleActionMessage(TunnelPlugin.MESSAGE_RESOURCES_KEY, "tunnels.stopped", launchSession.getResource().getResourceName())); 142 saveMessages(request, msgs); 143 if (!Util.isNullOrTrimmedBlank(request.getParameter("returnTo"))) { 144 return new RedirectWithMessages(request.getParameter("returnTo"), request); 145 } 146 return new RedirectWithMessages(mapping.findForward("refresh"), request); 147 } catch (CoreException ce) { 148 ActionMessages msgs = new ActionMessages(); 149 msgs.add(Globals.ERROR_KEY, ce.getBundleActionMessage()); 150 saveErrors(request, msgs); 151 return mapping.findForward("display"); 152 153 } catch (NoPermissionException e) { 154 ActionMessages msgs = new ActionMessages(); 155 msgs.add(Globals.ERROR_KEY, new ActionMessage("tunnels.noPermission", launchSession.getResource().getResourceName())); 156 saveErrors(request, msgs); 157 } 158 } 159 else { 160 log.warn("No launch value ID, user probably double clicked tunnel."); 161 } 162 163 if (!Util.isNullOrTrimmedBlank(request.getParameter("returnTo"))) { 164 return new RedirectWithMessages(request.getParameter("returnTo"), request); 165 } 166 return mapping.findForward("display"); 167 } 168 169 } | Popular Tags |