1-n-content-media, tomcat-session-tracking without cookies, and more
[mir.git] / source / Mir.java
index 88183f4..3778913 100755 (executable)
@@ -51,11 +51,12 @@ public class Mir extends AbstractServlet
       confed = getConfig(req);
     }
 
-
+               HttpSession session = req.getSession(true);
+                       
     if (req.getServerPort() == 443) http="https"; else http="http";
     res.setContentType("text/html");
     String moduleName = req.getParameter("module");
-    HttpSession session = req.getSession(true);
+    
 
     if(session.getAttribute("Language")==null){
       setLanguage(req,getAcceptLanguage(req));
@@ -71,7 +72,7 @@ public class Mir extends AbstractServlet
       if (userEntity==null) {
         // login failed: redirecting to login
         theLog.printWarning("--login: failed!");
-        _sendLoginPage(req,res.getWriter());
+        _sendLoginPage(res,req,res.getWriter());
         return;
       } else {
         // login successful
@@ -98,11 +99,17 @@ public class Mir extends AbstractServlet
                     + res.encodeURL(http +"://" + req.getServerName() +":"+ serverPort + target)
                     + "\"></head><body>going " + target + "</body></html>";
           }
-          res.getWriter().println(redirect);
+          //res.getWriter().println(redirect);
+                                       
+                                       res.encodeRedirectURL(http + "://" + req.getServerName()
+                                                                                                                                       + ":" +req.getServerPort() + target);
+                                       
         } else {
+                                       theLog.printDebugInfo("testurl: "+res.encodeURL(""));
+                                       theLog.printDebugInfo("querystring: "+req.getQueryString());
           // redirecting to default target
           //theLog.printDebugInfo("--login: no target - redirecting to default");
-          _sendStartPage(req, res.getWriter(),userEntity);
+          _sendStartPage(res,req, res.getWriter(),userEntity);
         }
         return;
       } // if login succesful
@@ -111,7 +118,7 @@ public class Mir extends AbstractServlet
     if (moduleName!=null && moduleName.equals("logout")) {
       theLog.printDebugInfo("--logout");
       session.invalidate();
-      _sendLoginPage(req,res.getWriter());
+      _sendLoginPage(res,req,res.getWriter());
       return;
     }
 
@@ -123,13 +130,13 @@ public class Mir extends AbstractServlet
       if (req.getQueryString()!=null) redirectString += "?" + req.getQueryString();
       theLog.printDebugInfo("STORING: " + redirectString);
       session.setAttribute("login.target", redirectString);
-      _sendLoginPage(req,res.getWriter());
+      _sendLoginPage(res,req,res.getWriter());
       return;
     }
 
     // Bei blossem Serveltaufruf redirect auf Standardstarttemplate
     if (moduleName == null || moduleName.equals("")) {
-      _sendStartPage(req, res.getWriter(),userEntity);
+      _sendStartPage(res,req, res.getWriter(),userEntity);
       return;
     }
 
@@ -146,26 +153,26 @@ public class Mir extends AbstractServlet
       smod = (ServletModule)m.invoke(null,null);
       ServletModuleDispatch.dispatch(smod,req,res);
     }
