X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2FMir.java;h=88183f482ef9707a8fbd47be598b334beda6c452;hb=f7a4aa7529340216285da3a4e1a3cb3e495e3d4f;hp=d6b8a1a51e9400c14889f8af3281dee5e2be24cb;hpb=603f4d286627f80882d6bebc31b8f2ba8635dbe9;p=mir.git diff --git a/source/Mir.java b/source/Mir.java index d6b8a1a5..88183f48 100755 --- a/source/Mir.java +++ b/source/Mir.java @@ -27,184 +27,193 @@ import mircoders.storage.*; public class Mir extends AbstractServlet { - private static ModuleUsers usersModule=null; - private static ModuleMessage messageModule=null; - private static boolean confed=false; + private static ModuleUsers usersModule=null; + private static ModuleMessage messageModule=null; + private static boolean confed=false; - public void doGet(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { - doPost(req,res); - } + public void doGet(HttpServletRequest req, HttpServletResponse res) + throws ServletException, IOException { + doPost(req,res); + } - public void doPost(HttpServletRequest req, HttpServletResponse res) - throws ServletException, IOException { + public void doPost(HttpServletRequest req, HttpServletResponse res) + throws ServletException, IOException { - long startTime = (new java.util.Date()).getTime(); - Class theServletModule; - ServletModule smod; - long sessionConnectTime=0; - String http=""; + long startTime = (new java.util.Date()).getTime(); + Class theServletModule; + ServletModule smod; + long sessionConnectTime=0; + String http=""; - // get the configration + // get the configration if (!confed){ confed = getConfig(req); } - if (req.getServerPort() == 443) http="https"; else http="http"; - res.setContentType("text/html"); - String moduleName = req.getParameter("module"); + 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)); } - // Authentifizierung - if (moduleName!=null && moduleName.equals("login")) { - String user=req.getParameter("login"); - String passwd= req.getParameter("password"); + // Authentifizierung + if (moduleName!=null && moduleName.equals("login")) { + String user=req.getParameter("login"); + String passwd= req.getParameter("password"); String lang = req.getParameter("lang"); - theLog.printDebugInfo("--login: evaluating for user: "+user); - EntityUsers userEntity = allowedUser(user,passwd); - if (userEntity==null) { - // login failed: redirecting to login - theLog.printWarning("--login: failed!"); - _sendLoginPage(req,res.getWriter()); - return; - } else { - // login successful + theLog.printDebugInfo("--login: evaluating for user: "+user); + EntityUsers userEntity = allowedUser(user,passwd); + if (userEntity==null) { + // login failed: redirecting to login + theLog.printWarning("--login: failed!"); + _sendLoginPage(req,res.getWriter()); + return; + } else { + // login successful //if accept-language!=selected language change language if(!getLanguage(req).equals(lang)){ setLanguage(req,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); - res.getWriter().println("going " + target + ""); - } else { - // redirecting to default target - //theLog.printDebugInfo("--login: no target - redirecting to default"); - _sendStartPage(req, res.getWriter(),userEntity); - } - return; - } // if login succesful - } // if login - - if (moduleName!=null && moduleName.equals("logout")) { - theLog.printDebugInfo("--logout"); - session.invalidate(); - _sendLoginPage(req,res.getWriter()); - return; - } - - // Check if authed! - EntityUsers userEntity = (EntityUsers)session.getAttribute("login.uid"); - 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()); - return; - } - - // Bei blossem Serveltaufruf redirect auf Standardstarttemplate - if (moduleName == null || moduleName.equals("")) { - _sendStartPage(req, res.getWriter(),userEntity); - return; - } - - //From now on normal Dispatching... - try { - try { - theServletModule = Class.forName("mir.servlet.ServletModule" + moduleName); - } catch (ClassNotFoundException e) { + 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 = ""; + if(serverPort==80){ + redirect = "going " + target + ""; + } else { + redirect = "going " + target + ""; + } + res.getWriter().println(redirect); + } else { + // redirecting to default target + //theLog.printDebugInfo("--login: no target - redirecting to default"); + _sendStartPage(req, res.getWriter(),userEntity); + } + return; + } // if login succesful + } // if login + + if (moduleName!=null && moduleName.equals("logout")) { + theLog.printDebugInfo("--logout"); + session.invalidate(); + _sendLoginPage(req,res.getWriter()); + return; + } + + // Check if authed! + EntityUsers userEntity = (EntityUsers)session.getAttribute("login.uid"); + 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()); + return; + } + + // Bei blossem Serveltaufruf redirect auf Standardstarttemplate + if (moduleName == null || moduleName.equals("")) { + _sendStartPage(req, res.getWriter(),userEntity); + return; + } + + //From now on normal Dispatching... + try { + try { + theServletModule = Class.forName("mircoders.servlet.ServletModule" + moduleName); + } catch (ClassNotFoundException e) { // searching Servlet webdb.servlet-classes - theServletModule = Class.forName("webdb.servlet.ServletModule" + moduleName); - } + theServletModule = Class.forName("mir.servlet.ServletModule" + moduleName); + } //Instanciate 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 (IllegalAccessException e){ - handleError(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) { - 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); - out.close(); - } - catch (Exception e) { - System.err.println("Fehler in ErrorTemplate"); - } - } - - /** - * evaluate login for user / password - */ - protected EntityUsers allowedUser(String user, String password) { - try { - if (usersModule == null) usersModule = new ModuleUsers(DatabaseUsers.getInstance()); - return usersModule.getUserForLogin(user, password); - } - catch(Exception e) { theLog.printDebugInfo(e.toString()); return null; } - } - - // Redirect-methods - private void _sendLoginPage(HttpServletRequest req, PrintWriter out) { + 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 (IllegalAccessException e){ + handleError(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) { + 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); + out.close(); + } + catch (Exception e) { + System.err.println("Fehler in ErrorTemplate"); + } + } + + /** + * evaluate login for user / password + */ + protected EntityUsers allowedUser(String user, String password) { + try { + if (usersModule == null) usersModule = new ModuleUsers(DatabaseUsers.getInstance()); + return usersModule.getUserForLogin(user, password); + } + catch(Exception e) { theLog.printDebugInfo(e.toString()); return null; } + } + + // Redirect-methods + private void _sendLoginPage(HttpServletRequest req, PrintWriter out) { String loginTemplate = "login.template"; - try { + try { theLog.printDebugInfo("login: "+lang); - if(lang==null){ - lang=getAcceptLanguage(req); - } - HTMLTemplateProcessor.process(lang+"/"+loginTemplate, new SimpleHash(), out); - } catch(HTMLParseException e) { - handleError( out, "fehler in logintemplate."); - } - } - - private void _sendStartPage(HttpServletRequest req,PrintWriter out, EntityUsers userEntity) { - String startTemplate = "start_admin.template"; - try { - // merge with logged in user and messages - SimpleHash mergeData = new SimpleHash(); - 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); - } - catch(Exception e) { - handleError( out, "error while trying to send startpage. " + e.toString()); - } - } - - public String getServletInfo(){ return "Mir 1.0 rev02 multilanguage"; } + if(lang==null){ + lang=getAcceptLanguage(req); + } + HTMLTemplateProcessor.process(lang+"/"+loginTemplate, new SimpleHash(), out); + } catch(HTMLParseException e) { + handleError( out, "fehler in logintemplate."); + } + } + + private void _sendStartPage(HttpServletRequest req,PrintWriter out, EntityUsers userEntity) { + String startTemplate = "start_admin.template"; + try { + // merge with logged in user and messages + SimpleHash mergeData = new SimpleHash(); + 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); + } + catch(Exception e) { + handleError( out, "error while trying to send startpage. " + e.toString()); + } + } + + public String getServletInfo(){ return "Mir 1.0 rev02 multilanguage"; } }