X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2FMir.java;h=23b58527225d20ac977a5675412a371f567638ab;hb=301a6e45cf7c6bcfa47a797092a302eb1d756a9c;hp=88183f482ef9707a8fbd47be598b334beda6c452;hpb=303c010339cb8afb3bbce24ea1fd8b9dcf729cb2;p=mir.git diff --git a/source/Mir.java b/source/Mir.java index 88183f48..23b58527 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) @@ -50,15 +51,16 @@ public class Mir extends AbstractServlet if (!confed){ confed = getConfig(req); } + MirConfig.setServletName(getServletName()); + 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)); + setLanguage(session,getAcceptLanguage(req)); } // Authentifizierung @@ -71,38 +73,48 @@ 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 //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.getWriter().println(redirectString); + + + //res.sendRedirect(redirect); + } else { // redirecting to default target - //theLog.printDebugInfo("--login: no target - redirecting to default"); - _sendStartPage(req, res.getWriter(),userEntity); + theLog.printDebugInfo("--login: no target - redirecting to default"); + _sendStartPage(res,req,res.getWriter(),userEntity); } return; } // if login succesful @@ -111,7 +123,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; } @@ -120,56 +132,60 @@ public class Mir extends AbstractServlet if (userEntity == null) { // redirect to loginpage String redirectString = req.getRequestURI(); - if (req.getQueryString()!=null) redirectString += "?" + req.getQueryString(); - theLog.printDebugInfo("STORING: " + redirectString); - session.setAttribute("login.target", redirectString); - _sendLoginPage(req,res.getWriter()); + String queryString = req.getQueryString(); + if (queryString!=null && !queryString.equals("")) { + redirectString += "?" + req.getQueryString(); + theLog.printDebugInfo("STORING: " + redirectString); + session.setAttribute("login.target", redirectString); + } + _sendLoginPage(res,req,res.getWriter()); return; } - // Bei blossem Serveltaufruf redirect auf Standardstarttemplate + // If no module is specified goto standard startpage if (moduleName == null || moduleName.equals("")) { - _sendStartPage(req, res.getWriter(),userEntity); + theLog.printDebugInfo("no module: redirect to standardpage"); + _sendStartPage(res,req, res.getWriter(),userEntity); return; } - //From now on normal Dispatching... + //From now on regular dispatching... try { try { theServletModule = Class.forName("mircoders.servlet.ServletModule" + moduleName); } catch (ClassNotFoundException e) { - // searching Servlet webdb.servlet-classes + // searching servletmodule in mir.servlet-classes theServletModule = Class.forName("mir.servlet.ServletModule" + moduleName); } - //Instanciate the ServletModule + //Instantiate the ServletModule Method m = theServletModule.getMethod("getInstance",null); 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() not found."); } + catch (InvocationTargetException e) { handleError( res,res.getWriter(), "ServletModule" + moduleName + " target not found."); } + catch (ClassNotFoundException e) { handleError(res, res.getWriter(), "ServletModule" + moduleName + " not found."); } + catch (IllegalArgumentException e) { handleError( res,res.getWriter(), "ServletModule" + moduleName + " not found."); } + 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(), "No access to class 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,MirConfig.getProp("Mir.ErrorTemplate"),modelRoot,out); out.close(); } catch (Exception e) { - System.err.println("Fehler in ErrorTemplate"); + System.err.println("Error in ErrorTemplate"); } } @@ -185,31 +201,37 @@ 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"; + String sessionUrl=res.encodeURL(""); + //session = req.getSession(true); try { theLog.printDebugInfo("login: "+lang); if(lang==null){ lang=getAcceptLanguage(req); } - HTMLTemplateProcessor.process(lang+"/"+loginTemplate, new SimpleHash(), out); + SimpleHash mergeData = new SimpleHash(); + mergeData.put("session",sessionUrl); + HTMLTemplateProcessor.process(res,lang+"/"+loginTemplate, mergeData, out); } catch(HTMLParseException e) { - handleError( out, "fehler in logintemplate."); + handleError(res, out, "Error 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(""); 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,session)+"/"+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()); } }