Author: violetagg
Date: Fri Apr 25 11:14:52 2014
New Revision: 1589994
URL: http://svn.apache.org/r1589994
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=56383
Merged revision 1589967 from tomcat/trunk:
Properties for disabling server information and error report are added to the
o.a.catalina.valves.ErrorReportValve. Based on the patch provided by Nick Bunn.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/ErrorReportValve.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/mbeans-descriptors.xml
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
tomcat/tc7.0.x/trunk/webapps/docs/config/valve.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1589967
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/ErrorReportValve.java
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/ErrorReportValve.java?rev=1589994&r1=1589993&r2=1589994&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/ErrorReportValve.java
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/ErrorReportValve.java
Fri Apr 25 11:14:52 2014
@@ -48,6 +48,10 @@ import org.apache.tomcat.util.res.String
*/
public class ErrorReportValve extends ValveBase {
+ protected boolean showReport = true;
+
+ protected boolean showServerInfo = true;
+
//------------------------------------------------------ Constructor
public ErrorReportValve() {
super(true);
@@ -199,69 +203,74 @@ public class ErrorReportValve extends Va
StringBuilder sb = new StringBuilder();
- sb.append("<html><head><title>");
- sb.append(ServerInfo.getServerInfo()).append(" - ");
- sb.append(smClient.getString("errorReportValve.errorReport"));
- sb.append("</title>");
- sb.append("<style><!--");
- sb.append(org.apache.catalina.util.TomcatCSS.TOMCAT_CSS);
- sb.append("--></style> ");
+ sb.append("<html><head>");
+ if(showServerInfo || showReport){
+ sb.append("<title>");
+ if(showServerInfo) {
+ sb.append(ServerInfo.getServerInfo()).append(" - ");
+ }
+ sb.append(smClient.getString("errorReportValve.errorReport"));
+ sb.append("</title>");
+ sb.append("<style><!--");
+ sb.append(org.apache.catalina.util.TomcatCSS.TOMCAT_CSS);
+ sb.append("--></style> ");
+ }
sb.append("</head><body>");
sb.append("<h1>");
sb.append(smClient.getString("errorReportValve.statusHeader",
"" + statusCode, message)).append("</h1>");
- sb.append("<HR size=\"1\" noshade=\"noshade\">");
- sb.append("<p><b>type</b> ");
- if (throwable != null) {
- sb.append(smClient.getString("errorReportValve.exceptionReport"));
- } else {
- sb.append(smClient.getString("errorReportValve.statusReport"));
- }
- sb.append("</p>");
- sb.append("<p><b>");
- sb.append(smClient.getString("errorReportValve.message"));
- sb.append("</b> <u>");
- sb.append(message).append("</u></p>");
- sb.append("<p><b>");
- sb.append(smClient.getString("errorReportValve.description"));
- sb.append("</b> <u>");
- sb.append(report);
- sb.append("</u></p>");
-
- if (throwable != null) {
-
- String stackTrace = getPartialServletStackTrace(throwable);
+ if (showReport) {
+ sb.append("<HR size=\"1\" noshade=\"noshade\">");
+ sb.append("<p><b>type</b> ");
+ if (throwable != null) {
+
sb.append(smClient.getString("errorReportValve.exceptionReport"));
+ } else {
+ sb.append(smClient.getString("errorReportValve.statusReport"));
+ }
+ sb.append("</p>");
+ sb.append("<p><b>");
+ sb.append(smClient.getString("errorReportValve.message"));
+ sb.append("</b> <u>");
+ sb.append(message).append("</u></p>");
sb.append("<p><b>");
- sb.append(smClient.getString("errorReportValve.exception"));
- sb.append("</b> <pre>");
- sb.append(RequestUtil.filter(stackTrace));
- sb.append("</pre></p>");
-
- int loops = 0;
- Throwable rootCause = throwable.getCause();
- while (rootCause != null && (loops < 10)) {
- stackTrace = getPartialServletStackTrace(rootCause);
+ sb.append(smClient.getString("errorReportValve.description"));
+ sb.append("</b> <u>");
+ sb.append(report);
+ sb.append("</u></p>");
+ if (throwable != null) {
+
+ String stackTrace = getPartialServletStackTrace(throwable);
sb.append("<p><b>");
- sb.append(smClient.getString("errorReportValve.rootCause"));
+ sb.append(smClient.getString("errorReportValve.exception"));
sb.append("</b> <pre>");
sb.append(RequestUtil.filter(stackTrace));
sb.append("</pre></p>");
- // 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> <u>");
- sb.append(smClient.getString("errorReportValve.rootCauseInLogs",
- ServerInfo.getServerInfo()));
- sb.append("</u></p>");
+ 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> <pre>");
+ sb.append(RequestUtil.filter(stackTrace));
+ sb.append("</pre></p>");
+ // 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> <u>");
+
sb.append(smClient.getString("errorReportValve.rootCauseInLogs",
+ showServerInfo?ServerInfo.getServerInfo():""));
+ sb.append("</u></p>");
- sb.append("<HR size=\"1\" noshade=\"noshade\">");
- sb.append("<h3>").append(ServerInfo.getServerInfo()).append("</h3>");
+ }
+ sb.append("<HR size=\"1\" noshade=\"noshade\">");
+ }
+
sb.append("<h3>").append(showServerInfo?ServerInfo.getServerInfo():"").append("</h3>");
sb.append("</body></html>");
try {
@@ -314,4 +323,30 @@ public class ErrorReportValve extends Va
}
return trace.toString();
}
+
+ /**
+ * Enables/Disables full error reports
+ *
+ * @param showReport
+ */
+ public void setShowReport(boolean showReport) {
+ this.showReport = showReport;
+ }
+
+ public boolean isShowReport() {
+ return showReport;
+ }
+
+ /**
+ * Enables/Disables server info on error pages
+ *
+ * @param showServerInfo
+ */
+ public void setShowServerInfo(boolean showServerInfo) {
+ this.showServerInfo = showServerInfo;
+ }
+
+ public boolean isShowServerInfo() {
+ return showServerInfo;
+ }
}
Modified:
tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/mbeans-descriptors.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/mbeans-descriptors.xml?rev=1589994&r1=1589993&r2=1589994&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/mbeans-descriptors.xml
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/valves/mbeans-descriptors.xml
Fri Apr 25 11:14:52 2014
@@ -194,6 +194,16 @@
type="java.lang.String"
writeable="false"/>
+ <attribute name="showReport"
+ description="Enables/Disables full error reports"
+ is="true"
+ type="boolean"/>
+
+ <attribute name="showServerInfo"
+ description="Enables/Disables server info on error pages"
+ is="true"
+ type="boolean"/>
+
</mbean>
<mbean name="ExtendedAccessLogValve"
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1589994&r1=1589993&r2=1589994&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Fri Apr 25 11:14:52 2014
@@ -92,6 +92,11 @@
time is added to the log files. Patch is provided by Danila Galimov.
(violetagg)
</add>
+ <add>
+ <bug>56383</bug>: Properties for disabling server information and error
+ report are added to the
<code>org.apache.catalina.valves.ErrorReportValve</code>.
+ Based on the patch provided by Nick Bunn. (violetagg)
+ </add>
<fix>
Only create XML parsing objects if required and fix associated
potential
memory leak in the default Servlet. (markt)
Modified: tomcat/tc7.0.x/trunk/webapps/docs/config/valve.xml
URL:
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/config/valve.xml?rev=1589994&r1=1589993&r2=1589994&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/config/valve.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/config/valve.xml Fri Apr 25 11:14:52 2014
@@ -328,6 +328,54 @@
</section>
+<section name="Error Report Valve">
+
+ <subsection name="Introduction">
+
+ <p>The <strong>Error Report Valve</strong> is a simple error handler
+ for HTTP status codes that will generate and return HTML error pages.</p>
+
+ <p><strong>NOTE:</strong> Disabling both showServerInfo and showReport will
+ only return the HTTP status code and remove all CSS.</p>
+
+ </subsection>
+
+ <subsection name="Attributes">
+
+ <p>The <strong>Error Report Valve</strong> supports the following
+ configuration attributes:</p>
+
+ <attributes>
+
+ <attribute name="className" required="true">
+ <p>Java class name of the implementation to use. This MUST be set to
+ <strong>org.apache.catalina.valves.ErrorReportValve</strong> to use the
+ default error report valve.</p>
+ </attribute>
+
+ <attribute name="showReport" required="false">
+ <p>Flag to determine if the error report is presented when an error
occurs.
+ If set to <code>false</code>, then the error report is not in
+ the HTML response.
+ Default value: <code>true</code>
+ </p>
+ </attribute>
+
+ <attribute name="showServerInfo" required="false">
+ <p>Flag to determine if server information is presented when an error
occurs.
+ If set to <code>false</code>, then the server version is not
returned in
+ the HTML response.
+ Default value: <code>true</code>
+ </p>
+ </attribute>
+
+ </attributes>
+
+ </subsection>
+
+</section>
+
+
<section name="Extended Access Log Valve">
<subsection name="Introduction">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]