package at.gv.egovernment.moa.id.auth.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import at.gv.egovernment.moa.id.config.ConfigurationException; import at.gv.egovernment.moa.id.config.auth.AuthConfigurationProvider; import at.gv.egovernment.moa.id.monitoring.TestManager; import at.gv.egovernment.moa.logging.Logger; import at.gv.egovernment.moa.util.MiscUtil; public class MonitoringServlet extends AuthServlet { private static final long serialVersionUID = 1L; private static final String REQUEST_ATTR_MODULE = "module"; protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { AuthConfigurationProvider config = AuthConfigurationProvider.getInstance(); if (config.isMonitoringActive()) { Logger.debug("Monitoring Servlet received request"); TestManager tests = TestManager.getInstance(); String modulename = req.getParameter(REQUEST_ATTR_MODULE); if (MiscUtil.isEmpty(modulename)) { List error = tests.executeTests(); if (error != null && error.size() > 0) { createErrorMessage(req, resp, error); } else { resp.setStatus(HttpServletResponse.SC_OK); resp.setContentType("text/html;charset=UTF-8"); resp.getWriter().write(getHtml(config.getMonitoringMessageSuccess())); Logger.info("Monitoring Servlet finished without errors"); } } else { if (tests.existsModule(modulename)) { List errors = tests.executeTest(modulename); if (errors != null && errors.size() > 0) { createErrorMessage(req, resp, errors); } else { resp.setStatus(HttpServletResponse.SC_OK); resp.setContentType("text/html;charset=UTF-8"); resp.getWriter().write(getHtml(config.getMonitoringMessageSuccess())); Logger.info("Monitoring Servlet finished without errors"); } } else { Logger.warn("NO Testmodule exists with modulename " + modulename); resp.setStatus(HttpServletResponse.SC_NOT_FOUND); resp.setContentType("text/html;charset=UTF-8"); PrintWriter out; try { out = new PrintWriter(resp.getOutputStream()); out.write("NO Testmodule exists with modulename " + modulename); out.flush(); } catch (IOException e) { Logger.warn("Internal Monitoring Servlet Error. ", e); } } } } } catch (ConfigurationException e) { createErrorMessage(req, resp, Arrays.asList(e.getMessage())); } } private void createErrorMessage(HttpServletRequest req, HttpServletResponse resp, List errorMessage) { Logger.warn("Monitoring Servlet found some Error: " + errorMessage); resp.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); resp.setContentType("text/html;charset=UTF-8"); PrintWriter out; try { out = new PrintWriter(resp.getOutputStream()); for (String error : errorMessage) out.write(error + "
"); out.flush(); } catch (IOException e) { Logger.warn("Internal Monitoring Servlet Error. ", e); } } private String getHtml(String text) { return "Reponse" + text +""; } }