session-tracking over get-param, if browser does not allow cookies.
[mir.git] / source / Mir.java
index 3778913..72432f0 100755 (executable)
@@ -30,6 +30,7 @@ public class Mir extends AbstractServlet
   private static ModuleUsers usersModule=null;
   private static ModuleMessage messageModule=null;
   private static boolean confed=false;
+  public HttpSession session;
 
 
   public void doGet(HttpServletRequest req, HttpServletResponse res)
@@ -51,15 +52,14 @@ public class Mir extends AbstractServlet
       confed = getConfig(req);
     }
 
-               HttpSession session = req.getSession(true);
-                       
+    session = req.getSession(true);
+      
     if (req.getServerPort() == 443) http="https"; else http="http";
     res.setContentType("text/html");
     String moduleName = req.getParameter("module");
-    
 
     if(session.getAttribute("Language")==null){
-      setLanguage(req,getAcceptLanguage(req));
+      setLanguage(session,getAcceptLanguage(req));
     }
 
     // Authentifizierung
@@ -78,38 +78,42 @@ public class Mir extends AbstractServlet
         // login successful
 
         //if accept-language!=selected language change language
-        if(!getLanguage(req).equals(lang)){
-          setLanguage(req,lang);
+        if(!getLanguage(req,session).equals(lang)){
+          setLanguage(session,lang);
         }
 
         theLog.printInfo("--login: successful! setting uid: " + userEntity.getId());
         session.setAttribute("login.uid", userEntity);
         theLog.printDebugInfo("--login: trying to retrieve login.target");
         String target = (String)session.getAttribute("login.target");
+        
         if (target != null) {
           theLog.printDebugInfo("Redirect: "+target);
           int serverPort = req.getServerPort();
           String redirect = "";
+          String redirectString ="";
+          
+          
           if(serverPort==80){
-            redirect = "<html><head><meta http-equiv=refresh content=\0421;URL="
-                    + res.encodeURL(http +"://" + req.getServerName() + target)
-                    + "\"></head><body>going " + target + "</body></html>";
+            redirect=res.encodeURL(http + "://" + req.getServerName() + target);
+            redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
+                    + redirect
+                    + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
           } else {
-            redirect = "<html><head><meta http-equiv=refresh content=\0421;URL="
-                    + res.encodeURL(http +"://" + req.getServerName() +":"+ serverPort + target)
-                    + "\"></head><body>going " + target + "</body></html>";
+            redirect=res.encodeURL(http + "://" + req.getServerName() + ":" +req.getServerPort() + target);
+            redirectString = "<html><head><meta http-equiv=refresh content=\"1;URL="
+                    + redirect
+                    + "\"></head><body>going <a href=\"" + redirect + "\">Mir</a></body></html>";
           }
-          //res.getWriter().println(redirect);
-                                       
-                                       res.encodeRedirectURL(http + "://" + req.getServerName()
-                                                                                                                                       + ":" +req.getServerPort() + target);
-                                       
+          res.getWriter().println(redirectString);
+          
+          
+          //res.sendRedirect(redirect);
+          
         } else {
-                                       theLog.printDebugInfo("testurl: "+res.encodeURL(""));
-                                       theLog.printDebugInfo("querystring: "+req.getQueryString());
           // redirecting to default target
-          //theLog.printDebugInfo("--login: no target - redirecting to default");
-          _sendStartPage(res,req, res.getWriter(),userEntity);
+          theLog.printDebugInfo("--login: no target - redirecting to default");
+          _sendStartPage(res,req,res.getWriter(),userEntity);
         }
         return;
       } // if login succesful
@@ -136,6 +140,7 @@ public class Mir extends AbstractServlet
 
     // Bei blossem Serveltaufruf redirect auf Standardstarttemplate
     if (moduleName == null || moduleName.equals("")) {
+      theLog.printDebugInfo("no module: redirect to standardpage");
       _sendStartPage(res,req, res.getWriter(),userEntity);
       return;
     }
@@ -194,12 +199,16 @@ public class Mir extends AbstractServlet
   // Redirect-methods
   private void _sendLoginPage(HttpServletResponse res,HttpServletRequest req, PrintWriter out) {
     String loginTemplate = "login.template";
+    String sessionUrl=res.encodeURL("");
+    //session = req.getSession(true);
     try {
       theLog.printDebugInfo("login: "+lang);
       if(lang==null){
         lang=getAcceptLanguage(req);
       }
-      HTMLTemplateProcessor.process(res,lang+"/"+loginTemplate, new SimpleHash(), out);
+      SimpleHash mergeData = new SimpleHash();
+      mergeData.put("session",sessionUrl);
+      HTMLTemplateProcessor.process(res,lang+"/"+loginTemplate, mergeData, out);
     } catch(HTMLParseException e) {
       handleError(res, out, "fehler in logintemplate.");
     }
@@ -207,16 +216,15 @@ public class Mir extends AbstractServlet
 
   private void _sendStartPage(HttpServletResponse res, HttpServletRequest req,PrintWriter out, EntityUsers userEntity) {
     String startTemplate = "start_admin.template";
-               String sessionUrl=res.encodeURL("");
-               theLog.printDebugInfo("testurl: "+sessionUrl);
+    String sessionUrl=res.encodeURL("");
     try {
       // merge with logged in user and messages
       SimpleHash mergeData = new SimpleHash();
-                       mergeData.put("session",sessionUrl);
+      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(res,getLanguage(req)+"/"+startTemplate, mergeData,out);
+      HTMLTemplateProcessor.process(res,getLanguage(req,session)+"/"+startTemplate, mergeData,out);
     }
     catch(Exception e) {
       handleError( res,out, "error while trying to send startpage. " + e.toString());