Search in sources :

Example 1 with StringManager

use of org.apache.tomcat.util.res.StringManager in project tomcat70 by apache.

the class ManagerServlet method getStringManager.

/**
 * @deprecated Use {@link StringManager#getManager(String, Enumeration)}.
 *             This method will be removed in Tomcat 8.
 */
@Deprecated
protected StringManager getStringManager(HttpServletRequest req) {
    Enumeration<Locale> requestedLocales = req.getLocales();
    while (requestedLocales.hasMoreElements()) {
        Locale locale = requestedLocales.nextElement();
        StringManager result = StringManager.getManager(Constants.Package, locale);
        if (result.getLocale().equals(locale)) {
            return result;
        }
    }
    // Return the default
    return sm;
}
Also used : Locale(java.util.Locale) StringManager(org.apache.tomcat.util.res.StringManager)

Example 2 with StringManager

use of org.apache.tomcat.util.res.StringManager in project tomcat70 by apache.

the class ManagerServlet method doGet.

/**
 * Process a GET request for the specified resource.
 *
 * @param request The servlet request we are processing
 * @param response The servlet response we are creating
 *
 * @exception IOException if an input/output error occurs
 * @exception ServletException if a servlet-specified error occurs
 */
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    StringManager smClient = StringManager.getManager(Constants.Package, request.getLocales());
    // Identify the request parameters that we need
    String command = request.getPathInfo();
    if (command == null)
        command = request.getServletPath();
    String config = request.getParameter("config");
    String path = request.getParameter("path");
    ContextName cn = null;
    if (path != null) {
        cn = new ContextName(path, request.getParameter("version"));
    }
    String type = request.getParameter("type");
    String war = request.getParameter("war");
    String tag = request.getParameter("tag");
    boolean update = false;
    if ((request.getParameter("update") != null) && (request.getParameter("update").equals("true"))) {
        update = true;
    }
    boolean statusLine = false;
    if ("true".equals(request.getParameter("statusLine"))) {
        statusLine = true;
    }
    // Prepare our output writer to generate the response message
    response.setContentType("text/plain; charset=" + Constants.CHARSET);
    // Stop older versions of IE thinking they know best. We set text/plain
    // in the line above for a reason. IE's behaviour is unwanted at best
    // and dangerous at worst.
    response.setHeader("X-Content-Type-Options", "nosniff");
    PrintWriter writer = response.getWriter();
    // Process the requested command
    if (command == null) {
        writer.println(smClient.getString("managerServlet.noCommand"));
    } else if (command.equals("/deploy")) {
        if (war != null || config != null) {
            deploy(writer, config, cn, war, update, smClient);
        } else if (tag != null) {
            deploy(writer, cn, tag, smClient);
        } else {
            writer.println(smClient.getString("managerServlet.invalidCommand", command));
        }
    } else if (command.equals("/list")) {
        list(writer, smClient);
    } else if (command.equals("/reload")) {
        reload(writer, cn, smClient);
    } else if (command.equals("/resources")) {
        resources(writer, type, smClient);
    } else if (command.equals("/save")) {
        save(writer, path, smClient);
    } else if (command.equals("/serverinfo")) {
        serverinfo(writer, smClient);
    } else if (command.equals("/sessions")) {
        expireSessions(writer, cn, request, smClient);
    } else if (command.equals("/expire")) {
        expireSessions(writer, cn, request, smClient);
    } else if (command.equals("/start")) {
        start(writer, cn, smClient);
    } else if (command.equals("/stop")) {
        stop(writer, cn, smClient);
    } else if (command.equals("/undeploy")) {
        undeploy(writer, cn, smClient);
    } else if (command.equals("/findleaks")) {
        findleaks(statusLine, writer, smClient);
    } else if (command.equals("/vminfo")) {
        vmInfo(writer, smClient, request.getLocales());
    } else if (command.equals("/threaddump")) {
        threadDump(writer, smClient, request.getLocales());
    } else {
        writer.println(smClient.getString("managerServlet.unknownCommand", command));
    }
    // Finish up the response
    writer.flush();
    writer.close();
}
Also used : StringManager(org.apache.tomcat.util.res.StringManager) ContextName(org.apache.catalina.util.ContextName) PrintWriter(java.io.PrintWriter)

Example 3 with StringManager

use of org.apache.tomcat.util.res.StringManager in project tomcat70 by apache.

the class HostManagerServlet method doGet.

