package net.i2p.servlet; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; import java.nio.charset.Charset; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.ServletException; import net.i2p.CoreVersion; import net.i2p.I2PAppContext; import net.i2p.data.DataHelper; import net.i2p.util.NativeBigInteger; import net.i2p.util.Translate; import org.eclipse.jetty.server.Server; /** * Common servlet for errors * This is intended for webapps and local plugins. * It is not appropriate for eepsites or remotely-accessible plugins, * as it uses local console resources. * * See http://www.eclipse.org/jetty/documentation/current/custom-error-pages.html * for how to add to web.xml or see examples in bundled webapps. * * Init parameters: *
"); out.println(_t("Please report bugs on {0} or {1}.", "trac.i2p2.i2p", "trac.i2p2.de")); out.println("
"); out.println(_t("Please include this information in bug reports") + ':'); out.print("
"); out.println(_t("Error {0}", errorCode) + ": " + errorURI + " " + errorMsg); out.println("
");
if (errorCause != null) {
StringWriter sw = new StringWriter(2048);
PrintWriter pw = new PrintWriter(sw);
errorCause.printStackTrace(pw);
pw.flush();
String trace = sw.toString();
trace = trace.replace("&", "&").replace("<", "<").replace(">", ">");
trace = trace.replace("\n", "
\n");
out.print(trace);
}
out.print("
");
// router puts its version here
String version = System.getProperty("router.version", CoreVersion.VERSION);
out.println("I2P version: " + version + "
");
out.println("Java version: " + System.getProperty("java.vendor") + ' ' + System.getProperty("java.version") +
" (" + System.getProperty("java.runtime.name") + ' ' + System.getProperty("java.runtime.version") + ")
");
out.println("Wrapper version: " + System.getProperty("wrapper.version", "none") + "
");
try {
// wrap in case not running on Jetty
out.println("Server version: " + Server.getVersion() + "
");
} catch (Throwable t) {}
out.println("Platform: " + System.getProperty("os.name") + ' ' + System.getProperty("os.arch") +
' ' + System.getProperty("os.version") + "
");
out.println("Processor: " + NativeBigInteger.cpuModel() + " (" + NativeBigInteger.cpuType() + ")
");
out.println("Jbigi: " + NativeBigInteger.loadStatus() + "
");
out.println("Encoding: " + System.getProperty("file.encoding") + "
");
out.println("Charset: " + Charset.defaultCharset().name());
out.println("
"); out.println(_t("Note that system information, log timestamps, and log messages may provide clues to your location; please review everything you include in a bug report.")); out.println("
"); } else { out.println("Unsupported error " + errorCode + "
"); } } /** translate a string, with webapp bundle */ protected String _w(String s) { return Translate.getString(s, _context, _defaultBundle); } /** translate a string, console bundle */ protected String _t(String s) { return Translate.getString(s, _context, CONSOLE_BUNDLE_NAME); } /** translate a string, console bundle */ protected String _t(String s, Object o) { return Translate.getString(s, o, _context, CONSOLE_BUNDLE_NAME); } /** translate a string, console bundle */ protected String _t(String s, Object o, Object o2) { return Translate.getString(s, o, o2, _context, CONSOLE_BUNDLE_NAME); } }