- theLog.printError(errorString);
- SimpleHash modelRoot = new SimpleHash();
- modelRoot.put("errorstring", new SimpleScalar(errorString));
- modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
- HTMLTemplateProcessor.process(res,MirConfig.getProp("Mir.ErrorTemplate"),modelRoot,out);
- out.close();
+ 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 {
+ AdminServletModule servletModule = getServletModuleForName(moduleName);
+ servletModule.handleRequest(aRequest, aResponse);
+
+ sessionConnectTime = System.currentTimeMillis() - startTime;
+ logger.info("EXECTIME (" + moduleName + "): " + sessionConnectTime + " ms");
+ }
+ catch (Throwable e) {
+ Throwable cause = ExceptionRoutines.traceCauseException(e);
+
+ if (cause instanceof ServletModuleUserExc)
+ handleUserError(aRequest, aResponse, (ServletModuleUserExc) cause);
+ else
+ handleError(aRequest, aResponse, cause);
+ }
+
+ if (aRequest.getParameter("killsession")!=null)
+ aRequest.getSession().invalidate();
+ }
+ }