/**
 * Process a GET request for the specified resource.
 *
 * @param request The servlet request we are processing
 * @param response The servlet response we are creating
 *
 * @exception IOException if an input/output error occurs
 * @exception ServletException if a servlet-specified error occurs
 */
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    StringManager smClient = StringManager.getManager(Constants.Package, request.getLocales());
    // Identify the request parameters that we need
    String command = request.getPathInfo();
    if (command == null)
        command = request.getServletPath();
    String name = request.getParameter("name");
    // Prepare our output writer to generate the response message
    response.setContentType("text/plain; charset=" + Constants.CHARSET);
    // Stop older versions of IE thinking they know best. We set text/plain
    // in the line above for a reason. IE's behaviour is unwanted at best
    // and dangerous at worst.
    response.setHeader("X-Content-Type-Options", "nosniff");
    PrintWriter writer = response.getWriter();
    // Process the requested command
    if (command == null) {
        writer.println(sm.getString("hostManagerServlet.noCommand"));
    } else if (command.equals("/add")) {
        add(request, writer, name, false, smClient);
    } else if (command.equals("/remove")) {
        remove(writer, name, smClient);
    } else if (command.equals("/list")) {
        list(writer, smClient);
    } else if (command.equals("/start")) {
        start(writer, name, smClient);
    } else if (command.equals("/stop")) {
        stop(writer, name, smClient);
    } else {
        writer.println(sm.getString("hostManagerServlet.unknownCommand", command));
    }
    // Finish up the response
    writer.flush();
    writer.close();
}
Also used : StringManager(org.apache.tomcat.util.res.StringManager) PrintWriter(java.io.PrintWriter)

Example 4 with StringManager

use of org.apache.tomcat.util.res.StringManager in project tomcat by apache.

the class JsonErrorReportValve method report.

@Override
protected void report(Request request, Response response, Throwable throwable) {
    int statusCode = response.getStatus();
    // and that error has not been reported.
    if (statusCode < 400 || response.getContentWritten() > 0 || !response.setErrorReported()) {
        return;
    }
    // If an error has occurred that prevents further I/O, don't waste time
    // producing an error report that will never be read
    AtomicBoolean result = new AtomicBoolean(false);
    response.getCoyoteResponse().action(ActionCode.IS_IO_ALLOWED, result);
    if (!result.get()) {
        return;
    }
    StringManager smClient = StringManager.getManager(Constants.Package, request.getLocales());
    response.setLocale(smClient.getLocale());
    String type = null;
    if (throwable != null) {
        type = smClient.getString("errorReportValve.exceptionReport");
    } else {
        type = smClient.getString("errorReportValve.statusReport");
    }
    String message = response.getMessage();
    if (message == null && throwable != null) {
        message = throwable.getMessage();
    }
    String description = null;
    description = smClient.getString("http." + statusCode + ".desc");
    if (description == null) {
        if (message == null || message.isEmpty()) {
            return;
        } else {
            description = smClient.getString("errorReportValve.noDescription");
        }
    }
    String jsonReport = "{\n" + "  \"type\": \"" + type + "\",\n" + "  \"message\": \"" + message + "\",\n" + "  \"description\": \"" + description + "\"\n" + "}";
    try {
        try {
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
        } catch (Throwable t) {
            ExceptionUtils.handleThrowable(t);
            if (container.getLogger().isDebugEnabled()) {
                container.getLogger().debug("status.setContentType", t);
            }
        }
        Writer writer = response.getReporter();
        if (writer != null) {
            writer.write(jsonReport);
            response.finishResponse();
            return;
        }
    } catch (IOException | IllegalStateException e) {
    // Ignore
    }
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) IOException(java.io.IOException) Writer(java.io.Writer) StringManager(org.apache.tomcat.util.res.StringManager)

Example 5 with StringManager

use of org.apache.tomcat.util.res.StringManager in project tomcat by apache.

the class ErrorReportValve method report.

// ------------------------------------------------------ Protected Methods
/**
 * Prints out an error report.
 *
 * @param request The request being processed
 * @param response The response being generated
 * @param throwable The exception that occurred (which possibly wraps
 *  a root cause exception
 */
