1 3 package com.sslexplorer.setup.actions; 4 5 import javax.servlet.http.HttpServletRequest ; 6 import javax.servlet.http.HttpServletResponse ; 7 8 import org.apache.commons.logging.Log; 9 import org.apache.commons.logging.LogFactory; 10 import org.apache.struts.Globals; 11 import org.apache.struts.action.ActionForm; 12 import org.apache.struts.action.ActionForward; 13 import org.apache.struts.action.ActionMapping; 14 import org.apache.struts.action.ActionMessage; 15 import org.apache.struts.action.ActionMessages; 16 17 import com.sslexplorer.boot.ContextHolder; 18 import com.sslexplorer.core.CoreUtil; 19 import com.sslexplorer.core.actions.AuthenticatedDispatchAction; 20 import com.sslexplorer.policyframework.NoPermissionException; 21 import com.sslexplorer.policyframework.Permission; 22 import com.sslexplorer.policyframework.PolicyConstants; 23 import com.sslexplorer.policyframework.PolicyDatabase; 24 import com.sslexplorer.policyframework.PolicyDatabaseFactory; 25 import com.sslexplorer.security.LogonControllerFactory; 26 import com.sslexplorer.security.SessionInfo; 27 import com.sslexplorer.setup.forms.ShutdownForm; 28 29 35 public class ShowShutdownDispatchAction extends AuthenticatedDispatchAction { 36 37 final static Log log = LogFactory.getLog(ShowShutdownDispatchAction.class); 38 39 42 public ShowShutdownDispatchAction() { 43 super(PolicyConstants.SERVICE_CONTROL_RESOURCE_TYPE, new Permission[] { PolicyConstants.PERM_SHUTDOWN, 44 PolicyConstants.PERM_RESTART }); 45 } 46 47 50 public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, 51 HttpServletResponse response) throws Exception { 52 53 CoreUtil.clearFlow(request); 54 55 ShutdownForm shutdownForm = (ShutdownForm) form; 56 57 PolicyDatabase policyDatabase = PolicyDatabaseFactory.getInstance(); 58 if (shutdownForm.getAlreadyPerforming()) { 59 shutdownForm.setShutdownType(ShutdownForm.SHUTTING_DOWN); 60 } else if (policyDatabase.isPermitted(resourceType, new Permission[] { PolicyConstants.PERM_SHUTDOWN, 61 PolicyConstants.PERM_RESTART }, getSessionInfo(request).getUser(), true) && ContextHolder.getContext().isRestartAvailableMode()) { 62 shutdownForm.setShutdownType(ShutdownForm.BOTH); 64 shutdownForm.setShutdownOperation(ShutdownForm.RESTART); 65 } else if (policyDatabase.isPermitted(resourceType, 66 new Permission[] { PolicyConstants.PERM_SHUTDOWN }, 67 getSessionInfo(request).getUser(), 68 true)) { 69 shutdownForm.setShutdownType(ShutdownForm.SHUTDOWN); 71 shutdownForm.setShutdownOperation(ShutdownForm.SHUTDOWN); 72 } else if (policyDatabase.isPermitted(resourceType, 73 new Permission[] { PolicyConstants.PERM_RESTART }, 74 getSessionInfo(request).getUser(), 75 true) && ContextHolder.getContext().isRestartAvailableMode()) { 76 shutdownForm.setShutdownOperation(ShutdownForm.RESTART); 78 shutdownForm.setShutdownType(ShutdownForm.RESTART); 79 } else { 80 throw new NoPermissionException("Cannot shutdown or restart."); 81 } 82 83 87 String referer = CoreUtil.getReferer(request); 88 if (referer != null && referer.indexOf("/sendMessage.do") == -1) { 89 shutdownForm.setReferer(referer); 90 } 91 92 int users = LogonControllerFactory.getInstance().getActiveSessions().size(); 93 if (users > 1) { 94 ActionMessages msgs = new ActionMessages(); 95 msgs.add(Globals.MESSAGE_KEY, new ActionMessage("shutdown.userWarning", new Integer (users))); 96 saveMessages(request, msgs); 97 } 98 99 return mapping.findForward("display"); 100 } 101 102 105 public int getNavigationContext(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { 106 return SessionInfo.MANAGEMENT_CONSOLE_CONTEXT | SessionInfo.SETUP_CONSOLE_CONTEXT; 107 } 108 } 109 | Popular Tags |