From: idfx Date: Mon, 10 Sep 2001 15:31:15 +0000 (+0000) Subject: session-tracking over get-param, if browser does not allow cookies. X-Git-Tag: prexmlproducerconfig~497 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=68985672fbee2e2a947c7811fb22fc71eaac03d4;p=mir.git session-tracking over get-param, if browser does not allow cookies. --- diff --git a/source/Mir.java b/source/Mir.java index 37789137..72432f0b 100755 --- a/source/Mir.java +++ b/source/Mir.java @@ -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 = "going " + target + ""; + redirect=res.encodeURL(http + "://" + req.getServerName() + target); + redirectString = "going Mir"; } else { - redirect = "going " + target + ""; + redirect=res.encodeURL(http + "://" + req.getServerName() + ":" +req.getServerPort() + target); + redirectString = "going Mir"; } - //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()); diff --git a/source/mir/misc/HTMLTemplateProcessor.java b/source/mir/misc/HTMLTemplateProcessor.java index 1a613301..195adeec 100755 --- a/source/mir/misc/HTMLTemplateProcessor.java +++ b/source/mir/misc/HTMLTemplateProcessor.java @@ -21,319 +21,321 @@ import javax.servlet.http.*; public final class HTMLTemplateProcessor { public static String templateDir; - private static FileTemplateCache templateCache; - private static Logfile theLog; - private static String docRoot; - private static String actionRoot; - private static String productionHost; - private static String audioHost; - private static String videoHost; - private static String imageHost; - private static String openAction; + private static FileTemplateCache templateCache; + private static Logfile theLog; + private static String docRoot; + private static String actionRoot; + private static String productionHost; + private static String audioHost; + private static String videoHost; + private static String imageHost; + private static String openAction; protected static String producerDocRoot = Configuration.getProperty("Producer.DocRoot"); - protected static String producerStorageRoot = Configuration.getProperty("Producer.StorageRoot"); + protected static String producerStorageRoot = Configuration.getProperty("Producer.StorageRoot"); - // - // Initialisierung + // + // Initialisierung - static { + static { templateDir = Configuration.getProperty("Home") + Configuration.getProperty("HTMLTemplateProcessor.Dir"); - templateCache = new FileTemplateCache(templateDir); - templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND); - //templateCache.startAutoUpdate(); - theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("HTMLTemplateProcessor.Logfile")); - docRoot = Configuration.getProperty("HTMLTemplateProcessor.DocRoot"); - actionRoot = Configuration.getProperty("HTMLTemplateProcessor.ActionRoot"); - openAction = Configuration.getProperty("Producer.OpenAction"); - productionHost = Configuration.getProperty("Producer.ProductionHost"); - videoHost = Configuration.getProperty("Producer.VideoHost"); - audioHost = Configuration.getProperty("Producer.AudioHost"); - imageHost = Configuration.getProperty("Producer.Image.Host"); + templateCache = new FileTemplateCache(templateDir); + templateCache.setLoadingPolicy(templateCache.LOAD_ON_DEMAND); + //templateCache.startAutoUpdate(); + theLog = Logfile.getInstance(Configuration.getProperty("Home") + Configuration.getProperty("HTMLTemplateProcessor.Logfile")); + docRoot = Configuration.getProperty("HTMLTemplateProcessor.DocRoot"); + actionRoot = Configuration.getProperty("HTMLTemplateProcessor.ActionRoot"); + openAction = Configuration.getProperty("Producer.OpenAction"); + productionHost = Configuration.getProperty("Producer.ProductionHost"); + videoHost = Configuration.getProperty("Producer.VideoHost"); + audioHost = Configuration.getProperty("Producer.AudioHost"); + imageHost = Configuration.getProperty("Producer.Image.Host"); producerDocRoot = Configuration.getProperty("Producer.DocRoot"); producerStorageRoot = Configuration.getProperty("Producer.StorageRoot"); - } + } + + /** + * Privater Konstruktor, um versehentliche Instantiierung zu verhindern + */ + private HTMLTemplateProcessor () { + } + + + // + // process-Methoden zum Mischen verschiedener Datenstrukturen mit HTML-Templates + + + /** + * Wandelt anEntity in freemarker-Struktur um, mischt die Daten mit + * Template templateFilename und gibt das Ergebnis an den PrintWriter + * out + * + * @param templateFilename + * @param anEntity + * @param out + * @exception HTMLParseException + */ + + public static void process(String templateFilename, Entity anEntity, PrintWriter out) + throws HTMLParseException { + if (anEntity == null) throw new HTMLParseException("Entity leer!"); + else process(templateFilename, anEntity, out); + } + + + /** + * Wandelt Liste mit Entities entList in freemarker-Struktur um, mischt die Daten mit + * Template templateFilename und gibt das Ergebnis an den PrintWriter + * out + * + * @param templateFilename + * @param entList + * @param out + * @exception HTMLParseException + */ + public static void process(HttpServletResponse res,String templateFilename, EntityList entList, PrintWriter out) + throws HTMLParseException { + process(res, templateFilename, entList, (String)null, (TemplateModelRoot)null, out); + } + + /** + * Wandelt Entitylist in freemarker-Struktur um, fügt additionalModel + * unter dem Namen additionalModelName ein und mischt die Daten mit + * Template templateFilename und gibt das Ergebnis an den PrintWriter + * out + * + * @param templateFilename + * @param entList + * @param additionalModelName + * @param additionalModel + * @param out + * @exception HTMLParseException + */ + public static void process(HttpServletResponse res,String templateFilename, EntityList entList, String additionalModelName, + TemplateModelRoot additionalModel, PrintWriter out) + throws HTMLParseException { + + SimpleHash modelRoot = new SimpleHash(); + + if (entList == null) { + //theLog.printInfo("Keine Daten! Suche erfolglos."); + process(null,templateFilename, modelRoot, out); + } else { + try { + modelRoot = makeSimpleHashWithEntitylistInfos(entList); + // + // Hilfskruecke um mal ein Popup mit reinzunhemen .. + if (additionalModelName != null && additionalModel != null) + modelRoot.put(additionalModelName, additionalModel); + + process(res,templateFilename, modelRoot, out); + } catch (StorageObjectException e) { + throw new HTMLParseException(e.toString()); + } + } + } + + /** + * Wandelt HashMap mergeData in freemarker-Struktur und mischt diese mit + * Template templateFilename und gibt das Ergebnis an den PrintWriter + * out + * + * @param templateFilename + * @param mergeData + * @param out + * @exception HTMLParseException + */ + public static void process(HttpServletResponse res,String templateFilename, HashMap mergeData, PrintWriter out) + throws HTMLParseException { + process(res,templateFilename, makeSimpleHash(mergeData), out); + } + + /** + * Gibt Template templateFilename an den PrintWriter + * out + * + * @param templateFilename + * @param mergeData + * @param out + * @exception HTMLParseException + */ + public static void process(String templateFilename, PrintWriter out) + throws HTMLParseException { + process(null,templateFilename, (TemplateModelRoot)null, out); + } + /** - * Privater Konstruktor, um versehentliche Instantiierung zu verhindern - */ - private HTMLTemplateProcessor () { - } - - - // - // process-Methoden zum Mischen verschiedener Datenstrukturen mit HTML-Templates - - - /** - * Wandelt anEntity in freemarker-Struktur um, mischt die Daten mit - * Template templateFilename und gibt das Ergebnis an den PrintWriter - * out - * - * @param templateFilename - * @param anEntity - * @param out - * @exception HTMLParseException - */ - - public static void process(String templateFilename, Entity anEntity, PrintWriter out) - throws HTMLParseException { - if (anEntity == null) throw new HTMLParseException("Entity leer!"); - else process(templateFilename, anEntity, out); - } - - - /** - * Wandelt Liste mit Entities entList in freemarker-Struktur um, mischt die Daten mit - * Template templateFilename und gibt das Ergebnis an den PrintWriter - * out - * - * @param templateFilename - * @param entList - * @param out - * @exception HTMLParseException - */ - public static void process(HttpServletResponse res,String templateFilename, EntityList entList, PrintWriter out) - throws HTMLParseException { - process(res, templateFilename, entList, (String)null, (TemplateModelRoot)null, out); - } - - /** - * Wandelt Entitylist in freemarker-Struktur um, fügt additionalModel - * unter dem Namen additionalModelName ein und mischt die Daten mit - * Template templateFilename und gibt das Ergebnis an den PrintWriter - * out - * - * @param templateFilename - * @param entList - * @param additionalModelName - * @param additionalModel - * @param out - * @exception HTMLParseException - */ - public static void process(HttpServletResponse res,String templateFilename, EntityList entList, String additionalModelName, - TemplateModelRoot additionalModel, PrintWriter out) - throws HTMLParseException { - - SimpleHash modelRoot = new SimpleHash(); - - if (entList == null) { - //theLog.printInfo("Keine Daten! Suche erfolglos."); - process(null,templateFilename, modelRoot, out); - } else { - try { - modelRoot = makeSimpleHashWithEntitylistInfos(entList); - // - // Hilfskruecke um mal ein Popup mit reinzunhemen .. - if (additionalModelName != null && additionalModel != null) - modelRoot.put(additionalModelName, additionalModel); - - process(res,templateFilename, modelRoot, out); - } catch (StorageObjectException e) { - throw new HTMLParseException(e.toString()); - } - } - } - - /** - * Wandelt HashMap mergeData in freemarker-Struktur und mischt diese mit - * Template templateFilename und gibt das Ergebnis an den PrintWriter - * out - * - * @param templateFilename - * @param mergeData - * @param out - * @exception HTMLParseException - */ - public static void process(HttpServletResponse res,String templateFilename, HashMap mergeData, PrintWriter out) - throws HTMLParseException { - process(res,templateFilename, makeSimpleHash(mergeData), out); - } - - /** - * Gibt Template templateFilename an den PrintWriter - * out - * - * @param templateFilename - * @param mergeData - * @param out - * @exception HTMLParseException - */ - public static void process(String templateFilename, PrintWriter out) - throws HTMLParseException { - process(null,templateFilename, (TemplateModelRoot)null, out); - } - - - /** - * Mischt die freemarker-Struktur tmr mit - * Template templateFilename und gibt das Ergebnis an den PrintWriter - * out - * - * @param templateFilename - * @param mergeData - * @param out - * @exception HTMLParseException - */ - public static void process(HttpServletResponse res,String templateFilename, TemplateModelRoot tmr, PrintWriter out) - throws HTMLParseException { - if (out==null) throw new HTMLParseException("KEIN OUTPUTSTREAM"); - Template tmpl = getTemplateFor(templateFilename); - if (tmpl == null) throw new HTMLParseException("KEIN TEMPLATE: " + templateFilename); - if (tmr==null) tmr = new SimpleHash(); - String session=null; - if (res!=null) { - session=res.encodeURL(""); - } + * Mischt die freemarker-Struktur tmr mit + * Template templateFilename und gibt das Ergebnis an den PrintWriter + * out + * + * @param templateFilename + * @param mergeData + * @param out + * @exception HTMLParseException + */ + public static void process(HttpServletResponse res,String templateFilename, TemplateModelRoot tmr, PrintWriter out) + throws HTMLParseException { + if (out==null) throw new HTMLParseException("KEIN OUTPUTSTREAM"); + Template tmpl = getTemplateFor(templateFilename); + if (tmpl == null) throw new HTMLParseException("KEIN TEMPLATE: " + templateFilename); + if (tmr==null) tmr = new SimpleHash(); + + String session=null; + if (res!=null) { + session=res.encodeURL(""); + } // put standard configuration into tempalteRootmodel - SimpleHash configHash = new SimpleHash(); - configHash.put("docroot", new SimpleScalar(producerDocRoot)); - configHash.put("storageroot", new SimpleScalar(producerStorageRoot)); - configHash.put("productionhost", new SimpleScalar(productionHost)); - configHash.put("openaction", new SimpleScalar(openAction)); + SimpleHash configHash = new SimpleHash(); + configHash.put("docroot", new SimpleScalar(producerDocRoot)); + configHash.put("storageroot", new SimpleScalar(producerStorageRoot)); + configHash.put("productionhost", new SimpleScalar(productionHost)); + configHash.put("openaction", new SimpleScalar(openAction)); + configHash.put("actionRootLogin",new SimpleScalar(actionRoot)); tmr.put("docRoot", new SimpleScalar(docRoot)); - tmr.put("now", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar()))); - tmr.put("actionRoot", new SimpleScalar(actionRoot+session)); - tmr.put("openAction", new SimpleScalar(openAction)); - tmr.put("productionHost", new SimpleScalar(productionHost)); - tmr.put("videoHost", new SimpleScalar(videoHost)); - tmr.put("audioHost", new SimpleScalar(audioHost)); - tmr.put("imageHost", new SimpleScalar(imageHost)); + tmr.put("now", new SimpleScalar(StringUtil.date2readableDateTime(new GregorianCalendar()))); + tmr.put("actionRoot", new SimpleScalar(actionRoot+session)); + tmr.put("openAction", new SimpleScalar(openAction)); + tmr.put("productionHost", new SimpleScalar(productionHost)); + tmr.put("videoHost", new SimpleScalar(videoHost)); + tmr.put("audioHost", new SimpleScalar(audioHost)); + tmr.put("imageHost", new SimpleScalar(imageHost)); tmr.put("config", configHash); - tmpl.process(tmr, out); + tmpl.process(tmr, out); + + } + + + /** + * Wandelt eine Entity-Liste in eine SimpleList von SimpleHashes um. + * @param aList ist eine Liste von Entity + * @return eine freemarker.template.SimpleList von SimpleHashes. + */ + public static SimpleList makeSimpleList(EntityList aList) throws StorageObjectException + { + SimpleList simpleList = new SimpleList(); + if (aList != null) { + for(int i=0;i"); + return null; + } + } + + /** + * Konvertiert ein Hashtable mit den keys und values als String + * in ein freemarker.template.SimpleHash-Modell + * @param mergeData der HashMap mit den String / String Daten + * @return SimpleHash mit den entsprechenden freemarker Daten + * + */ + public static SimpleHash makeSimpleHash(HashMap mergeData) + { + SimpleHash modelRoot = new SimpleHash(); + String aField; + if (mergeData != null) { + Set set = mergeData.keySet(); + Iterator it = set.iterator(); + for (int i=0; i"); - return null; - } - } - - /** - * Konvertiert ein Hashtable mit den keys und values als String - * in ein freemarker.template.SimpleHash-Modell - * @param mergeData der HashMap mit den String / String Daten - * @return SimpleHash mit den entsprechenden freemarker Daten - * - */ - public static SimpleHash makeSimpleHash(HashMap mergeData) - { - SimpleHash modelRoot = new SimpleHash(); - String aField; - if (mergeData != null) { - Set set = mergeData.keySet(); - Iterator it = set.iterator(); - for (int i=0; i1){ - HTMLTemplateProcessor.process(getLanguage(req)+"/"+templateObjektString, modelRoot, res.getWriter()); + HTMLTemplateProcessor.process(res,getLanguage(req)+"/"+templateObjektString, modelRoot, res.getWriter()); } else { deliver(req, res, modelRoot, templateObjektString); diff --git a/templates-dist/de/login.template b/templates-dist/de/login.template index 3df3f203..63cc8adc 100755 --- a/templates-dist/de/login.template +++ b/templates-dist/de/login.template @@ -9,7 +9,7 @@ - > +

Dieser Bereich steht nur authorisierten @@ -18,7 +18,7 @@ Bitte meldet Euch bei der Redaktionsliste.


-
+ diff --git a/templates-dist/de/start_admin.template b/templates-dist/de/start_admin.template index 25eff838..aea62da5 100755 --- a/templates-dist/de/start_admin.template +++ b/templates-dist/de/start_admin.template @@ -15,7 +15,7 @@ OPENPOSTINGS

- + bearbeiten

diff --git a/templates-dist/en/login.template b/templates-dist/en/login.template index 0476f11e..8666cff6 100755 --- a/templates-dist/en/login.template +++ b/templates-dist/en/login.template @@ -9,7 +9,7 @@

some welcome text etc.


- +