protected void report(Request request, Response response, Throwable throwable) {
    int statusCode = response.getStatus();
    // and that error has not been reported.
    if (statusCode < 400 || response.getContentWritten() > 0 || !response.setErrorReported()) {
        return;
    }
    // If an error has occurred that prevents further I/O, don't waste time
    // producing an error report that will never be read
    AtomicBoolean result = new AtomicBoolean(false);
    response.getCoyoteResponse().action(ActionCode.IS_IO_ALLOWED, result);
    if (!result.get()) {
        return;
    }
    ErrorPage errorPage = null;
    if (throwable != null) {
        errorPage = errorPageSupport.find(throwable);
    }
    if (errorPage == null) {
        errorPage = errorPageSupport.find(statusCode);
    }
    if (errorPage == null) {
        // Default error page
        errorPage = errorPageSupport.find(0);
    }
    if (errorPage != null) {
        if (sendErrorPage(errorPage.getLocation(), response)) {
            // error page.
            return;
        }
    }
    String message = Escape.htmlElementContent(response.getMessage());
    if (message == null) {
        if (throwable != null) {
            String exceptionMessage = throwable.getMessage();
            if (exceptionMessage != null && exceptionMessage.length() > 0) {
                try (Scanner scanner = new Scanner(exceptionMessage)) {
                    message = Escape.htmlElementContent(scanner.nextLine());
                }
            }
        }
        if (message == null) {
            message = "";
        }
    }
    // Do nothing if there is no reason phrase for the specified status code and
    // no error message provided
    String reason = null;
    String description = null;
    StringManager smClient = StringManager.getManager(Constants.Package, request.getLocales());
    response.setLocale(smClient.getLocale());
    try {
        reason = smClient.getString("http." + statusCode + ".reason");
        description = smClient.getString("http." + statusCode + ".desc");
    } catch (Throwable t) {
        ExceptionUtils.handleThrowable(t);
    }
    if (reason == null || description == null) {
        if (message.isEmpty()) {
            return;
        } else {
            reason = smClient.getString("errorReportValve.unknownReason");
            description = smClient.getString("errorReportValve.noDescription");
        }
    }
    StringBuilder sb = new StringBuilder();
    sb.append("<!doctype html><html lang=\"");
    sb.append(smClient.getLocale().getLanguage()).append("\">");
    sb.append("<head>");
    sb.append("<title>");
    sb.append(smClient.getString("errorReportValve.statusHeader", String.valueOf(statusCode), reason));
    sb.append("</title>");
    sb.append("<style type=\"text/css\">");
    sb.append(TomcatCSS.TOMCAT_CSS);
    sb.append("</style>");
    sb.append("</head><body>");
    sb.append("<h1>");
    sb.append(smClient.getString("errorReportValve.statusHeader", String.valueOf(statusCode), reason)).append("</h1>");
    if (isShowReport()) {
        sb.append("<hr class=\"line\" />");
        sb.append("<p><b>");
        sb.append(smClient.getString("errorReportValve.type"));
        sb.append("</b> ");
        if (throwable != null) {
            sb.append(smClient.getString("errorReportValve.exceptionReport"));
        } else {
            sb.append(smClient.getString("errorReportValve.statusReport"));
        }
        sb.append("</p>");
        if (!message.isEmpty()) {
            sb.append("<p><b>");
            sb.append(smClient.getString("errorReportValve.message"));
            sb.append("</b> ");
            sb.append(message).append("</p>");
        }
        sb.append("<p><b>");
        sb.append(smClient.getString("errorReportValve.description"));
        sb.append("</b> ");
        sb.append(description);
        sb.append("</p>");
        if (throwable != null) {
            String stackTrace = getPartialServletStackTrace(throwable);
            sb.append("<p><b>");
            sb.append(smClient.getString("errorReportValve.exception"));
            sb.append("</b></p><pre>");
            sb.append(Escape.htmlElementContent(stackTrace));
            sb.append("</pre>");
            int loops = 0;
            Throwable rootCause = throwable.getCause();
            while (rootCause != null && (loops < 10)) {
                stackTrace = getPartialServletStackTrace(rootCause);
                sb.append("<p><b>");
                sb.append(smClient.getString("errorReportValve.rootCause"));
                sb.append("</b></p><pre>");
                sb.append(Escape.htmlElementContent(stackTrace));
                sb.append("</pre>");
                // In case root cause is somehow heavily nested
                rootCause = rootCause.getCause();
                loops++;
            }
            sb.append("<p><b>");
            sb.append(smClient.getString("errorReportValve.note"));
            sb.append("</b> ");
            sb.append(smClient.getString("errorReportValve.rootCauseInLogs"));
            sb.append("</p>");
        }
        sb.append("<hr class=\"line\" />");
    }
    if (isShowServerInfo()) {
        sb.append("<h3>").append(ServerInfo.getServerInfo()).append("</h3>");
    }
    sb.append("</body></html>");
    try {
        try {
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
        } catch (Throwable t) {
            ExceptionUtils.handleThrowable(t);
            if (container.getLogger().isDebugEnabled()) {
                container.getLogger().debug("status.setContentType", t);
            }
        }
        Writer writer = response.getReporter();
        if (writer != null) {
            // If writer is null, it's an indication that the response has
            // been hard committed already, which should never happen
            writer.write(sb.toString());
            response.finishResponse();
        }
    } catch (IOException | IllegalStateException e) {
    // Ignore
    }
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) Scanner(java.util.Scanner) ErrorPage(org.apache.tomcat.util.descriptor.web.ErrorPage) IOException(java.io.IOException) Writer(java.io.Writer) StringManager(org.apache.tomcat.util.res.StringManager)

Aggregations

StringManager (org.apache.tomcat.util.res.StringManager)27 PrintWriter (java.io.PrintWriter)9 IOException (java.io.IOException)8 ContextName (org.apache.catalina.util.ContextName)8 Context (org.apache.catalina.Context)6 Manager (org.apache.catalina.Manager)6 UnknownHostException (java.net.UnknownHostException)5 DistributedManager (org.apache.catalina.DistributedManager)4 Session (org.apache.catalina.Session)4 ServletException (jakarta.servlet.ServletException)3 Writer (java.io.Writer)3 InetAddress (java.net.InetAddress)3 ArrayList (java.util.ArrayList)2 Locale (java.util.Locale)2 Scanner (java.util.Scanner)2 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)2 ServletException (javax.servlet.ServletException)2 Container (org.apache.catalina.Container)2 ServletContext (jakarta.servlet.ServletContext)1 HttpSession (jakarta.servlet.http.HttpSession)1