1 19 20 package com.sslexplorer.webforwards; 21 22 import javax.servlet.http.HttpServletRequest ; 23 24 import org.apache.commons.logging.Log; 25 import org.apache.commons.logging.LogFactory; 26 27 import com.sslexplorer.boot.HostService; 28 import com.sslexplorer.core.CoreEvent; 29 import com.sslexplorer.core.CoreServlet; 30 import com.sslexplorer.navigation.FavoriteResourceType; 31 import com.sslexplorer.navigation.WrappedFavoriteItem; 32 import com.sslexplorer.policyframework.DefaultResourceType; 33 import com.sslexplorer.policyframework.PolicyConstants; 34 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 35 import com.sslexplorer.policyframework.Resource; 36 import com.sslexplorer.policyframework.ResourceChangeEvent; 37 import com.sslexplorer.policyframework.ResourceDeleteEvent; 38 import com.sslexplorer.policyframework.ResourceUtil; 39 import com.sslexplorer.security.LogonControllerFactory; 40 import com.sslexplorer.security.SessionInfo; 41 42 48 public class WebForwardResourceType extends DefaultResourceType implements FavoriteResourceType { 49 50 final static Log log = LogFactory.getLog(WebForwardResourceType.class); 51 52 55 public WebForwardResourceType() { 56 super(WebForwardPlugin.WEBFORWARD_RESOURCE_TYPE_ID, "policyframework", PolicyConstants.DELEGATION_CLASS); 57 } 58 59 CoreEvent addWebForwardAttributes(CoreEvent evt, WebForward webForward) { 60 evt.addAttribute(WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_TYPE, 61 ((WebForwardTypeItem) WebForwardTypes.WEB_FORWARD_TYPES.get(webForward.getType())).getName()); 62 evt.addAttribute(WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_URL, webForward.getDestinationURL()); 63 evt.addAttribute(WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_CATEGORY, webForward.getCategory()); 64 65 if (webForward instanceof AbstractAuthenticatingWebForward) { 66 AbstractAuthenticatingWebForward abstractAuthenticatingWebForward = (AbstractAuthenticatingWebForward) webForward; 67 evt.addAttribute(WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_PREFERED_AUTH_SCHEME, 68 abstractAuthenticatingWebForward.getPreferredAuthenticationScheme()).addAttribute( 69 WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_AUTH_USERNAME, 70 abstractAuthenticatingWebForward.getAuthenticationUsername()).addAttribute( 71 WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_AUTH_FORM_TYPE, abstractAuthenticatingWebForward.getFormType()); 72 abstractAuthenticatingWebForward.addFormParametersToEvent(evt, 73 WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_AUTH_FORM_PARAMETERS); 74 75 if (abstractAuthenticatingWebForward instanceof ReplacementProxyWebForward) { 76 ReplacementProxyWebForward rpwf = (ReplacementProxyWebForward) abstractAuthenticatingWebForward; 77 rpwf.addRestrictToHostsToEvent(evt, WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_WEB_FORWARD_RESTRICT_TO_HOSTS); 78 79 evt.addAttribute(WebForwardEventConstants.EVENT_ATTR_REPLACEMENT_WEB_FORWARD_ENCODEING, rpwf.getEncoding()); 80 } else if (abstractAuthenticatingWebForward instanceof ReverseProxyWebForward) { 81 ReverseProxyWebForward rpwf = (ReverseProxyWebForward) abstractAuthenticatingWebForward; 82 evt.addAttribute(WebForwardEventConstants.EVENT_ATTR_REVERSE_WEB_FORWARD_ACTIVE_DNS, 83 String.valueOf(rpwf.getActiveDNS())).addAttribute( 84 WebForwardEventConstants.EVENT_ATTR_REVERSE_WEB_FORWARD_HOST_HEADER, rpwf.getHostHeader()); 85 86 rpwf.addPathsToEvent(evt, WebForwardEventConstants.EVENT_ATTR_REVERSE_WEB_FORWARD_PATHS); 87 rpwf.addCustomHeadersToEvent(evt, WebForwardEventConstants.EVENT_ATTR_REVERSE_WEB_FORWARD_CUSTOM_HEADERS); 88 89 } 90 } 91 return evt; 92 } 93 94 100 public WrappedFavoriteItem createWrappedFavoriteItem(int resourceId, HttpServletRequest request, String type) throws Exception { 101 WebForward wf = WebForwardDatabaseFactory.getInstance().getWebForward(resourceId); 102 SessionInfo sessionInfo = LogonControllerFactory.getInstance().getSessionInfo(request); 103 WebForwardItem wfi; 104 String hostField = request.getHeader("Host"); 105 HostService sslexplorerHost = hostField == null ? null : new HostService(hostField); 106 if (wf != null) { 107 wfi = new WebForwardItem(wf, sslexplorerHost, PolicyDatabaseFactory.getInstance() 108 .getPoliciesAttachedToResource(wf, sessionInfo.getUser().getRealm()), wf.sessionPasswordRequired(sessionInfo)); 109 return new WrappedFavoriteItem(wfi, type); 110 } 111 return null; 112 } 113 114 119 public Resource getResourceById(int resourceId) throws Exception { 120 return WebForwardDatabaseFactory.getInstance().getWebForward(resourceId); 121 } 122 123 126 public Resource getResourceByName(String resourceName, SessionInfo session) throws Exception { 127 return WebForwardDatabaseFactory.getInstance().getWebForward(resourceName, session.getUser().getRealm().getRealmID()); 128 } 129 130 136 public Resource removeResource(int resourceId, SessionInfo session) throws Exception { 137 try { 138 WebForward resource = WebForwardDatabaseFactory.getInstance().deleteWebForward(resourceId); 139 CoreEvent evt = new ResourceDeleteEvent(this, WebForwardEventConstants.DELETE_WEBFORWARD, resource, session, 140 CoreEvent.STATE_SUCCESSFUL).addAttribute(WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_URL, 141 resource.getDestinationURL()).addAttribute(WebForwardEventConstants.EVENT_ATTR_WEB_FORWARD_TYPE, 142 ((WebForwardTypeItem) WebForwardTypes.WEB_FORWARD_TYPES.get(resource.getType())).getName()); 143 CoreServlet.getServlet().fireCoreEvent(evt); 144 return resource; 145 } catch (Exception e) { 146 CoreServlet.getServlet().fireCoreEvent( 147 new ResourceDeleteEvent(this, WebForwardEventConstants.DELETE_WEBFORWARD, null, session, CoreEvent.STATE_UNSUCCESSFUL)); 148 throw e; 149 } 150 } 151 152 158 public void updateResource(Resource resource, SessionInfo session) throws Exception { 159 try { 160 WebForwardDatabaseFactory.getInstance().updateWebForward((WebForward) resource); 161 CoreServlet.getServlet().fireCoreEvent( 162 addWebForwardAttributes(new ResourceChangeEvent(this, WebForwardEventConstants.UPDATE_WEB_FORWARD, resource, session, 163 CoreEvent.STATE_SUCCESSFUL), ((WebForward) resource))); 164 } catch (Exception e) { 165 CoreServlet.getServlet() 166 .fireCoreEvent(new ResourceChangeEvent(this, WebForwardEventConstants.UPDATE_WEB_FORWARD, session, e)); 167 throw e; 168 } 169 } 170 171 } 172 | Popular Tags |