-    catch (NoSuchMethodException e) { handleError( res.getWriter(), "ServletModule" + moduleName + " getInstance() nicht gefunden."); }
-    catch (InvocationTargetException e) { handleError( res.getWriter(), "ServletModule" + moduleName + " target nicht gefunden."); }
-    catch (ClassNotFoundException e) { handleError( res.getWriter(), "ServletModule" + moduleName + " nicht gefunden."); }
-    catch (IllegalArgumentException e) { handleError( res.getWriter(), "ServletModule" + moduleName + " nicht gefunden."); }
-    catch (ServletModuleException e){ handleError(res.getWriter(), "ServletException in Module ServletModule" + moduleName + " -- " + e.toString()); }
+    catch (NoSuchMethodException e) { handleError( res,res.getWriter(), "ServletModule" + moduleName + " getInstance() nicht gefunden."); }
+    catch (InvocationTargetException e) { handleError( res,res.getWriter(), "ServletModule" + moduleName + " target nicht gefunden."); }
+    catch (ClassNotFoundException e) { handleError(res, res.getWriter(), "ServletModule" + moduleName + " nicht gefunden."); }
+    catch (IllegalArgumentException e) { handleError( res,res.getWriter(), "ServletModule" + moduleName + " nicht gefunden."); }
+    catch (ServletModuleException e){ handleError(res,res.getWriter(), "ServletException in Module ServletModule" + moduleName + " -- " + e.toString()); }
     catch (IllegalAccessException e){
-        handleError(res.getWriter(), "Kein Zugriff auf Klasse ServletModule" + moduleName + " -- " + e.toString()); }
+        handleError(res,res.getWriter(), "Kein Zugriff auf Klasse ServletModule" + moduleName + " -- " + e.toString()); }
 
     // timing...
     sessionConnectTime = new java.util.Date().getTime() - startTime;
     theLog.printInfo("EXECTIME (" + moduleName + "): " + sessionConnectTime + " ms");
   }
 
-  private void handleError(PrintWriter out, String errorString) {
+  private void handleError(HttpServletResponse res, PrintWriter out, String errorString) {
     try {
       theLog.printError(errorString);
       SimpleHash modelRoot = new SimpleHash();
       modelRoot.put("errorstring", new SimpleScalar(errorString));
       modelRoot.put("date", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar())));
-      HTMLTemplateProcessor.process(Configuration.getProperty("Mir.ErrorTemplate"),modelRoot,out);
+      HTMLTemplateProcessor.process(res,Configuration.getProperty("Mir.ErrorTemplate"),modelRoot,out);
       out.close();
     }
     catch (Exception e) {
@@ -185,31 +192,34 @@ public class Mir extends AbstractServlet
   }
 
   // Redirect-methods
-  private void _sendLoginPage(HttpServletRequest req, PrintWriter out) {
+  private void _sendLoginPage(HttpServletResponse res,HttpServletRequest req, PrintWriter out) {
     String loginTemplate = "login.template";
     try {
       theLog.printDebugInfo("login: "+lang);
       if(lang==null){
         lang=getAcceptLanguage(req);
       }
-      HTMLTemplateProcessor.process(lang+"/"+loginTemplate, new SimpleHash(), out);
+      HTMLTemplateProcessor.process(res,lang+"/"+loginTemplate, new SimpleHash(), out);
     } catch(HTMLParseException e) {
-      handleError( out, "fehler in logintemplate.");
+      handleError(res, out, "fehler in logintemplate.");
     }
   }
 
-  private void _sendStartPage(HttpServletRequest req,PrintWriter out, EntityUsers userEntity) {
+  private void _sendStartPage(HttpServletResponse res, HttpServletRequest req,PrintWriter out, EntityUsers userEntity) {
     String startTemplate = "start_admin.template";
+               String sessionUrl=res.encodeURL("");
+               theLog.printDebugInfo("testurl: "+sessionUrl);
     try {
       // merge with logged in user and messages
       SimpleHash mergeData = new SimpleHash();
+                       mergeData.put("session",sessionUrl);
       mergeData.put("login_user", HTMLTemplateProcessor.makeSimpleHash(userEntity));
       if (messageModule == null) messageModule = new ModuleMessage(DatabaseMessages.getInstance());
       mergeData.put("messages", HTMLTemplateProcessor.makeSimpleList(messageModule.getByWhereClause(null, "webdb_create desc",0,10)));
-      HTMLTemplateProcessor.process(getLanguage(req)+"/"+startTemplate, mergeData,out);
+      HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+startTemplate, mergeData,out);
     }
     catch(Exception e) {
-      handleError( out, "error while trying to send startpage. " + e.toString());
+      handleError( res,out, "error while trying to send startpage. " + e.toString());
     }
   }