1 19 20 package com.sslexplorer.tunnels.wizards.actions; 21 22 import java.util.ArrayList ; 23 import java.util.List ; 24 25 import javax.servlet.http.HttpServletRequest ; 26 import javax.servlet.http.HttpServletResponse ; 27 28 import org.apache.commons.logging.Log; 29 import org.apache.commons.logging.LogFactory; 30 import org.apache.struts.action.ActionForm; 31 import org.apache.struts.action.ActionForward; 32 import org.apache.struts.action.ActionMapping; 33 import org.apache.struts.util.LabelValueBean; 34 35 import com.sslexplorer.boot.HostService; 36 import com.sslexplorer.boot.PropertyList; 37 import com.sslexplorer.core.CoreAttributeConstants; 38 import com.sslexplorer.core.CoreEvent; 39 import com.sslexplorer.core.CoreServlet; 40 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 41 import com.sslexplorer.policyframework.Resource; 42 import com.sslexplorer.policyframework.ResourceUtil; 43 import com.sslexplorer.security.SessionInfo; 44 import com.sslexplorer.security.User; 45 import com.sslexplorer.tunnels.TransportType; 46 import com.sslexplorer.tunnels.Tunnel; 47 import com.sslexplorer.tunnels.TunnelDatabaseFactory; 48 import com.sslexplorer.tunnels.TunnelsEventConstants; 49 import com.sslexplorer.tunnels.wizards.forms.DefaultTunnelDetailsForm; 50 import com.sslexplorer.tunnels.wizards.forms.TunnelDetailsForm; 51 import com.sslexplorer.tunnels.wizards.forms.TunnelPolicySelectionForm; 52 import com.sslexplorer.wizard.AbstractWizardSequence; 53 import com.sslexplorer.wizard.WizardActionStatus; 54 import com.sslexplorer.wizard.actions.AbstractWizardAction; 55 import com.sslexplorer.wizard.forms.AbstractWizardFinishForm; 56 57 public class TunnelFinishAction extends AbstractWizardAction { 58 final static Log log = LogFactory.getLog(TunnelFinishAction.class); 59 60 public TunnelFinishAction() { 61 super(); 62 } 63 64 public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 65 return SessionInfo.USER_CONSOLE_CONTEXT | SessionInfo.MANAGEMENT_CONSOLE_CONTEXT; 66 } 67 68 public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, 69 HttpServletResponse response) throws Exception { 70 List actionStatus = new ArrayList (); 71 AbstractWizardSequence seq = getWizardSequence(request); 72 SessionInfo info = this.getSessionInfo(request); 73 User user = (User) seq.getAttribute(TunnelDetailsAction.ATTR_USER, null); 74 String name = (String ) seq.getAttribute(DefaultTunnelDetailsForm.ATTR_RESOURCE_NAME, null); 75 String description = (String ) seq.getAttribute(DefaultTunnelDetailsForm.ATTR_RESOURCE_DESCRIPTION, null); 76 boolean favorite = ((Boolean ) seq.getAttribute(DefaultTunnelDetailsForm.ATTR_FAVORITE, Boolean.FALSE)).booleanValue(); 77 int type = ((Integer ) seq.getAttribute(TunnelDetailsForm.ATTR_TYPE, null)).intValue(); 78 String transport = (String ) seq.getAttribute(TunnelDetailsForm.ATTR_TRANSPORT, ""); 79 int sourcePort = ((Integer ) seq.getAttribute(TunnelDetailsForm.ATTR_SOURCE_PORT, null)).intValue(); 80 String destinationHost = (String ) seq.getAttribute(TunnelDetailsForm.ATTR_DESTINATION_HOST, null); 81 int destinationPort = ((Integer ) seq.getAttribute(TunnelDetailsForm.ATTR_DESTINATION_PORT, null)).intValue(); 82 String sourceInterface = ((String ) seq.getAttribute(TunnelDetailsForm.ATTR_SOURCE_INTERFACE, null)); 83 boolean autoStart = ((Boolean ) seq.getAttribute(TunnelDetailsForm.ATTR_AUTO_START, null)).booleanValue(); 84 Tunnel tunnel = null; 85 try { 86 try { 87 tunnel = TunnelDatabaseFactory.getInstance().createTunnel(user.getRealm().getRealmID(), name, description, type, autoStart, transport, 88 user.getPrincipalName(), sourcePort, new HostService(destinationHost, destinationPort), 89 sourceInterface); 90 CoreServlet.getServlet().fireCoreEvent( 91 new CoreEvent(this, TunnelsEventConstants.CREATE_TUNNEL, null, info, CoreEvent.STATE_SUCCESSFUL) 92 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_NAME, name) 93 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_DESCRIPTION, description) 94 .addAttribute(TunnelsEventConstants.EVENT_ATTR_TUNNEL_SOURCE_PORT, 95 Integer.toString(sourcePort)).addAttribute( 96 TunnelsEventConstants.EVENT_ATTR_TUNNEL_DESTINATION, 97 String.valueOf(destinationHost + ":" + destinationPort)) 98 .addAttribute(TunnelsEventConstants.EVENT_ATTR_TUNNEL_TRANSPORT, transport) 99 .addAttribute( 100 TunnelsEventConstants.EVENT_ATTR_TUNNEL_TYPE, 101 ((LabelValueBean) TransportType.TYPES.get(tunnel.getType())) 102 .getLabel())); 103 } catch (Exception e) { 104 CoreServlet.getServlet().fireCoreEvent( 105 new CoreEvent(this, TunnelsEventConstants.CREATE_TUNNEL, null, info, CoreEvent.STATE_UNSUCCESSFUL) 106 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_NAME, name) 107 .addAttribute(CoreAttributeConstants.EVENT_ATTR_RESOURCE_DESCRIPTION, description) 108 .addAttribute(TunnelsEventConstants.EVENT_ATTR_TUNNEL_SOURCE_PORT, 109 Integer.toString(sourcePort)).addAttribute( 110 TunnelsEventConstants.EVENT_ATTR_TUNNEL_DESTINATION, 111 String.valueOf(destinationHost + ":" + destinationPort)) 112 .addAttribute(TunnelsEventConstants.EVENT_ATTR_TUNNEL_TRANSPORT, transport) 113 .addAttribute( 114 TunnelsEventConstants.EVENT_ATTR_TUNNEL_TYPE, 115 ((LabelValueBean) TransportType.TYPES.get(tunnel.getType())) 116 .getLabel())); 117 throw e; 118 } 119 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_OK, 120 "tunnelWizard.tunnelFinish.status.profileCreated")); 121 } catch (Exception e) { 122 log.error("Failed to create profile.", e); 123 actionStatus.add(new WizardActionStatus(WizardActionStatus.COMPLETED_WITH_ERRORS, 124 "tunnelWizard.tunnelFinish.status.failedToCreateProfile", e.getMessage())); 125 } 126 if (tunnel != null) { 127 actionStatus.add(attachToPolicies(seq, tunnel, favorite, request)); 128 } 129 ((AbstractWizardFinishForm) form).setActionStatus(actionStatus); 130 return super.unspecified(mapping, form, request, response); 131 } 132 133 public ActionForward exit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) 134 throws Exception { 135 return cancel(mapping, form, request, response); 136 } 137 138 WizardActionStatus attachToPolicies(AbstractWizardSequence seq, Resource resource, boolean addToFavorites, 139 HttpServletRequest request) { 140 PropertyList selectedPolicies = (PropertyList) seq.getAttribute(TunnelPolicySelectionForm.ATTR_SELECTED_POLICIES, null); 141 try { 142 PolicyDatabaseFactory.getInstance().attachResourceToPolicyList(resource, selectedPolicies, getSessionInfo(request)); 143 ResourceUtil.setResourceGlobalFavorite(resource, addToFavorites); 144 return new WizardActionStatus(WizardActionStatus.COMPLETED_OK, "tunnelWizard.tunnelFinish.status.attachedToPolicies"); 145 } catch (Exception e) { 146 log.error("Failed to create profile.", e); 147 return new WizardActionStatus(WizardActionStatus.COMPLETED_WITH_ERRORS, 148 "ntunnelWizard.tunnelFinish.status.failedToAttachToPolicies", e.getMessage()); 149 } 150 } 151 152 } | Popular Tags |