+ catch (Throwable t) {
+ t.printStackTrace();
+
+ throw new ServletException(t.toString());
+ }
+ }
+
+ public void process(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletException, IOException, UnavailableException {
+ try {
+ long startTime = System.currentTimeMillis();
+ long sessionConnectTime = 0;
+
+ HttpSession session = aRequest.getSession(true);
+ setNoCaching(aResponse);
+ aResponse.setContentType("text/html; charset=" +
+ configuration.
+ getString("Mir.DefaultHTMLCharset", "UTF-8"));
+
+ EntityUsers userEntity = checkCredentials(aRequest);
+
+ if (userEntity == null) {
+ String queryString = aRequest.getQueryString();
+
+ if ( (queryString != null) && (queryString.length() != 0) && session.getAttribute("login.target") == null &&
+ (aRequest.getParameter("module")==null ||
+ (!aRequest.getParameter("module").equals("login") && !aRequest.getParameter("module").equals("logout")))) {
+ session.setAttribute("login.target", queryString);
+ }
+
+ _sendLoginPage(aResponse, aRequest);
+ }
+ else {
+ String moduleName = aRequest.getParameter("module");
+ checkLanguage(session, aRequest);
+
+ if ( ( (moduleName == null) || moduleName.equals(""))) {
+ moduleName="Admin";
+ }
+
+
+ if (moduleName.equals("login")) {
+ String target = (String) session.getAttribute("login.target");
+
+ if (target != null) {
+ ServletHelper.redirect(aResponse, target);
+ }
+ else {
+ ServletHelper.redirect(aResponse, "");
+ }
+ }
+ else if (moduleName.equals("logout")) {
+ logger.info(userEntity.getFieldValue("login") + " has logged out");
+ session.invalidate();
+ _sendLoginPage(aResponse, aRequest);
+ return;
+ }
+ else {
+ try {
+ ServletModule servletModule = getServletModuleForName(moduleName);
+ ServletModuleDispatch.dispatch(servletModule, aRequest, aResponse);
+
+ sessionConnectTime = System.currentTimeMillis() - startTime;
+ logger.info("EXECTIME (" + moduleName + "): " + sessionConnectTime + " ms");
+ }
+ catch (Throwable e) {
+ Throwable cause = ExceptionFunctions.traceCauseException(e);
+
+ if (cause instanceof ServletModuleUserExc)
+ handleUserError(aRequest, aResponse, (ServletModuleUserExc) cause);
+ else
+ handleError(aRequest, aResponse, cause);
+ }
+
+ if (aRequest.getParameter("killsession")!=null)
+ aRequest.getSession().invalidate();
+ }
+ }
+ }
+ catch (Throwable t) {
+ t.printStackTrace(logger.asPrintWriter(LoggerWrapper.DEBUG_MESSAGE));
+
+ throw new ServletException(t.toString());