package de.uhilger.wbx.web; import java.io.IOException; import java.security.Principal; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.catalina.servlets.DefaultServlet; /** * */ public class ViewServlet extends DefaultServlet { private static final Logger logger = Logger.getLogger(ViewServlet.class.getName()); private static final String HOME_CTX = "/home"; /** * Handles the HTTP GET method. * * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String contextPath = request.getContextPath(); if(HOME_CTX.equals(contextPath)) { String userName = getUserName(request); if (userName != null) { String urlUser = getUrlUser(request, userName); if(userName.equals(urlUser)) { seiteAusgeben(request, response); } else { logger.fine("Wrong user."); } } else { logger.fine("Missing login."); } } else { seiteAusgeben(request, response); } } private void seiteAusgeben(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { ServletOutputStream out = response.getOutputStream(); printHeader(out); super.doGet(request, response); printFooter(out); } private void printHeader(ServletOutputStream out) throws IOException { out.print(""); out.print(""); out.print(""); } private void printFooter(ServletOutputStream out) throws IOException { out.print(""); } private String getUrlUser(HttpServletRequest request, String userName) throws IOException { String result = ""; String requestUrlStr = request.getRequestURL().toString(); String contextPath = request.getContextPath(); if(contextPath != null && requestUrlStr != null && userName != null) { int start = requestUrlStr.indexOf(contextPath); start += contextPath.length(); start++; int end = start + userName.length(); try { result = requestUrlStr.substring(start, end); } catch(Exception ex) { logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex); } } return result; } private String getUserName(HttpServletRequest hr) { String userName = null; Object p = hr.getUserPrincipal(); if (p instanceof Principal) { userName = ((Principal) p).getName(); } return userName; } /** * Returns a short description of the servlet. * * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; } }