From 92b9d0a99662fde897fd785f921dc8332a06a5ac Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 00:56:48 +0000 Subject: [PATCH 01/33] First cut at migrating to Jetty 6 and prep for using an external Jetty 6 package. - Add several jars from the Jetty 6 distribution - Update jetty.xml - Add context XML files - Update WorkingDir to migrate the content XML files - Update RouterConsoleRunner and LocaleWebAppHandler - Remove all old Jetty 5.1.15 local mods; this will break Seedless using a custom Server() constructor - Update I2PRequestLog to be a mod of NCSARequestLog from 6.1.26 - Put I2PRequestLog in its own jar - Copy MultiPartRequest and other required classes from Jetty 5.1.15 and add it to susimail, as the replacement MultiPartFilter in Jetty 6 is difficult to migrate to, and does not support content-type - Update i2psnark for Jetty 6 - Disable i2psnark RunStandalone, unused and instantiated Jetty 5 - Fix up all webapp build.xml to reference new jars Not yet working: Plugin/webapp run detection and stopping, eepsite CGI Not well tested: Plugins, classpaths, webapps --- apps/i2psnark/java/build.xml | 3 +- .../org/klomp/snark/web/I2PSnarkServlet.java | 46 +- .../org/klomp/snark/web/RunStandalone.java | 6 + apps/i2ptunnel/java/build.xml | 2 + apps/jetty/build.xml | 60 +- .../src/org/mortbay/http/HttpContext.java | 2198 ----------------- .../src/org/mortbay/http/NCSARequestLog.java | 505 ---- .../mortbay/http/handler/ResourceHandler.java | 809 ------ .../java/src/org/mortbay/jetty/Server.java | 617 ----- .../src/org/mortbay/util/FileResource.java | 352 --- .../src/org/mortbay/util/InetAddrPort.java | 253 -- .../java/src/org/mortbay/util/Resource.java | 431 ---- apps/jetty/java/src/org/mortbay/util/URI.java | 1010 -------- apps/routerconsole/java/build.xml | 13 + .../i2p/router/web/ConfigClientsHandler.java | 4 +- .../i2p/router/web/LocaleWebAppHandler.java | 44 +- .../src/net/i2p/router/web/LogsHelper.java | 4 +- .../src/net/i2p/router/web/PluginStarter.java | 12 +- .../i2p/router/web/RouterConsoleRunner.java | 193 +- .../i2p/router/web/WebAppConfiguration.java | 19 +- .../src/net/i2p/router/web/WebAppStarter.java | 85 +- apps/susidns/src/build.xml | 1 + apps/susimail/build.xml | 1 + apps/susimail/src/WEB-INF/web.xml | 24 +- .../src/i2p/susi/webmail/RequestWrapper.java | 13 + build.properties | 2 +- build.xml | 55 +- installer/resources/clients.config | 2 +- .../eepsite/contexts/base-context.xml | 25 + .../eepsite/contexts/cgi-context.xml | 33 + .../docroot}/help/index.html | 0 .../docroot}/help/index_de.html | 0 .../docroot}/help/index_fr.html | 0 .../docroot}/help/index_na.html | 0 .../docroot}/help/index_nl.html | 0 .../docroot}/help/index_ru.html | 0 .../docroot}/help/index_sv.html | 0 .../docroot}/help/lib/bg.png | Bin .../docroot}/help/lib/brown.png | Bin .../docroot}/help/lib/eepsite.css | 0 .../docroot}/help/lib/h2bg.png | Bin .../docroot}/help/lib/itoopie.png | Bin .../docroot}/help/pagetemplate.html | 0 .../docroot}/index.html | 0 .../docroot}/robots.txt | 0 .../resources/eepsite/etc/realm.properties | 21 + installer/resources/eepsite/jetty.xml | 269 ++ installer/resources/jetty.xml | 238 -- .../net/i2p/router/startup/WorkingDir.java | 14 +- 49 files changed, 757 insertions(+), 6607 deletions(-) delete mode 100644 apps/jetty/java/src/org/mortbay/http/HttpContext.java delete mode 100644 apps/jetty/java/src/org/mortbay/http/NCSARequestLog.java delete mode 100644 apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java delete mode 100644 apps/jetty/java/src/org/mortbay/jetty/Server.java delete mode 100644 apps/jetty/java/src/org/mortbay/util/FileResource.java delete mode 100644 apps/jetty/java/src/org/mortbay/util/InetAddrPort.java delete mode 100644 apps/jetty/java/src/org/mortbay/util/Resource.java delete mode 100644 apps/jetty/java/src/org/mortbay/util/URI.java create mode 100644 installer/resources/eepsite/contexts/base-context.xml create mode 100644 installer/resources/eepsite/contexts/cgi-context.xml rename installer/resources/{eepsite.help => eepsite/docroot}/help/index.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/index_de.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/index_fr.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/index_na.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/index_nl.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/index_ru.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/index_sv.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/lib/bg.png (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/lib/brown.png (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/lib/eepsite.css (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/lib/h2bg.png (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/lib/itoopie.png (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/help/pagetemplate.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/index.html (100%) rename installer/resources/{eepsite.help => eepsite/docroot}/robots.txt (100%) create mode 100644 installer/resources/eepsite/etc/realm.properties create mode 100644 installer/resources/eepsite/jetty.xml delete mode 100644 installer/resources/jetty.xml diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml index edc92ed5b1..99fe0adc01 100644 --- a/apps/i2psnark/java/build.xml +++ b/apps/i2psnark/java/build.xml @@ -19,6 +19,7 @@ + @@ -34,7 +35,7 @@ debug="true" deprecation="on" source="1.5" target="1.5" destdir="./build/obj" includeAntRuntime="false" - classpath="../../../core/java/build/i2p.jar:../../jetty/jettylib/org.mortbay.jetty.jar:../../jetty/jettylib/javax.servlet.jar:../../ministreaming/java/build/mstreaming.jar" > + classpath="../../../core/java/build/i2p.jar:../../jetty/jettylib/org.mortbay.jetty.jar:../../jetty/jettylib/javax.servlet.jar:../../jetty/jettylib/jetty-util.jar:../../ministreaming/java/build/mstreaming.jar" > diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 4898ddaf4a..a724fb8938 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -43,17 +43,16 @@ import org.klomp.snark.SnarkManager; import org.klomp.snark.Storage; import org.klomp.snark.TrackerClient; -import org.mortbay.http.HttpResponse; -import org.mortbay.jetty.servlet.Default; -import org.mortbay.util.Resource; -import org.mortbay.util.URI; +import org.mortbay.jetty.servlet.DefaultServlet; +import org.mortbay.resource.Resource; +import org.mortbay.util.URIUtil; /** * We extend Default instead of HTTPServlet so we can handle * i2psnark/ file requests with http:// instead of the flaky and * often-blocked-by-the-browser file:// */ -public class I2PSnarkServlet extends Default { +public class I2PSnarkServlet extends DefaultServlet { private I2PAppContext _context; private Log _log; private SnarkManager _manager; @@ -99,13 +98,17 @@ public class I2PSnarkServlet extends Default { * and we can't get any resources (like icons) out of the .war */ @Override - protected Resource getResource(String pathInContext) throws IOException + public Resource getResource(String pathInContext) { if (pathInContext == null || pathInContext.equals("/") || pathInContext.equals("/index.jsp") || pathInContext.equals("/index.html") || pathInContext.startsWith("/_icons/")) return super.getResource(pathInContext); // files in the i2psnark/ directory - return _resourceBase.addPath(pathInContext); + try { + return _resourceBase.addPath(pathInContext); + } catch (IOException ioe) { + throw new RuntimeException(ioe); + } } /** @@ -113,10 +116,11 @@ public class I2PSnarkServlet extends Default { * @since 0.8.3 */ @Override - public void handleGet(HttpServletRequest request, HttpServletResponse response, String pathInContext, Resource resource, boolean endsWithSlash) throws ServletException, IOException { - if (resource.getName().startsWith("jar:file:")) - response.setHeader("Cache-Control", "max-age=86400"); // cache for a day - super.handleGet(request, response, pathInContext, resource, endsWithSlash); + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { +//////////////////////////////////// + //if (resource.getName().startsWith("jar:file:")) + // response.setHeader("Cache-Control", "max-age=86400"); // cache for a day + super.doGet(request, response); } /** @@ -144,7 +148,7 @@ public class I2PSnarkServlet extends Default { // since we are not overriding handle*(), do this here String method = req.getMethod(); if (!(method.equals("GET") || method.equals("HEAD") || method.equals("POST"))) { - resp.sendError(HttpResponse.__405_Method_Not_Allowed); + resp.sendError(405); return; } _themePath = "/themes/snark/" + _manager.getTheme() + '/'; @@ -157,20 +161,20 @@ public class I2PSnarkServlet extends Default { if (path.endsWith("/")) { // bypass the horrid Resource.getListHTML() String pathInfo = req.getPathInfo(); - String pathInContext = URI.addPaths(path, pathInfo); + String pathInContext = URIUtil.addPaths(path, pathInfo); req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding("UTF-8"); resp.setContentType("text/html; charset=UTF-8"); Resource resource = getResource(pathInContext); if (resource == null || (!resource.exists())) { - resp.sendError(HttpResponse.__404_Not_Found); + resp.sendError(404); } else { - String base = URI.addPaths(req.getRequestURI(), "/"); + String base = URIUtil.addPaths(req.getRequestURI(), "/"); String listing = getListHTML(resource, base, true, method.equals("POST") ? req.getParameterMap() : null); if (listing != null) resp.getWriter().write(listing); else // shouldn't happen - resp.sendError(HttpResponse.__404_Not_Found); + resp.sendError(404); } } else { super.service(req, resp); @@ -1680,7 +1684,7 @@ public class I2PSnarkServlet extends Default { StringBuilder buf=new StringBuilder(4096); buf.append(DOCTYPE + ""); - String title = URI.decodePath(base); + String title = URIUtil.decodePath(base); if (title.startsWith("/i2psnark/")) title = title.substring("/i2psnark/".length()); @@ -1783,7 +1787,7 @@ public class I2PSnarkServlet extends Default { .append(_("Priority")).append("</th>"); buf.append("</tr></thead>\n"); buf.append("<tr><td colspan=\"" + (showPriority ? '4' : '3') + "\" class=\"ParentDir\"><A HREF=\""); - buf.append(URI.addPaths(base,"../")); + buf.append(URIUtil.addPaths(base,"../")); buf.append("\"><img alt=\"\" border=\"0\" src=\"" + _imgPath + "up.png\"> ") .append(_("Up to higher level directory")).append("</A></td></tr>\n"); @@ -1793,7 +1797,7 @@ public class I2PSnarkServlet extends Default { boolean showSaveButton = false; for (int i=0 ; i< ls.length ; i++) { - String encoded=URI.encodePath(ls[i]); + String encoded=URIUtil.encodePath(ls[i]); // bugfix for I2P - Backport from Jetty 6 (zero file lengths and last-modified times) // http://jira.codehaus.org/browse/JETTY-361?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel#issue-tabs // See resource.diff attachment @@ -1849,9 +1853,9 @@ public class I2PSnarkServlet extends Default { } } - String path=URI.addPaths(base,encoded); + String path=URIUtil.addPaths(base,encoded); if (item.isDirectory() && !path.endsWith("/")) - path=URI.addPaths(path,"/"); + path=URIUtil.addPaths(path,"/"); String icon = toIcon(item); if (complete) { diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/RunStandalone.java b/apps/i2psnark/java/src/org/klomp/snark/web/RunStandalone.java index 2880676a25..2bf9124101 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/RunStandalone.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/RunStandalone.java @@ -31,6 +31,8 @@ public class RunStandalone { if (!workDirCreated) System.err.println("ERROR: Unable to create Jetty temporary work directory"); + throw new RuntimeException("unsupported"); +/**** try { _server = new Server("jetty-i2psnark.xml"); // just blow up NPE if we don't have a context @@ -39,13 +41,17 @@ public class RunStandalone { } catch (Exception e) { e.printStackTrace(); } +****/ } public void stop() { + throw new RuntimeException("unsupported"); +/**** try { _server.stop(); } catch (InterruptedException ie) { ie.printStackTrace(); } +****/ } } diff --git a/apps/i2ptunnel/java/build.xml b/apps/i2ptunnel/java/build.xml index 1778ffb872..e1c88bcce9 100644 --- a/apps/i2ptunnel/java/build.xml +++ b/apps/i2ptunnel/java/build.xml @@ -169,6 +169,7 @@ <pathelement location="../../jetty/jettylib/javax.servlet.jar" /> <pathelement location="../../jetty/jettylib/commons-logging.jar" /> <pathelement location="../../jetty/jettylib/commons-el.jar" /> + <pathelement location="../../jetty/jettylib/jsp-api.jar" /> <pathelement location="../../jetty/jettylib/ant.jar" /> <pathelement location="build/i2ptunnel.jar" /> </classpath> @@ -190,6 +191,7 @@ <pathelement location="../../jetty/jettylib/javax.servlet.jar" /> <pathelement location="../../jetty/jettylib/commons-logging.jar" /> <pathelement location="../../jetty/jettylib/commons-el.jar" /> + <pathelement location="../../jetty/jettylib/jsp-api.jar" /> <pathelement location="build/i2ptunnel.jar" /> </classpath> </javac> diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index e686e364a7..0b346bdee1 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -1,10 +1,11 @@ <?xml version="1.0" encoding="UTF-8"?> <project basedir="." default="all" name="jetty"> - <property name="jetty.base" value="jetty-5.1.15" /> - <property name="jetty.sha1" value="3a7a3de50f86f0cdb23c33aec632ea7f44132c5e" /> - <property name="jetty.filename" value="${jetty.base}.tgz" /> - <property name="jetty.url" value="http://dist.codehaus.org/jetty/jetty-5.1.x/${jetty.filename}" /> + <property name="jetty.ver" value="6.1.26" /> + <property name="jetty.base" value="jetty-${jetty.ver}" /> + <property name="jetty.sha1" value="9485913f1a1945a849a90f1a34853d22350bc524" /> + <property name="jetty.filename" value="${jetty.base}.zip" /> + <property name="jetty.url" value="http://dist.codehaus.org/jetty/${jetty.base}/${jetty.filename}" /> <property name="verified.filename" value="verified.txt" /> <property name="javac.compilerargs" value="" /> @@ -64,26 +65,46 @@ </target> <target name="extractJettylib" unless="jetty.zip.extracted" > + <!-- for .tgz --> + <!-- <gunzip src="${jetty.filename}" dest="jetty.tar" /> <untar src="jetty.tar" dest="." /> + --> + <!-- for .zip --> + <unzip src="${jetty.filename}" dest="." /> <mkdir dir="jettylib" /> - <copy todir="jettylib" preservelastmodified="true" > - <fileset dir="${jetty.base}/lib"> - <include name="*.jar" /> - </fileset> - <fileset dir="${jetty.base}/ext"> - <include name="ant.jar" /> - <include name="commons-el.jar" /> - <include name="commons-logging.jar" /> - <include name="jasper-compiler.jar" /> - <include name="jasper-runtime.jar" /> - </fileset> - </copy> + <!-- We copy everything to names without the version numbers so we + can update them later. Where there was something similar in Jetty 5, + we use the same names. + Reasons for inclusion: + start.jar: Needed for clients.config startup of eepsites + jetty-util-xxx.jar: LifeCycle (base class for stuff), URIUtil (used in i2psnark) + jetty-sslengine-xxx.jar: SSL NIO Connector for console + jetty-java5-threadpool-xxx.jar: Concurrent thread pool for eepsite + commons-logging.jar: JspC compiler + TODO which of these are available in the Ubuntu packages? + --> + <copy preservelastmodified="true" file="${jetty.base}/lib/${jetty.base}.jar" tofile="jettylib/org.mortbay.jetty.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/jetty-util-${jetty.ver}.jar" tofile="jettylib/jetty-util.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/servlet-api-2.5-20081211.jar" tofile="jettylib/javax.servlet.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/ext/jetty-sslengine-${jetty.ver}.jar" tofile="jettylib/jetty-sslengine.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/ext/jetty-java5-threadpool-${jetty.ver}.jar" tofile="jettylib/jetty-threadpool.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/jsp-2.0/ant-1.6.5.jar" tofile="jettylib/ant.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/jsp-2.0/commons-el-1.0.jar" tofile="jettylib/commons-el.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/jsp-2.0/jasper-compiler-5.5.15.jar" tofile="jettylib/jasper-compiler.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/jsp-2.0/jasper-runtime-5.5.15.jar" tofile="jettylib/jasper-runtime.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/lib/jsp-2.0/jsp-api-2.0.jar" tofile="jettylib/jsp-api.jar" /> + <copy preservelastmodified="true" file="${jetty.base}/start.jar" tofile="jettylib/jetty-start.jar" /> <delete file="jetty.tar" /> <delete dir="${jetty.base}" /> + <!-- commons-logging.jar not in Jetty 6 but we have it in launch4j so copy it over, we need it + for org.apache.jasper.JspC compiler + --> + <copy preservelastmodified="true" file="../../installer/lib/launch4j/lib/commons-logging.jar" todir="jettylib/" /> </target> <target name="build" depends="jar" /> + <target name="builddep" /> <target name="compile" depends="builddep, ensureJettylib" > <mkdir dir="./build" /> @@ -93,7 +114,7 @@ debug="true" source="1.5" target="1.5" destdir="./build/obj" includeAntRuntime="false" - classpath="./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar" > + classpath="./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar:./jettylib/jetty-util.jar" > <compilerarg line="${javac.compilerargs}" /> </javac> </target> @@ -112,10 +133,13 @@ </exec> </target> + <!-- With Jetty 5 we replaced classes in the jar, but with Jetty 6 we + put our stuff in its own jar so we can work with standard Jetty 6 packages + --> <target name="jar" depends="compile, jarUpToDate, listChangedFiles" unless="jar.uptodate" > <!-- set if unset --> <property name="workspace.changes.tr" value="" /> - <jar destfile="./jettylib/org.mortbay.jetty.jar" basedir="./build/obj" includes="**/*.class" update="true" > + <jar destfile="./jettylib/jetty-i2p.jar" basedir="./build/obj" includes="**/*.class" > <manifest> <attribute name="Build-Date" value="${build.timestamp}" /> <attribute name="Base-Revision" value="${workspace.version}" /> diff --git a/apps/jetty/java/src/org/mortbay/http/HttpContext.java b/apps/jetty/java/src/org/mortbay/http/HttpContext.java deleted file mode 100644 index 1ae1a08b6e..0000000000 --- a/apps/jetty/java/src/org/mortbay/http/HttpContext.java +++ /dev/null @@ -1,2198 +0,0 @@ -// ======================================================================== -// $Id: HttpContext.java,v 1.136 2006/02/21 09:47:43 gregwilkins Exp $ -// Copyright 2000-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== - -package org.mortbay.http; - -import java.io.File; -import java.io.IOException; -import java.io.Serializable; -import java.net.InetAddress; -import java.net.MalformedURLException; -import java.net.Socket; -import java.net.URL; -import java.net.URLClassLoader; -import java.net.UnknownHostException; -import java.security.Permission; -import java.security.PermissionCollection; -import java.security.Permissions; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; - -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; -import org.mortbay.http.ResourceCache.ResourceMetaData; -import org.mortbay.http.handler.ErrorPageHandler; -import org.mortbay.util.Container; -import org.mortbay.util.EventProvider; -import org.mortbay.util.IO; -import org.mortbay.util.LazyList; -import org.mortbay.util.LifeCycle; -import org.mortbay.util.LogSupport; -import org.mortbay.util.MultiException; -import org.mortbay.util.Resource; -import org.mortbay.util.URI; - - -/* ------------------------------------------------------------ */ -/** Context for a collection of HttpHandlers. - * HTTP Context provides an ordered container for HttpHandlers - * that share the same path prefix, filebase, resourcebase and/or - * classpath. - * <p> - * A HttpContext is analagous to a ServletContext in the - * Servlet API, except that it may contain other types of handler - * other than servlets. - * <p> - * A ClassLoader is created for the context and it uses - * Thread.currentThread().getContextClassLoader(); as it's parent loader. - * The class loader is initialized during start(), when a derived - * context calls initClassLoader() or on the first call to loadClass() - * <p> - * - * <B>Note. that order is important when configuring a HttpContext. - * For example, if resource serving is enabled before servlets, then resources - * take priority.</B> - * - * @see HttpServer - * @see HttpHandler - * @see org.mortbay.jetty.servlet.ServletHttpContext - * @version $Id: HttpContext.java,v 1.136 2006/02/21 09:47:43 gregwilkins Exp $ - * @author Greg Wilkins (gregw) - */ -public class HttpContext extends Container - implements LifeCycle, - HttpHandler, - EventProvider, - Serializable -{ - private static Log log = LogFactory.getLog(HttpContext.class); - - /* ------------------------------------------------------------ */ - /** File class path attribute. - * If this name is set as a context init parameter, then the attribute - * name given will be used to set the file classpath for the context as a - * context attribute. - */ - public final static String __fileClassPathAttr= - "org.mortbay.http.HttpContext.FileClassPathAttribute"; - - public final static String __ErrorHandler= - "org.mortbay.http.ErrorHandler"; - - - /* ------------------------------------------------------------ */ - /* ------------------------------------------------------------ */ - // These attributes are serialized by WebApplicationContext, which needs - // to be updated if you add to these - private String _contextPath; - private List _vhosts=new ArrayList(2); - private List _hosts=new ArrayList(2); - private List _handlers=new ArrayList(3); - private Map _attributes = new HashMap(3); - private boolean _redirectNullPath=true; - private boolean _statsOn=false; - private PermissionCollection _permissions; - private boolean _classLoaderJava2Compliant=true; - private ResourceCache _resources; - private String[] _systemClasses=new String [] {"java.","javax.servlet.","javax.xml.","org.mortbay.","org.xml.","org.w3c.","org.apache.commons.logging."}; - private String[] _serverClasses = new String[] {"-org.mortbay.http.PathMap","-org.mortbay.jetty.servlet.Invoker","-org.mortbay.jetty.servlet.JSR154Filter","-org.mortbay.jetty.servlet.Default","org.mortbay.jetty.Server","org.mortbay.http.","org.mortbay.start.","org.mortbay.stop."}; - - /* ------------------------------------------------------------ */ - private String _contextName; - private String _classPath; - private Map _initParams = new HashMap(11); - private UserRealm _userRealm; - private String _realmName; - private PathMap _constraintMap=new PathMap(); - private Authenticator _authenticator; - private RequestLog _requestLog; - - - private String[] _welcomes= - { - "welcome.html", - "index.html", - "index.htm", - "index.jsp" - }; - - - /* ------------------------------------------------------------ */ - private transient boolean _gracefulStop; - private transient ClassLoader _parent; - private transient ClassLoader _loader; - private transient HttpServer _httpServer; - private transient File _tmpDir; - private transient HttpHandler[] _handlersArray; - private transient String[] _vhostsArray; - - - /* ------------------------------------------------------------ */ - transient Object _statsLock=new Object[0]; - transient long _statsStartedAt; - transient int _requests; - transient int _requestsActive; - transient int _requestsActiveMax; - transient int _responses1xx; // Informal - transient int _responses2xx; // Success - transient int _responses3xx; // Redirection - transient int _responses4xx; // Client Error - transient int _responses5xx; // Server Error - - - /* ------------------------------------------------------------ */ - /** Constructor. - */ - public HttpContext() - { - setAttribute(__ErrorHandler, new ErrorPageHandler()); - _resources=new ResourceCache(); - addComponent(_resources); - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param httpServer - * @param contextPathSpec - */ - public HttpContext(HttpServer httpServer,String contextPathSpec) - { - this(); - setHttpServer(httpServer); - setContextPath(contextPathSpec); - } - - /* ------------------------------------------------------------ */ - private void readObject(java.io.ObjectInputStream in) - throws IOException, ClassNotFoundException - { - in.defaultReadObject(); - _statsLock=new Object[0]; - getHandlers(); - for (int i=0;i<_handlersArray.length;i++) - _handlersArray[i].initialize(this); - } - - /* ------------------------------------------------------------ */ - /** Get the ThreadLocal HttpConnection. - * Get the HttpConnection for current thread, if any. This method is - * not static in order to control access. - * @return HttpConnection for this thread. - */ - public HttpConnection getHttpConnection() - { - return HttpConnection.getHttpConnection(); - } - - /* ------------------------------------------------------------ */ - void setHttpServer(HttpServer httpServer) - { - _httpServer=httpServer; - _contextName=null; - - } - - /* ------------------------------------------------------------ */ - public HttpServer getHttpServer() - { - return _httpServer; - } - - /* ------------------------------------------------------------ */ - public void setStopGracefully(boolean graceful) - { - _gracefulStop=graceful; - } - - /* ------------------------------------------------------------ */ - public boolean getStopGracefully() - { - return _gracefulStop; - } - - - /* ------------------------------------------------------------ */ - public static String canonicalContextPathSpec(String contextPathSpec) - { - // check context path - if (contextPathSpec==null || - contextPathSpec.indexOf(',')>=0 || - contextPathSpec.startsWith("*")) - throw new IllegalArgumentException ("Illegal context spec:"+contextPathSpec); - - if(!contextPathSpec.startsWith("/")) - contextPathSpec='/'+contextPathSpec; - - if (contextPathSpec.length()>1) - { - if (contextPathSpec.endsWith("/")) - contextPathSpec+="*"; - else if (!contextPathSpec.endsWith("/*")) - contextPathSpec+="/*"; - } - - return contextPathSpec; - } - - /* ------------------------------------------------------------ */ - public void setContextPath(String contextPathSpec) - { - if (_httpServer!=null) - _httpServer.removeMappings(this); - - contextPathSpec=canonicalContextPathSpec(contextPathSpec); - - if (contextPathSpec.length()>1) - _contextPath=contextPathSpec.substring(0,contextPathSpec.length()-2); - else - _contextPath="/"; - - _contextName=null; - - if (_httpServer!=null) - _httpServer.addMappings(this); - } - - - /* ------------------------------------------------------------ */ - /** - * @return The context prefix - */ - public String getContextPath() - { - return _contextPath; - } - - - /* ------------------------------------------------------------ */ - /** Add a virtual host alias to this context. - * @see #setVirtualHosts - * @param hostname A hostname. A null host name means any hostname is - * acceptable. Host names may String representation of IP addresses. - */ - public void addVirtualHost(String hostname) - { - // Note that null hosts are also added. - if (!_vhosts.contains(hostname)) - { - _vhosts.add(hostname); - _contextName=null; - - if (_httpServer!=null) - { - if (_vhosts.size()==1) - _httpServer.removeMapping(null,this); - _httpServer.addMapping(hostname,this); - } - _vhostsArray=null; - } - } - - /* ------------------------------------------------------------ */ - /** remove a virtual host alias to this context. - * @see #setVirtualHosts - * @param hostname A hostname. A null host name means any hostname is - * acceptable. Host names may String representation of IP addresses. - */ - public void removeVirtualHost(String hostname) - { - // Note that null hosts are also added. - if (_vhosts.remove(hostname)) - { - _contextName=null; - if (_httpServer!=null) - { - _httpServer.removeMapping(hostname,this); - if (_vhosts.size()==0) - _httpServer.addMapping(null,this); - } - _vhostsArray=null; - } - } - - /* ------------------------------------------------------------ */ - /** Set the virtual hosts for the context. - * Only requests that have a matching host header or fully qualified - * URL will be passed to that context with a virtual host name. - * A context with no virtual host names or a null virtual host name is - * available to all requests that are not served by a context with a - * matching virtual host name. - * @param hosts Array of virtual hosts that this context responds to. A - * null host name or null/empty array means any hostname is acceptable. - * Host names may String representation of IP addresses. - */ - public void setVirtualHosts(String[] hosts) - { - List old = new ArrayList(_vhosts); - - if (hosts!=null) - { - for (int i=0;i<hosts.length;i++) - { - boolean existing=old.remove(hosts[i]); - if (!existing) - addVirtualHost(hosts[i]); - } - } - - for (int i=0;i<old.size();i++) - removeVirtualHost((String)old.get(i)); - } - - /* ------------------------------------------------------------ */ - /** Get the virtual hosts for the context. - * Only requests that have a matching host header or fully qualified - * URL will be passed to that context with a virtual host name. - * A context with no virtual host names or a null virtual host name is - * available to all requests that are not served by a context with a - * matching virtual host name. - * @return Array of virtual hosts that this context responds to. A - * null host name or empty array means any hostname is acceptable. - * Host names may be String representation of IP addresses. - */ - public String[] getVirtualHosts() - { - if (_vhostsArray!=null) - return _vhostsArray; - if (_vhosts==null) - _vhostsArray=new String[0]; - else - { - _vhostsArray=new String[_vhosts.size()]; - _vhostsArray=(String[])_vhosts.toArray(_vhostsArray); - } - return _vhostsArray; - } - - - /* ------------------------------------------------------------ */ - /** Set the hosts for the context. - * Set the real hosts that this context will accept requests for. - * If not null or empty, then only requests from HttpListeners for hosts - * in this array are accepted by this context. - * Unlike virutal hosts, this value is not used by HttpServer for - * matching a request to a context. - */ - public void setHosts(String[] hosts) - throws UnknownHostException - { - if (hosts==null || hosts.length==0) - _hosts=null; - else - { - _hosts=new ArrayList(); - for (int i=0;i<hosts.length;i++) - if (hosts[i]!=null) - _hosts.add(InetAddress.getByName(hosts[i])); - } - - } - - /* ------------------------------------------------------------ */ - /** Get the hosts for the context. - */ - public String[] getHosts() - { - if (_hosts==null || _hosts.size()==0) - return null; - String[] hosts=new String[_hosts.size()]; - for (int i=0;i<hosts.length;i++) - { - InetAddress a = (InetAddress)_hosts.get(i); - if (a!=null) - hosts[i]=a.getHostName(); - } - return hosts; - } - - - /* ------------------------------------------------------------ */ - /** Set system classes. - * System classes cannot be overriden by context classloaders. - * @param classes array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as - * negative matches and must be listed before any enclosing packages. - */ - public void setSystemClasses(String[] classes) - { - _systemClasses=classes; - } - - /* ------------------------------------------------------------ */ - /** Get system classes. - * System classes cannot be overriden by context classloaders. - * @return array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as - * negative matches and must be listed before any enclosing packages. Null if not set. - */ - public String[] getSystemClasses() - { - return _systemClasses; - } - - - /* ------------------------------------------------------------ */ - /** Set system classes. - * Servers classes cannot be seen by context classloaders. - * @param classes array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as - * negative matches and must be listed before any enclosing packages. - */ - public void setServerClasses(String[] classes) - { - _serverClasses=classes; - } - - /* ------------------------------------------------------------ */ - /** Get system classes. - * System classes cannot be seen by context classloaders. - * @return array of classname Strings. Names ending with '.' are treated as package names. Names starting with '-' are treated as - * negative matches and must be listed before any enclosing packages. Null if not set. - */ - public String[] getServerClasses() - { - return _serverClasses; - } - - - /* ------------------------------------------------------------ */ - public void setHandlers(HttpHandler[] handlers) - { - List old = new ArrayList(_handlers); - - if (handlers!=null) - { - for (int i=0;i<handlers.length;i++) - { - boolean existing=old.remove(handlers[i]); - if (!existing) - addHandler(handlers[i]); - } - } - - for (int i=0;i<old.size();i++) - removeHandler((HttpHandler)old.get(i)); - } - - /* ------------------------------------------------------------ */ - /** Get all handlers. - * @return List of all HttpHandlers - */ - public HttpHandler[] getHandlers() - { - if (_handlersArray!=null) - return _handlersArray; - if (_handlers==null) - _handlersArray=new HttpHandler[0]; - else - { - _handlersArray=new HttpHandler[_handlers.size()]; - _handlersArray=(HttpHandler[])_handlers.toArray(_handlersArray); - } - return _handlersArray; - } - - - /* ------------------------------------------------------------ */ - /** Add a handler. - * @param i The position in the handler list - * @param handler The handler. - */ - public synchronized void addHandler(int i,HttpHandler handler) - { - _handlers.add(i,handler); - _handlersArray=null; - - HttpContext context = handler.getHttpContext(); - if (context==null) - handler.initialize(this); - else if (context!=this) - throw new IllegalArgumentException("Handler in another HttpContext"); - addComponent(handler); - } - - /* ------------------------------------------------------------ */ - /** Add a HttpHandler to the context. - * @param handler - */ - public synchronized void addHandler(HttpHandler handler) - { - addHandler(_handlers.size(),handler); - } - - /* ------------------------------------------------------------ */ - /** Get handler index. - * @param handler instance - * @return Index of handler in context or -1 if not found. - */ - public int getHandlerIndex(HttpHandler handler) - { - for (int h=0;h<_handlers.size();h++) - { - if ( handler == _handlers.get(h)) - return h; - } - return -1; - } - - /* ------------------------------------------------------------ */ - /** Get a handler by class. - * @param handlerClass - * @return The first handler that is an instance of the handlerClass - */ - public synchronized HttpHandler getHandler(Class handlerClass) - { - for (int h=0;h<_handlers.size();h++) - { - HttpHandler handler = (HttpHandler)_handlers.get(h); - if (handlerClass.isInstance(handler)) - return handler; - } - return null; - } - - /* ------------------------------------------------------------ */ - /** Remove a handler. - * The handler must be stopped before being removed. - * @param i index of handler - */ - public synchronized HttpHandler removeHandler(int i) - { - HttpHandler handler = _handlersArray[i]; - if (handler.isStarted()) - try{handler.stop();} catch (InterruptedException e){log.warn(LogSupport.EXCEPTION,e);} - _handlers.remove(i); - _handlersArray=null; - removeComponent(handler); - return handler; - } - - /* ------------------------------------------------------------ */ - /** Remove a handler. - * The handler must be stopped before being removed. - */ - public synchronized void removeHandler(HttpHandler handler) - { - if (handler.isStarted()) - try{handler.stop();} catch (InterruptedException e){log.warn(LogSupport.EXCEPTION,e);} - _handlers.remove(handler); - removeComponent(handler); - _handlersArray=null; - } - - - /* ------------------------------------------------------------ */ - /** Set context init parameter. - * Init Parameters differ from attributes as they can only - * have string values, servlets cannot set them and they do - * not have a package scoped name space. - * @param param param name - * @param value param value or null - */ - public void setInitParameter(String param, String value) - { - _initParams.put(param,value); - } - - /* ------------------------------------------------------------ */ - /** Get context init parameter. - * @param param param name - * @return param value or null - */ - public String getInitParameter(String param) - { - return (String)_initParams.get(param); - } - - /* ------------------------------------------------------------ */ - /** Get context init parameter. - * @return Enumeration of names - */ - public Enumeration getInitParameterNames() - { - return Collections.enumeration(_initParams.keySet()); - } - - /* ------------------------------------------------------------ */ - /** Set a context attribute. - * @param name attribute name - * @param value attribute value - */ - public synchronized void setAttribute(String name, Object value) - { - _attributes.put(name,value); - } - - /* ------------------------------------------------------------ */ - /** - * @param name attribute name - * @return attribute value or null - */ - public Object getAttribute(String name) - { - return _attributes.get(name); - } - - /* ------------------------------------------------------------ */ - /** - */ - public Map getAttributes() - { - return _attributes; - } - - /* ------------------------------------------------------------ */ - /** - */ - public void setAttributes(Map attributes) - { - _attributes=attributes; - } - - /* ------------------------------------------------------------ */ - /** - * @return enumaration of names. - */ - public Enumeration getAttributeNames() - { - return Collections.enumeration(_attributes.keySet()); - } - - /* ------------------------------------------------------------ */ - /** - * @param name attribute name - */ - public synchronized void removeAttribute(String name) - { - _attributes.remove(name); - } - - - /* ------------------------------------------------------------ */ - public void flushCache() - { - _resources.flushCache(); - } - - /* ------------------------------------------------------------ */ - public String[] getWelcomeFiles() - { - return _welcomes; - } - - /* ------------------------------------------------------------ */ - public void setWelcomeFiles(String[] welcomes) - { - if (welcomes==null) - _welcomes=new String[0]; - else - _welcomes=welcomes; - } - - /* ------------------------------------------------------------ */ - public void addWelcomeFile(String welcomeFile) - { - if (welcomeFile.startsWith("/") || - welcomeFile.startsWith(java.io.File.separator) || - welcomeFile.endsWith("/") || - welcomeFile.endsWith(java.io.File.separator)) - log.warn("Invalid welcome file: "+welcomeFile); - List list = new ArrayList(Arrays.asList(_welcomes)); - list.add(welcomeFile); - _welcomes=(String[])list.toArray(_welcomes); - } - - /* ------------------------------------------------------------ */ - public void removeWelcomeFile(String welcomeFile) - { - List list = new ArrayList(Arrays.asList(_welcomes)); - list.remove(welcomeFile); - _welcomes=(String[])list.toArray(_welcomes); - } - - /* ------------------------------------------------------------ */ - public String getWelcomeFile(Resource resource) - throws IOException - { - if (!resource.isDirectory()) - return null; - - for (int i=0;i<_welcomes.length;i++) - { - Resource welcome=resource.addPath(_welcomes[i]); - if (welcome.exists()) - return _welcomes[i]; - } - - return null; - } - - - /* ------------------------------------------------------------ */ - /** Get the context classpath. - * This method only returns the paths that have been set for this - * context and does not include any paths from a parent or the - * system classloader. - * Note that this may not be a legal javac classpath. - * @return a comma or ';' separated list of class - * resources. These may be jar files, directories or URLs to jars - * or directories. - * @see #getFileClassPath() - */ - public String getClassPath() - { - return _classPath; - } - - /* ------------------------------------------------------------ */ - /** Get the file classpath of the context. - * This method makes a best effort to return a complete file - * classpath for the context. - * It is obtained by walking the classloader hierarchy and looking for - * URLClassLoaders. The system property java.class.path is also checked for - * file elements not already found in the loader hierarchy. - * @return Path of files and directories for loading classes. - * @exception IllegalStateException HttpContext.initClassLoader - * has not been called. - */ - public String getFileClassPath() - throws IllegalStateException - { - - ClassLoader loader = getClassLoader(); - if (loader==null) - throw new IllegalStateException("Context classloader not initialized"); - - LinkedList paths =new LinkedList(); - LinkedList loaders=new LinkedList(); - - // Walk the loader hierarchy - while (loader !=null) - { - loaders.add(0,loader); - loader = loader.getParent(); - } - - // Try to handle java2compliant modes - loader=getClassLoader(); - if (loader instanceof ContextLoader && !((ContextLoader)loader).isJava2Compliant()) - { - loaders.remove(loader); - loaders.add(0,loader); - } - - for (int i=0;i<loaders.size();i++) - { - loader=(ClassLoader)loaders.get(i); - - if (log.isDebugEnabled()) log.debug("extract paths from "+loader); - if (loader instanceof URLClassLoader) - { - URL[] urls = ((URLClassLoader)loader).getURLs(); - for (int j=0;urls!=null && j<urls.length;j++) - { - try - { - Resource path = Resource.newResource(urls[j]); - if (log.isTraceEnabled()) log.trace("path "+path); - File file = path.getFile(); - if (file!=null) - paths.add(file.getAbsolutePath()); - } - catch(Exception e) - { - LogSupport.ignore(log,e); - } - } - } - } - - // Add the system classpath elements from property. - String jcp=System.getProperty("java.class.path"); - if (jcp!=null) - { - StringTokenizer tok=new StringTokenizer(jcp,File.pathSeparator); - while (tok.hasMoreTokens()) - { - String path=tok.nextToken(); - if (!paths.contains(path)) - { - if(log.isTraceEnabled())log.trace("PATH="+path); - paths.add(path); - } - else - if(log.isTraceEnabled())log.trace("done="+path); - } - } - - StringBuffer buf = new StringBuffer(); - Iterator iter = paths.iterator(); - while(iter.hasNext()) - { - if (buf.length()>0) - buf.append(File.pathSeparator); - buf.append(iter.next().toString()); - } - - if (log.isDebugEnabled()) log.debug("fileClassPath="+buf); - return buf.toString(); - } - - /* ------------------------------------------------------------ */ - /** Sets the class path for the context. - * A class path is only required for a context if it uses classes - * that are not in the system class path. - * @param classPath a comma or ';' separated list of class - * resources. These may be jar files, directories or URLs to jars - * or directories. - */ - public void setClassPath(String classPath) - { - _classPath=classPath; - if (isStarted()) - log.warn("classpath set while started"); - } - - /* ------------------------------------------------------------ */ - /** Add the class path element to the context. - * A class path is only required for a context if it uses classes - * that are not in the system class path. - * @param classPath a comma or ';' separated list of class - * resources. These may be jar files, directories or URLs to jars - * or directories. - */ - public void addClassPath(String classPath) - { - if (_classPath==null || _classPath.length()==0) - _classPath=classPath; - else - _classPath+=","+classPath; - - if (isStarted()) - log.warn("classpath set while started"); - } - - /* ------------------------------------------------------------ */ - /** Add elements to the class path for the context from the jar and zip files found - * in the specified resource. - * @param lib the resource that contains the jar and/or zip files. - * @param append true if the classpath entries are to be appended to any - * existing classpath, or false if they replace the existing classpath. - * @see #setClassPath(String) - */ - public void addClassPaths(Resource lib) - { - if (isStarted()) - log.warn("classpaths set while started"); - - if (lib.exists() && lib.isDirectory()) - { - String[] files=lib.list(); - for (int f=0;files!=null && f<files.length;f++) - { - try { - Resource fn=lib.addPath(files[f]); - String fnlc=fn.getName().toLowerCase(); - if (fnlc.endsWith(".jar") || fnlc.endsWith(".zip")) - { - addClassPath(fn.toString()); - } - } - catch (Exception ex) - { - log.warn(LogSupport.EXCEPTION,ex); - } - } - } - } - - /* ------------------------------------------------------------ */ - /** Get Java2 compliant classloading. - * @return If true, the class loader will conform to the java 2 - * specification and delegate all loads to the parent classloader. If - * false, the context classloader only delegate loads for system classes - * or classes that it can't find itself. - */ - public boolean isClassLoaderJava2Compliant() - { - return _classLoaderJava2Compliant; - } - - /* ------------------------------------------------------------ */ - /** Set Java2 compliant classloading. - * @param compliant If true, the class loader will conform to the java 2 - * specification and delegate all loads to the parent classloader. If - * false, the context classloader only delegate loads for system classes - * or classes that it can't find itself. - */ - public void setClassLoaderJava2Compliant(boolean compliant) - { - _classLoaderJava2Compliant = compliant; - if (_loader!=null && (_loader instanceof ContextLoader)) - ((ContextLoader)_loader).setJava2Compliant(compliant); - } - - /* ------------------------------------------------------------ */ - /** Set temporary directory for context. - * The javax.servlet.context.tempdir attribute is also set. - * @param dir Writable temporary directory. - */ - public void setTempDirectory(File dir) - { - if (isStarted()) - throw new IllegalStateException("Started"); - - if (dir!=null) - { - try{dir=new File(dir.getCanonicalPath());} - catch (IOException e){log.warn(LogSupport.EXCEPTION,e);} - } - - if (dir!=null && !dir.exists()) - { - dir.mkdir(); - dir.deleteOnExit(); - } - - if (dir!=null && ( !dir.exists() || !dir.isDirectory() || !dir.canWrite())) - throw new IllegalArgumentException("Bad temp directory: "+dir); - - _tmpDir=dir; - setAttribute("javax.servlet.context.tempdir",_tmpDir); - } - - /* ------------------------------------------------------------ */ - /** Get Context temporary directory. - * A tempory directory is generated if it has not been set. The - * "javax.servlet.context.tempdir" attribute is consulted and if - * not set, the host, port and context are used to generate a - * directory within the JVMs temporary directory. - * - * Patched for IPV6 support in I2P to replace ':' in the dir name which - * Windows can't handle. - * - * @return Temporary directory as a File. - */ - public File getTempDirectory() - { - if (_tmpDir!=null) - return _tmpDir; - - // Initialize temporary directory - // - // I'm afraid that this is very much black magic. - // but if you can think of better.... - Object t = getAttribute("javax.servlet.context.tempdir"); - - if (t!=null && (t instanceof File)) - { - _tmpDir=(File)t; - if (_tmpDir.isDirectory() && _tmpDir.canWrite()) - return _tmpDir; - } - - if (t!=null && (t instanceof String)) - { - try - { - _tmpDir=new File((String)t); - - if (_tmpDir.isDirectory() && _tmpDir.canWrite()) - { - if(log.isDebugEnabled())log.debug("Converted to File "+_tmpDir+" for "+this); - setAttribute("javax.servlet.context.tempdir",_tmpDir); - return _tmpDir; - } - } - catch(Exception e) - { - log.warn(LogSupport.EXCEPTION,e); - } - } - - // No tempdir so look for a WEB-INF/work directory to use as tempDir base - File work=null; - try - { - work=new File(System.getProperty("jetty.home"),"work"); - if (!work.exists() || !work.canWrite() || !work.isDirectory()) - work=null; - } - catch(Exception e) - { - LogSupport.ignore(log,e); - } - - // No tempdir set so make one! - try - { - HttpListener httpListener=_httpServer.getListeners()[0]; - - String vhost = null; - for (int h=0;vhost==null && _vhosts!=null && h<_vhosts.size();h++) - vhost=(String)_vhosts.get(h); - String host=httpListener.getHost(); - String temp="Jetty_"+ - (host==null?"":host)+ - "_"+ - httpListener.getPort()+ - "_"+ - (vhost==null?"":vhost)+ - getContextPath(); - - temp=temp.replace('/','_'); - temp=temp.replace('.','_'); - temp=temp.replace('\\','_'); - temp=temp.replace(':','_'); - - - if (work!=null) - _tmpDir=new File(work,temp); - else - { - _tmpDir=new File(System.getProperty("java.io.tmpdir"),temp); - - if (_tmpDir.exists()) - { - if(log.isDebugEnabled())log.debug("Delete existing temp dir "+_tmpDir+" for "+this); - if (!IO.delete(_tmpDir)) - { - if(log.isDebugEnabled())log.debug("Failed to delete temp dir "+_tmpDir); - } - - if (_tmpDir.exists()) - { - String old=_tmpDir.toString(); - _tmpDir=File.createTempFile(temp+"_",""); - if (_tmpDir.exists()) - _tmpDir.delete(); - log.warn("Can't reuse "+old+", using "+_tmpDir); - } - } - } - - if (!_tmpDir.exists()) - _tmpDir.mkdir(); - if (work==null) - _tmpDir.deleteOnExit(); - if(log.isDebugEnabled())log.debug("Created temp dir "+_tmpDir+" for "+this); - } - catch(Exception e) - { - _tmpDir=null; - LogSupport.ignore(log,e); - } - - if (_tmpDir==null) - { - try{ - // that didn't work, so try something simpler (ish) - _tmpDir=File.createTempFile("JettyContext",""); - if (_tmpDir.exists()) - _tmpDir.delete(); - _tmpDir.mkdir(); - _tmpDir.deleteOnExit(); - if(log.isDebugEnabled())log.debug("Created temp dir "+_tmpDir+" for "+this); - } - catch(IOException e) - { - log.fatal(e); System.exit(1); - } - } - - setAttribute("javax.servlet.context.tempdir",_tmpDir); - return _tmpDir; - } - - - - /* ------------------------------------------------------------ */ - /** Set ClassLoader. - * @param loader The loader to be used by this context. - */ - public synchronized void setClassLoader(ClassLoader loader) - { - if (isStarted()) - throw new IllegalStateException("Started"); - _loader=loader; - } - - - /* ------------------------------------------------------------ */ - /** Get the classloader. - * If no classloader has been set and the context has been loaded - * normally, then null is returned. - * If no classloader has been set and the context was loaded from - * a classloader, that loader is returned. - * If a classloader has been set and no classpath has been set then - * the set classloader is returned. - * If a classloader and a classpath has been set, then a new - * URLClassloader initialized on the classpath with the set loader as a - * partent is return. - * @return Classloader or null. - */ - public synchronized ClassLoader getClassLoader() - { - return _loader; - } - - /* ------------------------------------------------------------ */ - /** Set Parent ClassLoader. - * By default the parent loader is the thread context classloader - * of the thread that calls initClassLoader. If setClassLoader is - * called, then the parent is ignored. - * @param loader The class loader to use for the parent loader of - * the context classloader. - */ - public synchronized void setParentClassLoader(ClassLoader loader) - { - if (isStarted()) - throw new IllegalStateException("Started"); - _parent=loader; - } - - /* ------------------------------------------------------------ */ - public ClassLoader getParentClassLoader() - { - return _parent; - } - - /* ------------------------------------------------------------ */ - /** Initialize the context classloader. - * Initialize the context classloader with the current parameters. - * Any attempts to change the classpath after this call will - * result in a IllegalStateException - * @param forceContextLoader If true, a ContextLoader is always if - * no loader has been set. - */ - protected void initClassLoader(boolean forceContextLoader) - throws MalformedURLException, IOException - { - ClassLoader parent=_parent; - if (_loader==null) - { - // If no parent, then try this threads classes loader as parent - if (parent==null) - parent=Thread.currentThread().getContextClassLoader(); - - // If no parent, then try this classes loader as parent - if (parent==null) - parent=this.getClass().getClassLoader(); - - if(log.isDebugEnabled())log.debug("Init classloader from "+_classPath+ - ", "+parent+" for "+this); - - if (forceContextLoader || _classPath!=null || _permissions!=null) - { - ContextLoader loader=new ContextLoader(this,_classPath,parent,_permissions); - loader.setJava2Compliant(_classLoaderJava2Compliant); - _loader=loader; - } - else - _loader=parent; - } - } - - /* ------------------------------------------------------------ */ - public synchronized Class loadClass(String className) - throws ClassNotFoundException - { - if (_loader==null) - { - try{initClassLoader(false);} - catch(Exception e) - { - log.warn(LogSupport.EXCEPTION,e); - return null; - } - } - - if (className==null) - return null; - - if (_loader == null) - return Class.forName(className); - return _loader.loadClass(className); - } - - /* ------------------------------------------------------------ */ - /** Set the realm name. - * @param realmName The name to use to retrieve the actual realm - * from the HttpServer - */ - public void setRealmName(String realmName) - { - _realmName=realmName; - } - - /* ------------------------------------------------------------ */ - public String getRealmName() - { - return _realmName; - } - - /* ------------------------------------------------------------ */ - /** Set the realm. - */ - public void setRealm(UserRealm realm) - { - _userRealm=realm; - } - - /* ------------------------------------------------------------ */ - public UserRealm getRealm() - { - return _userRealm; - } - - /* ------------------------------------------------------------ */ - public Authenticator getAuthenticator() - { - return _authenticator; - } - - /* ------------------------------------------------------------ */ - public void setAuthenticator(Authenticator authenticator) - { - _authenticator=authenticator; - } - - /* ------------------------------------------------------------ */ - public void addSecurityConstraint(String pathSpec, SecurityConstraint sc) - { - Object scs = _constraintMap.get(pathSpec); - scs = LazyList.add(scs,sc); - _constraintMap.put(pathSpec,scs); - - if(log.isDebugEnabled())log.debug("added "+sc+" at "+pathSpec); - } - - /* ------------------------------------------------------------ */ - public void clearSecurityConstraints() - { - _constraintMap.clear(); - } - - /* ------------------------------------------------------------ */ - public boolean checkSecurityConstraints( - String pathInContext, - HttpRequest request, - HttpResponse response) - throws HttpException, IOException - { - UserRealm realm= getRealm(); - - List scss= _constraintMap.getMatches(pathInContext); - String pattern=null; - if (scss != null && !scss.isEmpty()) - { - Object constraints= null; - - // for each path match - // Add only constraints that have the correct method - // break if the matching pattern changes. This allows only - // constraints with matching pattern and method to be combined. - loop: - for (int m= 0; m < scss.size(); m++) - { - Map.Entry entry= (Map.Entry)scss.get(m); - Object scs= entry.getValue(); - String p=(String)entry.getKey(); - for (int c=0;c<LazyList.size(scs);c++) - { - SecurityConstraint sc=(SecurityConstraint)LazyList.get(scs,c); - if (!sc.forMethod(request.getMethod())) - continue; - - if (pattern!=null && !pattern.equals(p)) - break loop; - pattern=p; - constraints= LazyList.add(constraints, sc); - } - } - - return SecurityConstraint.check( - LazyList.getList(constraints), - _authenticator, - realm, - pathInContext, - request, - response); - } - request.setUserPrincipal(HttpRequest.__NOT_CHECKED); - return true; - } - - /* ------------------------------------------------------------ */ - /** Set null path redirection. - * @param b if true a /context request will be redirected to - * /context/ if there is not path in the context. - */ - public void setRedirectNullPath(boolean b) - { - _redirectNullPath=b; - } - - /* ------------------------------------------------------------ */ - /** - * @return True if a /context request is redirected to /context/ if - * there is not path in the context. - */ - public boolean isRedirectNullPath() - { - return _redirectNullPath; - } - - - - /* ------------------------------------------------------------ */ - /** Set the permissions to be used for this context. - * The collection of permissions set here are used for all classes - * loaded by this context. This is simpler that creating a - * security policy file, as not all code sources may be statically - * known. - * @param permissions - */ - public void setPermissions(PermissionCollection permissions) - { - _permissions=permissions; - } - - /* ------------------------------------------------------------ */ - /** Get the permissions to be used for this context. - */ - public PermissionCollection getPermissions() - { - return _permissions; - } - - /* ------------------------------------------------------------ */ - /** Add a permission to this context. - * The collection of permissions set here are used for all classes - * loaded by this context. This is simpler that creating a - * security policy file, as not all code sources may be statically - * known. - * @param permission - */ - public void addPermission(Permission permission) - { - if (_permissions==null) - _permissions=new Permissions(); - _permissions.add(permission); - } - - /* ------------------------------------------------------------ */ - /** Handler request. - * Determine the path within the context and then call - * handle(pathInContext,request,response). - * @param request - * @param response - * @return True if the request has been handled. - * @exception HttpException - * @exception IOException - */ - public void handle(HttpRequest request, - HttpResponse response) - throws HttpException, IOException - { - if (!isStarted() || _gracefulStop) - return; - - // reject requests by real host - if (_hosts!=null && _hosts.size()>0) - { - Object o = request.getHttpConnection().getConnection(); - if (o instanceof Socket) - { - Socket s=(Socket)o; - if (!_hosts.contains(s.getLocalAddress())) - { - if(log.isDebugEnabled())log.debug(s.getLocalAddress()+" not in "+_hosts); - return; - } - } - } - - // handle stats - if (_statsOn) - { - synchronized(_statsLock) - { - _requests++; - _requestsActive++; - if (_requestsActive>_requestsActiveMax) - _requestsActiveMax=_requestsActive; - } - } - - String pathInContext = URI.canonicalPath(request.getPath()); - if (pathInContext==null) - { - // Must be a bad request. - throw new HttpException(HttpResponse.__400_Bad_Request); - } - - if (_contextPath.length()>1) - pathInContext=pathInContext.substring(_contextPath.length()); - - if (_redirectNullPath && (pathInContext==null || - pathInContext.length()==0)) - { - StringBuffer buf=request.getRequestURL(); - buf.append("/"); - String q=request.getQuery(); - if (q!=null&&q.length()!=0) - buf.append("?"+q); - - response.sendRedirect(buf.toString()); - if (log.isDebugEnabled()) - log.debug(this+" consumed all of path "+ - request.getPath()+ - ", redirect to "+buf.toString()); - return; - } - - String pathParams=null; - int semi = pathInContext.lastIndexOf(';'); - if (semi>=0) - { - int pl = pathInContext.length()-semi; - String ep=request.getEncodedPath(); - if(';'==ep.charAt(ep.length()-pl)) - { - pathParams=pathInContext.substring(semi+1); - pathInContext=pathInContext.substring(0,semi); - } - } - - try - { - handle(pathInContext,pathParams,request,response); - } - finally - { - if (_userRealm!=null && request.hasUserPrincipal()) - _userRealm.disassociate(request.getUserPrincipal()); - } - } - - /* ------------------------------------------------------------ */ - /** Handler request. - * Call each HttpHandler until request is handled. - * @param pathInContext Path in context - * @param pathParams Path parameters such as encoded Session ID - * @param request - * @param response - * @return True if the request has been handled. - * @exception HttpException - * @exception IOException - */ - public void handle(String pathInContext, - String pathParams, - HttpRequest request, - HttpResponse response) - throws HttpException, IOException - { - Object old_scope= null; - try - { - old_scope= enterContextScope(request,response); - HttpHandler[] handlers= getHandlers(); - for (int k= 0; k < handlers.length; k++) - { - HttpHandler handler= handlers[k]; - if (handler == null) - { - handlers= getHandlers(); - k= -1; - continue; - } - if (!handler.isStarted()) - { - if (log.isDebugEnabled()) - log.debug(handler + " not started in " + this); - continue; - } - if (log.isDebugEnabled()) - log.debug("Handler " + handler); - handler.handle(pathInContext, pathParams, request, response); - if (request.isHandled()) - { - if (log.isDebugEnabled()) - log.debug("Handled by " + handler); - return; - } - } - return; - } - finally - { - leaveContextScope(request, response, old_scope); - } - } - - /* ------------------------------------------------------------ */ - /** Enter the context scope. - * This method is called (by handle or servlet dispatchers) to indicate that - * request handling is entering the scope of this context. The opaque scope object - * returned, should be passed to the leaveContextScope method. - */ - public Object enterContextScope(HttpRequest request, HttpResponse response) - { - // Save the thread context loader - Thread thread = Thread.currentThread(); - ClassLoader cl=thread.getContextClassLoader(); - HttpContext c=response.getHttpContext(); - - Scope scope=null; - if (cl!=HttpContext.class.getClassLoader() || c!=null) - { - scope=new Scope(); - scope._classLoader=cl; - scope._httpContext=c; - } - - if (_loader!=null) - thread.setContextClassLoader(_loader); - response.setHttpContext(this); - - return scope; - } - - /* ------------------------------------------------------------ */ - /** Leave the context scope. - * This method is called (by handle or servlet dispatchers) to indicate that - * request handling is leaveing the scope of this context. The opaque scope object - * returned by enterContextScope should be passed in. - */ - public void leaveContextScope(HttpRequest request, HttpResponse response,Object oldScope) - { - if (oldScope==null) - { - Thread.currentThread() - .setContextClassLoader(HttpContext.class.getClassLoader()); - response.setHttpContext(null); - } - else - { - Scope old = (Scope)oldScope; - Thread.currentThread().setContextClassLoader(old._classLoader); - response.setHttpContext(old._httpContext); - } - } - - - /* ------------------------------------------------------------ */ - public String getHttpContextName() - { - if (_contextName==null) - _contextName = (_vhosts.size()>1?(_vhosts.toString()+":"):"")+_contextPath; - return _contextName; - } - - /* ------------------------------------------------------------ */ - public void setHttpContextName(String s) - { - _contextName=s; - } - - /* ------------------------------------------------------------ */ - public String toString() - { - return "HttpContext["+getContextPath()+","+getHttpContextName()+"]"; - } - - /* ------------------------------------------------------------ */ - public String toString(boolean detail) - { - return "HttpContext["+getContextPath()+","+getHttpContextName()+"]" + - (detail?("="+_handlers):""); - } - - - /* ------------------------------------------------------------ */ - protected synchronized void doStart() - throws Exception - { - if (isStarted()) - return; - - if (_httpServer.getServerClasses()!=null) - _serverClasses=_httpServer.getServerClasses(); - if (_httpServer.getSystemClasses()!=null) - _systemClasses=_httpServer.getSystemClasses(); - - _resources.start(); - - statsReset(); - - if (_httpServer==null) - throw new IllegalStateException("No server for "+this); - - // start the context itself - _resources.getMimeMap(); - _resources.getEncodingMap(); - - // Setup realm - if (_userRealm==null && _authenticator!=null) - { - _userRealm=_httpServer.getRealm(_realmName); - if (_userRealm==null) - log.warn("No Realm: "+_realmName); - } - - // setup the context loader - initClassLoader(false); - - // Set attribute if needed - String attr = getInitParameter(__fileClassPathAttr); - if (attr!=null && attr.length()>0) - setAttribute(attr,getFileClassPath()); - - // Start the handlers - Thread thread = Thread.currentThread(); - ClassLoader lastContextLoader=thread.getContextClassLoader(); - try - { - if (_loader!=null) - thread.setContextClassLoader(_loader); - - if (_requestLog!=null) - _requestLog.start(); - - startHandlers(); - } - finally - { - thread.setContextClassLoader(lastContextLoader); - getHandlers(); - } - - } - - /* ------------------------------------------------------------ */ - /** Start the handlers. - * This is called by start after the classloader has been - * initialized and set as the thread context loader. - * It may be specialized to provide custom handling - * before any handlers are started. - * @exception Exception - */ - protected void startHandlers() - throws Exception - { - // Prepare a multi exception - MultiException mx = new MultiException(); - - Iterator handlers = _handlers.iterator(); - while(handlers.hasNext()) - { - HttpHandler handler=(HttpHandler)handlers.next(); - if (!handler.isStarted()) - try{handler.start();}catch(Exception e){mx.add(e);} - } - mx.ifExceptionThrow(); - } - - /* ------------------------------------------------------------ */ - /** Stop the context. - * @param graceful If true and statistics are on, then this method will wait - * for requestsActive to go to zero before calling stop() - */ - public void stop(boolean graceful) - throws InterruptedException - { - boolean gs=_gracefulStop; - try - { - _gracefulStop=true; - - // wait for all requests to complete. - while (graceful && _statsOn && _requestsActive>0 && _httpServer!=null) - try {Thread.sleep(100);} - catch (InterruptedException e){throw e;} - catch (Exception e){LogSupport.ignore(log,e);} - - stop(); - } - finally - { - _gracefulStop=gs; - } - } - - /* ------------------------------------------------------------ */ - /** Stop the context. - */ - protected void doStop() - throws Exception - { - if (_httpServer==null) - throw new InterruptedException("Destroy called"); - - synchronized(this) - { - // Notify the container for the stop - Thread thread = Thread.currentThread(); - ClassLoader lastContextLoader=thread.getContextClassLoader(); - try - { - if (_loader!=null) - thread.setContextClassLoader(_loader); - Iterator handlers = _handlers.iterator(); - while(handlers.hasNext()) - { - HttpHandler handler=(HttpHandler)handlers.next(); - if (handler.isStarted()) - { - try{handler.stop();} - catch(Exception e){log.warn(LogSupport.EXCEPTION,e);} - } - } - - if (_requestLog!=null) - _requestLog.stop(); - } - finally - { - thread.setContextClassLoader(lastContextLoader); - } - - // TODO this is a poor test - if (_loader instanceof ContextLoader) - { - ((ContextLoader)_loader).destroy(); - LogFactory.release(_loader); - } - - _loader=null; - } - _resources.flushCache(); - _resources.stop(); - } - - - /* ------------------------------------------------------------ */ - /** Destroy a context. - * Destroy a context and remove it from the HttpServer. The - * HttpContext must be stopped before it can be destroyed. - */ - public void destroy() - { - if (isStarted()) - throw new IllegalStateException("Started"); - - if (_httpServer!=null) - _httpServer.removeContext(this); - - _httpServer=null; - - if (_handlers!=null) - _handlers.clear(); - - _handlers=null; - _parent=null; - _loader=null; - if (_attributes!=null) - _attributes.clear(); - _attributes=null; - if (_initParams!=null) - _initParams.clear(); - _initParams=null; - if (_vhosts!=null) - _vhosts.clear(); - _vhosts=null; - _hosts=null; - _tmpDir=null; - - _permissions=null; - - removeComponent(_resources); - if (_resources!=null) - { - _resources.flushCache(); - if (_resources.isStarted()) - try{_resources.stop();}catch(Exception e){LogSupport.ignore(log,e);} - _resources.destroy(); - } - _resources=null; - - super.destroy(); - - } - - - /* ------------------------------------------------------------ */ - /** Set the request log. - * @param log RequestLog to use. - */ - public void setRequestLog(RequestLog log) - { - _requestLog=log; - } - - /* ------------------------------------------------------------ */ - public RequestLog getRequestLog() - { - return _requestLog; - } - - - /* ------------------------------------------------------------ */ - /** Send an error response. - * This method may be specialized to provide alternative error handling for - * errors generated by the container. The default implemenation calls HttpResponse.sendError - * @param response the response to send - * @param code The error code - * @param msg The message for the error or null for the default - * @throws IOException Problem sending response. - */ - public void sendError(HttpResponse response,int code,String msg) - throws IOException - { - response.sendError(code,msg); - } - - /* ------------------------------------------------------------ */ - /** Send an error response. - * This method obtains the responses context and call sendError for context specific - * error handling. - * @param response the response to send - * @param code The error code - * @param msg The message for the error or null for the default - * @throws IOException Problem sending response. - */ - public static void sendContextError(HttpResponse response,int code,String msg) - throws IOException - { - HttpContext context = response.getHttpContext(); - if (context!=null) - context.sendError(response,code,msg); - else - response.sendError(code,msg); - } - - /* ------------------------------------------------------------ */ - /** True set statistics recording on for this context. - * @param on If true, statistics will be recorded for this context. - */ - public void setStatsOn(boolean on) - { - log.info("setStatsOn "+on+" for "+this); - _statsOn=on; - statsReset(); - } - - /* ------------------------------------------------------------ */ - public boolean getStatsOn() {return _statsOn;} - - /* ------------------------------------------------------------ */ - public long getStatsOnMs() - {return _statsOn?(System.currentTimeMillis()-_statsStartedAt):0;} - - /* ------------------------------------------------------------ */ - public void statsReset() - { - synchronized(_statsLock) - { - if (_statsOn) - _statsStartedAt=System.currentTimeMillis(); - _requests=0; - _requestsActiveMax=_requestsActive; - _responses1xx=0; - _responses2xx=0; - _responses3xx=0; - _responses4xx=0; - _responses5xx=0; - } - } - - /* ------------------------------------------------------------ */ - /** - * @return Get the number of requests handled by this context - * since last call of statsReset(). If setStatsOn(false) then this - * is undefined. - */ - public int getRequests() {return _requests;} - - /* ------------------------------------------------------------ */ - /** - * @return Number of requests currently active. - * Undefined if setStatsOn(false). - */ - public int getRequestsActive() {return _requestsActive;} - - /* ------------------------------------------------------------ */ - /** - * @return Maximum number of active requests - * since statsReset() called. Undefined if setStatsOn(false). - */ - public int getRequestsActiveMax() {return _requestsActiveMax;} - - /* ------------------------------------------------------------ */ - /** - * @return Get the number of responses with a 2xx status returned - * by this context since last call of statsReset(). Undefined if - * if setStatsOn(false). - */ - public int getResponses1xx() {return _responses1xx;} - - /* ------------------------------------------------------------ */ - /** - * @return Get the number of responses with a 100 status returned - * by this context since last call of statsReset(). Undefined if - * if setStatsOn(false). - */ - public int getResponses2xx() {return _responses2xx;} - - /* ------------------------------------------------------------ */ - /** - * @return Get the number of responses with a 3xx status returned - * by this context since last call of statsReset(). Undefined if - * if setStatsOn(false). - */ - public int getResponses3xx() {return _responses3xx;} - - /* ------------------------------------------------------------ */ - /** - * @return Get the number of responses with a 4xx status returned - * by this context since last call of statsReset(). Undefined if - * if setStatsOn(false). - */ - public int getResponses4xx() {return _responses4xx;} - - /* ------------------------------------------------------------ */ - /** - * @return Get the number of responses with a 5xx status returned - * by this context since last call of statsReset(). Undefined if - * if setStatsOn(false). - */ - public int getResponses5xx() {return _responses5xx;} - - - /* ------------------------------------------------------------ */ - /** Log a request and response. - * Statistics are also collected by this method. - * @param request - * @param response - */ - public void log(HttpRequest request, - HttpResponse response, - int length) - { - if (_statsOn) - { - synchronized(_statsLock) - { - if (--_requestsActive<0) - _requestsActive=0; - - if (response!=null) - { - switch(response.getStatus()/100) - { - case 1: _responses1xx++;break; - case 2: _responses2xx++;break; - case 3: _responses3xx++;break; - case 4: _responses4xx++;break; - case 5: _responses5xx++;break; - } - } - } - } - - if (_requestLog!=null && - request!=null && - response!=null) - _requestLog.log(request,response,length); - else if (_httpServer!=null) - _httpServer.log(request,response,length); - } - - - - /* ------------------------------------------------------------ */ - /* Class to save scope of nested context calls - */ - private static class Scope - { - ClassLoader _classLoader; - HttpContext _httpContext; - } - - /* - * @see org.mortbay.http.HttpHandler#getName() - */ - public String getName() - { - return this.getContextPath(); - } - - /* - * @see org.mortbay.http.HttpHandler#getHttpContext() - */ - public HttpContext getHttpContext() - { - return this; - } - - /* - * @see org.mortbay.http.HttpHandler#initialize(org.mortbay.http.HttpContext) - */ - public void initialize(HttpContext context) - { - throw new UnsupportedOperationException(); - } - - - /** - * @return - */ - public Resource getBaseResource() - { - return _resources.getBaseResource(); - } - /** - * @param type - * @return - */ - public String getEncodingByMimeType(String type) - { - return _resources.getEncodingByMimeType(type); - } - /** - * @return - */ - public Map getEncodingMap() - { - return _resources.getEncodingMap(); - } - /** - * @return - */ - public int getMaxCachedFileSize() - { - return _resources.getMaxCachedFileSize(); - } - /** - * @return - */ - public int getMaxCacheSize() - { - return _resources.getMaxCacheSize(); - } - /** - * @param filename - * @return - */ - public String getMimeByExtension(String filename) - { - return _resources.getMimeByExtension(filename); - } - /** - * @return - */ - public Map getMimeMap() - { - return _resources.getMimeMap(); - } - /** - * @param pathInContext - * @return - * @throws IOException - */ - public Resource getResource(String pathInContext) throws IOException - { - return _resources.getResource(pathInContext); - } - /** - * @return - */ - public String getResourceBase() - { - return _resources.getResourceBase(); - } - /** - * @param resource - * @return - */ - public ResourceMetaData getResourceMetaData(Resource resource) - { - return _resources.getResourceMetaData(resource); - } - /** - * @param base - */ - public void setBaseResource(Resource base) - { - _resources.setBaseResource(base); - } - /** - * @param encodingMap - */ - public void setEncodingMap(Map encodingMap) - { - _resources.setEncodingMap(encodingMap); - } - /** - * @param maxCachedFileSize - */ - public void setMaxCachedFileSize(int maxCachedFileSize) - { - _resources.setMaxCachedFileSize(maxCachedFileSize); - } - /** - * @param maxCacheSize - */ - public void setMaxCacheSize(int maxCacheSize) - { - _resources.setMaxCacheSize(maxCacheSize); - } - /** - * @param mimeMap - */ - public void setMimeMap(Map mimeMap) - { - _resources.setMimeMap(mimeMap); - } - /** - * @param extension - * @param type - */ - public void setMimeMapping(String extension, String type) - { - _resources.setMimeMapping(extension, type); - } - /** - * @param resourceBase - */ - public void setResourceBase(String resourceBase) - { - _resources.setResourceBase(resourceBase); - } - /** - * @param mimeType - * @param encoding - */ - public void setTypeEncoding(String mimeType, String encoding) - { - _resources.setTypeEncoding(mimeType, encoding); - } -} diff --git a/apps/jetty/java/src/org/mortbay/http/NCSARequestLog.java b/apps/jetty/java/src/org/mortbay/http/NCSARequestLog.java deleted file mode 100644 index a898624eaa..0000000000 --- a/apps/jetty/java/src/org/mortbay/http/NCSARequestLog.java +++ /dev/null @@ -1,505 +0,0 @@ -// ======================================================================== -// $Id: NCSARequestLog.java,v 1.35 2005/08/13 00:01:24 gregwilkins Exp $ -// Copyright 2000-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== - -package org.mortbay.http; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; -import java.io.Writer; -import java.util.Locale; -import java.util.TimeZone; - -import javax.servlet.http.Cookie; - -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; -import org.mortbay.util.DateCache; -import org.mortbay.util.LogSupport; -import org.mortbay.util.RolloverFileOutputStream; -import org.mortbay.util.StringUtil; - - -/* ------------------------------------------------------------ */ -/** NCSA HTTP Request Log. - * NCSA common or NCSA extended (combined) request log. - * - * Taken from 5.1.12 source and modded to change some private vars to protected - * so we can extend it for I2P. - * - * @version $Id: NCSARequestLog.java,v 1.35 2005/08/13 00:01:24 gregwilkins Exp $ - * @author Tony Thompson - * @author Greg Wilkins - */ -public class NCSARequestLog implements RequestLog -{ - protected static Log log = LogFactory.getLog(NCSARequestLog.class); - - private String _filename; - private boolean _extended; - private boolean _append; - private int _retainDays; - private boolean _closeOut; - private boolean _preferProxiedForAddress; - private String _logDateFormat="dd/MMM/yyyy:HH:mm:ss ZZZ"; - private Locale _logLocale=Locale.getDefault(); - private String _logTimeZone=TimeZone.getDefault().getID(); - private String[] _ignorePaths; - private boolean _logLatency=false; - private boolean _logCookies=false; - - protected transient OutputStream _out; - protected transient OutputStream _fileOut; - protected transient DateCache _logDateCache; - protected transient PathMap _ignorePathMap; - protected transient Writer _writer; - - /* ------------------------------------------------------------ */ - /** Constructor. - */ - public NCSARequestLog() - { - _extended=true; - _append=true; - _retainDays=31; - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param filename Filename, which can be in - * rolloverFileOutputStream format - * @see org.mortbay.util.RolloverFileOutputStream - * @exception IOException - */ - public NCSARequestLog(String filename) - throws IOException - { - _extended=true; - _append=true; - _retainDays=31; - setFilename(filename); - } - - /* ------------------------------------------------------------ */ - /** Set the log filename. - * @see NCSARequestLog#setRetainDays(int) - * @param filename The filename to use. If the filename contains the - * string "yyyy_mm_dd", then a RolloverFileOutputStream is used and the - * log is rolled over nightly and aged according setRetainDays. If no - * filename is set or a null filename - * passed, then requests are logged to System.err. - */ - public void setFilename(String filename) - { - if (filename!=null) - { - filename=filename.trim(); - if (filename.length()==0) - filename=null; - } - _filename=filename; - } - - /* ------------------------------------------------------------ */ - /** Get the log filename. - * @see NCSARequestLog#getDatedFilename() - * @return The log filename without any date expansion. - */ - public String getFilename() - { - return _filename; - } - - /* ------------------------------------------------------------ */ - /** Get the dated log filename. - * @see NCSARequestLog#getFilename() - * @return The log filename with any date encoding expanded. - */ - public String getDatedFilename() - { - if (_fileOut instanceof RolloverFileOutputStream) - return ((RolloverFileOutputStream)_fileOut).getDatedFilename(); - return null; - } - - - /* ------------------------------------------------------------ */ - /** - * @param format The date format to use within the log file. - */ - public void setLogDateFormat(String format) - { - _logDateFormat=format; - } - - /* ------------------------------------------------------------ */ - /** - * @return The date format to use within the log file. - */ - public String getLogDateFormat() - { - return _logDateFormat; - } - - /* ------------------------------------------------------------ */ - /** - * @param tz The date format timezone to use within the log file. - */ - public void setLogTimeZone(String tz) - { - _logTimeZone=tz; - } - - /* ------------------------------------------------------------ */ - /** - * @return The date format timezone to use within the log file. - */ - public String getLogTimeZone() - { - return _logTimeZone; - } - - /* ------------------------------------------------------------ */ - /** - * @return The number of days to retain rollovered log files. - */ - public int getRetainDays() - { - return _retainDays; - } - - /* ------------------------------------------------------------ */ - /** - * @param retainDays The number of days to retain rollovered log files. - */ - public void setRetainDays(int retainDays) - { - _retainDays = retainDays; - } - - /* ------------------------------------------------------------ */ - /** - * @return True if NCSA extended format is to be used. - */ - public boolean isExtended() - { - return _extended; - } - - /* ------------------------------------------------------------ */ - /** - * @param e True if NCSA extended format is to be used. - */ - public void setExtended(boolean e) - { - _extended=e; - } - - /* ------------------------------------------------------------ */ - /** - * @return True if logs are appended to existing log files. - */ - public boolean isAppend() - { - return _append; - } - - /* ------------------------------------------------------------ */ - /** - * @param a True if logs are appended to existing log files. - */ - public void setAppend(boolean a) - { - _append=a; - } - - /* ------------------------------------------------------------ */ - /** - * @deprecated ignored - */ - public void setBuffered(boolean b) - {} - - /* ------------------------------------------------------------ */ - /** Set which paths to ignore. - * - * @param ignorePaths Array of path specifications to ignore - */ - public void setIgnorePaths(String[] ignorePaths) - { - // Contributed by Martin Vilcans (martin@jadestone.se) - _ignorePaths = ignorePaths; - } - - /* ------------------------------------------------------------ */ - public String[] getIgnorePaths() - { - return _ignorePaths; - } - - /* ------------------------------------------------------------ */ - /** - * @return Returns the logCookies. - */ - public boolean getLogCookies() - { - return _logCookies; - } - /* ------------------------------------------------------------ */ - /** - * @param logCookies The logCookies to set. - */ - public void setLogCookies(boolean logCookies) - { - _logCookies = logCookies; - } - - /* ------------------------------------------------------------ */ - /** - * @return Returns true if logging latency - */ - public boolean getLogLatency() - { - return _logLatency; - } - - /* ------------------------------------------------------------ */ - /** - * @param logLatency If true, latency is logged at the end of the log line - */ - public void setLogLatency(boolean logLatency) - { - _logLatency = logLatency; - } - - /* ------------------------------------------------------------ */ - /** - * Prefer to log the proxied-for IP address (if present in - * the request header) over the native requester IP address. - * Useful in reverse-proxy situations when you'd rather see - * the IP address of the host before the most recent proxy - * server, as opposed to your own proxy server(s) every time. - * - * jlrobins@socialserve.com, March 2004. - **/ - public void setPreferProxiedForAddress(boolean value) - { - _preferProxiedForAddress = value; - } - - /* ------------------------------------------------------------ */ - public void start() - throws Exception - { - _logDateCache=new DateCache(_logDateFormat,_logLocale); - _logDateCache.setTimeZoneID(_logTimeZone); - - if (_filename != null) - { - _fileOut=new RolloverFileOutputStream(_filename,_append,_retainDays); - _closeOut=true; - } - else - _fileOut=System.err; - - _out=_fileOut; - - if (_ignorePaths!=null && _ignorePaths.length>0) - { - _ignorePathMap=new PathMap(); - for (int i=0;i<_ignorePaths.length;i++) - _ignorePathMap.put(_ignorePaths[i],_ignorePaths[i]); - } - else - _ignorePathMap=null; - - _writer=new OutputStreamWriter(_out); - } - - /* ------------------------------------------------------------ */ - public boolean isStarted() - { - return _fileOut!=null; - } - - /* ------------------------------------------------------------ */ - public void stop() - { - try{if (_writer!=null)_writer.flush();} catch (IOException e){LogSupport.ignore(log,e);} - if (_out!=null && _closeOut) - try{_out.close();}catch(IOException e){LogSupport.ignore(log,e);} - _out=null; - _fileOut=null; - _closeOut=false; - _logDateCache=null; - _writer=null; - } - - /* ------------------------------------------------------------ */ - /** Log a request. - * @param request The request - * @param response The response to this request. - * @param responseLength The bytes written to the response. - */ - public void log(HttpRequest request, - HttpResponse response, - int responseLength) - { - try{ - // ignore ignorables - if (_ignorePathMap != null && - _ignorePathMap.getMatch(request.getPath()) != null) - return; - - // log the rest - if (_fileOut==null) - return; - - StringBuffer buf = new StringBuffer(160); - - String addr = null; - if(_preferProxiedForAddress) - { - // If header is not present, addr will remain null ... - addr = request.getField(HttpFields.__XForwardedFor); - } - if(addr == null) - addr = request.getRemoteAddr(); - buf.append(addr); - - buf.append(" - "); - String user = request.getAuthUser(); - buf.append((user==null)?"-":user); - buf.append(" ["); - buf.append(_logDateCache.format(request.getTimeStamp())); - buf.append("] \""); - buf.append(request.getMethod()); - buf.append(' '); - buf.append(request.getURI()); - buf.append(' '); - buf.append(request.getVersion()); - buf.append("\" "); - int status=response.getStatus(); - buf.append((char)('0'+((status/100)%10))); - buf.append((char)('0'+((status/10)%10))); - buf.append((char)('0'+(status%10))); - if (responseLength>=0) - { - buf.append(' '); - if (responseLength>99999) - buf.append(Integer.toString(responseLength)); - else - { - if (responseLength>9999) - buf.append((char)('0'+((responseLength/10000)%10))); - if (responseLength>999) - buf.append((char)('0'+((responseLength/1000)%10))); - if (responseLength>99) - buf.append((char)('0'+((responseLength/100)%10))); - if (responseLength>9) - buf.append((char)('0'+((responseLength/10)%10))); - buf.append((char)('0'+(responseLength%10))); - } - buf.append(' '); - } - else - buf.append(" - "); - - String log =buf.toString(); - synchronized(_writer) - { - _writer.write(log); - if (_extended) - { - logExtended(request,response,_writer); - if (!_logCookies) - _writer.write(" -"); - } - - if (_logCookies) - { - Cookie[] cookies = request.getCookies(); - if (cookies==null || cookies.length==0) - _writer.write(" -"); - else - { - _writer.write(" \""); - for (int i=0;i<cookies.length;i++) - { - if (i!=0) - _writer.write(';'); - _writer.write(cookies[i].getName()); - _writer.write('='); - _writer.write(cookies[i].getValue()); - } - _writer.write("\""); - } - } - - if (_logLatency) - _writer.write(" "+(System.currentTimeMillis()-request.getTimeStamp())); - - _writer.write(StringUtil.__LINE_SEPARATOR); - _writer.flush(); - } - } - catch(IOException e) - { - log.warn(LogSupport.EXCEPTION,e); - } - } - - /* ------------------------------------------------------------ */ - /** Log Extended fields. - * This method can be extended by a derived class to add extened fields to - * each log entry. It is called by the log method after all standard - * fields have been added, but before the line terminator. - * Derived implementations should write extra fields to the Writer - * provided. - * The default implementation writes the referer and user agent. - * @param request The request to log. - * @param response The response to log. - * @param log The writer to write the extra fields to. - * @exception IOException Problem writing log - */ - protected void logExtended(HttpRequest request, - HttpResponse response, - Writer log) - throws IOException - { - String referer = request.getField(HttpFields.__Referer); - if(referer==null) - log.write("\"-\" "); - else - { - log.write('"'); - log.write(referer); - log.write("\" "); - } - - String agent = request.getField(HttpFields.__UserAgent); - if(agent==null) - log.write("\"-\""); - else - { - log.write('"'); - log.write(agent); - log.write('"'); - } - - - } -} - diff --git a/apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java b/apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java deleted file mode 100644 index d1a57159bf..0000000000 --- a/apps/jetty/java/src/org/mortbay/http/handler/ResourceHandler.java +++ /dev/null @@ -1,809 +0,0 @@ -// ======================================================================== -// $Id: ResourceHandler.java,v 1.66 2005/08/24 08:18:17 gregwilkins Exp $ -// Copyright 199-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== - -package org.mortbay.http.handler; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.Enumeration; -import java.util.List; - -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; -import org.mortbay.http.HttpException; -import org.mortbay.http.HttpFields; -import org.mortbay.http.HttpRequest; -import org.mortbay.http.HttpResponse; -import org.mortbay.http.InclusiveByteRange; -import org.mortbay.http.MultiPartResponse; -import org.mortbay.http.ResourceCache; -import org.mortbay.util.CachedResource; -import org.mortbay.util.IO; -import org.mortbay.util.LogSupport; -import org.mortbay.util.Resource; -import org.mortbay.util.StringMap; -import org.mortbay.util.TypeUtil; -import org.mortbay.util.URI; - -/* ------------------------------------------------------------ */ -/** Handler to serve files and resources. - * Serves files from a given resource URL base and implements - * the GET, HEAD, DELETE, OPTIONS, PUT, MOVE methods and the - * IfModifiedSince and IfUnmodifiedSince header fields. - * A simple memory cache is also provided to reduce file I/O. - * HTTP/1.1 ranges are supported. - * - * @version $Id: ResourceHandler.java,v 1.66 2005/08/24 08:18:17 gregwilkins Exp $ - * @author Nuno Pregui?a (sorry, wasn't UTF-8) - * @author Greg Wilkins - */ -public class ResourceHandler extends AbstractHttpHandler -{ - private static Log log = LogFactory.getLog(ResourceHandler.class); - - /* ----------------------------------------------------------------- */ - private boolean _acceptRanges=true; - private boolean _redirectWelcomeFiles ; - private String[] _methods=null; - private String _allowed; - private boolean _dirAllowed=true; - private int _minGzipLength =-1; - private StringMap _methodMap = new StringMap(); - { - setAllowedMethods(new String[] - { - HttpRequest.__GET, - HttpRequest.__POST, - HttpRequest.__HEAD, - HttpRequest.__OPTIONS, - HttpRequest.__TRACE - }); - } - - /* ----------------------------------------------------------------- */ - /** Construct a ResourceHandler. - */ - public ResourceHandler() - {} - - - /* ----------------------------------------------------------------- */ - public synchronized void start() - throws Exception - { - super.start(); - } - - /* ----------------------------------------------------------------- */ - public void stop() - throws InterruptedException - { - super.stop(); - } - - /* ------------------------------------------------------------ */ - public String[] getAllowedMethods() - { - return _methods; - } - - /* ------------------------------------------------------------ */ - public void setAllowedMethods(String[] methods) - { - StringBuffer b = new StringBuffer(); - _methods=methods; - _methodMap.clear(); - for (int i=0;i<methods.length;i++) - { - _methodMap.put(methods[i],methods[i]); - if (i>0) - b.append(','); - b.append(methods[i]); - } - _allowed=b.toString(); - } - - /* ------------------------------------------------------------ */ - public boolean isMethodAllowed(String method) - { - return _methodMap.get(method)!=null; - } - - /* ------------------------------------------------------------ */ - public String getAllowedString() - { - return _allowed; - } - - /* ------------------------------------------------------------ */ - public boolean isDirAllowed() - { - return _dirAllowed; - } - - /* ------------------------------------------------------------ */ - public void setDirAllowed(boolean dirAllowed) - { - _dirAllowed = dirAllowed; - } - - /* ------------------------------------------------------------ */ - public boolean isAcceptRanges() - { - return _acceptRanges; - } - - /* ------------------------------------------------------------ */ - /** - * @return True if welcome files are redirected to. False if forward is used. - */ - public boolean getRedirectWelcome() - { - return _redirectWelcomeFiles; - } - - /* ------------------------------------------------------------ */ - /** - * @param redirectWelcome True if welcome files are redirected to. False - * if forward is used. - */ - public void setRedirectWelcome(boolean redirectWelcome) - { - _redirectWelcomeFiles = redirectWelcome; - } - - /* ------------------------------------------------------------ */ - /** Set if the handler accepts range requests. - * Default is false; - * @param ar True if the handler should accept ranges - */ - public void setAcceptRanges(boolean ar) - { - _acceptRanges=ar; - } - - /* ------------------------------------------------------------ */ - /** Get minimum content length for GZIP encoding. - * @return Minimum length of content for gzip encoding or -1 if disabled. - */ - public int getMinGzipLength() - { - return _minGzipLength; - } - - /* ------------------------------------------------------------ */ - /** Set minimum content length for GZIP encoding. - * @param minGzipLength If set to a positive integer, then static content - * larger than this will be served as gzip content encoded - * if a matching resource is found ending with ".gz" - */ - public void setMinGzipLength(int minGzipLength) - { - _minGzipLength = minGzipLength; - } - - - /* ------------------------------------------------------------ */ - /** get Resource to serve. - * Map a path to a resource. The default implementation calls - * HttpContext.getResource but derived handers may provide - * their own mapping. - * @param pathInContext The path to find a resource for. - * @return The resource to serve. - */ - protected Resource getResource(String pathInContext) - throws IOException - { - return getHttpContext().getResource(pathInContext); - } - - /* ------------------------------------------------------------ */ - public void handle(String pathInContext, - String pathParams, - HttpRequest request, - HttpResponse response) - throws HttpException, IOException - { - Resource resource = getResource(pathInContext); - if (resource==null) - return; - - // Is the method allowed? - if (!isMethodAllowed(request.getMethod())) - { - if(log.isDebugEnabled())log.debug("Method not allowed: "+request.getMethod()); - if (resource.exists()) - { - setAllowHeader(response); - response.sendError(HttpResponse.__405_Method_Not_Allowed); - } - return; - } - - // Handle the request - try - { - if(log.isDebugEnabled())log.debug("PATH="+pathInContext+" RESOURCE="+resource); - - // check filename - String method=request.getMethod(); - if (method.equals(HttpRequest.__GET) || - method.equals(HttpRequest.__POST) || - method.equals(HttpRequest.__HEAD)) - handleGet(request, response, pathInContext, pathParams, resource); - else if (method.equals(HttpRequest.__PUT)) - handlePut(request, response, pathInContext, resource); - else if (method.equals(HttpRequest.__DELETE)) - handleDelete(request, response, pathInContext, resource); - else if (method.equals(HttpRequest.__OPTIONS)) - handleOptions(response, pathInContext); - else if (method.equals(HttpRequest.__MOVE)) - handleMove(request, response, pathInContext, resource); - else if (method.equals(HttpRequest.__TRACE)) - handleTrace(request, response); - else - { - if(log.isDebugEnabled())log.debug("Unknown action:"+method); - // anything else... - try{ - if (resource.exists()) - response.sendError(HttpResponse.__501_Not_Implemented); - } - catch(Exception e) {LogSupport.ignore(log,e);} - } - } - catch(IllegalArgumentException e) - { - LogSupport.ignore(log,e); - } - finally - { - if (resource!=null && !(resource instanceof CachedResource)) - resource.release(); - } - } - - /* ------------------------------------------------------------------- */ - public void handleGet(HttpRequest request, - HttpResponse response, - String pathInContext, - String pathParams, - Resource resource) - throws IOException - { - if(log.isDebugEnabled())log.debug("Looking for "+resource); - - if (resource!=null && resource.exists()) - { - // check if directory - if (resource.isDirectory()) - { - if (!pathInContext.endsWith("/") && !pathInContext.equals("/")) - { - log.debug("Redirect to directory/"); - - String q=request.getQuery(); - - // Properly fix URI - URI urifix = new URI(request.getRequestURL().toString()); - urifix.setPath(urifix.getPath()); - StringBuffer buf = new StringBuffer(urifix.toString()); - urifix = null; - - if (q!=null&&q.length()!=0) - { - buf.append('?'); - buf.append(q); - } - response.setField(HttpFields.__Location, URI.addPaths(buf.toString(),"/")); - response.setStatus(302); - request.setHandled(true); - return; - } - - // See if index file exists - String welcome=getHttpContext().getWelcomeFile(resource); - if (welcome!=null) - { - // Forward to the index - String ipath=URI.addPaths(pathInContext,welcome); - if (_redirectWelcomeFiles) - { - // Redirect to the index - ipath=URI.addPaths(getHttpContext().getContextPath(),ipath); - response.setContentLength(0); - response.sendRedirect(ipath); - } - else - { - URI uri=request.getURI(); - uri.setPath(URI.addPaths(uri.getPath(),welcome)); - getHttpContext().handle(ipath,pathParams,request,response); - } - return; - } - - // Check modified dates - if (!passConditionalHeaders(request,response,resource)) - return; - // If we got here, no forward to index took place - sendDirectory(request,response,resource,pathInContext.length()>1); - } - // check if it is a file - else if (resource.exists()) - { - // Check modified dates - if (!passConditionalHeaders(request,response,resource)) - return; - sendData(request,response,pathInContext,resource,true); - } - else - // don't know what it is - log.warn("Unknown file type"); - } - } - - - /* ------------------------------------------------------------ */ - /* Check modification date headers. - */ - private boolean passConditionalHeaders(HttpRequest request, - HttpResponse response, - Resource resource) - throws IOException - { - if (!request.getMethod().equals(HttpRequest.__HEAD)) - { - // If we have meta data for the file - // Try a direct match for most common requests. Avoids - // parsing the date. - ResourceCache.ResourceMetaData metaData = - (ResourceCache.ResourceMetaData)resource.getAssociate(); - if (metaData!=null) - { - String ifms=request.getField(HttpFields.__IfModifiedSince); - String mdlm=metaData.getLastModified(); - if (ifms!=null && mdlm!=null && ifms.equals(mdlm)) - { - response.setStatus(HttpResponse.__304_Not_Modified); - request.setHandled(true); - return false; - } - } - - - long date=0; - // Parse the if[un]modified dates and compare to resource - - if ((date=request.getDateField(HttpFields.__IfUnmodifiedSince))>0) - { - if (resource.lastModified()/1000 > date/1000) - { - response.sendError(HttpResponse.__412_Precondition_Failed); - return false; - } - } - - if ((date=request.getDateField(HttpFields.__IfModifiedSince))>0) - { - - if (resource.lastModified()/1000 <= date/1000) - { - response.setStatus(HttpResponse.__304_Not_Modified); - request.setHandled(true); - return false; - } - } - - } - return true; - } - - - /* ------------------------------------------------------------ */ - void handlePut(HttpRequest request, - HttpResponse response, - String pathInContext, - Resource resource) - throws IOException - { - if(log.isDebugEnabled())log.debug("PUT "+pathInContext+" in "+resource); - - boolean exists=resource!=null && resource.exists(); - if (exists && - !passConditionalHeaders(request,response,resource)) - return; - - if (pathInContext.endsWith("/")) - { - if (!exists) - { - if (!resource.getFile().mkdirs()) - response.sendError(HttpResponse.__403_Forbidden, "Directories could not be created"); - else - { - request.setHandled(true); - response.setStatus(HttpResponse.__201_Created); - response.commit(); - } - } - else - { - request.setHandled(true); - response.setStatus(HttpResponse.__200_OK); - response.commit(); - } - } - else - { - try - { - int toRead = request.getContentLength(); - InputStream in = request.getInputStream(); - OutputStream out = resource.getOutputStream(); - if (toRead>=0) - IO.copy(in,out,toRead); - else - IO.copy(in,out); - out.close(); - request.setHandled(true); - response.setStatus(exists - ?HttpResponse.__200_OK - :HttpResponse.__201_Created); - response.commit(); - } - catch (Exception ex) - { - log.warn(LogSupport.EXCEPTION,ex); - response.sendError(HttpResponse.__403_Forbidden, - ex.getMessage()); - } - } - } - - /* ------------------------------------------------------------ */ - void handleDelete(HttpRequest request, - HttpResponse response, - String pathInContext, - Resource resource) - throws IOException - { - if(log.isDebugEnabled())log.debug("DELETE "+pathInContext+" from "+resource); - - if (!resource.exists() || - !passConditionalHeaders(request,response,resource)) - return; - - try - { - // delete the file - if (resource.delete()) - response.setStatus(HttpResponse.__204_No_Content); - else - response.sendError(HttpResponse.__403_Forbidden); - - // Send response - request.setHandled(true); - } - catch (SecurityException sex) - { - log.warn(LogSupport.EXCEPTION,sex); - response.sendError(HttpResponse.__403_Forbidden, sex.getMessage()); - } - } - - - /* ------------------------------------------------------------ */ - void handleMove(HttpRequest request, - HttpResponse response, - String pathInContext, - Resource resource) - throws IOException - { - if (!resource.exists() || !passConditionalHeaders(request,response,resource)) - return; - - - String newPath = URI.canonicalPath(request.getField("New-uri")); - if (newPath==null) - { - response.sendError(HttpResponse.__405_Method_Not_Allowed, - "Bad new uri"); - return; - } - - String contextPath = getHttpContext().getContextPath(); - if (contextPath!=null && !newPath.startsWith(contextPath)) - { - response.sendError(HttpResponse.__405_Method_Not_Allowed, - "Not in context"); - return; - } - - - // Find path - try - { - // TODO - Check this - String newInfo=newPath; - if (contextPath!=null) - newInfo=newInfo.substring(contextPath.length()); - Resource newFile = getHttpContext().getBaseResource().addPath(newInfo); - - if(log.isDebugEnabled())log.debug("Moving "+resource+" to "+newFile); - resource.renameTo(newFile); - - response.setStatus(HttpResponse.__204_No_Content); - request.setHandled(true); - } - catch (Exception ex) - { - log.warn(LogSupport.EXCEPTION,ex); - setAllowHeader(response); - response.sendError(HttpResponse.__405_Method_Not_Allowed, - "Error:"+ex); - return; - } - } - - /* ------------------------------------------------------------ */ - void handleOptions(HttpResponse response, String pathInContext) - throws IOException - { - if ("*".equals(pathInContext)) - return; - setAllowHeader(response); - response.commit(); - } - - /* ------------------------------------------------------------ */ - void setAllowHeader(HttpResponse response) - { - response.setField(HttpFields.__Allow, getAllowedString()); - } - - /* ------------------------------------------------------------ */ - public void writeHeaders(HttpResponse response,Resource resource, long count) - throws IOException - { - ResourceCache.ResourceMetaData metaData = - (ResourceCache.ResourceMetaData)resource.getAssociate(); - - response.setContentType(metaData.getMimeType()); - if (count != -1) - { - if (count==resource.length()) - response.setField(HttpFields.__ContentLength,metaData.getLength()); - else - response.setContentLength((int)count); - } - - response.setField(HttpFields.__LastModified,metaData.getLastModified()); - - if (_acceptRanges && response.getHttpRequest().getDotVersion()>0) - response.setField(HttpFields.__AcceptRanges,"bytes"); - } - - /* ------------------------------------------------------------ */ - public void sendData(HttpRequest request, - HttpResponse response, - String pathInContext, - Resource resource, - boolean writeHeaders) - throws IOException - { - long resLength=resource.length(); - - // see if there are any range headers - Enumeration reqRanges = - request.getDotVersion()>0 - ?request.getFieldValues(HttpFields.__Range) - :null; - - if (!writeHeaders || reqRanges == null || !reqRanges.hasMoreElements()) - { - // look for a gziped content. - Resource data=resource; - if (_minGzipLength>0) - { - String accept=request.getField(HttpFields.__AcceptEncoding); - if (accept!=null && resLength>_minGzipLength && - !pathInContext.endsWith(".gz")) - { - Resource gz = getHttpContext().getResource(pathInContext+".gz"); - if (gz.exists() && accept.indexOf("gzip")>=0) - { - if(log.isDebugEnabled())log.debug("gzip="+gz); - response.setField(HttpFields.__ContentEncoding,"gzip"); - data=gz; - resLength=data.length(); - } - } - } - writeHeaders(response,resource,resLength); - - request.setHandled(true); - OutputStream out = response.getOutputStream(); - data.writeTo(out,0,resLength); - return; - } - - // Parse the satisfiable ranges - List ranges =InclusiveByteRange.satisfiableRanges(reqRanges,resLength); - if(log.isDebugEnabled())log.debug("ranges: " + reqRanges + " == " + ranges); - - // if there are no satisfiable ranges, send 416 response - if (ranges==null || ranges.size()==0) - { - log.debug("no satisfiable ranges"); - writeHeaders(response, resource, resLength); - response.setStatus(HttpResponse.__416_Requested_Range_Not_Satisfiable); - response.setReason((String)HttpResponse.__statusMsg - .get(TypeUtil.newInteger(HttpResponse.__416_Requested_Range_Not_Satisfiable))); - - response.setField(HttpFields.__ContentRange, - InclusiveByteRange.to416HeaderRangeString(resLength)); - - OutputStream out = response.getOutputStream(); - resource.writeTo(out,0,resLength); - request.setHandled(true); - return; - } - - - // if there is only a single valid range (must be satisfiable - // since were here now), send that range with a 216 response - if ( ranges.size()== 1) - { - InclusiveByteRange singleSatisfiableRange = - (InclusiveByteRange)ranges.get(0); - if(log.isDebugEnabled())log.debug("single satisfiable range: " + singleSatisfiableRange); - long singleLength = singleSatisfiableRange.getSize(resLength); - writeHeaders(response,resource,singleLength); - response.setStatus(HttpResponse.__206_Partial_Content); - response.setReason((String)HttpResponse.__statusMsg - .get(TypeUtil.newInteger(HttpResponse.__206_Partial_Content))); - response.setField(HttpFields.__ContentRange, - singleSatisfiableRange.toHeaderRangeString(resLength)); - OutputStream out = response.getOutputStream(); - resource.writeTo(out, - singleSatisfiableRange.getFirst(resLength), - singleLength); - request.setHandled(true); - return; - } - - - // multiple non-overlapping valid ranges cause a multipart - // 216 response which does not require an overall - // content-length header - // - ResourceCache.ResourceMetaData metaData = - (ResourceCache.ResourceMetaData)resource.getAssociate(); - String encoding = metaData.getMimeType(); - MultiPartResponse multi = new MultiPartResponse(response); - response.setStatus(HttpResponse.__206_Partial_Content); - response.setReason((String)HttpResponse.__statusMsg - .get(TypeUtil.newInteger(HttpResponse.__206_Partial_Content))); - - // If the request has a "Request-Range" header then we need to - // send an old style multipart/x-byteranges Content-Type. This - // keeps Netscape and acrobat happy. This is what Apache does. - String ctp; - if (request.containsField(HttpFields.__RequestRange)) - ctp = "multipart/x-byteranges; boundary="; - else - ctp = "multipart/byteranges; boundary="; - response.setContentType(ctp+multi.getBoundary()); - - InputStream in=(resource instanceof CachedResource) - ?null:resource.getInputStream(); - OutputStream out = response.getOutputStream(); - long pos=0; - - for (int i=0;i<ranges.size();i++) - { - InclusiveByteRange ibr = (InclusiveByteRange) ranges.get(i); - String header=HttpFields.__ContentRange+": "+ - ibr.toHeaderRangeString(resLength); - if(log.isDebugEnabled())log.debug("multi range: "+encoding+" "+header); - multi.startPart(encoding,new String[]{header}); - - long start=ibr.getFirst(resLength); - long size=ibr.getSize(resLength); - if (in!=null) - { - // Handle non cached resource - if (start<pos) - { - in.close(); - in=resource.getInputStream(); - pos=0; - } - if (pos<start) - { - in.skip(start-pos); - pos=start; - } - IO.copy(in,out,size); - pos+=size; - } - else - // Handle cached resource - resource.writeTo(out,start,size); - - } - if (in!=null) - in.close(); - multi.close(); - - request.setHandled(true); - - return; - } - - - /* ------------------------------------------------------------------- */ - void sendDirectory(HttpRequest request, - HttpResponse response, - Resource resource, - boolean parent) - throws IOException - { - if (!_dirAllowed) - { - response.sendError(HttpResponse.__403_Forbidden); - return; - } - - request.setHandled(true); - - if(log.isDebugEnabled())log.debug("sendDirectory: "+resource); - byte[] data=null; - if (resource instanceof CachedResource) - data=((CachedResource)resource).getCachedData(); - - if (data==null) - { - String base = URI.addPaths(request.getPath(),"/"); - String dir = resource.getListHTML(URI.encodePath(base),parent); - if (dir==null) - { - response.sendError(HttpResponse.__403_Forbidden, - "No directory"); - return; - } - data=dir.getBytes("UTF8"); - if (resource instanceof CachedResource) - ((CachedResource)resource).setCachedData(data); - } - - response.setContentType("text/html; charset=UTF8"); - response.setContentLength(data.length); - - if (request.getMethod().equals(HttpRequest.__HEAD)) - { - response.commit(); - return; - } - - response.getOutputStream().write(data,0,data.length); - response.commit(); - } -} - - - diff --git a/apps/jetty/java/src/org/mortbay/jetty/Server.java b/apps/jetty/java/src/org/mortbay/jetty/Server.java deleted file mode 100644 index 409f8a529d..0000000000 --- a/apps/jetty/java/src/org/mortbay/jetty/Server.java +++ /dev/null @@ -1,617 +0,0 @@ -// ======================================================================== -// $Id: Server.java,v 1.40 2005/10/21 13:52:11 gregwilkins Exp $ -// Copyright 2002-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== - -package org.mortbay.jetty; - -import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; - -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; -import org.mortbay.http.HttpContext; -import org.mortbay.http.HttpServer; -import org.mortbay.jetty.servlet.ServletHttpContext; -import org.mortbay.jetty.servlet.WebApplicationContext; -import org.mortbay.util.LogSupport; -import org.mortbay.util.Resource; -import org.mortbay.xml.XmlConfiguration; - - -/* ------------------------------------------------------------ */ -/** The Jetty HttpServer. - * - * This specialization of org.mortbay.http.HttpServer adds knowledge - * about servlets and their specialized contexts. It also included - * support for initialization from xml configuration files - * that follow the XmlConfiguration dtd. - * - * HttpContexts created by Server are of the type - * org.mortbay.jetty.servlet.ServletHttpContext unless otherwise - * specified. - * - * This class also provides a main() method which starts a server for - * each config file passed on the command line. If the system - * property JETTY_NO_SHUTDOWN_HOOK is not set to true, then a shutdown - * hook is thread is registered to stop these servers. - * - * @see org.mortbay.xml.XmlConfiguration - * @see org.mortbay.jetty.servlet.ServletHttpContext - * @version $Revision: 1.40 $ - * @author Greg Wilkins (gregw) - */ -public class Server extends HttpServer -{ - static Log log = LogFactory.getLog(Server.class); - private String[] _webAppConfigurationClassNames = - new String[]{"org.mortbay.jetty.servlet.XMLConfiguration", "org.mortbay.jetty.servlet.JettyWebConfiguration"}; - private String _configuration; - private String _rootWebApp; - private static ShutdownHookThread hookThread = new ShutdownHookThread(); - - /* ------------------------------------------------------------ */ - /** Constructor. - */ - public Server() - { - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param configuration The filename or URL of the XML - * configuration file. - */ - public Server(String configuration) - throws IOException - { - this(Resource.newResource(configuration).getURL()); - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param configuration The filename or URL of the XML - * configuration file. - */ - public Server(Resource configuration) - throws IOException - { - this(configuration.getURL()); - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param configuration The filename or URL of the XML - * configuration file. - */ - public Server(URL configuration) - throws IOException - { - _configuration=configuration.toString(); - Server.hookThread.add(this); - try - { - XmlConfiguration config=new XmlConfiguration(configuration); - config.configure(this); - } - catch(IOException e) - { - throw e; - } - catch(InvocationTargetException e) - { - log.warn(LogSupport.EXCEPTION,e.getTargetException()); - throw new IOException("Jetty configuration problem: "+e.getTargetException()); - } - catch(Exception e) - { - log.warn(LogSupport.EXCEPTION,e); - throw new IOException("Jetty configuration problem: "+e); - } - } - - /* ------------------------------------------------------------ */ - public boolean getStopAtShutdown() - { - return hookThread.contains(this); - } - - /* ------------------------------------------------------------ */ - public void setStopAtShutdown(boolean stop) - { - if (stop) - hookThread.add(this); - else - hookThread.remove(this); - } - - /* ------------------------------------------------------------ */ - /** Get the root webapp name. - * @return The name of the root webapp (eg. "root" for root.war). - */ - public String getRootWebApp() - { - return _rootWebApp; - } - - /* ------------------------------------------------------------ */ - /** Set the root webapp name. - * @param rootWebApp The name of the root webapp (eg. "root" for root.war). - */ - public void setRootWebApp(String rootWebApp) - { - _rootWebApp = rootWebApp; - } - - /* ------------------------------------------------------------ */ - /** Configure the server from an XML file. - * @param configuration The filename or URL of the XML - * configuration file. - */ - public void configure(String configuration) - throws IOException - { - - URL url=Resource.newResource(configuration).getURL(); - if (_configuration!=null && _configuration.equals(url.toString())) - return; - if (_configuration!=null) - throw new IllegalStateException("Already configured with "+_configuration); - try - { - XmlConfiguration config=new XmlConfiguration(url); - _configuration=url.toString(); - config.configure(this); - } - catch(IOException e) - { - throw e; - } - catch(Exception e) - { - log.warn(LogSupport.EXCEPTION,e); - throw new IOException("Jetty configuration problem: "+e); - } - } - - /* ------------------------------------------------------------ */ - public String getConfiguration() - { - return _configuration; - } - - /* ------------------------------------------------------------ */ - /** Create a new ServletHttpContext. - * Ths method is called by HttpServer to creat new contexts. Thus - * calls to addContext or getContext that result in a new Context - * being created will return an - * org.mortbay.jetty.servlet.ServletHttpContext instance. - * @return ServletHttpContext - */ - protected HttpContext newHttpContext() - { - return new ServletHttpContext(); - } - - /* ------------------------------------------------------------ */ - /** Create a new WebApplicationContext. - * Ths method is called by Server to creat new contexts for web - * applications. Thus calls to addWebApplication that result in - * a new Context being created will return an correct class instance. - * Derived class can override this method to create instance of its - * own class derived from WebApplicationContext in case it needs more - * functionality. - * @param webApp The Web application directory or WAR file. - * @return WebApplicationContext - */ - protected WebApplicationContext newWebApplicationContext( - String webApp - ) - { - return new WebApplicationContext(webApp); - } - - /* ------------------------------------------------------------ */ - /** Add Web Application. - * @param contextPathSpec The context path spec. Which must be of - * the form / or /path/* - * @param webApp The Web application directory or WAR file. - * @return The WebApplicationContext - * @exception IOException - */ - public WebApplicationContext addWebApplication(String contextPathSpec, - String webApp) - throws IOException - { - return addWebApplication(null,contextPathSpec,webApp); - } - - /* ------------------------------------------------------------ */ - /** Add Web Application. - * @param virtualHost Virtual host name or null - * @param contextPathSpec The context path spec. Which must be of - * the form / or /path/* - * @param webApp The Web application directory or WAR file. - * @return The WebApplicationContext - * @exception IOException - */ - public WebApplicationContext addWebApplication(String virtualHost, - String contextPathSpec, - String webApp) - throws IOException - { - WebApplicationContext appContext = - newWebApplicationContext(webApp); - appContext.setContextPath(contextPathSpec); - addContext(virtualHost,appContext); - if(log.isDebugEnabled())log.debug("Web Application "+appContext+" added"); - return appContext; - } - - - /* ------------------------------------------------------------ */ - /** Add Web Applications. - * Add auto webapplications to the server. The name of the - * webapp directory or war is used as the context name. If a - * webapp is called "root" it is added at "/". - * @param webapps Directory file name or URL to look for auto webapplication. - * @exception IOException - */ - public WebApplicationContext[] addWebApplications(String webapps) - throws IOException - { - return addWebApplications(null,webapps,null,false); - } - - /* ------------------------------------------------------------ */ - /** Add Web Applications. - * Add auto webapplications to the server. The name of the - * webapp directory or war is used as the context name. If the - * webapp matches the rootWebApp it is added as the "/" context. - * @param host Virtual host name or null - * @param webapps Directory file name or URL to look for auto webapplication. - * @exception IOException - */ - public WebApplicationContext[] addWebApplications(String host, - String webapps) - throws IOException - { - return addWebApplications(host,webapps,null,false); - } - - /* ------------------------------------------------------------ */ - /** Add Web Applications. - * Add auto webapplications to the server. The name of the - * webapp directory or war is used as the context name. If the - * webapp matches the rootWebApp it is added as the "/" context. - * @param host Virtual host name or null - * @param webapps Directory file name or URL to look for auto - * webapplication. - * @param extract If true, extract war files - * @exception IOException - */ - public WebApplicationContext[] addWebApplications(String host, - String webapps, - boolean extract) - throws IOException - { - return addWebApplications(host,webapps,null,extract); - } - - /* ------------------------------------------------------------ */ - /** Add Web Applications. - * Add auto webapplications to the server. The name of the - * webapp directory or war is used as the context name. If the - * webapp matches the rootWebApp it is added as the "/" context. - * @param host Virtual host name or null - * @param webapps Directory file name or URL to look for auto - * webapplication. - * @param defaults The defaults xml filename or URL which is - * loaded before any in the web app. Must respect the web.dtd. - * If null the default defaults file is used. If the empty string, then - * no defaults file is used. - * @param extract If true, extract war files - * @exception IOException - */ - public WebApplicationContext[] addWebApplications(String host, - String webapps, - String defaults, - boolean extract) - throws IOException - { - return addWebApplications(host,webapps,defaults,extract,true,null); - } - - /* ------------------------------------------------------------ */ - /** Add Web Applications. - * Add auto webapplications to the server. The name of the - * webapp directory or war is used as the context name. If the - * webapp matches the rootWebApp it is added as the "/" context. - * @param host Virtual host name or null - * @param webapps Directory file name or URL to look for auto - * webapplication. - * @param defaults The defaults xml filename or URL which is - * loaded before any in the web app. Must respect the web.dtd. - * If null the default defaults file is used. If the empty string, then - * no defaults file is used. - * @param extract If true, extract war files - * @param java2CompliantClassLoader True if java2 compliance is applied to all webapplications - * @exception IOException - */ - public WebApplicationContext[] addWebApplications(String host, - String webapps, - String defaults, - boolean extract, - boolean java2CompliantClassLoader) - throws IOException - { - return addWebApplications(host,webapps,defaults,extract,java2CompliantClassLoader,null); - - } - /* ------------------------------------------------------------ */ - /** Add Web Applications. - * Add auto webapplications to the server. The name of the - * webapp directory or war is used as the context name. If the - * webapp matches the rootWebApp it is added as the "/" context. - * @param host Virtual host name or null - * @param webapps Directory file name or URL to look for auto - * webapplication. - * @param defaults The defaults xml filename or URL which is - * loaded before any in the web app. Must respect the web.dtd. - * If null the default defaults file is used. If the empty string, then - * no defaults file is used. - * @param extract If true, extract war files - * @param java2CompliantClassLoader True if java2 compliance is applied to all webapplications - * @param Attributes[] A set of attributes to pass to setAttribute, format is first item is the key, second item is the value. - * @exception IOException - */ - public WebApplicationContext[] addWebApplications(String host, - String webapps, - String defaults, - boolean extract, - boolean java2CompliantClassLoader, - String Attributes[]) - throws IOException - { - ArrayList wacs = new ArrayList(); - Resource r=Resource.newResource(webapps); - if (!r.exists()) - throw new IllegalArgumentException("No such webapps resource "+r); - - if (!r.isDirectory()) - throw new IllegalArgumentException("Not directory webapps resource "+r); - if(Attributes != null) { - if(((Attributes.length / 2) * 2) != Attributes.length) { - throw new IllegalArgumentException("Attributes must be in pairs of key,value."); - } - } - String[] files=r.list(); - - for (int f=0;files!=null && f<files.length;f++) - { - String context=files[f]; - - if (context.equalsIgnoreCase("CVS/") || - context.equalsIgnoreCase("CVS") || - context.startsWith(".")) - continue; - - - String app = r.addPath(r.encode(files[f])).toString(); - if (context.toLowerCase().endsWith(".war") || - context.toLowerCase().endsWith(".jar")) - { - context=context.substring(0,context.length()-4); - Resource unpacked=r.addPath(context); - if (unpacked!=null && unpacked.exists() && unpacked.isDirectory()) - continue; - } - - if (_rootWebApp!=null && (context.equals(_rootWebApp)||context.equals(_rootWebApp+"/"))) - context="/"; - else - context="/"+context; - - WebApplicationContext wac= addWebApplication(host, - context, - app); - wac.setExtractWAR(extract); - wac.setClassLoaderJava2Compliant(java2CompliantClassLoader); - if (defaults!=null) - { - if (defaults.length()==0) - wac.setDefaultsDescriptor(null); - else - wac.setDefaultsDescriptor(defaults); - } - if(Attributes != null) { - for(int i = 0; i < Attributes.length; i++, i++) { - wac.setAttribute(Attributes[i],Attributes[i + 1]); - } - } - wacs.add(wac); - } - - return (WebApplicationContext[])wacs.toArray(new WebApplicationContext[wacs.size()]); - } - - - /* ------------------------------------------------------------ */ - /** setWebApplicationConfigurationClasses - * Set up the list of classnames of WebApplicationContext.Configuration - * implementations that will be applied to configure every webapp. - * The list can be overridden by individual WebApplicationContexts. - * @param configurationClasses - */ - public void setWebApplicationConfigurationClassNames (String[] configurationClassNames) - { - if (configurationClassNames != null) - { - _webAppConfigurationClassNames = new String[configurationClassNames.length]; - System.arraycopy(configurationClassNames, 0, _webAppConfigurationClassNames, 0, configurationClassNames.length); - } - } - - public String[] getWebApplicationConfigurationClassNames () - { - return _webAppConfigurationClassNames; - } - - /* ------------------------------------------------------------ */ - /* ------------------------------------------------------------ */ - /* ------------------------------------------------------------ */ - public static void main(String[] arg) - { - String[] dftConfig={"etc/jetty.xml"}; - - if (arg.length==0) - { - log.info("Using default configuration: etc/jetty.xml"); - arg=dftConfig; - } - - final Server[] servers=new Server[arg.length]; - - // create and start the servers. - for (int i=0;i<arg.length;i++) - { - try - { - servers[i] = new Server(arg[i]); - servers[i].setStopAtShutdown(true); - servers[i].start(); - - } - catch(Exception e) - { - log.warn(LogSupport.EXCEPTION,e); - } - } - - // create and start the servers. - for (int i=0;i<arg.length;i++) - { - try{servers[i].join();} - catch (Exception e){LogSupport.ignore(log,e);} - } - } - - /** - * ShutdownHook thread for stopping all servers. - * - * Thread is hooked first time list of servers is changed. - */ - private static class ShutdownHookThread extends Thread { - private boolean hooked = false; - private ArrayList servers = new ArrayList(); - - /** - * Hooks this thread for shutdown. - * @see java.lang.Runtime#addShutdownHook(java.lang.Thread) - */ - private void createShutdownHook() { - if (!Boolean.getBoolean("JETTY_NO_SHUTDOWN_HOOK") && !hooked) { - try { - Method shutdownHook = java.lang.Runtime.class.getMethod("addShutdownHook", - new Class[] { java.lang.Thread.class }); - shutdownHook.invoke(Runtime.getRuntime(), new Object[] { this }); - this.hooked = true; - } catch (Exception e) { - if (log.isDebugEnabled()) log.debug("No shutdown hook in JVM ", e); - } - } - } - - /** - * Add Server to servers list. - */ - public boolean add(Server server) { - createShutdownHook(); - return this.servers.add(server); - } - - /** - * Contains Server in servers list? - */ - public boolean contains(Server server) { - return this.servers.contains(server); - } - - /** - * Append all Servers from Collection - */ - public boolean addAll(Collection c) { - createShutdownHook(); - return this.servers.addAll(c); - } - - /** - * Clear list of Servers. - */ - public void clear() { - createShutdownHook(); - this.servers.clear(); - } - - /** - * Remove Server from list. - */ - public boolean remove(Server server) { - createShutdownHook(); - return this.servers.remove(server); - } - - /** - * Remove all Servers in Collection from list. - */ - public boolean removeAll(Collection c) { - createShutdownHook(); - return this.servers.removeAll(c); - } - - /** - * Stop all Servers in list. - */ - public void run() { - setName("Shutdown"); - log.info("Shutdown hook executing"); - Iterator it = servers.iterator(); - while (it.hasNext()) { - Server svr = (Server) it.next(); - if (svr == null) continue; - try { - svr.stop(); - } catch (Exception e) { - log.warn(LogSupport.EXCEPTION, e); - } - log.info("Shutdown hook complete"); - - // Try to avoid JVM crash - try { - Thread.sleep(1000); - } catch (Exception e) { - log.warn(LogSupport.EXCEPTION, e); - } - } - } - } -} - - - - diff --git a/apps/jetty/java/src/org/mortbay/util/FileResource.java b/apps/jetty/java/src/org/mortbay/util/FileResource.java deleted file mode 100644 index 8788f14fdf..0000000000 --- a/apps/jetty/java/src/org/mortbay/util/FileResource.java +++ /dev/null @@ -1,352 +0,0 @@ -// ======================================================================== -// $Id: FileResource.java,v 1.31 2006/01/04 13:55:31 gregwilkins Exp $ -// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== -package org.mortbay.util; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URISyntaxException; -import java.net.URL; -import java.net.URLConnection; -import java.security.Permission; - -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; - - -/* ------------------------------------------------------------ */ -/** File Resource. - * - * Handle resources of implied or explicit file type. - * This class can check for aliasing in the filesystem (eg case - * insensitivity). By default this is turned on if the platform does - * not have the "/" path separator, or it can be controlled with the - * "org.mortbay.util.FileResource.checkAliases" system parameter. - * - * If alias checking is turned on, then aliased resources are - * treated as if they do not exist, nor can they be created. - * - * @version $Revision: 1.31 $ - * @author Greg Wilkins (gregw) - */ -public class FileResource extends URLResource -{ - private static Log log = LogFactory.getLog(Credential.class); - private static boolean __checkAliases; - static - { - __checkAliases= - "true".equalsIgnoreCase - (System.getProperty("org.mortbay.util.FileResource.checkAliases","true")); - - if (__checkAliases) - log.info("Checking Resource aliases"); - } - - /* ------------------------------------------------------------ */ - private File _file; - private transient URL _alias=null; - private transient boolean _aliasChecked=false; - - /* ------------------------------------------------------------------------------- */ - /** setCheckAliases. - * @param checkAliases True of resource aliases are to be checked for (eg case insensitivity or 8.3 short names) and treated as not found. - */ - public static void setCheckAliases(boolean checkAliases) - { - __checkAliases=checkAliases; - } - - /* ------------------------------------------------------------------------------- */ - /** getCheckAliases. - * @return True of resource aliases are to be checked for (eg case insensitivity or 8.3 short names) and treated as not found. - */ - public static boolean getCheckAliases() - { - return __checkAliases; - } - - /* -------------------------------------------------------- */ - FileResource(URL url) - throws IOException, URISyntaxException - { - super(url,null); - - try - { - // Try standard API to convert URL to file. - _file =new File(new URI(url.toString())); - } - catch (Exception e) - { - LogSupport.ignore(log,e); - try - { - // Assume that File.toURL produced unencoded chars. So try - // encoding them. - String urls= - "file:"+org.mortbay.util.URI.encodePath(url.toString().substring(5)); - _file =new File(new URI(urls)); - } - catch (Exception e2) - { - LogSupport.ignore(log,e2); - - // Still can't get the file. Doh! try good old hack! - checkConnection(); - Permission perm = _connection.getPermission(); - _file = new File(perm==null?url.getFile():perm.getName()); - } - } - - if (_file.isDirectory() && !_urlString.endsWith("/")) - _urlString=_urlString+"/"; - } - - /* -------------------------------------------------------- */ - FileResource(URL url, URLConnection connection, File file) - { - super(url,connection); - _file=file; - if (_file.isDirectory() && !_urlString.endsWith("/")) - _urlString=_urlString+"/"; - } - - /* -------------------------------------------------------- */ - public Resource addPath(String path) - throws IOException,MalformedURLException - { - FileResource r=null; - - if (!isDirectory()) - { - r=(FileResource)super.addPath(path); - } - else - { - path = org.mortbay.util.URI.canonicalPath(path); - - // treat all paths being added as relative - String rel=path; - if (path.startsWith("/")) - rel = path.substring(1); - - File newFile = new File(_file,rel.replace('/', File.separatorChar)); - r=new FileResource(newFile.toURI().toURL(),null,newFile); - } - - String encoded=org.mortbay.util.URI.encodePath(path); - int expected=r._urlString.length()-encoded.length(); - int index = r._urlString.lastIndexOf(encoded, expected); - - if (expected!=index && ((expected-1)!=index || path.endsWith("/") || !r.isDirectory())) - { - r._alias=r._url; - r._aliasChecked=true; - } - return r; - } - - - /* ------------------------------------------------------------ */ - public URL getAlias() - { - if (__checkAliases) { - if (!_aliasChecked) - { - try - { - String abs=_file.getAbsolutePath(); - String can=_file.getCanonicalPath(); - - if (abs.length()!=can.length() || !abs.equals(can)) - _alias=new File(can).toURI().toURL(); - - _aliasChecked=true; - - if (_alias!=null && log.isDebugEnabled()) - { - log.debug("ALIAS abs="+abs); - log.debug("ALIAS can="+can); - } - } - catch(Exception e) - { - log.warn(LogSupport.EXCEPTION,e); - return getURL(); - } - } - } else return null; - return _alias; - } - - /* -------------------------------------------------------- */ - /** - * Returns true if the resource exists. - */ - public boolean exists() - { - return _file.exists(); - } - - /* -------------------------------------------------------- */ - /** - * Returns the last modified time - */ - public long lastModified() - { - return _file.lastModified(); - } - - /* -------------------------------------------------------- */ - /** - * Returns true if the respresenetd resource is a container/directory. - */ - public boolean isDirectory() - { - return _file.isDirectory(); - } - - /* --------------------------------------------------------- */ - /** - * Return the length of the resource - */ - public long length() - { - return _file.length(); - } - - - /* --------------------------------------------------------- */ - /** - * Returns the name of the resource - */ - public String getName() - { - return _file.getAbsolutePath(); - } - - /* ------------------------------------------------------------ */ - /** - * Returns an File representing the given resource or NULL if this - * is not possible. - */ - public File getFile() - { - return _file; - } - - /* --------------------------------------------------------- */ - /** - * Returns an input stream to the resource - */ - public InputStream getInputStream() throws IOException - { - return new FileInputStream(_file); - } - - /* --------------------------------------------------------- */ - /** - * Returns an output stream to the resource - */ - public OutputStream getOutputStream() - throws java.io.IOException, SecurityException - { - return new FileOutputStream(_file); - } - - /* --------------------------------------------------------- */ - /** - * Deletes the given resource - */ - public boolean delete() - throws SecurityException - { - return _file.delete(); - } - - /* --------------------------------------------------------- */ - /** - * Rename the given resource - */ - public boolean renameTo( Resource dest) - throws SecurityException - { - if( dest instanceof FileResource) - return _file.renameTo( ((FileResource)dest)._file); - else - return false; - } - - /* --------------------------------------------------------- */ - /** - * Returns a list of resources contained in the given resource - */ - public String[] list() - { - String[] list =_file.list(); - if (list==null) - return null; - for (int i=list.length;i-->0;) - { - if (new File(_file,list[i]).isDirectory() && - !list[i].endsWith("/")) - list[i]+="/"; - } - return list; - } - - /* ------------------------------------------------------------ */ - /** Encode according to this resource type. - * File URIs are encoded. - * @param uri URI to encode. - * @return The uri unchanged. - */ - public String encode(String uri) - { - return uri; - } - - /* ------------------------------------------------------------ */ - /** - * @param o - * @return - */ - public boolean equals( Object o) - { - if (this == o) - return true; - - if (null == o || ! (o instanceof FileResource)) - return false; - - FileResource f=(FileResource)o; - return f._file == _file || (null != _file && _file.equals(f._file)); - } - - /* ------------------------------------------------------------ */ - /** - * @return the hashcode. - */ - public int hashCode() - { - return null == _file ? super.hashCode() : _file.hashCode(); - } -} diff --git a/apps/jetty/java/src/org/mortbay/util/InetAddrPort.java b/apps/jetty/java/src/org/mortbay/util/InetAddrPort.java deleted file mode 100644 index 7f0968798c..0000000000 --- a/apps/jetty/java/src/org/mortbay/util/InetAddrPort.java +++ /dev/null @@ -1,253 +0,0 @@ -// ======================================================================== -// $Id: InetAddrPort.java,v 1.7 2004/10/23 09:03:22 gregwilkins Exp $ -// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== - -package org.mortbay.util; - -import java.io.Serializable; -import java.net.InetAddress; - -/* ======================================================================== */ -/** InetAddress and Port. - */ -public class InetAddrPort implements Serializable -{ - /* ------------------------------------------------------------ */ - public final static String __0_0_0_0 = "0.0.0.0"; - - /* ------------------------------------------------------------ */ - private InetAddress _addr=null; - private boolean _addrIsHost=false; - private int _port=0; - - /* ------------------------------------------------------------------- */ - public InetAddrPort() - {} - - /* ------------------------------------------------------------ */ - /** Constructor for a port on all local host address. - * @param port - */ - public InetAddrPort(int port) - { - _port=port; - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param addr - * @param port - */ - public InetAddrPort(InetAddress addr, int port) - { - _addr=addr; - _port=port; - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param host - * @param port - */ - public InetAddrPort(String host, int port) - throws java.net.UnknownHostException - { - setHost(host); - setPort(port); - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * Patched to support [::1]:port for I2P - * - * @param inetAddrPort String of the form "addr:port" - */ - public InetAddrPort(String inetAddrPort) - throws java.net.UnknownHostException - { - int b = inetAddrPort.indexOf('['); - if (b>0) - throw new java.net.UnknownHostException("Bad [] syntax"); - if (b==0) // IPV6 - { - int b2 = inetAddrPort.indexOf(']'); - if (b2<2) - throw new java.net.UnknownHostException("Bad [] syntax"); - String addr=inetAddrPort.substring(1,b2); - if (addr.indexOf('/')>0) - addr=addr.substring(addr.indexOf('/')+1); - inetAddrPort=inetAddrPort.substring(b2+1); - int c = inetAddrPort.indexOf(':'); - if (c>0) - throw new java.net.UnknownHostException("Bad [] syntax"); - if (c==0) - inetAddrPort=inetAddrPort.substring(1); - - if (addr.length()>0 && ! __0_0_0_0.equals(addr)) - { - _addrIsHost=!Character.isDigit((addr.charAt(0))); - this._addr=InetAddress.getByName(addr); - } - } else { // IPV4 - int c = inetAddrPort.indexOf(':'); - if (c>=0) - { - String addr=inetAddrPort.substring(0,c); - if (addr.indexOf('/')>0) - addr=addr.substring(addr.indexOf('/')+1); - inetAddrPort=inetAddrPort.substring(c+1); - - if (addr.length()>0 && ! __0_0_0_0.equals(addr)) - { - _addrIsHost=!Character.isDigit((addr.charAt(0))); - this._addr=InetAddress.getByName(addr); - } - } - } - - _port = Integer.parseInt(inetAddrPort); - } - - /* ------------------------------------------------------------ */ - /** Constructor. - * @param address InetAddrPort top copy. - */ - public InetAddrPort(InetAddrPort address) - { - if (address!=null) - { - _addr=address._addr; - _port=address._port; - } - } - - /* ------------------------------------------------------------ */ - /** Get the Host. - * @return The IP address - */ - public String getHost() - { - if (_addr==null) - return __0_0_0_0; - - return _addrIsHost?_addr.getHostName():_addr.getHostAddress(); - } - - /* ------------------------------------------------------------ */ - /** Set the Host. - * @param host - * @exception java.net.UnknownHostException - */ - public void setHost(String host) - throws java.net.UnknownHostException - { - _addr=null; - if (host!=null) - { - if (host.indexOf('/')>0) - host=host.substring(0,host.indexOf('/')); - _addrIsHost=!Character.isDigit((host.charAt(0))); - _addr=InetAddress.getByName(host); - } - } - - /* ------------------------------------------------------------ */ - /** Get the IP address. - * @return The IP address - */ - public InetAddress getInetAddress() - { - return _addr; - } - - /* ------------------------------------------------------------ */ - /** Set the IP address. - * @param addr The IP address - */ - public void setInetAddress(InetAddress addr) - { - _addrIsHost=false; - _addr=addr; - } - - /* ------------------------------------------------------------ */ - /** Get the port. - * @return The port number - */ - public int getPort() - { - return _port; - } - - /* ------------------------------------------------------------ */ - /** Set the port. - * @param port The port number - */ - public void setPort(int port) - { - _port=port; - } - - - /* ------------------------------------------------------------------- */ - public String toString() - { - return getHost()+':'+_port; - } - - /* ------------------------------------------------------------ */ - /** Clone the InetAddrPort. - * @return A new instance. - */ - public Object clone() - { - return new InetAddrPort(this); - } - - /* ------------------------------------------------------------ */ - /** Hash Code. - * @return hash Code. - */ - public int hashCode() - { - return _port+((_addr==null)?0:_addr.hashCode()); - } - - /* ------------------------------------------------------------ */ - /** Equals. - * @param o - * @return True if is the same address and port. - */ - public boolean equals(Object o) - { - if (o==null) - return false; - if (o==this) - return true; - if (o instanceof InetAddrPort) - { - InetAddrPort addr=(InetAddrPort)o; - return addr._port==_port && - ( addr._addr==_addr || - addr._addr!=null && addr._addr.equals(_addr)); - } - return false; - } -} - - - - - - diff --git a/apps/jetty/java/src/org/mortbay/util/Resource.java b/apps/jetty/java/src/org/mortbay/util/Resource.java deleted file mode 100644 index ed992cfd55..0000000000 --- a/apps/jetty/java/src/org/mortbay/util/Resource.java +++ /dev/null @@ -1,431 +0,0 @@ -// ======================================================================== -// $Id: Resource.java,v 1.32 2009/05/16 01:53:36 gregwilkins Exp $ -// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== -package org.mortbay.util; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Serializable; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.text.DateFormat; -import java.util.Arrays; -import java.util.Date; - -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; - - -/* ------------------------------------------------------------ */ -/** Abstract resource class. - * - * @version $Id: Resource.java,v 1.32 2009/05/16 01:53:36 gregwilkins Exp $ - * @author Nuno Preguica - * @author Greg Wilkins (gregw) - */ -public abstract class Resource implements Serializable -{ - private static Log log = LogFactory.getLog(Resource.class); - - Object _associate; - - /* ------------------------------------------------------------ */ - /** Construct a resource from a url. - * @param url A URL. - * @return A Resource object. - */ - public static Resource newResource(URL url) - throws IOException - { - if (url==null) - return null; - - String urls=url.toExternalForm(); - if( urls.startsWith( "file:")) - { - try - { - FileResource fileResource= new FileResource(url); - return fileResource; - } - catch(Exception e) - { - log.debug(LogSupport.EXCEPTION,e); - return new BadResource(url,e.toString()); - } - } - else if( urls.startsWith( "jar:file:")) - { - return new JarFileResource(url); - } - else if( urls.startsWith( "jar:")) - { - return new JarResource(url); - } - - return new URLResource(url,null); - } - - /* ------------------------------------------------------------ */ - /** Construct a resource from a string. - * @param resource A URL or filename. - * @return A Resource object. - */ - public static Resource newResource(String resource) - throws MalformedURLException, IOException - { - URL url=null; - try - { - // Try to format as a URL? - url = new URL(resource); - } - catch(MalformedURLException e) - { - if(!resource.startsWith("ftp:") && - !resource.startsWith("file:") && - !resource.startsWith("jar:")) - { - try - { - // It's a file. - if (resource.startsWith("./")) - resource=resource.substring(2); - - File file=new File(resource).getCanonicalFile(); - url=file.toURI().toURL(); - - URLConnection connection=url.openConnection(); - FileResource fileResource= new FileResource(url,connection,file); - return fileResource; - } - catch(Exception e2) - { - log.debug(LogSupport.EXCEPTION,e2); - throw e; - } - } - else - { - log.warn("Bad Resource: "+resource); - throw e; - } - } - - String nurl=url.toString(); - if (nurl.length()>0 && - nurl.charAt(nurl.length()-1)!= - resource.charAt(resource.length()-1)) - { - if ((nurl.charAt(nurl.length()-1)!='/' || - nurl.charAt(nurl.length()-2)!=resource.charAt(resource.length()-1)) - && - (resource.charAt(resource.length()-1)!='/' || - resource.charAt(resource.length()-2)!=nurl.charAt(nurl.length()-1) - )) - { - return new BadResource(url,"Trailing special characters stripped by URL in "+resource); - } - } - return newResource(url); - } - - /* ------------------------------------------------------------ */ - /** Construct a system resource from a string. - * The resource is tried as classloader resource before being - * treated as a normal resource. - */ - public static Resource newSystemResource(String resource) - throws IOException - { - URL url=null; - // Try to format as a URL? - ClassLoader - loader=Thread.currentThread().getContextClassLoader(); - if (loader!=null) - { - url=loader.getResource(resource); - if (url==null && resource.startsWith("/")) - url=loader.getResource(resource.substring(1)); - } - if (url==null) - { - loader=Resource.class.getClassLoader(); - if (loader!=null) - { - url=loader.getResource(resource); - if (url==null && resource.startsWith("/")) - url=loader.getResource(resource.substring(1)); - } - } - - if (url==null) - { - url=ClassLoader.getSystemResource(resource); - if (url==null && resource.startsWith("/")) - url=loader.getResource(resource.substring(1)); - } - - if (url==null) - return null; - - return newResource(url); - } - - /* ------------------------------------------------------------ */ - protected void finalize() - { - release(); - } - - /* ------------------------------------------------------------ */ - /** Release any resources held by the resource. - */ - public abstract void release(); - - - /* ------------------------------------------------------------ */ - /** - * Returns true if the respresened resource exists. - */ - public abstract boolean exists(); - - - /* ------------------------------------------------------------ */ - /** - * Returns true if the respresenetd resource is a container/directory. - * If the resource is not a file, resources ending with "/" are - * considered directories. - */ - public abstract boolean isDirectory(); - - /* ------------------------------------------------------------ */ - /** - * Returns the last modified time - */ - public abstract long lastModified(); - - - /* ------------------------------------------------------------ */ - /** - * Return the length of the resource - */ - public abstract long length(); - - - /* ------------------------------------------------------------ */ - /** - * Returns an URL representing the given resource - */ - public abstract URL getURL(); - - - /* ------------------------------------------------------------ */ - /** - * Returns an File representing the given resource or NULL if this - * is not possible. - */ - public abstract File getFile() - throws IOException; - - - /* ------------------------------------------------------------ */ - /** - * Returns the name of the resource - */ - public abstract String getName(); - - - /* ------------------------------------------------------------ */ - /** - * Returns an input stream to the resource - */ - public abstract InputStream getInputStream() - throws java.io.IOException; - - /* ------------------------------------------------------------ */ - /** - * Returns an output stream to the resource - */ - public abstract OutputStream getOutputStream() - throws java.io.IOException, SecurityException; - - /* ------------------------------------------------------------ */ - /** - * Deletes the given resource - */ - public abstract boolean delete() - throws SecurityException; - - /* ------------------------------------------------------------ */ - /** - * Rename the given resource - */ - public abstract boolean renameTo( Resource dest) - throws SecurityException; - - /* ------------------------------------------------------------ */ - /** - * Returns a list of resource names contained in the given resource - * The resource names are not URL encoded. - */ - public abstract String[] list(); - - /* ------------------------------------------------------------ */ - /** - * Returns the resource contained inside the current resource with the - * given name. - * @param path The path segment to add, which should be encoded by the - * encode method. - */ - public abstract Resource addPath(String path) - throws IOException,MalformedURLException; - - - /* ------------------------------------------------------------ */ - /** Encode according to this resource type. - * The default implementation calls URI.encodePath(uri) - * @param uri - * @return String encoded for this resource type. - */ - public String encode(String uri) - { - return URI.encodePath(uri); - } - - - /* ------------------------------------------------------------ */ - public Object getAssociate() - { - return _associate; - } - - /* ------------------------------------------------------------ */ - public void setAssociate(Object o) - { - _associate=o; - } - - /* ------------------------------------------------------------ */ - /** - * @return The canonical Alias of this resource or null if none. - */ - public URL getAlias() - { - return null; - } - - - /* ------------------------------------------------------------ */ - public CachedResource cache() - throws IOException - { - return new CachedResource(this); - } - - /* ------------------------------------------------------------ */ - /** Get the resource list as a HTML directory listing. - * @param base The base URL - * @param parent True if the parent directory should be included - * @return String of HTML - */ - public String getListHTML(String base, - boolean parent) - throws IOException - { - if (!isDirectory()) - return null; - - - String[] ls = list(); - if (ls==null) - return null; - Arrays.sort(ls); - - String title = "Directory: "+URI.decodePath(base); - title=StringUtil.replace(StringUtil.replace(title,"<","<"),">",">"); - StringBuffer buf=new StringBuffer(4096); - buf.append("<HTML><HEAD><TITLE>"); - buf.append(title); - buf.append("\n

"); - buf.append(title); - buf.append("

"); - - if (parent) - { - buf.append("\n"); - } - - DateFormat dfmt=DateFormat.getDateTimeInstance(DateFormat.MEDIUM, - DateFormat.MEDIUM); - for (int i=0 ; i< ls.length ; i++) - { - String encoded=URI.encodePath(ls[i]); - // bugfix for I2P - Backport from Jetty 6 (zero file lengths and last-modified times) - // http://jira.codehaus.org/browse/JETTY-361?page=com.atlassian.jira.plugin.system.issuetabpanels%3Achangehistory-tabpanel#issue-tabs - // See resource.diff attachment - //Resource item = addPath(encoded); - Resource item = addPath(ls[i]); - - buf.append("\n"); - } - buf.append("
Parent Directory
"); - buf.append(StringUtil.replace(StringUtil.replace(ls[i],"<","<"),">",">")); - buf.append(" "); - buf.append(""); - buf.append(item.length()); - buf.append(" bytes "); - buf.append(dfmt.format(new Date(item.lastModified()))); - buf.append("
\n"); - buf.append("\n"); - - return buf.toString(); - } - - /* ------------------------------------------------------------ */ - /** - * @param out - * @param start First byte to write - * @param count Bytes to write or -1 for all of them. - */ - public void writeTo(OutputStream out,long start,long count) - throws IOException - { - InputStream in = getInputStream(); - try - { - in.skip(start); - if (count<0) - IO.copy(in,out); - else - IO.copy(in,out,(int)count); - } - finally - { - in.close(); - } - } -} diff --git a/apps/jetty/java/src/org/mortbay/util/URI.java b/apps/jetty/java/src/org/mortbay/util/URI.java deleted file mode 100644 index 867ef19f40..0000000000 --- a/apps/jetty/java/src/org/mortbay/util/URI.java +++ /dev/null @@ -1,1010 +0,0 @@ -// ======================================================================== -// $Id: URI.java,v 1.40 2009/05/16 02:02:00 gregwilkins Exp $ -// Copyright 199-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== -package org.mortbay.util; - -import java.io.UnsupportedEncodingException; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; - -/* ------------------------------------------------------------ */ -/** URI Holder. - * This class assists with the decoding and encoding or HTTP URI's. - * It differs from the java.net.URL class as it does not provide - * communications ability, but it does assist with query string - * formatting. - *

ISO_8859_1 encoding is used by default for % encoded characters. This - * may be overridden with the org.mortbay.util.URI.charset system property. - * @see UrlEncoded - * @version $Id: URI.java,v 1.40 2009/05/16 02:02:00 gregwilkins Exp $ - * @author Greg Wilkins (gregw) - */ -public class URI - implements Cloneable -{ - private static Log log = LogFactory.getLog(URI.class); - - public static final String __CHARSET=System.getProperty("org.mortbay.util.URI.charset",StringUtil.__UTF_8); - public static final boolean __CHARSET_IS_DEFAULT=__CHARSET.equals(StringUtil.__UTF_8); - - /* ------------------------------------------------------------ */ - private String _uri; - private String _scheme; - private String _host; - private int _port; - private String _path; - private String _encodedPath; - private String _query; - private UrlEncoded _parameters; - private boolean _dirty; - private static String unreserved = "/0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_.~"; - private static String reserved = "!*'();:@&=+$,?%#[]"; - private static String hexchars = "0123456789ABCDEF"; - - /* ------------------------------------------------------------ */ - /** Copy Constructor . - * @param uri - */ - public URI(URI uri) - throws IllegalArgumentException - { - _uri=uri.toString(); - _scheme=uri._scheme; - _host=uri._host; - _port=uri._port; - _path=uri._path; - _encodedPath=uri._encodedPath; - _query=uri._query; - if (uri._parameters!=null) - _parameters=(UrlEncoded)uri._parameters.clone(); - _dirty=false; - } - - /* ------------------------------------------------------------ */ - /** Construct from a String. - * The string must contain a URI path, but optionaly may contain a - * scheme, host, port and query string. - * - * @param uri [scheme://host[:port]]/path[?query] - */ - public URI(String uri) - throws IllegalArgumentException - { - setURI(uri); - } - - /* ------------------------------------------------------------ */ - public void setURI(String uri) - throws IllegalArgumentException - { - try - { - _uri=uri; - _scheme=null; - _host=null; - _port=0; - _path=null; - _encodedPath=null; - _query=null; - if (_parameters!=null) - _parameters.clear(); - - // Scan _uri for host, port, path & query - int maxi=uri.length()-1; - int mark=0; - int state=0; - int i=0; - - if (maxi==0 || uri.charAt(0)=='/' && uri.charAt(1)!='/') - { - state=3; - _scheme=null; - _host=null; - _port=0; - } - else - { - for (i=0;state<3 && i<=maxi;i++) - { - char c=uri.charAt(i); - switch(state) - { - case 0: // looking for scheme or path - if (c==':' && - uri.charAt(i+1)=='/' && - uri.charAt(i+2)=='/') - { - // found end of scheme & start of host - _scheme=uri.substring(mark,i); - i+=2; - mark=i+1; - state=1; - } - else if (i==0 && c=='/') - { - // Found path - state=3; - } - else if (i==0 && c=='*') - { - state=5; - _path="*"; - _encodedPath="*"; - } - continue; - - case 1: // Get host & look for port or path - if (c==':') - { - // found port - _host=uri.substring(mark,i); - mark=i+1; - state=2; - } - else if (c=='/') - { - // found path - _host=uri.substring(mark,i); - mark=i; - state=3; - } - continue; - - case 2: // Get port & look for path - if (c=='/') - { - _port=TypeUtil.parseInt(uri,mark,i-mark,10); - mark=i; - state=3; - } - continue; - } - } - } - - // State 3 - Get path & look for query - _query=null; - for (i++;i<=maxi;i++) - { - char c=uri.charAt(i); - if (c=='?') - { - // Found query - _encodedPath=uri.substring(mark,i); - _path=decodePath(_encodedPath); - - mark=i+1; - state=4; - break; - } - } - - // complete last state - switch(state) - { - case 0: - _dirty=false; - _encodedPath=_uri; - _path=decodePath(_encodedPath); - break; - - case 1: - _dirty=true; - _encodedPath="/"; - _path=_encodedPath; - _host=uri.substring(mark); - break; - - case 2: - _dirty=true; - _encodedPath="/"; - _path=_encodedPath; - _port=TypeUtil.parseInt(uri,mark,-1,10); - break; - case 3: - _dirty=(mark==maxi); - _encodedPath=uri.substring(mark); - _path=decodePath(_encodedPath); - break; - - case 4: - _dirty=false; - if (mark<=maxi) - _query=uri.substring(mark); - break; - - case 5: - _dirty=false; - } - - if (_query!=null && _query.length()>0) - { - if (_parameters==null) - _parameters= new UrlEncoded(); - else - _parameters.clear(); - _parameters.decode(_query,__CHARSET); - - } - else - _query=null; - } - catch (Exception e) - { - LogSupport.ignore(log,e); - throw new IllegalArgumentException("Malformed URI '"+uri+ - "' : "+e.toString()); - } - } - - /* ------------------------------------------------------------ */ - /** Is the URI an absolute URL? - * @return True if the URI has a scheme or host - */ - public boolean isAbsolute() - { - return _scheme!=null || _host!=null; - } - - /* ------------------------------------------------------------ */ - /** Get the uri scheme. - * @return the URI scheme - */ - public String getScheme() - { - return _scheme; - } - - /* ------------------------------------------------------------ */ - /** Set the uri scheme. - * @param scheme the uri scheme - */ - public void setScheme(String scheme) - { - _scheme=scheme; - _dirty=true; - } - - /* ------------------------------------------------------------ */ - /** Get the uri host. - * @return the URI host - */ - public String getHost() - { - return _host; - } - - /* ------------------------------------------------------------ */ - /** Set the uri host. - * @param host the uri host - */ - public void setHost(String host) - { - _host=host; - _dirty=true; - } - - /* ------------------------------------------------------------ */ - /** Get the uri port. - * @return the URI port - */ - public int getPort() - { - return _port; - } - - /* ------------------------------------------------------------ */ - /** Set the uri port. - * A port of 0 implies use the default port. - * @param port the uri port - */ - public void setPort(int port) - { - _port=port; - _dirty=true; - } - - /* ------------------------------------------------------------ */ - /** Get the uri path. - * @return the URI path - */ - public String getPath() - { - return _path; - } - - /* ------------------------------------------------------------ */ - /** Get the encoded uri path. - * @return the URI path - */ - public String getEncodedPath() - { - return _encodedPath; - } - - /* ------------------------------------------------------------ */ - /** Set the uri path. - * @param path the URI path - */ - public void setPath(String path) - { - _path=path; - _encodedPath=encodePath(_path); - _dirty=true; - } - - - /* ------------------------------------------------------------ */ - /** Get the uri query String. - * @return the URI query string - */ - public String getQuery() - { - if (_dirty && _parameters!=null) - { - _query = _parameters.encode(__CHARSET); - if (_query!=null && _query.length()==0) - _query=null; - } - return _query; - } - - /* ------------------------------------------------------------ */ - /** Set the uri query String. - * @param query the URI query string - */ - public void setQuery(String query) - { - _query=query; - - if (_parameters!=null) - _parameters.clear(); - else if (query!=null) - _parameters=new UrlEncoded(); - - if (query!=null) - _parameters.decode(query,__CHARSET); - - cleanURI(); - } - - /* ------------------------------------------------------------ */ - /** Get the uri query _parameters names. - * @return Unmodifiable set of URI query _parameters names - */ - public Set getParameterNames() - { - if (_parameters==null) - return Collections.EMPTY_SET; - return _parameters.keySet(); - } - - /* ------------------------------------------------------------ */ - /** Get the uri query _parameters. - * @return the URI query _parameters - */ - public MultiMap getParameters() - { - if (_parameters==null) - _parameters=new UrlEncoded(); - _dirty=true; - return _parameters; - } - - /* ------------------------------------------------------------ */ - /** Get the uri query _parameters. - * @return the URI query _parameters in an unmodifiable map. - */ - public Map getUnmodifiableParameters() - { - if (_parameters==null) - return Collections.EMPTY_MAP; - return Collections.unmodifiableMap(_parameters); - } - - /* ------------------------------------------------------------ */ - /** Add the uri query _parameters to a MultiMap - */ - public void putParametersTo(MultiMap map) - { - if (_parameters!=null && _parameters.size()>0) - map.putAll(_parameters); - } - - /* ------------------------------------------------------------ */ - /** Clear the URI _parameters. - */ - public void clearParameters() - { - if (_parameters!=null) - { - _dirty=true; - _parameters.clear(); - } - } - - /* ------------------------------------------------------------ */ - /** Add encoded _parameters. - * @param encoded A HTTP encoded string of _parameters: e.g.. "a=1&b=2" - */ - public void put(String encoded) - { - UrlEncoded params = new UrlEncoded(encoded); - put(params); - } - - /* ------------------------------------------------------------ */ - /** Add name value pair to the uri query _parameters. - * @param name name of value - * @param value The value, which may be a multi valued list or - * String array. - */ - public Object put(Object name, Object value) - { - return getParameters().put(name,value); - } - - /* ------------------------------------------------------------ */ - /** Add dictionary to the uri query _parameters. - */ - public void put(Map values) - { - getParameters().putAll(values); - } - - /* ------------------------------------------------------------ */ - /** Get named value - */ - public String get(String name) - { - if (_parameters==null) - return null; - return (String)_parameters.get(name); - } - - /* ------------------------------------------------------------ */ - /** Get named multiple values. - * @param name The parameter name - * @return Umodifiable list of values or null - */ - public List getValues(String name) - { - if (_parameters==null) - return null; - return _parameters.getValues(name); - } - - /* ------------------------------------------------------------ */ - /** Remove named value - */ - public void remove(String name) - { - if (_parameters!=null) - { - _dirty= - _parameters.remove(name)!=null; - } - } - - /* ------------------------------------------------------------ */ - /** @return the URI string encoded. - */ - public String toString() - { - if (_dirty) - { - getQuery(); - cleanURI(); - } - return _uri; - } - - /* ------------------------------------------------------------ */ - private void cleanURI() - { - StringBuffer buf = new StringBuffer(_uri.length()*2); - synchronized(buf) - { - if (_scheme!=null) - { - buf.append(_scheme); - buf.append("://"); - buf.append(_host); - if (_port>0) - { - buf.append(':'); - buf.append(_port); - } - } - - buf.append(_encodedPath); - - if (_query!=null && _query.length()>0) - { - buf.append('?'); - buf.append(_query); - } - _uri=buf.toString(); - _dirty=false; - } - } - - - /* ------------------------------------------------------------ */ - /** Encode a URI path. - * This is the same encoding offered by URLEncoder, except that - * the '/' character is not encoded. - * @param path The path the encode - * @return The encoded path - */ - public static String encodePath(String path) - { - if (path==null || path.length()==0) - return path; - - StringBuffer buf = encodePath(null,path); - return buf==null?path:buf.toString(); - } - - /* ------------------------------------------------------------ */ - /** Encode a URI path. - * @param path The path the encode - * @param buf StringBuffer to encode path into (or null) - * @return The StringBuffer or null if no substitutions required. - */ - public static StringBuffer encodePath(StringBuffer buf, String path) - { - /* Convert path to native character set not __CHARSET. - * This is important to do this way because the path - * contains *OS specific characters* and __CHARSET could - * be wrong and not encode/decode the path correctly. - */ - byte[] b = null; - /* - Keep commented out unless you can prove that this does the right thing. - try { - b = path.getBytes(__CHARSET); - } catch(UnsupportedEncodingException ex) { - return null; // Shouldn't be possible. - } - */ - b = path.getBytes(); - StringBuffer x = new StringBuffer(b.length); - for(int i=0; i> 8) & 0xff)); - buf.append(gethex(c & 0xff)); - } - */ - buf.append(gethex(c & 0xff)); - } else { - buf.append(c); - } - } - } - - return buf; - } - - /** - * - * @param decimal value not greater than 255. - * @return a percent sign followed by two hexadecimal digits. - */ - private static String gethex(int decimal) { - return new String("%" + hexchars.charAt(decimal >> 4) + hexchars.charAt(decimal & 0xF)); - } - /* ------------------------------------------------------------ */ - /** Encode a URI path. - * @param path The path the encode - * @param buf StringBuffer to encode path into (or null) - * @param encode String of characters to encode. % is always encoded. - * @return The StringBuffer or null if no substitutions required. - */ - public static StringBuffer encodeString(StringBuffer buf, - String path, - String encode) - { - if (buf==null) - { - loop: - for (int i=0;i=0) - { - buf=new StringBuffer(path.length()<<1); - break loop; - } - } - if (buf==null) - return null; - } - - synchronized(buf) - { - for (int i=0;i=0) - { - buf.append('%'); - StringUtil.append(buf,(byte)(0xff&c),16); - } - else - buf.append(c); - } - } - - return buf; - } - - /* ------------------------------------------------------------ */ - /* Decode a URI path. - * @param path The path the encode - * @param buf StringBuffer to encode path into - */ - public static String decodePath(String path) - { - int len=path.length(); - byte[] bytes=null; - int n=0; - boolean noDecode=true; - - for (int i=0;i=0) - return p.substring(0,slash+1); - return null; - } - - /* ------------------------------------------------------------ */ - /** Strip parameters from a path. - * Return path upto any semicolon parameters. - */ - public static String stripPath(String path) - { - if (path==null) - return null; - int semi=path.indexOf(';'); - if (semi<0) - return path; - return path.substring(0,semi); - } - - /* ------------------------------------------------------------ */ - /** Convert a path to a cananonical form. - * All instances of "." and ".." are factored out. Null is returned - * if the path tries to .. above it's root. - * @param path - * @return path or null. - */ - public static String canonicalPath(String path) - { - if (path==null || path.length()==0) - return path; - - int end=path.length(); - int start = path.lastIndexOf('/', end); - - search: - while (end>0) - { - switch(end-start) - { - case 2: // possible single dot - if (path.charAt(start+1)!='.') - break; - break search; - case 3: // possible double dot - if (path.charAt(start+1)!='.' || path.charAt(start+2)!='.') - break; - break search; - } - - end=start; - start=path.lastIndexOf('/',end-1); - } - - // If we have checked the entire string - if (start>=end) - return path; - - StringBuffer buf = new StringBuffer(path); - int delStart=-1; - int delEnd=-1; - int skip=0; - - while (end>0) - { - switch(end-start) - { - case 2: // possible single dot - if (buf.charAt(start+1)!='.') - { - if (skip>0 && --skip==0) - { - delStart=start>=0?start:0; - if(delStart>0 && delEnd==buf.length() && buf.charAt(delEnd-1)=='.') - delStart++; - } - break; - } - - if(start<0 && buf.length()>2 && buf.charAt(1)=='/' && buf.charAt(2)=='/') - break; - - if(delEnd<0) - delEnd=end; - delStart=start; - if (delStart<0 || delStart==0&&buf.charAt(delStart)=='/') - { - delStart++; - if (delEnd=0 && buf.charAt(start)!='/') - start--; - continue; - - case 3: // possible double dot - if (buf.charAt(start+1)!='.' || buf.charAt(start+2)!='.') - { - if (skip>0 && --skip==0) - { delStart=start>=0?start:0; - if(delStart>0 && delEnd==buf.length() && buf.charAt(delEnd-1)=='.') - delStart++; - } - break; - } - - delStart=start; - if (delEnd<0) - delEnd=end; - - skip++; - end=start--; - while (start>=0 && buf.charAt(start)!='/') - start--; - continue; - - default: - if (skip>0 && --skip==0) - { - delStart=start>=0?start:0; - if(delEnd==buf.length() && buf.charAt(delEnd-1)=='.') - delStart++; - } - } - - // Do the delete - if (skip<=0 && delStart>=0 && delStart>=0) - { - buf.delete(delStart,delEnd); - delStart=delEnd=-1; - if (skip>0) - delEnd=end; - } - - end=start--; - while (start>=0 && buf.charAt(start)!='/') - start--; - } - - // Too many .. - if (skip>0) - return null; - - // Do the delete - if (delEnd>=0) - buf.delete(delStart,delEnd); - - return buf.toString(); - } - - /* ------------------------------------------------------------ */ - /** - * @param uri URI - * @return True if the uri has a scheme - */ - public static boolean hasScheme(String uri) - { - for (int i=0;i='a'&&c<='z' || - c>='A'&&c<='Z' || - (i>0 &&(c>='0'&&c<='9' || - c=='.' || - c=='+' || - c=='-')) - )) - break; - } - return false; - } - -} - - - diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index f49153486c..0ce64a59d0 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -21,7 +21,11 @@ + + + + @@ -53,7 +57,11 @@ + + + + @@ -233,6 +241,7 @@ + @@ -266,6 +275,10 @@ + + + + diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java index eb28a4b90e..07e65d4d65 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java @@ -14,7 +14,7 @@ import net.i2p.router.client.ClientManagerFacadeImpl; import net.i2p.router.startup.ClientAppConfig; import net.i2p.router.startup.LoadClientAppsJob; -import org.mortbay.jetty.Server; +import org.mortbay.jetty.handler.ContextHandlerCollection; /** * Saves changes to clients.config or webapps.config @@ -286,7 +286,7 @@ public class ConfigClientsHandler extends FormHandler { * requested and add the .war to that one */ private void startWebApp(String app) { - Server s = WebAppStarter.getConsoleServer(); + ContextHandlerCollection s = WebAppStarter.getConsoleServer(); if (s != null) { try { File path = new File(_context.getBaseDir(), "webapps"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java index b7a892587b..98050bce2f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java @@ -4,11 +4,13 @@ import java.io.IOException; import java.util.Locale; import java.util.Map; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import net.i2p.I2PAppContext; -import org.mortbay.http.HttpRequest; -import org.mortbay.http.HttpResponse; -import org.mortbay.jetty.servlet.WebApplicationHandler; +import org.mortbay.jetty.webapp.WebAppContext; /** * Convert foo.jsp to foo_xx.jsp for language xx. @@ -19,12 +21,12 @@ import org.mortbay.jetty.servlet.WebApplicationHandler; * * @author zzz */ -public class LocaleWebAppHandler extends WebApplicationHandler +public class LocaleWebAppHandler extends WebAppContext { private final I2PAppContext _context; - public LocaleWebAppHandler(I2PAppContext ctx) { - super(); + public LocaleWebAppHandler(I2PAppContext ctx, String path, String warPath) { + super(warPath, path); _context = ctx; } @@ -36,13 +38,13 @@ public class LocaleWebAppHandler extends WebApplicationHandler */ @Override public void handle(String pathInContext, - String pathParams, - HttpRequest httpRequest, - HttpResponse httpResponse) - throws IOException + HttpServletRequest httpRequest, + HttpServletResponse httpResponse, + int dispatch) + throws IOException, ServletException { // Handle OPTIONS (nothing to override) - if (HttpRequest.__OPTIONS.equals(httpRequest.getMethod())) + if ("OPTIONS".equals(httpRequest.getMethod())) { handleOptions(httpRequest, httpResponse); return; @@ -74,7 +76,9 @@ public class LocaleWebAppHandler extends WebApplicationHandler if (lang != null && lang.length() > 0 && !lang.equals("en")) { String testPath = pathInContext.substring(0, len - 4) + '_' + lang + ".jsp"; // Do we have a servlet for the new path that isn't the catchall *.jsp? - Map.Entry servlet = getHolderEntry(testPath); + //Map.Entry servlet = getHolderEntry(testPath); +/////////////////////////////// + Map.Entry servlet = null; if (servlet != null) { String servletPath = (String) servlet.getKey(); if (servletPath != null && !servletPath.startsWith("*")) { @@ -87,7 +91,7 @@ public class LocaleWebAppHandler extends WebApplicationHandler } } //System.err.println("New path: " + newPath); - super.handle(newPath, pathParams, httpRequest, httpResponse); + super.handle(newPath, httpRequest, httpResponse, dispatch); //System.err.println("Was handled? " + httpRequest.isHandled()); } @@ -95,22 +99,24 @@ public class LocaleWebAppHandler extends WebApplicationHandler * Overrides method in ServletHandler * @since 0.8 */ +/**** not in Jetty 6 @Override - public void handleTrace(HttpRequest request, - HttpResponse response) + public void handleTrace(HttpServletRequest request, + HttpServletResponse response) throws IOException { - response.sendError(HttpResponse.__405_Method_Not_Allowed); + response.sendError(405); } +****/ /** * Not an override * @since 0.8 */ - public void handleOptions(HttpRequest request, - HttpResponse response) + public void handleOptions(HttpServletRequest request, + HttpServletResponse response) throws IOException { - response.sendError(HttpResponse.__405_Method_Not_Allowed); + response.sendError(405); } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java index 959b8b7974..4ebf32f9df 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java @@ -5,14 +5,14 @@ import java.util.List; import net.i2p.util.FileUtil; -import org.mortbay.http.Version; +import org.mortbay.jetty.Server; public class LogsHelper extends HelperBase { public LogsHelper() {} /** @since 0.8.11 */ public String getJettyVersion() { - return Version.getImplVersion(); + return Server.getVersion(); } public String getLogs() { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java index d1835a3206..614f52c976 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java @@ -28,7 +28,7 @@ import net.i2p.util.FileUtil; import net.i2p.util.Log; import net.i2p.util.Translate; -import org.mortbay.jetty.Server; +import org.mortbay.jetty.handler.ContextHandlerCollection; /** @@ -120,7 +120,7 @@ public class PluginStarter implements Runnable { } // start console webapps in console/webapps - Server server = WebAppStarter.getConsoleServer(); + ContextHandlerCollection server = WebAppStarter.getConsoleServer(); if (server != null) { File consoleDir = new File(pluginDir, "console"); Properties props = RouterConsoleRunner.webAppProperties(consoleDir.getAbsolutePath()); @@ -221,8 +221,8 @@ public class PluginStarter implements Runnable { } // stop console webapps in console/webapps - Server server = WebAppStarter.getConsoleServer(); - if (server != null) { + //ContextHandlerCollection server = WebAppStarter.getConsoleServer(); + //if (server != null) { /* File consoleDir = new File(pluginDir, "console"); Properties props = RouterConsoleRunner.webAppProperties(consoleDir.getAbsolutePath()); @@ -242,11 +242,11 @@ public class PluginStarter implements Runnable { Iterator wars = pluginWars.get(appName).iterator(); while (wars.hasNext()) { String warName = wars.next(); - WebAppStarter.stopWebApp(server, warName); + WebAppStarter.stopWebApp(warName); } pluginWars.get(appName).clear(); } - } + //} // remove summary bar link Properties props = pluginProperties(ctx, appName); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 15c7f76f5f..93f549d5ea 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -9,6 +9,7 @@ import java.security.KeyStore; import java.util.List; import java.util.Properties; import java.util.StringTokenizer; +import java.util.concurrent.TimeUnit; import net.i2p.I2PAppContext; import net.i2p.apps.systray.SysTray; @@ -24,25 +25,39 @@ import net.i2p.util.SecureFileOutputStream; import net.i2p.util.ShellCommand; import net.i2p.util.VersionComparator; -import org.mortbay.http.DigestAuthenticator; -import org.mortbay.http.HashUserRealm; -import org.mortbay.http.NCSARequestLog; -import org.mortbay.http.SecurityConstraint; -import org.mortbay.http.SocketListener; -import org.mortbay.http.SslListener; -import org.mortbay.http.handler.SecurityHandler; +import org.mortbay.jetty.AbstractConnector; +import org.mortbay.jetty.Connector; +import org.mortbay.jetty.Handler; +import org.mortbay.jetty.NCSARequestLog; import org.mortbay.jetty.Server; -import org.mortbay.jetty.servlet.WebApplicationContext; -import org.mortbay.jetty.servlet.WebApplicationHandler; -import org.mortbay.util.InetAddrPort; +import org.mortbay.jetty.handler.ContextHandlerCollection; +import org.mortbay.jetty.handler.DefaultHandler; +import org.mortbay.jetty.handler.HandlerCollection; +import org.mortbay.jetty.handler.RequestLogHandler; +import org.mortbay.jetty.nio.SelectChannelConnector; +import org.mortbay.jetty.security.DigestAuthenticator; +import org.mortbay.jetty.security.HashUserRealm; +import org.mortbay.jetty.security.Constraint; +import org.mortbay.jetty.security.ConstraintMapping; +import org.mortbay.jetty.security.SecurityHandler; +import org.mortbay.jetty.security.SslSelectChannelConnector; +import org.mortbay.jetty.servlet.ServletHandler; +import org.mortbay.jetty.servlet.SessionHandler; +import org.mortbay.jetty.webapp.WebAppContext; +import org.mortbay.thread.QueuedThreadPool; +import org.mortbay.thread.concurrent.ThreadPool; +/** + * Start the router console. + */ public class RouterConsoleRunner { - private Server _server; + private static Server _server; private String _listenPort; private String _listenHost; private String _sslListenPort; private String _sslListenHost; private String _webAppsDir; + private static final String PROP_WEBAPP_CONFIG_FILENAME = "router.webappsConfigFile"; private static final String DEFAULT_WEBAPP_CONFIG_FILENAME = "webapps.config"; private static final DigestAuthenticator authenticator = new DigestAuthenticator(); @@ -57,6 +72,10 @@ public class RouterConsoleRunner { private static final String DEFAULT_WEBAPPS_DIR = "./webapps/"; private static final String USAGE = "Bad RouterConsoleRunner arguments, check clientApp.0.args in your clients.config file! " + "Usage: [[port host[,host]] [-s sslPort [host[,host]]] [webAppsDir]]"; + + private static final int MIN_THREADS = 1; + private static final int MAX_THREADS = 24; + private static final int MAX_IDLE_TIME = 90*1000; static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); @@ -135,6 +154,15 @@ public class RouterConsoleRunner { runner.startConsole(); } + /** + * SInce _server is now static + * @return may be null or stopped perhaps + * @since Jetty 6 since it doesn't have Server.getServers() + */ + static Server getConsoleServer() { + return _server; + } + private static void startTrayApp() { try { //TODO: move away from routerconsole into a separate application. @@ -158,6 +186,23 @@ public class RouterConsoleRunner { } } + /** + * http://irc.codehaus.org/display/JETTY/Porting+to+jetty6 + * + *

+     *	Server
+     *		HandlerCollection
+     *			ContextHandlerCollection
+     *				WebAppContext (i.e. ContextHandler)
+     *					SessionHandler
+     *					SecurityHandler
+     *					ServletHandler
+     *				WebAppContext
+     *				...
+     *			DefaultHandler
+     *			RequestLogHandler (opt)
+     *
+ */ public void startConsole() { File workDir = new SecureDirectory(I2PAppContext.getGlobalContext().getTempDir(), "jetty-work"); boolean workDirRemoved = FileUtil.rmdir(workDir, false); @@ -171,14 +216,34 @@ public class RouterConsoleRunner { System.setProperty("jetty.class.path", I2PAppContext.getGlobalContext().getBaseDir() + "/lib/routerconsole.jar"); _server = new Server(); + /**** this doesn't work with NIO maybe? + try { + _server.setThreadPool(new ThreadPool(MIN_THREADS, MAX_THREADS, MAX_IDLE_TIME, TimeUnit.MILLISECONDS)); + } catch (Throwable t) { + // class not found... + System.out.println("INFO: Jetty concurrent ThreadPool unavailable, using QueuedThreadPool"); + QueuedThreadPool qtp = new QueuedThreadPool(MAX_THREADS); + qtp.setMinThreads(MIN_THREADS); + qtp.setMaxIdleTimeMs(MAX_IDLE_TIME); + _server.setThreadPool(qtp); + } + ****/ + HandlerCollection hColl = new HandlerCollection(); + ContextHandlerCollection chColl = new ContextHandlerCollection(); + _server.addHandler(hColl); + hColl.addHandler(chColl); + hColl.addHandler(new DefaultHandler()); + String log = I2PAppContext.getGlobalContext().getProperty("routerconsole.log"); if (log != null) { File logFile = new File(log); if (!logFile.isAbsolute()) logFile = new File(I2PAppContext.getGlobalContext().getLogDir(), "logs/" + log); try { - _server.setRequestLog(new NCSARequestLog(logFile.getAbsolutePath())); - } catch (IOException ioe) { + RequestLogHandler rhl = new RequestLogHandler(); + rhl.setRequestLog(new NCSARequestLog(logFile.getAbsolutePath())); + hColl.addHandler(rhl); + } catch (Exception ioe) { System.err.println("ERROR: Unable to create Jetty log: " + ioe); } } @@ -202,7 +267,7 @@ public class RouterConsoleRunner { _webAppsDir += '/'; List notStarted = new ArrayList(); - WebApplicationHandler baseHandler = null; + WebAppContext baseHandler = null; try { int boundAddresses = 0; @@ -217,17 +282,17 @@ public class RouterConsoleRunner { // _server.addListener('[' + host + "]:" + _listenPort); //else // _server.addListener(host + ':' + _listenPort); - InetAddrPort iap = new InetAddrPort(host, lport); - SocketListener lsnr = new SocketListener(iap); - lsnr.setMinThreads(1); // default 2 - lsnr.setMaxThreads(24); // default 256 - lsnr.setMaxIdleTimeMs(90*1000); // default 10 sec + // Use AbstractConnector instead of Connector so we can do setName() + AbstractConnector lsnr = new SelectChannelConnector(); + lsnr.setHost(host); + lsnr.setPort(lport); + lsnr.setMaxIdleTime(90*1000); // default 10 sec lsnr.setName("ConsoleSocket"); // all with same name will use the same thread pool - _server.addListener(lsnr); + _server.addConnector(lsnr); boundAddresses++; } catch (NumberFormatException nfe) { System.err.println("Unable to bind routerconsole to " + host + " port " + _listenPort + ' ' + nfe); - } catch (IOException ioe) { // this doesn't seem to work, exceptions don't happen until start() below + } catch (Exception ioe) { // this doesn't seem to work, exceptions don't happen until start() below System.err.println("Unable to bind routerconsole to " + host + " port " + _listenPort + ' ' + ioe); } } @@ -252,19 +317,20 @@ public class RouterConsoleRunner { while (tok.hasMoreTokens()) { String host = tok.nextToken().trim(); // doing it this way means we don't have to escape an IPv6 host with [] - InetAddrPort iap = new InetAddrPort(host, sslPort); try { - SslListener ssll = new SslListener(iap); + // TODO if class not found use SslChannelConnector + // Sadly there's no common base class with the ssl methods in it + SslSelectChannelConnector ssll = new SslSelectChannelConnector(); + ssll.setHost(host); + ssll.setPort(sslPort); // the keystore path and password ssll.setKeystore(keyStore.getAbsolutePath()); ssll.setPassword(ctx.getProperty(PROP_KEYSTORE_PASSWORD, DEFAULT_KEYSTORE_PASSWORD)); // the X.509 cert password (if not present, verifyKeyStore() returned false) ssll.setKeyPassword(ctx.getProperty(PROP_KEY_PASSWORD, "thisWontWork")); - ssll.setMinThreads(1); // default 2 - ssll.setMaxThreads(24); // default 256 - ssll.setMaxIdleTimeMs(90*1000); // default 10 sec + ssll.setMaxIdleTime(90*1000); // default 10 sec ssll.setName("ConsoleSocket"); // all with same name will use the same thread pool - _server.addListener(ssll); + _server.addConnector(ssll); boundAddresses++; } catch (Exception e) { // probably no exceptions at this point System.err.println("Unable to bind routerconsole to " + host + " port " + sslPort + " for SSL: " + e); @@ -280,15 +346,18 @@ public class RouterConsoleRunner { System.err.println("Unable to bind routerconsole to any address on port " + _listenPort + (sslPort > 0 ? (" or SSL port " + sslPort) : "")); return; } - _server.setRootWebApp(ROUTERCONSOLE); - WebApplicationContext wac = _server.addWebApplication("/", _webAppsDir + ROUTERCONSOLE + ".war"); + + baseHandler = new LocaleWebAppHandler(I2PAppContext.getGlobalContext(), + "/", _webAppsDir + ROUTERCONSOLE + ".war"); File tmpdir = new SecureDirectory(workDir, ROUTERCONSOLE + "-" + (_listenPort != null ? _listenPort : _sslListenPort)); tmpdir.mkdir(); - wac.setTempDirectory(tmpdir); - baseHandler = new LocaleWebAppHandler(I2PAppContext.getGlobalContext()); - wac.addHandler(0, baseHandler); - initialize(wac); + baseHandler.setTempDirectory(tmpdir); + baseHandler.setSessionHandler(new SessionHandler()); + baseHandler.setServletHandler(new ServletHandler()); + initialize(baseHandler); + chColl.addHandler(baseHandler); + File dir = new File(_webAppsDir); String fileNames[] = dir.list(WarFilenameFilter.instance()); if (fileNames != null) { @@ -300,7 +369,7 @@ public class RouterConsoleRunner { String path = new File(dir, fileNames[i]).getCanonicalPath(); tmpdir = new SecureDirectory(workDir, appName + "-" + (_listenPort != null ? _listenPort : _sslListenPort)); - WebAppStarter.addWebApp(I2PAppContext.getGlobalContext(), _server, appName, path, tmpdir); + WebAppStarter.addWebApp(I2PAppContext.getGlobalContext(), chColl, appName, path, tmpdir); if (enabled == null) { // do this so configclients.jsp knows about all apps from reading the config @@ -315,12 +384,14 @@ public class RouterConsoleRunner { } } } - } catch (IOException ioe) { + } catch (Exception ioe) { ioe.printStackTrace(); } + if (rewrite) storeWebAppProperties(props); try { + // start does a mapContexts() _server.start(); } catch (Throwable me) { // NoClassFoundDefError from a webapp is a throwable, not an exception @@ -337,8 +408,9 @@ public class RouterConsoleRunner { // map each not-started webapp to the error page for (int i = 0; i < notStarted.size(); i++) { try { - baseHandler.mapPathToServlet('/' + notStarted.get(i) + "/*", - "net.i2p.router.web.jsp.nowebapp_jsp"); +///////////////////////////////////////////////// + //baseHandler.mapPathToServlet('/' + notStarted.get(i) + "/*", + // "net.i2p.router.web.jsp.nowebapp_jsp"); } catch (Throwable me) { System.err.println(me); } @@ -454,18 +526,22 @@ public class RouterConsoleRunner { return success; } - static void initialize(WebApplicationContext context) { + static void initialize(WebAppContext context) { + SecurityHandler sec = new SecurityHandler(); + List constraints = new ArrayList(4); String password = getPassword(); if (password != null) { HashUserRealm realm = new HashUserRealm("i2prouter"); realm.put("admin", password); realm.addUserToRole("admin", "routerAdmin"); - context.setRealm(realm); - context.setAuthenticator(authenticator); - context.addHandler(0, new SecurityHandler()); - SecurityConstraint constraint = new SecurityConstraint("admin", "routerAdmin"); + sec.setUserRealm(realm); + sec.setAuthenticator(authenticator); + Constraint constraint = new Constraint("admin", "routerAdmin"); constraint.setAuthenticate(true); - context.addSecurityConstraint("/", constraint); + ConstraintMapping cm = new ConstraintMapping(); + cm.setConstraint(constraint); + cm.setPathSpec("/"); + constraints.add(cm); } // This forces a '403 Forbidden' response for TRACE and OPTIONS unless the @@ -477,12 +553,27 @@ public class RouterConsoleRunner { // The other strange methods - PUT, DELETE, MOVE - are disabled by default // See also: // http://old.nabble.com/Disable-HTTP-TRACE-in-Jetty-5.x-td12412607.html - SecurityConstraint sc = new SecurityConstraint(); - sc.setName("No trace or options"); - sc.addMethod("TRACE"); - sc.addMethod("OPTIONS"); - sc.setAuthenticate(true); - context.addSecurityConstraint("/*", sc) ; + + Constraint sc = new Constraint(); + sc.setName("No trace"); + ConstraintMapping cm = new ConstraintMapping(); + cm.setMethod("TRACE"); + cm.setConstraint(sc); + cm.setPathSpec("/"); + constraints.add(cm); + + sc = new Constraint(); + sc.setName("No options"); + cm = new ConstraintMapping(); + cm.setMethod("OPTIONS"); + cm.setConstraint(sc); + cm.setPathSpec("/"); + constraints.add(cm); + + ConstraintMapping cmarr[] = constraints.toArray(new ConstraintMapping[constraints.size()]); + sec.setConstraintMappings(cmarr); + + context.setSecurityHandler(sec); } static String getPassword() { @@ -507,11 +598,11 @@ public class RouterConsoleRunner { } /** @since 0.8.8 */ - private class ServerShutdown implements Runnable { + private static class ServerShutdown implements Runnable { public void run() { try { _server.stop(); - } catch (InterruptedException ie) {} + } catch (Exception ie) {} } } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java index 0943ea4177..249ae4582e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppConfiguration.java @@ -6,7 +6,8 @@ import java.util.StringTokenizer; import net.i2p.I2PAppContext; -import org.mortbay.jetty.servlet.WebApplicationContext; +import org.mortbay.jetty.webapp.Configuration; +import org.mortbay.jetty.webapp.WebAppContext; /** @@ -31,16 +32,16 @@ import org.mortbay.jetty.servlet.WebApplicationContext; * @since 0.7.12 * @author zzz */ -public class WebAppConfiguration implements WebApplicationContext.Configuration { - private WebApplicationContext _wac; +public class WebAppConfiguration implements Configuration { + private WebAppContext _wac; private static final String CLASSPATH = ".classpath"; - public void setWebApplicationContext(WebApplicationContext context) { + public void setWebAppContext(WebAppContext context) { _wac = context; } - public WebApplicationContext getWebApplicationContext() { + public WebAppContext getWebAppContext() { return _wac; } @@ -87,10 +88,16 @@ public class WebAppConfiguration implements WebApplicationContext.Configuration else path = dir.getAbsolutePath() + '/' + elem; System.err.println("Adding " + path + " to classpath for " + appName); - _wac.addClassPath(path); + _wac.setExtraClasspath(path); } } public void configureDefaults() {} public void configureWebApp() {} + + /** @since Jetty 6 */ + public void deconfigureWebApp() {} + + /** @since Jetty 6 */ + public void configureClassLoader() {} } diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java index 9c47190c14..0c4d7ac473 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java @@ -14,10 +14,12 @@ import net.i2p.util.Log; import net.i2p.util.SecureDirectory; import net.i2p.util.PortMapper; -import org.mortbay.http.HttpContext; -import org.mortbay.http.HttpListener; +import org.mortbay.jetty.Connector; +import org.mortbay.jetty.Handler; import org.mortbay.jetty.Server; -import org.mortbay.jetty.servlet.WebApplicationContext; +import org.mortbay.jetty.webapp.WebAppContext; +import org.mortbay.jetty.handler.ContextHandler; +import org.mortbay.jetty.handler.ContextHandlerCollection; /** @@ -49,9 +51,10 @@ public class WebAppStarter { * adds and starts * @throws just about anything, caller would be wise to catch Throwable */ - static void startWebApp(I2PAppContext ctx, Server server, String appName, String warPath) throws Exception { + static void startWebApp(I2PAppContext ctx, ContextHandlerCollection server, + String appName, String warPath) throws Exception { File tmpdir = new SecureDirectory(ctx.getTempDir(), "jetty-work-" + appName + ctx.random().nextInt()); - WebApplicationContext wac = addWebApp(ctx, server, appName, warPath, tmpdir); + WebAppContext wac = addWebApp(ctx, server, appName, warPath, tmpdir); _log.debug("Loading war from: " + warPath); wac.start(); } @@ -61,12 +64,13 @@ public class WebAppStarter { * This is used only by RouterConsoleRunner, which adds all the webapps first * and then starts all at once. */ - static WebApplicationContext addWebApp(I2PAppContext ctx, Server server, String appName, String warPath, File tmpdir) throws IOException { + static WebAppContext addWebApp(I2PAppContext ctx, ContextHandlerCollection server, + String appName, String warPath, File tmpdir) throws IOException { // Jetty will happily load one context on top of another without stopping // the first one, so we remove any previous one here try { - stopWebApp(server, appName); + stopWebApp(appName); } catch (Throwable t) {} // To avoid ZipErrors from JarURLConnetion caching, @@ -91,7 +95,7 @@ public class WebAppStarter { warPath = tmpPath; } - WebApplicationContext wac = server.addWebApplication("/"+ appName, warPath); + WebAppContext wac = new WebAppContext(warPath, "/"+ appName); tmpdir.mkdir(); wac.setTempDirectory(tmpdir); @@ -101,12 +105,14 @@ public class WebAppStarter { // see WebAppConfiguration for info - String[] classNames = server.getWebApplicationConfigurationClassNames(); + String[] classNames = wac.getConfigurationClasses(); String[] newClassNames = new String[classNames.length + 1]; for (int j = 0; j < classNames.length; j++) newClassNames[j] = classNames[j]; newClassNames[classNames.length] = WebAppConfiguration.class.getName(); - wac.setConfigurationClassNames(newClassNames); + wac.setConfigurationClasses(newClassNames); + server.addHandler(wac); + server.mapContexts(); return wac; } @@ -114,38 +120,55 @@ public class WebAppStarter { * stop it and remove the context * @throws just about anything, caller would be wise to catch Throwable */ - static void stopWebApp(Server server, String appName) { - // this will return a new context if one does not exist - HttpContext wac = server.getContext('/' + appName); + static void stopWebApp(String appName) { + ContextHandler wac = getWebApp(appName); + if (wac == null) + return; try { - // false -> not graceful - wac.stop(false); - } catch (InterruptedException ie) {} + // not graceful is default in Jetty 6? + wac.stop(); + } catch (Exception ie) {} + ContextHandlerCollection server = getConsoleServer(); + if (server == null) + return; try { - server.removeContext(wac); + server.removeHandler(wac); + server.mapContexts(); } catch (IllegalStateException ise) {} } static boolean isWebAppRunning(String appName) { - Server server = WebAppStarter.getConsoleServer(); - if (server == null) + ContextHandler wac = getWebApp(appName); + if (wac == null) return false; - // this will return a new context if one does not exist - HttpContext wac = server.getContext('/' + appName); return wac.isStarted(); } - /** see comments in ConfigClientsHandler */ - static Server getConsoleServer() { - Collection c = Server.getHttpServers(); - for (int i = 0; i < c.size(); i++) { - Server s = (Server) c.toArray()[i]; - HttpListener[] hl = s.getListeners(); - for (int j = 0; j < hl.length; j++) { - if (hl[j].getPort() == I2PAppContext.getGlobalContext().portMapper().getPort(PortMapper.SVC_CONSOLE)) - return s; - } + /** @since Jetty 6 */ + static ContextHandler getWebApp(String appName) { + ContextHandlerCollection server = getConsoleServer(); + if (server == null) + return null; + Handler handlers[] = server.getHandlers(); + if (handlers == null) + return null; + String path = '/'+ appName; + for (int i = 0; i < handlers.length; i++) { + ContextHandler ch = (ContextHandler) handlers[i]; + if (appName.equals(ch.getContextPath())) + return ch; } return null; } + + /** see comments in ConfigClientsHandler */ + static ContextHandlerCollection getConsoleServer() { + Server s = RouterConsoleRunner.getConsoleServer(); + if (s == null) + return null; + Handler h = s.getChildHandlerByClass(ContextHandlerCollection.class); + if (h == null) + return null; + return (ContextHandlerCollection) h; + } } diff --git a/apps/susidns/src/build.xml b/apps/susidns/src/build.xml index d287e5a4d0..156492ea58 100644 --- a/apps/susidns/src/build.xml +++ b/apps/susidns/src/build.xml @@ -17,6 +17,7 @@ + diff --git a/apps/susimail/build.xml b/apps/susimail/build.xml index 8a8d33c4ad..b660be49e3 100644 --- a/apps/susimail/build.xml +++ b/apps/susimail/build.xml @@ -19,6 +19,7 @@ + diff --git a/apps/susimail/src/WEB-INF/web.xml b/apps/susimail/src/WEB-INF/web.xml index bab239ed07..e3f93d229f 100644 --- a/apps/susimail/src/WEB-INF/web.xml +++ b/apps/susimail/src/WEB-INF/web.xml @@ -15,4 +15,26 @@ 15 - + + + +- diff --git a/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java b/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java index 98350708ca..c02aae599f 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java +++ b/apps/susimail/src/src/i2p/susi/webmail/RequestWrapper.java @@ -35,6 +35,19 @@ import javax.servlet.http.HttpSession; import org.mortbay.servlet.MultiPartRequest; /** + * Required major changes for Jetty 6 + * to support change from MultiPartRequest to MultiPartFilter. + * See http://docs.codehaus.org/display/JETTY/File+Upload+in+jetty6 + * Unfortunately, Content-type not available until Jetty 8 + * See https://bugs.eclipse.org/bugs/show_bug.cgi?id=349110 + * + * So we could either extend and fix MultiPartFilter, and rewrite everything here, + * or copy MultiParRequest into our war and fix it so it compiles with Jetty 6. + * We do the latter. + * + * The filter would have been added in web.xml, + * see that file, where it's commented out. + * * @author user */ public class RequestWrapper { diff --git a/build.properties b/build.properties index 9ae4afb969..2f7920cba8 100644 --- a/build.properties +++ b/build.properties @@ -10,6 +10,6 @@ # Javadocs # Note: Include the trailing slash! Don't surround the URL in quotes! javasedocs.url=http://docs.oracle.com/javase/6/docs/api/ -jettydocs.url=http://docs.i2p2.de/jetty/javadoc/ +jettydocs.url=http://jetty.codehaus.org/jetty/jetty-6/apidocs/ jrobindocs.url=http://docs.i2p-projekt.de/jrobin/javadoc/ wrapperdocs.url=http://wrapper.tanukisoftware.com/jdoc/ diff --git a/build.xml b/build.xml index 51715be3fd..4efacca7a9 100644 --- a/build.xml +++ b/build.xml @@ -194,12 +194,9 @@ - - - - - - + + + @@ -391,9 +388,10 @@ + - + @@ -412,10 +410,16 @@ + + + + + + @@ -670,14 +674,12 @@ - - - - - + + + + - @@ -724,20 +726,13 @@ - - - - - - - - + + - @@ -931,14 +926,18 @@ + - - - - - - + + + + + diff --git a/installer/resources/clients.config b/installer/resources/clients.config index 08c6c62ba8..8d408cb17a 100644 --- a/installer/resources/clients.config +++ b/installer/resources/clients.config @@ -40,7 +40,7 @@ clientApp.2.args=i2ptunnel.config clientApp.2.startOnLoad=true # run our own eepsite with a seperate jetty instance -clientApp.3.main=org.mortbay.jetty.Server +clientApp.3.main=org.mortbay.start.Main clientApp.3.name=I2P webserver (eepsite) clientApp.3.args="eepsite/jetty.xml" clientApp.3.delay=30 diff --git a/installer/resources/eepsite/contexts/base-context.xml b/installer/resources/eepsite/contexts/base-context.xml new file mode 100644 index 0000000000..1eac073303 --- /dev/null +++ b/installer/resources/eepsite/contexts/base-context.xml @@ -0,0 +1,25 @@ + + + + + + + / + ./eepsite/docroot/ + + + + + index.html + + + max-age=3600,public + + + + diff --git a/installer/resources/eepsite/contexts/cgi-context.xml b/installer/resources/eepsite/contexts/cgi-context.xml new file mode 100644 index 0000000000..68ffa38aad --- /dev/null +++ b/installer/resources/eepsite/contexts/cgi-context.xml @@ -0,0 +1,33 @@ + + + + + + + /cgi-bin + + + ./eepsite/cgi-bin/ + + + + diff --git a/installer/resources/eepsite.help/help/index.html b/installer/resources/eepsite/docroot/help/index.html similarity index 100% rename from installer/resources/eepsite.help/help/index.html rename to installer/resources/eepsite/docroot/help/index.html diff --git a/installer/resources/eepsite.help/help/index_de.html b/installer/resources/eepsite/docroot/help/index_de.html similarity index 100% rename from installer/resources/eepsite.help/help/index_de.html rename to installer/resources/eepsite/docroot/help/index_de.html diff --git a/installer/resources/eepsite.help/help/index_fr.html b/installer/resources/eepsite/docroot/help/index_fr.html similarity index 100% rename from installer/resources/eepsite.help/help/index_fr.html rename to installer/resources/eepsite/docroot/help/index_fr.html diff --git a/installer/resources/eepsite.help/help/index_na.html b/installer/resources/eepsite/docroot/help/index_na.html similarity index 100% rename from installer/resources/eepsite.help/help/index_na.html rename to installer/resources/eepsite/docroot/help/index_na.html diff --git a/installer/resources/eepsite.help/help/index_nl.html b/installer/resources/eepsite/docroot/help/index_nl.html similarity index 100% rename from installer/resources/eepsite.help/help/index_nl.html rename to installer/resources/eepsite/docroot/help/index_nl.html diff --git a/installer/resources/eepsite.help/help/index_ru.html b/installer/resources/eepsite/docroot/help/index_ru.html similarity index 100% rename from installer/resources/eepsite.help/help/index_ru.html rename to installer/resources/eepsite/docroot/help/index_ru.html diff --git a/installer/resources/eepsite.help/help/index_sv.html b/installer/resources/eepsite/docroot/help/index_sv.html similarity index 100% rename from installer/resources/eepsite.help/help/index_sv.html rename to installer/resources/eepsite/docroot/help/index_sv.html diff --git a/installer/resources/eepsite.help/help/lib/bg.png b/installer/resources/eepsite/docroot/help/lib/bg.png similarity index 100% rename from installer/resources/eepsite.help/help/lib/bg.png rename to installer/resources/eepsite/docroot/help/lib/bg.png diff --git a/installer/resources/eepsite.help/help/lib/brown.png b/installer/resources/eepsite/docroot/help/lib/brown.png similarity index 100% rename from installer/resources/eepsite.help/help/lib/brown.png rename to installer/resources/eepsite/docroot/help/lib/brown.png diff --git a/installer/resources/eepsite.help/help/lib/eepsite.css b/installer/resources/eepsite/docroot/help/lib/eepsite.css similarity index 100% rename from installer/resources/eepsite.help/help/lib/eepsite.css rename to installer/resources/eepsite/docroot/help/lib/eepsite.css diff --git a/installer/resources/eepsite.help/help/lib/h2bg.png b/installer/resources/eepsite/docroot/help/lib/h2bg.png similarity index 100% rename from installer/resources/eepsite.help/help/lib/h2bg.png rename to installer/resources/eepsite/docroot/help/lib/h2bg.png diff --git a/installer/resources/eepsite.help/help/lib/itoopie.png b/installer/resources/eepsite/docroot/help/lib/itoopie.png similarity index 100% rename from installer/resources/eepsite.help/help/lib/itoopie.png rename to installer/resources/eepsite/docroot/help/lib/itoopie.png diff --git a/installer/resources/eepsite.help/help/pagetemplate.html b/installer/resources/eepsite/docroot/help/pagetemplate.html similarity index 100% rename from installer/resources/eepsite.help/help/pagetemplate.html rename to installer/resources/eepsite/docroot/help/pagetemplate.html diff --git a/installer/resources/eepsite.help/index.html b/installer/resources/eepsite/docroot/index.html similarity index 100% rename from installer/resources/eepsite.help/index.html rename to installer/resources/eepsite/docroot/index.html diff --git a/installer/resources/eepsite.help/robots.txt b/installer/resources/eepsite/docroot/robots.txt similarity index 100% rename from installer/resources/eepsite.help/robots.txt rename to installer/resources/eepsite/docroot/robots.txt diff --git a/installer/resources/eepsite/etc/realm.properties b/installer/resources/eepsite/etc/realm.properties new file mode 100644 index 0000000000..f9e4e7fa3c --- /dev/null +++ b/installer/resources/eepsite/etc/realm.properties @@ -0,0 +1,21 @@ +# +# This file defines users passwords and roles for a HashUserRealm +# +# The format is +# : [, ...] +# +# Passwords may be clear text, obfuscated or checksummed. The class +# org.mortbay.util.Password should be used to generate obfuscated +# passwords or password checksums +# +# If DIGEST Authentication is used, the password must be in a recoverable +# format, either plain text or OBF:. +# +jetty: MD5:164c88b302622e17050af52c89945d44,user +admin: CRYPT:ad1ks..kc.1Ug,server-administrator,content-administrator,admin +other: OBF:1xmk1w261u9r1w1c1xmq +plain: plain +user: password + +# This entry is for digest auth. The credential is a MD5 hash of username:realmname:password +digest: MD5:6e120743ad67abfbc385bc2bb754e297 diff --git a/installer/resources/eepsite/jetty.xml b/installer/resources/eepsite/jetty.xml new file mode 100644 index 0000000000..632c54afa0 --- /dev/null +++ b/installer/resources/eepsite/jetty.xml @@ -0,0 +1,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 127.0.0.1 + 7658 + 60000 + 2 + false + 8443 + 5000 + 5000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ./eepsite/contexts + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ./eepsite/logs/yyyy_mm_dd.request.log + yyyy_MM_dd + 90 + true + false + false + GMT + + + + + + + + true + false + true + 1000 + + diff --git a/installer/resources/jetty.xml b/installer/resources/jetty.xml deleted file mode 100644 index a5072d8d75..0000000000 --- a/installer/resources/jetty.xml +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 127.0.0.1 - 7658 - - - 1 - 16 - 60000 - 1000 - 8443 - 8443 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - root - - - - - - - - - - - - - - - / - ./eepsite/docroot - - - - FALSE - - - - GET - HEAD - POST - - - - - - - - - - - /cgi-bin/* - ./eepsite/cgi-bin - - Common Gateway Interface - / - org.mortbay.servlet.CGI - /usr/local/bin:/usr/ucb:/bin:/usr/bin - - - - - - - - - ./eepsite/logs/yyyy_mm_dd.request.log - 90 - true - false - false - GMT - - - - - - - 2000 - - - diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java index a1f414ac29..648b2ff0c8 100644 --- a/router/java/src/net/i2p/router/startup/WorkingDir.java +++ b/router/java/src/net/i2p/router/startup/WorkingDir.java @@ -147,7 +147,9 @@ public class WorkingDir { System.err.println("Setting up new user directory " + rv); boolean success = migrate(MIGRATE_BASE, oldDirf, dirf); // this one must be after MIGRATE_BASE - success &= migrateJettyXml(oldDirf, dirf); + success &= migrateJettyXml(oldDirf, dirf, "jetty.xml"); + success &= migrateJettyXml(oldDirf, dirf, "contexts/base-context.xml"); + success &= migrateJettyXml(oldDirf, dirf, "contexts/cgi-context.xml"); success &= migrateClientsConfig(oldDirf, dirf); // for later news.xml updates (we don't copy initialNews.xml over anymore) success &= (new SecureDirectory(dirf, "docs")).mkdir(); @@ -258,11 +260,11 @@ public class WorkingDir { * It was already copied over once in migrate(), throw that out and * do it again with modifications. */ - private static boolean migrateJettyXml(File olddir, File todir) { + private static boolean migrateJettyXml(File olddir, File todir, String filename) { File eepsite1 = new File(olddir, "eepsite"); - File oldFile = new File(eepsite1, "jetty.xml"); + File oldFile = new File(eepsite1, filename); File eepsite2 = new File(todir, "eepsite"); - File newFile = new File(eepsite2, "jetty.xml"); + File newFile = new File(eepsite2, filename); FileInputStream in = null; PrintWriter out = null; try { @@ -276,11 +278,11 @@ public class WorkingDir { out.println(s); } out.println(""); - System.err.println("Copied jetty.xml with modifications"); + System.err.println("Copied " + filename + " with modifications"); return true; } catch (IOException ioe) { if (in != null) { - System.err.println("FAILED copy jetty.xml"); + System.err.println("FAILED copy " + filename); return false; } return false; From 99ad70e80add112593874ef1219ce0bb5555cd36 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 00:57:46 +0000 Subject: [PATCH 02/33] 6.1.26 base for reference --- .../src/org/mortbay/http/I2PRequestLog.java | 594 +++++++++++++----- 1 file changed, 450 insertions(+), 144 deletions(-) diff --git a/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java b/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java index c837563324..384ae0155f 100644 --- a/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java +++ b/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java @@ -1,182 +1,488 @@ -// ======================================================================== -// $Id: NCSARequestLog.java,v 1.35 2005/08/13 00:01:24 gregwilkins Exp $ -// Copyright 2000-2004 Mort Bay Consulting Pty. Ltd. -// ------------------------------------------------------------------------ -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ======================================================================== +//======================================================================== +//Copyright 1997-2006 Mort Bay Consulting Pty. Ltd. +//------------------------------------------------------------------------ +//Licensed under the Apache License, Version 2.0 (the "License"); +//you may not use this file except in compliance with the License. +//You may obtain a copy of the License at +//http://www.apache.org/licenses/LICENSE-2.0 +//Unless required by applicable law or agreed to in writing, software +//distributed under the License is distributed on an "AS IS" BASIS, +//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +//See the License for the specific language governing permissions and +//limitations under the License. +//======================================================================== -package org.mortbay.http; +package org.mortbay.jetty; import java.io.IOException; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.Writer; +import java.util.ArrayList; import java.util.Locale; import java.util.TimeZone; import javax.servlet.http.Cookie; -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; +import org.mortbay.component.AbstractLifeCycle; +import org.mortbay.jetty.servlet.PathMap; +import org.mortbay.log.Log; import org.mortbay.util.DateCache; -import org.mortbay.util.LogSupport; import org.mortbay.util.RolloverFileOutputStream; import org.mortbay.util.StringUtil; +import org.mortbay.util.TypeUtil; +import org.mortbay.util.Utf8StringBuffer; - -/* ------------------------------------------------------------ */ -/** NCSA HTTP Request Log. - * - * Override log() to put in the requestor's destination hash, - * instead of 127.0.0.1, - * which is placed in the X-I2P-DestHash field in the request headers - * by I2PTunnelHTTPServer. - * - * NCSA common or NCSA extended (combined) request log. - * @version $Id: NCSARequestLog.java,v 1.35 2005/08/13 00:01:24 gregwilkins Exp $ - * @author Tony Thompson +/** + * This {@link RequestLog} implementation outputs logs in the pseudo-standard NCSA common log format. + * Configuration options allow a choice between the standard Common Log Format (as used in the 3 log format) + * and the Combined Log Format (single log format). + * This log format can be output by most web servers, and almost all web log analysis software can understand + * these formats. * @author Greg Wilkins + * @author Nigel Canonizado + * + * @org.apache.xbean.XBean element="ncsaLog" */ -public class I2PRequestLog extends NCSARequestLog +public class NCSARequestLog extends AbstractLifeCycle implements RequestLog { - /* ------------------------------------------------------------ */ - /** Constructor. - */ - public I2PRequestLog() + private String _filename; + private boolean _extended; + private boolean _append; + private int _retainDays; + private boolean _closeOut; + private boolean _preferProxiedForAddress; + private String _logDateFormat="dd/MMM/yyyy:HH:mm:ss Z"; + private String _filenameDateFormat = null; + private Locale _logLocale = Locale.getDefault(); + private String _logTimeZone = "GMT"; + private String[] _ignorePaths; + private boolean _logLatency = false; + private boolean _logCookies = false; + private boolean _logServer = false; + + private transient OutputStream _out; + private transient OutputStream _fileOut; + private transient DateCache _logDateCache; + private transient PathMap _ignorePathMap; + private transient Writer _writer; + private transient ArrayList _buffers; + private transient char[] _copy; + + + public NCSARequestLog() { - super(); + _extended = true; + _append = true; + _retainDays = 31; } /* ------------------------------------------------------------ */ - /** Constructor. - * @param filename Filename, which can be in - * rolloverFileOutputStream format - * @see org.mortbay.util.RolloverFileOutputStream - * @exception IOException + /** + * @param filename The filename for the request log. This may be in the format expected by {@link RolloverFileOutputStream} */ - public I2PRequestLog(String filename) - throws IOException + public NCSARequestLog(String filename) { - super(filename); + _extended = true; + _append = true; + _retainDays = 31; + setFilename(filename); + } + + /* ------------------------------------------------------------ */ + /** + * @param filename The filename for the request log. This may be in the format expected by {@link RolloverFileOutputStream} + */ + public void setFilename(String filename) + { + if (filename != null) + { + filename = filename.trim(); + if (filename.length() == 0) + filename = null; + } + _filename = filename; + } + + public String getFilename() + { + return _filename; + } + + public String getDatedFilename() + { + if (_fileOut instanceof RolloverFileOutputStream) + return ((RolloverFileOutputStream)_fileOut).getDatedFilename(); + return null; + } + + /* ------------------------------------------------------------ */ + /** + * @param format Format for the timestamps in the log file. If not set, + * the pre-formated request timestamp is used. + */ + public void setLogDateFormat(String format) + { + _logDateFormat = format; + } + + public String getLogDateFormat() + { + return _logDateFormat; + } + + public void setLogLocale(Locale logLocale) + { + _logLocale = logLocale; + } + + public Locale getLogLocale() + { + return _logLocale; + } + + public void setLogTimeZone(String tz) + { + _logTimeZone = tz; + } + + public String getLogTimeZone() + { + return _logTimeZone; + } + + public void setRetainDays(int retainDays) + { + _retainDays = retainDays; + } + + public int getRetainDays() + { + return _retainDays; + } + + public void setExtended(boolean extended) + { + _extended = extended; + } + + public boolean isExtended() + { + return _extended; + } + + public void setAppend(boolean append) + { + _append = append; + } + + public boolean isAppend() + { + return _append; + } + + public void setIgnorePaths(String[] ignorePaths) + { + _ignorePaths = ignorePaths; + } + + public String[] getIgnorePaths() + { + return _ignorePaths; + } + + public void setLogCookies(boolean logCookies) + { + _logCookies = logCookies; + } + + public boolean getLogCookies() + { + return _logCookies; + } + + public boolean getLogServer() + { + return _logServer; + } + + public void setLogServer(boolean logServer) + { + _logServer=logServer; + } + + public void setLogLatency(boolean logLatency) + { + _logLatency = logLatency; + } + + public boolean getLogLatency() + { + return _logLatency; + } + + public void setPreferProxiedForAddress(boolean preferProxiedForAddress) + { + _preferProxiedForAddress = preferProxiedForAddress; } /* ------------------------------------------------------------ */ - /** Log a request. - * @param request The request - * @param response The response to this request. - * @param responseLength The bytes written to the response. - */ - public void log(HttpRequest request, - HttpResponse response, - int responseLength) + public void log(Request request, Response response) { - try{ - // ignore ignorables - if (_ignorePathMap != null && - _ignorePathMap.getMatch(request.getPath()) != null) + if (!isStarted()) + return; + + try + { + if (_ignorePathMap != null && _ignorePathMap.getMatch(request.getRequestURI()) != null) + return; + + if (_fileOut == null) return; - // log the rest - if (_fileOut==null) - return; - - StringBuilder buf = new StringBuilder(160); - - String addr = request.getField("X-I2P-DestHash"); - if(addr != null) - buf.append(addr).append(".i2p"); - else - buf.append(request.getRemoteAddr()); - - buf.append(" - "); - String user = request.getAuthUser(); - buf.append((user==null)?"-":user); - buf.append(" ["); - buf.append(_logDateCache.format(request.getTimeStamp())); - buf.append("] \""); - buf.append(request.getMethod()); - buf.append(' '); - buf.append(request.getURI()); - buf.append(' '); - buf.append(request.getVersion()); - buf.append("\" "); - int status=response.getStatus(); - buf.append((char)('0'+((status/100)%10))); - buf.append((char)('0'+((status/10)%10))); - buf.append((char)('0'+(status%10))); - if (responseLength>=0) - { - buf.append(' '); - if (responseLength>99999) - buf.append(Integer.toString(responseLength)); - else - { - if (responseLength>9999) - buf.append((char)('0'+((responseLength/10000)%10))); - if (responseLength>999) - buf.append((char)('0'+((responseLength/1000)%10))); - if (responseLength>99) - buf.append((char)('0'+((responseLength/100)%10))); - if (responseLength>9) - buf.append((char)('0'+((responseLength/10)%10))); - buf.append((char)('0'+(responseLength%10))); - } - buf.append(' '); - } - else - buf.append(" - "); - - String log =buf.toString(); + Utf8StringBuffer u8buf; + StringBuffer buf; synchronized(_writer) { - _writer.write(log); - if (isExtended()) - { - logExtended(request,response,_writer); - if (!getLogCookies()) - _writer.write(" -"); - } - - if (getLogCookies()) - { - Cookie[] cookies = request.getCookies(); - if (cookies==null || cookies.length==0) - _writer.write(" -"); - else - { - _writer.write(" \""); - for (int i=0;i=0) + { + buf.append(' '); + if (responseLength > 99999) + buf.append(Long.toString(responseLength)); + else + { + if (responseLength > 9999) + buf.append((char)('0' + ((responseLength / 10000)%10))); + if (responseLength > 999) + buf.append((char)('0' + ((responseLength /1000)%10))); + if (responseLength > 99) + buf.append((char)('0' + ((responseLength / 100)%10))); + if (responseLength > 9) + buf.append((char)('0' + ((responseLength / 10)%10))); + buf.append((char)('0' + (responseLength)%10)); + } + buf.append(' '); + } + else + buf.append(" - "); + + } + + if (!_extended && !_logCookies && !_logLatency) + { + synchronized(_writer) + { + buf.append(StringUtil.__LINE_SEPARATOR); + int l=buf.length(); + if (l>_copy.length) + l=_copy.length; + buf.getChars(0,l,_copy,0); + _writer.write(_copy,0,l); + _writer.flush(); + u8buf.reset(); + _buffers.add(u8buf); + } + } + else + { + synchronized(_writer) + { + int l=buf.length(); + if (l>_copy.length) + l=_copy.length; + buf.getChars(0,l,_copy,0); + _writer.write(_copy,0,l); + u8buf.reset(); + _buffers.add(u8buf); + + // TODO do outside synchronized scope + if (_extended) + logExtended(request, response, _writer); + + // TODO do outside synchronized scope + if (_logCookies) + { + Cookie[] cookies = request.getCookies(); + if (cookies == null || cookies.length == 0) + _writer.write(" -"); + else + { + _writer.write(" \""); + for (int i = 0; i < cookies.length; i++) + { + if (i != 0) + _writer.write(';'); + _writer.write(cookies[i].getName()); + _writer.write('='); + _writer.write(cookies[i].getValue()); + } + _writer.write('\"'); + } + } + + if (_logLatency) + { + _writer.write(' '); + _writer.write(TypeUtil.toString(System.currentTimeMillis() - request.getTimeStamp())); + } + + _writer.write(StringUtil.__LINE_SEPARATOR); + _writer.flush(); + } + } + } + catch (IOException e) { - log.warn(LogSupport.EXCEPTION,e); + Log.warn(e); } + + } + + /* ------------------------------------------------------------ */ + protected void logExtended(Request request, + Response response, + Writer writer) throws IOException + { + String referer = request.getHeader(HttpHeaders.REFERER); + if (referer == null) + writer.write("\"-\" "); + else + { + writer.write('"'); + writer.write(referer); + writer.write("\" "); + } + + String agent = request.getHeader(HttpHeaders.USER_AGENT); + if (agent == null) + writer.write("\"-\" "); + else + { + writer.write('"'); + writer.write(agent); + writer.write('"'); + } + } + + /* ------------------------------------------------------------ */ + protected void doStart() throws Exception + { + if (_logDateFormat!=null) + { + _logDateCache = new DateCache(_logDateFormat, _logLocale); + _logDateCache.setTimeZoneID(_logTimeZone); + } + + if (_filename != null) + { + _fileOut = new RolloverFileOutputStream(_filename,_append,_retainDays,TimeZone.getTimeZone(_logTimeZone),_filenameDateFormat,null); + _closeOut = true; + Log.info("Opened "+getDatedFilename()); + } + else + _fileOut = System.err; + + _out = _fileOut; + + if (_ignorePaths != null && _ignorePaths.length > 0) + { + _ignorePathMap = new PathMap(); + for (int i = 0; i < _ignorePaths.length; i++) + _ignorePathMap.put(_ignorePaths[i], _ignorePaths[i]); + } + else + _ignorePathMap = null; + + _writer = new OutputStreamWriter(_out); + _buffers = new ArrayList(); + _copy = new char[1024]; + super.doStart(); + } + + /* ------------------------------------------------------------ */ + protected void doStop() throws Exception + { + super.doStop(); + try {if (_writer != null) _writer.flush();} catch (IOException e) {Log.ignore(e);} + if (_out != null && _closeOut) + try {_out.close();} catch (IOException e) {Log.ignore(e);} + + _out = null; + _fileOut = null; + _closeOut = false; + _logDateCache = null; + _writer = null; + _buffers = null; + _copy = null; + } + + /* ------------------------------------------------------------ */ + /** + * @return the log File Date Format + */ + public String getFilenameDateFormat() + { + return _filenameDateFormat; + } + + /* ------------------------------------------------------------ */ + /** Set the log file date format. + * @see {@link RolloverFileOutputStream#RolloverFileOutputStream(String, boolean, int, TimeZone, String, String)} + * @param logFileDateFormat the logFileDateFormat to pass to {@link RolloverFileOutputStream} + */ + public void setFilenameDateFormat(String logFileDateFormat) + { + _filenameDateFormat=logFileDateFormat; } } - From 04cbcf275972c8643b98b621ec2e861ebd334919 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 00:58:13 +0000 Subject: [PATCH 03/33] reapply I2P mods --- .../src/org/mortbay/http/I2PRequestLog.java | 39 +++++++++++++++---- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java b/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java index 384ae0155f..5a9c7d121d 100644 --- a/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java +++ b/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java @@ -12,7 +12,7 @@ //limitations under the License. //======================================================================== -package org.mortbay.jetty; +package org.mortbay.http; import java.io.IOException; import java.io.OutputStream; @@ -25,6 +25,10 @@ import java.util.TimeZone; import javax.servlet.http.Cookie; import org.mortbay.component.AbstractLifeCycle; +import org.mortbay.jetty.HttpHeaders; +import org.mortbay.jetty.Request; +import org.mortbay.jetty.RequestLog; +import org.mortbay.jetty.Response; import org.mortbay.jetty.servlet.PathMap; import org.mortbay.log.Log; import org.mortbay.util.DateCache; @@ -39,12 +43,27 @@ import org.mortbay.util.Utf8StringBuffer; * and the Combined Log Format (single log format). * This log format can be output by most web servers, and almost all web log analysis software can understand * these formats. + * + * ** I2P Mods ** + * + * For Jetty 5, this extended NCSARequestLog to + * override log() to put in the requestor's destination hash, + * instead of 127.0.0.1, + * which is placed in the X-I2P-DestHash field in the request headers + * by I2PTunnelHTTPServer. + * But we also had to modify NCSARequestLog to do so, to change private + * fields to protected. + * + * So that we will work with system Jetty 6 packages, we just copy the whole thing + * and modify log() as required. + * We leave the package as org.mortbay.http for compatibility with old + * jetty.xml files. + * * @author Greg Wilkins * @author Nigel Canonizado * - * @org.apache.xbean.XBean element="ncsaLog" */ -public class NCSARequestLog extends AbstractLifeCycle implements RequestLog +public class I2PRequestLog extends AbstractLifeCycle implements RequestLog { private String _filename; private boolean _extended; @@ -70,7 +89,7 @@ public class NCSARequestLog extends AbstractLifeCycle implements RequestLog private transient char[] _copy; - public NCSARequestLog() + public I2PRequestLog() { _extended = true; _append = true; @@ -81,7 +100,7 @@ public class NCSARequestLog extends AbstractLifeCycle implements RequestLog /** * @param filename The filename for the request log. This may be in the format expected by {@link RolloverFileOutputStream} */ - public NCSARequestLog(String filename) + public I2PRequestLog(String filename) { _extended = true; _append = true; @@ -263,8 +282,14 @@ public class NCSARequestLog extends AbstractLifeCycle implements RequestLog addr = request.getHeader(HttpHeaders.X_FORWARDED_FOR); } - if (addr == null) - addr = request.getRemoteAddr(); + if (addr == null) { + // TODO offer B32 option + addr = request.getHeader("X-I2P-DestHash"); + if(addr != null) + addr += ".i2p"; + else + addr = request.getRemoteAddr(); + } buf.append(addr); buf.append(" - "); From 56901e5ff79aa21dcc78ce877f4ad5b8b679cb14 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 01:00:45 +0000 Subject: [PATCH 04/33] base files from Jetty 5.1.15 for reference --- .../org/mortbay/servlet/MultiPartRequest.java | 445 +++++++++++ .../src/org/mortbay/util/ByteArrayPool.java | 112 +++ .../src/src/org/mortbay/util/LineInput.java | 719 ++++++++++++++++++ 3 files changed, 1276 insertions(+) create mode 100644 apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java create mode 100644 apps/susimail/src/src/org/mortbay/util/ByteArrayPool.java create mode 100644 apps/susimail/src/src/org/mortbay/util/LineInput.java diff --git a/apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java b/apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java new file mode 100644 index 0000000000..634d712642 --- /dev/null +++ b/apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java @@ -0,0 +1,445 @@ +// ======================================================================== +// $Id: MultiPartRequest.java,v 1.16 2005/12/02 20:13:52 gregwilkins Exp $ +// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== + +package org.mortbay.servlet; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.UnsupportedEncodingException; +import java.util.Hashtable; +import java.util.List; +import java.util.Set; +import java.util.StringTokenizer; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.logging.Log; +import org.mortbay.log.LogFactory; +import org.mortbay.http.HttpFields; +import org.mortbay.util.LineInput; +import org.mortbay.util.MultiMap; +import org.mortbay.util.StringUtil; + +/* ------------------------------------------------------------ */ +/** Multipart Form Data request. + *

+ * This class decodes the multipart/form-data stream sent by + * a HTML form that uses a file input item. + * + *

Usage

+ * Each part of the form data is named from the HTML form and + * is available either via getString(name) or getInputStream(name). + * Furthermore the MIME parameters and filename can be requested for + * each part. + *
+ * 
+ * + * @version $Id: MultiPartRequest.java,v 1.16 2005/12/02 20:13:52 gregwilkins Exp $ + * @author Greg Wilkins + * @author Jim Crossley + */ +public class MultiPartRequest +{ + private static Log log = LogFactory.getLog(MultiPartRequest.class); + + /* ------------------------------------------------------------ */ + HttpServletRequest _request; + LineInput _in; + String _boundary; + String _encoding; + byte[] _byteBoundary; + MultiMap _partMap = new MultiMap(10); + int _char=-2; + boolean _lastPart=false; + + /* ------------------------------------------------------------ */ + /** Constructor. + * @param request The request containing a multipart/form-data + * request + * @exception IOException IOException + */ + public MultiPartRequest(HttpServletRequest request) + throws IOException + { + _request=request; + String content_type = request.getHeader(HttpFields.__ContentType); + if (!content_type.startsWith("multipart/form-data")) + throw new IOException("Not multipart/form-data request"); + + if(log.isDebugEnabled())log.debug("Multipart content type = "+content_type); + _encoding = request.getCharacterEncoding(); + if (_encoding != null) + _in = new LineInput(request.getInputStream(), 2048, _encoding); + else + _in = new LineInput(request.getInputStream()); + + // Extract boundary string + _boundary="--"+ + value(content_type.substring(content_type.indexOf("boundary="))); + + if(log.isDebugEnabled())log.debug("Boundary="+_boundary); + _byteBoundary= (_boundary+"--").getBytes(StringUtil.__ISO_8859_1); + + loadAllParts(); + } + + /* ------------------------------------------------------------ */ + /** Get the part names. + * @return an array of part names + */ + public String[] getPartNames() + { + Set s = _partMap.keySet(); + return (String[]) s.toArray(new String[s.size()]); + } + + /* ------------------------------------------------------------ */ + /** Check if a named part is present + * @param name The part + * @return true if it was included + */ + public boolean contains(String name) + { + Part part = (Part)_partMap.get(name); + return (part!=null); + } + + /* ------------------------------------------------------------ */ + /** Get the data of a part as a string. + * @param name The part name + * @return The part data + */ + public String getString(String name) + { + List part = _partMap.getValues(name); + if (part==null) + return null; + if (_encoding != null) + { + try + { + return new String(((Part)part.get(0))._data, _encoding); + } + catch (UnsupportedEncodingException uee) + { + if (log.isDebugEnabled())log.debug("Invalid character set: " + uee); + return null; + } + } + else + return new String(((Part)part.get(0))._data); + } + + /* ------------------------------------------------------------ */ + /** + * @param name The part name + * @return The parts data + */ + public String[] getStrings(String name) + { + List parts = _partMap.getValues(name); + if (parts==null) + return null; + String[] strings = new String[parts.size()]; + + if (_encoding == null) + { + for (int i=0; i0) + value=value.substring(0,i); + } + return value; + } + + /* ------------------------------------------------------------ */ + private class Part + { + String _name=null; + String _filename=null; + Hashtable _headers= new Hashtable(10); + byte[] _data=null; + } +}; diff --git a/apps/susimail/src/src/org/mortbay/util/ByteArrayPool.java b/apps/susimail/src/src/org/mortbay/util/ByteArrayPool.java new file mode 100644 index 0000000000..4d8a877c0f --- /dev/null +++ b/apps/susimail/src/src/org/mortbay/util/ByteArrayPool.java @@ -0,0 +1,112 @@ +// ======================================================================== +// $Id: ByteArrayPool.java,v 1.9 2004/05/09 20:32:49 gregwilkins Exp $ +// Copyright 2002-2004 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== + +package org.mortbay.util; + + +/* ------------------------------------------------------------ */ +/** Byte Array Pool + * Simple pool for recycling byte arrays of a fixed size. + * + * @version $Id: ByteArrayPool.java,v 1.9 2004/05/09 20:32:49 gregwilkins Exp $ + * @author Greg Wilkins (gregw) + */ +public class ByteArrayPool +{ + public static final int __POOL_SIZE= + Integer.getInteger("org.mortbay.util.ByteArrayPool.pool_size",8).intValue(); + + public static final ThreadLocal __pools=new BAThreadLocal(); + public static int __slot; + + /* ------------------------------------------------------------ */ + /** Get a byte array from the pool of known size. + * @param size Size of the byte array. + * @return Byte array of known size. + */ + public static byte[] getByteArray(int size) + { + byte[][] pool = (byte[][])__pools.get(); + boolean full=true; + for (int i=pool.length;i-->0;) + { + if (pool[i]!=null && pool[i].length==size) + { + byte[]b = pool[i]; + pool[i]=null; + return b; + } + else + full=false; + } + + if (full) + for (int i=pool.length;i-->0;) + pool[i]=null; + + return new byte[size]; + } + + /* ------------------------------------------------------------ */ + public static byte[] getByteArrayAtLeast(int minSize) + { + byte[][] pool = (byte[][])__pools.get(); + for (int i=pool.length;i-->0;) + { + if (pool[i]!=null && pool[i].length>=minSize) + { + byte[]b = pool[i]; + pool[i]=null; + return b; + } + } + + return new byte[minSize]; + } + + + /* ------------------------------------------------------------ */ + public static void returnByteArray(final byte[] b) + { + if (b==null) + return; + + byte[][] pool = (byte[][])__pools.get(); + for (int i=pool.length;i-->0;) + { + if (pool[i]==null) + { + pool[i]=b; + return; + } + } + + // slot. + int s = __slot++; + if (s<0)s=-s; + pool[s%pool.length]=b; + } + + + /* ------------------------------------------------------------ */ + /* ------------------------------------------------------------ */ + private static final class BAThreadLocal extends ThreadLocal + { + protected Object initialValue() + { + return new byte[__POOL_SIZE][]; + } + } +} diff --git a/apps/susimail/src/src/org/mortbay/util/LineInput.java b/apps/susimail/src/src/org/mortbay/util/LineInput.java new file mode 100644 index 0000000000..d3d2d435a4 --- /dev/null +++ b/apps/susimail/src/src/org/mortbay/util/LineInput.java @@ -0,0 +1,719 @@ +// ======================================================================== +// $Id: LineInput.java,v 1.17 2005/10/05 11:32:40 gregwilkins Exp $ +// Copyright 1996-2004 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== + +package org.mortbay.util; + +import java.io.ByteArrayInputStream; +import java.io.FilterInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.UnsupportedEncodingException; + +import org.apache.commons.logging.Log; +import org.mortbay.log.LogFactory; + + +/* ------------------------------------------------------------ */ +/** Fast LineInput InputStream. + * This buffered InputStream provides methods for reading lines + * of bytes. The lines can be converted to String or character + * arrays either using the default encoding or a user supplied + * encoding. + * + * Buffering and data copying are highly optimized, making this + * an ideal class for protocols that mix character encoding lines + * with arbitrary byte data (eg HTTP). + * + * The buffer size is also the maximum line length in bytes and/or + * characters. If the byte length of a line is less than the max, + * but the character length is greater, than then trailing characters + * are lost. + * + * Line termination is forgiving and accepts CR, LF, CRLF or EOF. + * Line input uses the mark/reset mechanism, so any marks set + * prior to a readLine call are lost. + * + * @version $Id: LineInput.java,v 1.17 2005/10/05 11:32:40 gregwilkins Exp $ + * @author Greg Wilkins (gregw) + */ +public class LineInput extends FilterInputStream +{ + private static Log log = LogFactory.getLog(LineInput.class); + + /* ------------------------------------------------------------ */ + private byte _buf[]; + private ByteBuffer _byteBuffer; + private InputStreamReader _reader; + private int _mark=-1; // reset marker + private int _pos; // Start marker + private int _avail; // Available back marker, may be byte limited + private int _contents; // Absolute back marker of buffer + private int _byteLimit=-1; + private boolean _newByteLimit; + private LineBuffer _lineBuffer; + private String _encoding; + private boolean _eof=false; + private boolean _lastCr=false; + private boolean _seenCrLf=false; + + private final static int LF=10; + private final static int CR=13; + + + /* ------------------------------------------------------------ */ + /** Constructor. + * Default buffer and maximum line size is 2048. + * @param in The underlying input stream. + */ + public LineInput(InputStream in) + { + this(in,0); + } + + /* ------------------------------------------------------------ */ + /** Constructor. + * @param in The underlying input stream. + * @param bufferSize The buffer size and maximum line length. + */ + public LineInput(InputStream in, int bufferSize) + { + super(in); + _mark=-1; + if (bufferSize==0) + bufferSize=8192; + _buf=ByteArrayPool.getByteArray(bufferSize); + _byteBuffer=new ByteBuffer(_buf); + _lineBuffer=new LineBuffer(bufferSize); + + try + { + _reader=new InputStreamReader(_byteBuffer,"UTF-8"); + } + catch (UnsupportedEncodingException e) + { + _reader=new InputStreamReader(_byteBuffer); + } + } + + /* ------------------------------------------------------------ */ + /** Constructor. + * @param in The underlying input stream. + * @param bufferSize The buffer size and maximum line length. + * @param encoding the character encoding to use for readLine methods. + * @exception UnsupportedEncodingException + */ + public LineInput(InputStream in, int bufferSize, String encoding) + throws UnsupportedEncodingException + { + super(in); + _mark=-1; + if (bufferSize==0) + bufferSize=2048; + _buf=ByteArrayPool.getByteArray(bufferSize); + _byteBuffer=new ByteBuffer(_buf); + _lineBuffer=new LineBuffer(bufferSize); + _reader=new InputStreamReader(_byteBuffer,encoding); + _encoding=encoding; + } + + /* ------------------------------------------------------------ */ + public InputStream getInputStream() + { + return in; + } + + /* ------------------------------------------------------------ */ + /** Set the byte limit. + * If set, only this number of bytes are read before EOF. + * @param bytes Limit number of bytes, or -1 for no limit. + */ + public void setByteLimit(int bytes) + { + _byteLimit=bytes; + + if (bytes>=0) + { + _newByteLimit=true; + _byteLimit-=_contents-_pos; + if (_byteLimit<0) + { + _avail+=_byteLimit; + _byteLimit=0; + } + } + else + { + _newByteLimit=false; + _avail=_contents; + _eof=false; + } + } + + + /* ------------------------------------------------------------ */ + /** Get the byte limit. + * @return Number of bytes until EOF is returned or -1 for no limit. + */ + public int getByteLimit() + { + if (_byteLimit<0) + return _byteLimit; + + return _byteLimit+_avail-_pos; + } + + /* ------------------------------------------------------------ */ + /** Read a line ended by CR, LF or CRLF. + * The default or supplied encoding is used to convert bytes to + * characters. + * @return The line as a String or null for EOF. + * @exception IOException + */ + public synchronized String readLine() + throws IOException + { + int len=fillLine(_buf.length); + + if (len<0) + return null; + + String s=null; + if (_encoding==null) + s=new String(_buf,_mark,len); + else + { + try + { + s=new String(_buf,_mark,len,_encoding); + } + catch(UnsupportedEncodingException e) + { + log.warn(LogSupport.EXCEPTION,e); + } + } + _mark=-1; + + return s; + } + + /* ------------------------------------------------------------ */ + /** Read a line ended by CR, LF or CRLF. + * The default or supplied encoding is used to convert bytes to + * characters. + * @param c Character buffer to place the line into. + * @param off Offset into the buffer. + * @param len Maximum length of line. + * @return The length of the line or -1 for EOF. + * @exception IOException + */ + public int readLine(char[] c,int off,int len) + throws IOException + { + int blen=fillLine(len); + + if (blen<0) + return -1; + if (blen==0) + return 0; + + _byteBuffer.setStream(_mark,blen); + + int read=0; + while(read0?len:_buf.length); + + if (len<0) + return null; + + if (len==0) + { + _lineBuffer.size=0; + return _lineBuffer; + } + + _byteBuffer.setStream(_mark,len); + + _lineBuffer.size=0; + int read=0; + while(read=_avail) + fill(); + if (_pos >=_avail) + b=-1; + else + b=_buf[_pos++]&255; + + return b; + } + + + /* ------------------------------------------------------------ */ + public synchronized int read(byte b[], int off, int len) throws IOException + { + int avail=_avail-_pos; + if (avail <=0) + { + fill(); + avail=_avail-_pos; + } + + if (avail <=0) + len=-1; + else + { + len=(avail < len) ? avail : len; + System.arraycopy(_buf,_pos,b,off,len); + _pos +=len; + } + + return len; + } + + /* ------------------------------------------------------------ */ + public long skip(long n) throws IOException + { + int avail=_avail-_pos; + if (avail <=0) + { + fill(); + avail=_avail-_pos; + } + + if (avail <=0) + n=0; + else + { + n=(avail < n) ? avail : n; + _pos +=n; + } + + return n; + } + + + /* ------------------------------------------------------------ */ + public synchronized int available() + throws IOException + { + int in_stream=in.available(); + if (_byteLimit>=0 && in_stream>_byteLimit) + in_stream=_byteLimit; + + return _avail - _pos + in_stream; + } + + /* ------------------------------------------------------------ */ + public synchronized void mark(int limit) + throws IllegalArgumentException + { + if (limit>_buf.length) + { + byte[] new_buf=new byte[limit]; + System.arraycopy(_buf,_pos,new_buf,_pos,_avail-_pos); + _buf=new_buf; + if (_byteBuffer!=null) + _byteBuffer.setBuffer(_buf); + } + _mark=_pos; + } + + /* ------------------------------------------------------------ */ + public synchronized void reset() + throws IOException + { + if (_mark < 0) + throw new IOException("Resetting to invalid mark"); + _pos=_mark; + _mark=-1; + } + + /* ------------------------------------------------------------ */ + public boolean markSupported() + { + return true; + } + + /* ------------------------------------------------------------ */ + private void fill() + throws IOException + { + // if the mark is in the middle of the buffer + if (_mark > 0) + { + // moved saved bytes to start of buffer + int saved=_contents - _mark; + System.arraycopy(_buf, _mark, _buf, 0, saved); + _pos-=_mark; + _avail-=_mark; + _contents=saved; + _mark=0; + } + else if (_mark<0 && _pos>0) + { + // move remaining bytes to start of buffer + int saved=_contents-_pos; + System.arraycopy(_buf,_pos, _buf, 0, saved); + _avail-=_pos; + _contents=saved; + _pos=0; + } + else if (_mark==0 && _pos>0 && _contents==_buf.length) + { + // Discard the mark as we need the space. + _mark=-1; + fill(); + return; + } + + // Get ready to top up the buffer + int n=0; + _eof=false; + + // Handle byte limited EOF + if (_byteLimit==0) + _eof=true; + // else loop until something is read. + else while (!_eof && n==0 && _buf.length>_contents) + { + // try to read as much as will fit. + int space=_buf.length-_contents; + + n=in.read(_buf,_contents,space); + + if (n<=0) + { + // If no bytes - we could be NBIO, so we want to avoid + // a busy loop. + if (n==0) + { + // Yield to give a chance for some bytes to turn up + Thread.yield(); + + // Do a byte read as that is blocking + int b = in.read(); + if (b>=0) + { + n=1; + _buf[_contents++]=(byte)b; + } + else + _eof=true; + } + else + _eof=true; + } + else + _contents+=n; + _avail=_contents; + + // If we have a byte limit + if (_byteLimit>0) + { + // adjust the bytes available + if (_contents-_pos >=_byteLimit) + _avail=_byteLimit+_pos; + + if (n>_byteLimit) + _byteLimit=0; + else if (n>=0) + _byteLimit-=n; + else if (n==-1) + throw new IOException("Premature EOF"); + } + } + + // If we have some characters and the last read was a CR and + // the first char is a LF, skip it + if (_avail-_pos>0 && _lastCr && _buf[_pos]==LF) + { + _seenCrLf=true; + _pos++; + if (_mark>=0) + _mark++; + _lastCr=false; + + // If the byte limit has just been imposed, dont count + // LF as content. + if(_byteLimit>=0 && _newByteLimit) + { + if (_avail<_contents) + _avail++; + else + _byteLimit++; + } + // If we ate all that ws filled, fill some more + if (_pos==_avail) + fill(); + } + _newByteLimit=false; + } + + + /* ------------------------------------------------------------ */ + private int fillLine(int maxLen) + throws IOException + { + _mark=_pos; + + if (_pos>=_avail) + fill(); + if (_pos>=_avail) + return -1; + + byte b; + boolean cr=_lastCr; + boolean lf=false; + _lastCr=false; + int len=0; + + LineLoop: + while (_pos<=_avail) + { + // if we have gone past the end of the buffer + while (_pos==_avail) + { + // If EOF or no more space in the buffer, + // return a line. + if (_eof || (_mark==0 && _contents==_buf.length)) + { + _lastCr=!_eof && _buf[_avail-1]==CR; + + cr=true; + lf=true; + break LineLoop; + } + + // If we have a CR and no more characters are available + if (cr && in.available()==0 && !_seenCrLf) + { + _lastCr=true; + cr=true; + lf=true; + break LineLoop; + } + else + { + // Else just wait for more... + _pos=_mark; + fill(); + _pos=len; + cr=false; + } + } + + // Get the byte + b=_buf[_pos++]; + + switch(b) + { + case LF: + if (cr) _seenCrLf=true; + lf=true; + break LineLoop; + + case CR: + if (cr) + { + // Double CR + if (_pos>1) + { + _pos--; + break LineLoop; + } + } + cr=true; + break; + + default: + if(cr) + { + if (_pos==1) + cr=false; + else + { + _pos--; + break LineLoop; + } + } + + len++; + if (len==maxLen) + { + // look for EOL + if (_mark!=0 && _pos+2>=_avail && _avail<_buf.length) + fill(); + + if (_pos<_avail && _buf[_pos]==CR) + { + cr=true; + _pos++; + } + if (_pos<_avail && _buf[_pos]==LF) + { + lf=true; + _pos++; + } + + if (!cr && !lf) + { + // fake EOL + lf=true; + cr=true; + } + break LineLoop; + } + + break; + } + } + + if (!cr && !lf && len==0) + len=-1; + + return len; + } + + /* ------------------------------------------------------------ */ + private static class ByteBuffer extends ByteArrayInputStream + { + ByteBuffer(byte[] buffer) + { + super(buffer); + } + + void setBuffer(byte[] buffer) + { + buf=buffer; + } + + void setStream(int offset,int length) + { + pos=offset; + count=offset+length; + mark=-1; + } + } + + /* ------------------------------------------------------------ */ + /** Reusable LineBuffer. + * Externalized LineBuffer for fast line parsing. + */ + public static class LineBuffer + { + public char[] buffer; + public int size; + public LineBuffer(int maxLineLength) + {buffer=new char[maxLineLength];} + + public String toString(){return new String(buffer,0,size);} + } + + /* ------------------------------------------------------------ */ + public void destroy() + { + ByteArrayPool.returnByteArray(_buf); + _byteBuffer=null; + _reader=null; + _lineBuffer=null; + _encoding=null; + } + + +} + From fbbab0d819a58be4e542e1f0aa2b181fe1aca6bc Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 01:01:40 +0000 Subject: [PATCH 05/33] mods to compile with Jetty 6 --- .../org/mortbay/servlet/MultiPartRequest.java | 36 ++++++++++--------- .../src/src/org/mortbay/util/LineInput.java | 8 ++--- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java b/apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java index 634d712642..5effd4ea57 100644 --- a/apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java +++ b/apps/susimail/src/src/org/mortbay/servlet/MultiPartRequest.java @@ -27,9 +27,9 @@ import java.util.StringTokenizer; import javax.servlet.http.HttpServletRequest; -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; -import org.mortbay.http.HttpFields; +//import org.apache.commons.logging.Log; +//import org.mortbay.log.LogFactory; +import org.mortbay.jetty.HttpHeaders; import org.mortbay.util.LineInput; import org.mortbay.util.MultiMap; import org.mortbay.util.StringUtil; @@ -48,13 +48,15 @@ import org.mortbay.util.StringUtil; *
  * 
* + * Modded to compile with Jetty 6 for I2P + * * @version $Id: MultiPartRequest.java,v 1.16 2005/12/02 20:13:52 gregwilkins Exp $ * @author Greg Wilkins * @author Jim Crossley */ public class MultiPartRequest { - private static Log log = LogFactory.getLog(MultiPartRequest.class); + //private static Log log = LogFactory.getLog(MultiPartRequest.class); /* ------------------------------------------------------------ */ HttpServletRequest _request; @@ -76,11 +78,11 @@ public class MultiPartRequest throws IOException { _request=request; - String content_type = request.getHeader(HttpFields.__ContentType); + String content_type = request.getHeader(HttpHeaders.CONTENT_TYPE); if (!content_type.startsWith("multipart/form-data")) throw new IOException("Not multipart/form-data request"); - if(log.isDebugEnabled())log.debug("Multipart content type = "+content_type); + //if(log.isDebugEnabled())log.debug("Multipart content type = "+content_type); _encoding = request.getCharacterEncoding(); if (_encoding != null) _in = new LineInput(request.getInputStream(), 2048, _encoding); @@ -91,7 +93,7 @@ public class MultiPartRequest _boundary="--"+ value(content_type.substring(content_type.indexOf("boundary="))); - if(log.isDebugEnabled())log.debug("Boundary="+_boundary); + //if(log.isDebugEnabled())log.debug("Boundary="+_boundary); _byteBoundary= (_boundary+"--").getBytes(StringUtil.__ISO_8859_1); loadAllParts(); @@ -136,7 +138,7 @@ public class MultiPartRequest } catch (UnsupportedEncodingException uee) { - if (log.isDebugEnabled())log.debug("Invalid character set: " + uee); + //if (log.isDebugEnabled())log.debug("Invalid character set: " + uee); return null; } } @@ -170,7 +172,7 @@ public class MultiPartRequest } catch (UnsupportedEncodingException uee) { - if (log.isDebugEnabled())log.debug("Invalid character set: " + uee); + //if (log.isDebugEnabled())log.debug("Invalid character set: " + uee); return null; } } @@ -264,7 +266,7 @@ public class MultiPartRequest String line = _in.readLine(); if (!line.equals(_boundary)) { - log.warn(line); + //log.warn(line); throw new IOException("Missing initial multi part boundary"); } @@ -281,7 +283,7 @@ public class MultiPartRequest if (line.length()==0) break; - if(log.isDebugEnabled())log.debug("LINE="+line); + //if(log.isDebugEnabled())log.debug("LINE="+line); // place part header key and value in map int c = line.indexOf(':',0); @@ -291,7 +293,7 @@ public class MultiPartRequest String value = line.substring(c+1,line.length()).trim(); String ev = (String) part._headers.get(key); part._headers.put(key,(ev!=null)?(ev+';'+value):value); - if(log.isDebugEnabled())log.debug(key+": "+value); + //if(log.isDebugEnabled())log.debug(key+": "+value); if (key.equals("content-disposition")) content_disposition=value; } @@ -321,16 +323,16 @@ public class MultiPartRequest // Check disposition if (!form_data) { - log.warn("Non form-data part in multipart/form-data"); + //log.warn("Non form-data part in multipart/form-data"); continue; } if (part._name==null || part._name.length()==0) { - log.warn("Part with no name in multipart/form-data"); + //log.warn("Part with no name in multipart/form-data"); continue; } - if(log.isDebugEnabled())log.debug("name="+part._name); - if(log.isDebugEnabled())log.debug("filename="+part._filename); + //if(log.isDebugEnabled())log.debug("name="+part._name); + //if(log.isDebugEnabled())log.debug("filename="+part._filename); _partMap.add(part._name,part); part._data=readBytes(); } @@ -406,7 +408,7 @@ public class MultiPartRequest lf=(c==10 || _char==10); if (_char==10) _char=-2; } - if(log.isTraceEnabled())log.trace(baos.toString()); + //if(log.isTraceEnabled())log.trace(baos.toString()); return baos.toByteArray(); } diff --git a/apps/susimail/src/src/org/mortbay/util/LineInput.java b/apps/susimail/src/src/org/mortbay/util/LineInput.java index d3d2d435a4..e837cfba09 100644 --- a/apps/susimail/src/src/org/mortbay/util/LineInput.java +++ b/apps/susimail/src/src/org/mortbay/util/LineInput.java @@ -22,8 +22,8 @@ import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; -import org.apache.commons.logging.Log; -import org.mortbay.log.LogFactory; +//import org.apache.commons.logging.Log; +//import org.mortbay.log.LogFactory; /* ------------------------------------------------------------ */ @@ -51,7 +51,7 @@ import org.mortbay.log.LogFactory; */ public class LineInput extends FilterInputStream { - private static Log log = LogFactory.getLog(LineInput.class); + //private static Log log = LogFactory.getLog(LineInput.class); /* ------------------------------------------------------------ */ private byte _buf[]; @@ -201,7 +201,7 @@ public class LineInput extends FilterInputStream } catch(UnsupportedEncodingException e) { - log.warn(LogSupport.EXCEPTION,e); + //log.warn(LogSupport.EXCEPTION,e); } } _mark=-1; From 41ea29209f93c122fe485f108bf1d8b5c7cd9a13 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 15:17:34 +0000 Subject: [PATCH 06/33] eepsite: - fix cgi-bin - enable WebAppDeplyer - add webdefault.xml --- .../eepsite/contexts/cgi-context.xml | 19 +- .../resources/eepsite/etc/webdefault.xml | 410 ++++++++++++++++++ installer/resources/eepsite/jetty.xml | 2 - 3 files changed, 426 insertions(+), 5 deletions(-) create mode 100644 installer/resources/eepsite/etc/webdefault.xml diff --git a/installer/resources/eepsite/contexts/cgi-context.xml b/installer/resources/eepsite/contexts/cgi-context.xml index 68ffa38aad..77126f5a5c 100644 --- a/installer/resources/eepsite/contexts/cgi-context.xml +++ b/installer/resources/eepsite/contexts/cgi-context.xml @@ -24,10 +24,23 @@ Configure a custom context for the eepsite. /cgi-bin + ./eepsite/cgi-bin/ - - ./eepsite/cgi-bin/ + + + + + + + + + Path + /usr/local/bin:/bin:/usr/bin + + + + / + - diff --git a/installer/resources/eepsite/etc/webdefault.xml b/installer/resources/eepsite/etc/webdefault.xml new file mode 100644 index 0000000000..b8d0114169 --- /dev/null +++ b/installer/resources/eepsite/etc/webdefault.xml @@ -0,0 +1,410 @@ + + + + + + + + + + + + + + + + + + + + + + + Default web.xml file. + This file is applied to a Web application before it's own WEB_INF/web.xml file + + + + + + + + + + org.mortbay.jetty.webapp.NoTLDJarPattern + start.jar|ant-.*\.jar|dojo-.*\.jar|jetty-.*\.jar|jsp-api-.*\.jar|junit-.*\.jar|servlet-api-.*\.jar|dnsns\.jar|rt\.jar|jsse\.jar|tools\.jar|sunpkcs11\.jar|sunjce_provider\.jar|xerces.*\.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + org.mortbay.jetty.servlet.DefaultServlet + + acceptRanges + true + + + dirAllowed + true + + + welcomeServlets + false + + + redirectWelcome + false + + + maxCacheSize + 256000000 + + + maxCachedFileSize + 10000000 + + + maxCachedFiles + 1000 + + + cacheType + both + + + gzip + true + + + useFileMappedBuffer + true + + + 0 + + + default / + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + jsp + org.apache.jasper.servlet.JspServlet + + logVerbosityLevel + DEBUG + + + fork + false + + + xpoweredBy + false + + + 0 + + + + jsp + *.jsp + *.jspf + *.jspx + *.xsp + *.JSP + *.JSPF + *.JSPX + *.XSP + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30 + + + + + + + + + + + + + index.html + index.htm + index.jsp + + + + + arISO-8859-6 + beISO-8859-5 + bgISO-8859-5 + caISO-8859-1 + csISO-8859-2 + daISO-8859-1 + deISO-8859-1 + elISO-8859-7 + enISO-8859-1 + esISO-8859-1 + etISO-8859-1 + fiISO-8859-1 + frISO-8859-1 + hrISO-8859-2 + huISO-8859-2 + isISO-8859-1 + itISO-8859-1 + iwISO-8859-8 + jaShift_JIS + koEUC-KR + ltISO-8859-2 + lvISO-8859-2 + mkISO-8859-5 + nlISO-8859-1 + noISO-8859-1 + plISO-8859-2 + ptISO-8859-1 + roISO-8859-2 + ruISO-8859-5 + shISO-8859-5 + skISO-8859-2 + slISO-8859-2 + sqISO-8859-2 + srISO-8859-5 + svISO-8859-1 + trISO-8859-9 + ukISO-8859-5 + zhGB2312 + zh_TWBig5 + + + + + Disable TRACE + / + TRACE + + + + + + diff --git a/installer/resources/eepsite/jetty.xml b/installer/resources/eepsite/jetty.xml index 632c54afa0..b827c9e82c 100644 --- a/installer/resources/eepsite/jetty.xml +++ b/installer/resources/eepsite/jetty.xml @@ -201,7 +201,6 @@ - From d976b59732ac661408495ccdb5811a09f74d29da Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 15:36:44 +0000 Subject: [PATCH 07/33] fix getWebApp() --- .../java/src/net/i2p/router/web/WebAppStarter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java index 0c4d7ac473..0384bff390 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java @@ -155,7 +155,7 @@ public class WebAppStarter { String path = '/'+ appName; for (int i = 0; i < handlers.length; i++) { ContextHandler ch = (ContextHandler) handlers[i]; - if (appName.equals(ch.getContextPath())) + if (path.equals(ch.getContextPath())) return ch; } return null; From 8ea587accbf619fc024ed31009e9e926baa0faae Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 15:41:05 +0000 Subject: [PATCH 08/33] fix up-to-date check --- apps/jetty/build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index 0b346bdee1..25fe356f43 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -149,7 +149,7 @@ - + From 2083d8c6a66ea4b850b701cafccf295a10876984 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 21:27:38 +0000 Subject: [PATCH 09/33] basic jetty.xml migration tool --- build.xml | 7 +- .../i2p/router/startup/ClientAppConfig.java | 10 +- .../net/i2p/router/startup/MigrateJetty.java | 149 ++++++++++++++++++ .../net/i2p/router/startup/WorkingDir.java | 23 +-- 4 files changed, 173 insertions(+), 16 deletions(-) create mode 100644 router/java/src/net/i2p/router/startup/MigrateJetty.java diff --git a/build.xml b/build.xml index 4efacca7a9..71b8174f5f 100644 --- a/build.xml +++ b/build.xml @@ -932,8 +932,11 @@ TODO where is JMX? We don't need it I hope. --> - - + + + + + diff --git a/router/java/src/net/i2p/router/startup/ClientAppConfig.java b/router/java/src/net/i2p/router/startup/ClientAppConfig.java index 44f1fa0950..7d81ebd06d 100644 --- a/router/java/src/net/i2p/router/startup/ClientAppConfig.java +++ b/router/java/src/net/i2p/router/startup/ClientAppConfig.java @@ -131,14 +131,18 @@ public class ClientAppConfig { /* * Go through the properties, and return a List of ClientAppConfig structures + * This is for the router. */ public static List getClientApps(RouterContext ctx) { Properties clientApps = getClientAppProps(ctx); - return getClientApps(clientApps); + List rv = getClientApps(clientApps); + MigrateJetty.migrate(ctx, rv); + return rv; } /* * Go through the properties, and return a List of ClientAppConfig structures + * This is for plugins. * * @since 0.7.12 */ @@ -190,14 +194,14 @@ public class ClientAppConfig { } /** classpath and stopargs not supported */ - public static void writeClientAppConfig(RouterContext ctx, List apps) { + public static void writeClientAppConfig(RouterContext ctx, List apps) { File cfgFile = configFile(ctx); FileOutputStream fos = null; try { fos = new SecureFileOutputStream(cfgFile); StringBuilder buf = new StringBuilder(2048); for(int i = 0; i < apps.size(); i++) { - ClientAppConfig app = (ClientAppConfig) apps.get(i); + ClientAppConfig app = apps.get(i); buf.append(PREFIX).append(i).append(".main=").append(app.className).append("\n"); buf.append(PREFIX).append(i).append(".name=").append(app.clientName).append("\n"); if (app.args != null) diff --git a/router/java/src/net/i2p/router/startup/MigrateJetty.java b/router/java/src/net/i2p/router/startup/MigrateJetty.java new file mode 100644 index 0000000000..edd1750d08 --- /dev/null +++ b/router/java/src/net/i2p/router/startup/MigrateJetty.java @@ -0,0 +1,149 @@ +package net.i2p.router.startup; +/* + * free (adj.): unencumbered; not under the control of others + * Released into the public domain + * with no warranty of any kind, either expressed or implied. + */ + +import java.io.File; +import java.util.List; + +import net.i2p.router.RouterContext; + +/** + * Migrate the clients.config and jetty.xml files + * from Jetty 5 to Jetty 6 + * + * For each client for class org.mortbay.jetty.Server: + *
+ *  Let $D be the dir that jetty.xml is in (usually ~/.i2p/eepsite)
+ *  Saves $D/jetty.xml to $D/jetty5.xml
+ *  Copies $I2P/eepsite/jetty.xml to $D/jetty.xml, edited for $D
+ *  Copies $I2P/eepsite/context/base-context.xml to $D/jetty.xml, edited for $D
+ *  Copies $I2P/eepsite/context/cgi-context.xml to $D/jetty.xml, edited for $D
+ *  Copies $I2P/eepsite/etc/* to $D/etc
+ *  Changes main class in clients.config
+ *
+ * Copies clients.config to clients.config.backup + * Saves new clients.config + * + * Does NOT preserve port number, thread counts, etc. + * + * @since Jetty 6 + */ +abstract class MigrateJetty { + private static boolean _wasChecked; + private static boolean _hasJetty6; + + private static final String OLD_CLASS = "org.mortbay.jetty.Server"; + private static final String NEW_CLASS = "org.mortbay.start.Main"; + private static final String BACKUP = "jetty5.xml"; + private static final String BASE_CONTEXT = "contexts/base-context.xml"; + private static final String CGI_CONTEXT = "contexts/cgi-context.xml"; + + public static void migrate(RouterContext ctx, List apps) { + boolean shouldSave = false; + for (int i = 0; i < apps.size(); i++) { + ClientAppConfig app = apps.get(i); + if (!app.className.equals(OLD_CLASS)) + continue; + if (!hasJetty6()) { + System.err.println("WARNING: Jetty 6 unavailable, cannot migrate client " + i + + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS); + continue; + } + String xml = app.args; + if (xml == null) + continue; + File xmlFile = new File(xml); + if ((!xmlFile.exists()) || (!xmlFile.isAbsolute())) { + System.err.println("WARNING: XML file " + xmlFile + + " not found, cannot migrate client " + i + + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS); + continue; + } + File eepsite = xmlFile.getParentFile(); + File backup = new File(eepsite, BACKUP); + if (backup.exists()) { + System.err.println("WARNING: Backup XML file " + backup + " already exists" + + ", cannot migrate client " + i + + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS); + continue; + } + boolean ok = WorkingDir.copyFile(xmlFile, backup); + if (!ok) { + System.err.println("WARNING: Failed to copy XML file " + xmlFile + " to " + backup + + ", cannot migrate client " + i + + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS); + continue; + } + File baseEep = new File(ctx.getBaseDir(), "eepsite"); + // jetty.xml existed before in jetty 5 version, so check this new file + // and if it doesn't exist we can't continue + File baseContext = new File(baseEep, BASE_CONTEXT); + if (!baseContext.exists()) { + System.err.println("WARNING: Cannot find new XML file template " + baseContext + + ", cannot migrate client " + i + + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS); + continue; + } + String newPath = eepsite.getAbsolutePath() + File.separatorChar; + ok = WorkingDir.migrateJettyXml(baseEep, eepsite, "jetty.xml", "./eepsite/", newPath); + if (!ok) { + System.err.println("WARNING: Failed to modify XML file " + xmlFile + + ", cannot migrate client " + i + + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS); + continue; + } + // now we're committed, so don't check any more failure codes + (new File(eepsite, "contexts")).mkdir(); + WorkingDir.migrateJettyXml(baseEep, eepsite, BASE_CONTEXT, "./eepsite/", newPath); + WorkingDir.migrateJettyXml(baseEep, eepsite, CGI_CONTEXT, "./eepsite/", newPath); + (new File(eepsite, "etc")).mkdir(); + File to = new File(eepsite, "etc/realm.properties"); + if (!to.exists()) + WorkingDir.copyFile(new File(baseEep, "etc/realm.properties"), to); + to = new File(eepsite, "etc/webdefault.xml"); + if (!to.exists()) + WorkingDir.copyFile(new File(baseEep, "etc/webdefault.xml"), to); + app.className = NEW_CLASS; + shouldSave = true; + System.err.println("WARNING: Migrated client " + i + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS + ".\n" + + "Check the following files in " + baseEep + + ": jetty.xml, " + BASE_CONTEXT + ", and " + CGI_CONTEXT + "\n" + + "Your old jetty.xml was saved as jetty5.xml\n" + + "If you modified your jetty.xml to change ports, thread limits, etc, you MUST\n" + + "edit it to change them again. Your port was reset to 7658."); + } + if (shouldSave) { + File cfgFile = ClientAppConfig.configFile(ctx); + File backup = new File(cfgFile.getAbsolutePath() + ".jetty5"); + boolean ok = WorkingDir.copyFile(cfgFile, backup); + if (ok) { + ClientAppConfig.writeClientAppConfig(ctx, apps); + System.err.println("WARNING: Migrated clients config file " + cfgFile + + " from Jetty 5 class " + OLD_CLASS + + " to Jetty 6 class " + NEW_CLASS + "\n" + + "Your old clients config file was saved as " + cfgFile + ".jetty5"); + } + } + } + + private static boolean hasJetty6() { + if (!_wasChecked) { + try { + LoadClientAppsJob.testClient(NEW_CLASS, null); + _hasJetty6 = true; + } catch (ClassNotFoundException cnfe) {} + _wasChecked = true; + } + return _hasJetty6; + } +} diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java index 648b2ff0c8..a249038833 100644 --- a/router/java/src/net/i2p/router/startup/WorkingDir.java +++ b/router/java/src/net/i2p/router/startup/WorkingDir.java @@ -147,9 +147,12 @@ public class WorkingDir { System.err.println("Setting up new user directory " + rv); boolean success = migrate(MIGRATE_BASE, oldDirf, dirf); // this one must be after MIGRATE_BASE - success &= migrateJettyXml(oldDirf, dirf, "jetty.xml"); - success &= migrateJettyXml(oldDirf, dirf, "contexts/base-context.xml"); - success &= migrateJettyXml(oldDirf, dirf, "contexts/cgi-context.xml"); + File oldEep = new File(oldDirf, "eepsite"); + File newEep = new File(oldDirf, "eepsite"); + String newPath = newEep.getAbsolutePath() + File.separatorChar; + success &= migrateJettyXml(oldEep, newEep, "jetty.xml", "./eepsite/", newPath); + success &= migrateJettyXml(oldEep, newEep, "contexts/base-context.xml", "./eepsite/", newPath); + success &= migrateJettyXml(oldEep, newEep, "contexts/cgi-context.xml", "./eepsite/", newPath); success &= migrateClientsConfig(oldDirf, dirf); // for later news.xml updates (we don't copy initialNews.xml over anymore) success &= (new SecureDirectory(dirf, "docs")).mkdir(); @@ -260,11 +263,9 @@ public class WorkingDir { * It was already copied over once in migrate(), throw that out and * do it again with modifications. */ - private static boolean migrateJettyXml(File olddir, File todir, String filename) { - File eepsite1 = new File(olddir, "eepsite"); - File oldFile = new File(eepsite1, filename); - File eepsite2 = new File(todir, "eepsite"); - File newFile = new File(eepsite2, filename); + static boolean migrateJettyXml(File olddir, File todir, String filename, String oldString, String newString) { + File oldFile = new File(olddir, filename); + File newFile = new File(todir, filename); FileInputStream in = null; PrintWriter out = null; try { @@ -272,8 +273,8 @@ public class WorkingDir { out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new SecureFileOutputStream(newFile), "UTF-8"))); String s = null; while ((s = DataHelper.readLine(in)) != null) { - if (s.indexOf("./eepsite/") >= 0) { - s = s.replace("./eepsite/", todir.getAbsolutePath() + File.separatorChar + "eepsite" + File.separatorChar); + if (s.indexOf(oldString) >= 0) { + s = s.replace(oldString, newString); } out.println(s); } @@ -338,7 +339,7 @@ public class WorkingDir { * @param dst not a directory, will be overwritten if existing, will be mode 600 * @return true if it was copied successfully */ - private static boolean copyFile(File src, File dst) { + static boolean copyFile(File src, File dst) { if (!src.exists()) return false; boolean rv = true; From 5a4becba682d6f836b1d3657dfa7974cd5411f01 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 23 Dec 2011 22:00:16 +0000 Subject: [PATCH 10/33] updater200WithJetty target --- build.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.xml b/build.xml index 71b8174f5f..531de9aac0 100644 --- a/build.xml +++ b/build.xml @@ -35,6 +35,7 @@ + @@ -811,6 +812,7 @@ + From 0fb90960966583ac1c32fa816f5c5e0f7a9fe7aa Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 24 Dec 2011 05:26:56 +0000 Subject: [PATCH 11/33] - Fix help.jsp mapping to language - Fix nowebapp.jsp for non-started webapps - Fix nowebapp.jsp for url /foo for non-started webapp foo --- .../i2p/router/web/LocaleWebAppHandler.java | 4 +-- .../i2p/router/web/RouterConsoleRunner.java | 34 +++++++++++++------ apps/routerconsole/jsp/i2psnark/index.html | 8 ----- apps/routerconsole/jsp/i2ptunnel/index.jsp | 7 ---- apps/routerconsole/jsp/susidns/index.jsp | 8 ----- apps/routerconsole/jsp/susimail/susimail | 8 ----- 6 files changed, 24 insertions(+), 45 deletions(-) delete mode 100644 apps/routerconsole/jsp/i2psnark/index.html delete mode 100644 apps/routerconsole/jsp/i2ptunnel/index.jsp delete mode 100644 apps/routerconsole/jsp/susidns/index.jsp delete mode 100644 apps/routerconsole/jsp/susimail/susimail diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java index 98050bce2f..e24824e2a2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java @@ -76,9 +76,7 @@ public class LocaleWebAppHandler extends WebAppContext if (lang != null && lang.length() > 0 && !lang.equals("en")) { String testPath = pathInContext.substring(0, len - 4) + '_' + lang + ".jsp"; // Do we have a servlet for the new path that isn't the catchall *.jsp? - //Map.Entry servlet = getHolderEntry(testPath); -/////////////////////////////// - Map.Entry servlet = null; + Map.Entry servlet = getServletHandler().getHolderEntry(testPath); if (servlet != null) { String servletPath = (String) servlet.getKey(); if (servletPath != null && !servletPath.startsWith("*")) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 93f549d5ea..c40abefba8 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -42,6 +42,7 @@ import org.mortbay.jetty.security.ConstraintMapping; import org.mortbay.jetty.security.SecurityHandler; import org.mortbay.jetty.security.SslSelectChannelConnector; import org.mortbay.jetty.servlet.ServletHandler; +import org.mortbay.jetty.servlet.ServletHolder; import org.mortbay.jetty.servlet.SessionHandler; import org.mortbay.jetty.webapp.WebAppContext; import org.mortbay.thread.QueuedThreadPool; @@ -197,6 +198,7 @@ public class RouterConsoleRunner { * SessionHandler * SecurityHandler * ServletHandler + * servlets... * WebAppContext * ... * DefaultHandler @@ -267,7 +269,8 @@ public class RouterConsoleRunner { _webAppsDir += '/'; List notStarted = new ArrayList(); - WebAppContext baseHandler = null; + WebAppContext rootWebApp = null; + ServletHandler rootServletHandler = null; try { int boundAddresses = 0; @@ -347,16 +350,17 @@ public class RouterConsoleRunner { return; } - baseHandler = new LocaleWebAppHandler(I2PAppContext.getGlobalContext(), + rootWebApp = new LocaleWebAppHandler(I2PAppContext.getGlobalContext(), "/", _webAppsDir + ROUTERCONSOLE + ".war"); File tmpdir = new SecureDirectory(workDir, ROUTERCONSOLE + "-" + (_listenPort != null ? _listenPort : _sslListenPort)); tmpdir.mkdir(); - baseHandler.setTempDirectory(tmpdir); - baseHandler.setSessionHandler(new SessionHandler()); - baseHandler.setServletHandler(new ServletHandler()); - initialize(baseHandler); - chColl.addHandler(baseHandler); + rootWebApp.setTempDirectory(tmpdir); + rootWebApp.setSessionHandler(new SessionHandler()); + rootServletHandler = new ServletHandler(); + rootWebApp.setServletHandler(rootServletHandler); + initialize(rootWebApp); + chColl.addHandler(rootWebApp); File dir = new File(_webAppsDir); String fileNames[] = dir.list(WarFilenameFilter.instance()); @@ -404,15 +408,23 @@ public class RouterConsoleRunner { me.printStackTrace(); } - if (baseHandler != null) { + if (rootServletHandler != null && notStarted.size() > 0) { // map each not-started webapp to the error page + ServletHolder noWebApp = rootServletHandler.getServlet("net.i2p.router.web.jsp.nowebapp_jsp"); for (int i = 0; i < notStarted.size(); i++) { + // we want a new handler for each one since if the webapp is started we remove the handler??? try { -///////////////////////////////////////////////// - //baseHandler.mapPathToServlet('/' + notStarted.get(i) + "/*", - // "net.i2p.router.web.jsp.nowebapp_jsp"); + if (noWebApp != null) { + String path = '/' + notStarted.get(i); + // LocaleWebAppsHandler adds a .jsp + rootServletHandler.addServletWithMapping(noWebApp, path + ".jsp"); + rootServletHandler.addServletWithMapping(noWebApp, path + "/*"); + } else { + System.err.println("Can't find nowebapp.jsp?"); + } } catch (Throwable me) { System.err.println(me); + me.printStackTrace(); } } } diff --git a/apps/routerconsole/jsp/i2psnark/index.html b/apps/routerconsole/jsp/i2psnark/index.html deleted file mode 100644 index 681b946562..0000000000 --- a/apps/routerconsole/jsp/i2psnark/index.html +++ /dev/null @@ -1,8 +0,0 @@ -I2PSnark Anonymous BitTorrent Client Disabled - - - - -The I2PSnark Anonymous BitTorrent Client is not running. Please visit the config clients page -to start it. - diff --git a/apps/routerconsole/jsp/i2ptunnel/index.jsp b/apps/routerconsole/jsp/i2ptunnel/index.jsp deleted file mode 100644 index db3648aa07..0000000000 --- a/apps/routerconsole/jsp/i2ptunnel/index.jsp +++ /dev/null @@ -1,7 +0,0 @@ -I2P Tunnel Manager Not Running - - - - -The I2P Tunnel Manager is not currently running. Please visit the Client Configuration page to start it. - diff --git a/apps/routerconsole/jsp/susidns/index.jsp b/apps/routerconsole/jsp/susidns/index.jsp deleted file mode 100644 index 2964615e31..0000000000 --- a/apps/routerconsole/jsp/susidns/index.jsp +++ /dev/null @@ -1,8 +0,0 @@ -SusiDNS Disabled - - - - -SusiDNS is not running. Go to the config clients page -to start it. - diff --git a/apps/routerconsole/jsp/susimail/susimail b/apps/routerconsole/jsp/susimail/susimail deleted file mode 100644 index 32e9d3787b..0000000000 --- a/apps/routerconsole/jsp/susimail/susimail +++ /dev/null @@ -1,8 +0,0 @@ -SusiMail Disabled - - - - -SusiMail is not running. Go to the config clients page -to start it. - From ec7ec564be94727d72b3aa64ece26b1f8dbeaf0b Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 24 Dec 2011 17:09:01 +0000 Subject: [PATCH 12/33] - Fix Console concurrent ThreadPool - Uncomment eepsite concurrent ThreadPool and fix arguments - Reduce eepsite acceptors to 1 - Add jetty-ssl.xml example - jetty.xml cleanup --- .../i2p/router/web/RouterConsoleRunner.java | 40 ++++++++++++++-- build.xml | 2 +- installer/resources/eepsite/jetty-ssl.xml | 35 ++++++++++++++ installer/resources/eepsite/jetty.xml | 46 ++++++++----------- .../net/i2p/router/startup/WorkingDir.java | 1 + 5 files changed, 94 insertions(+), 30 deletions(-) create mode 100644 installer/resources/eepsite/jetty-ssl.xml diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index c40abefba8..1ccbc42cae 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -9,7 +9,11 @@ import java.security.KeyStore; import java.util.List; import java.util.Properties; import java.util.StringTokenizer; +import java.util.concurrent.Executors; +import java.util.concurrent.SynchronousQueue; import java.util.concurrent.TimeUnit; +import java.util.concurrent.ThreadFactory; +import java.util.concurrent.ThreadPoolExecutor; import net.i2p.I2PAppContext; import net.i2p.apps.systray.SysTray; @@ -77,6 +81,7 @@ public class RouterConsoleRunner { private static final int MIN_THREADS = 1; private static final int MAX_THREADS = 24; private static final int MAX_IDLE_TIME = 90*1000; + private static final String THREAD_NAME = "RouterConsole Jetty"; static { System.setProperty("org.mortbay.http.Version.paranoid", "true"); @@ -217,10 +222,12 @@ public class RouterConsoleRunner { // so Jetty can find WebAppConfiguration System.setProperty("jetty.class.path", I2PAppContext.getGlobalContext().getBaseDir() + "/lib/routerconsole.jar"); _server = new Server(); + _server.setGracefulShutdown(1000); - /**** this doesn't work with NIO maybe? try { - _server.setThreadPool(new ThreadPool(MIN_THREADS, MAX_THREADS, MAX_IDLE_TIME, TimeUnit.MILLISECONDS)); + ThreadPool ctp = new CustomThreadPoolExecutor(); + ctp.prestartAllCoreThreads(); + _server.setThreadPool(ctp); } catch (Throwable t) { // class not found... System.out.println("INFO: Jetty concurrent ThreadPool unavailable, using QueuedThreadPool"); @@ -229,7 +236,7 @@ public class RouterConsoleRunner { qtp.setMaxIdleTimeMs(MAX_IDLE_TIME); _server.setThreadPool(qtp); } - ****/ + HandlerCollection hColl = new HandlerCollection(); ContextHandlerCollection chColl = new ContextHandlerCollection(); _server.addHandler(hColl); @@ -673,4 +680,31 @@ public class RouterConsoleRunner { } } + + /** + * Just to set the name and set Daemon + * @since Jetty 6 + */ + private static class CustomThreadPoolExecutor extends ThreadPool { + public CustomThreadPoolExecutor() { + super(MIN_THREADS, MAX_THREADS, MAX_IDLE_TIME, TimeUnit.MILLISECONDS, + new SynchronousQueue(), new CustomThreadFactory(), + new ThreadPoolExecutor.CallerRunsPolicy()); + } + } + + /** + * Just to set the name and set Daemon + * @since Jetty 6 + */ + private static class CustomThreadFactory implements ThreadFactory { + + public Thread newThread(Runnable r) { + Thread rv = Executors.defaultThreadFactory().newThread(r); + rv.setName(THREAD_NAME); + rv.setDaemon(true); + return rv; + } + } + } diff --git a/build.xml b/build.xml index 531de9aac0..76ecc658ad 100644 --- a/build.xml +++ b/build.xml @@ -938,7 +938,7 @@ - + diff --git a/installer/resources/eepsite/jetty-ssl.xml b/installer/resources/eepsite/jetty-ssl.xml new file mode 100644 index 0000000000..49421d69c3 --- /dev/null +++ b/installer/resources/eepsite/jetty-ssl.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + 8443 + 30000 + 2000 + ./eepsite/etc/keystore.ks + OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4 + OBF:1u2u1wml1z7s1z7a1wnl1u2g + ./eepsite/etc/keystore.ks + OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4 + 2000 + + + + + diff --git a/installer/resources/eepsite/jetty.xml b/installer/resources/eepsite/jetty.xml index b827c9e82c..0cf46bd700 100644 --- a/installer/resources/eepsite/jetty.xml +++ b/installer/resources/eepsite/jetty.xml @@ -54,20 +54,32 @@ - + + + + --> + 0 1 16 - --> @@ -87,7 +99,7 @@ 127.0.0.1 7658 60000 - 2 + 1 false 8443 5000 @@ -96,22 +108,12 @@ - - - + + + @@ -120,21 +122,13 @@ - - - - - - - - diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java index a249038833..888262302e 100644 --- a/router/java/src/net/i2p/router/startup/WorkingDir.java +++ b/router/java/src/net/i2p/router/startup/WorkingDir.java @@ -151,6 +151,7 @@ public class WorkingDir { File newEep = new File(oldDirf, "eepsite"); String newPath = newEep.getAbsolutePath() + File.separatorChar; success &= migrateJettyXml(oldEep, newEep, "jetty.xml", "./eepsite/", newPath); + success &= migrateJettyXml(oldEep, newEep, "jetty-ssl.xml", "./eepsite/", newPath); success &= migrateJettyXml(oldEep, newEep, "contexts/base-context.xml", "./eepsite/", newPath); success &= migrateJettyXml(oldEep, newEep, "contexts/cgi-context.xml", "./eepsite/", newPath); success &= migrateClientsConfig(oldDirf, dirf); From 07162b56c837e00dfa7a56707c93dcd055c49c3f Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 25 Dec 2011 22:37:30 +0000 Subject: [PATCH 13/33] escape quotation marks in jsp files The routerconsole's precompilejsp target failed when using the jetty packages from Debian. These escaped jsp files also work with 'our' jetty6 (and jetty6). --- apps/routerconsole/jsp/config.jsp | 4 ++-- apps/routerconsole/jsp/configadvanced.jsp | 4 ++-- apps/routerconsole/jsp/configclients.jsp | 10 +++++----- apps/routerconsole/jsp/configkeyring.jsp | 4 ++-- apps/routerconsole/jsp/configlogging.jsp | 4 ++-- apps/routerconsole/jsp/confignav.jsi | 2 +- apps/routerconsole/jsp/confignet.jsp | 4 ++-- apps/routerconsole/jsp/configpeer.jsp | 6 +++--- apps/routerconsole/jsp/configreseed.jsp | 8 ++++---- apps/routerconsole/jsp/configservice.jsp | 2 +- apps/routerconsole/jsp/configstats.jsp | 4 ++-- apps/routerconsole/jsp/configtunnels.jsp | 10 +++++----- apps/routerconsole/jsp/configui.jsp | 4 ++-- apps/routerconsole/jsp/configupdate.jsp | 4 ++-- apps/routerconsole/jsp/css.jsi | 2 +- apps/routerconsole/jsp/dumpprofile.jsp | 4 ++-- apps/routerconsole/jsp/graphs.jsp | 2 +- apps/routerconsole/jsp/index.jsp | 6 +++--- apps/routerconsole/jsp/jobs.jsp | 2 +- apps/routerconsole/jsp/logs.jsp | 2 +- apps/routerconsole/jsp/netdb.jsp | 8 ++++---- apps/routerconsole/jsp/oldconsole.jsp | 2 +- apps/routerconsole/jsp/peers.jsp | 4 ++-- apps/routerconsole/jsp/profiles.jsp | 4 ++-- apps/routerconsole/jsp/stats.jsp | 4 ++-- apps/routerconsole/jsp/summarynoframe.jsi | 10 +++++----- apps/routerconsole/jsp/tunnels.jsp | 2 +- apps/routerconsole/jsp/viewprofile.jsp | 2 +- 28 files changed, 62 insertions(+), 62 deletions(-) diff --git a/apps/routerconsole/jsp/config.jsp b/apps/routerconsole/jsp/config.jsp index ba783d37d8..d560d619a9 100644 --- a/apps/routerconsole/jsp/config.jsp +++ b/apps/routerconsole/jsp/config.jsp @@ -10,7 +10,7 @@ <%@include file="summary.jsi" %> -" /> +" />

<%=intl._("I2P Bandwidth Configuration")%>

<%@include file="confignav.jsi" %> @@ -18,7 +18,7 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " />
diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp index 85300a4835..255d06144c 100644 --- a/apps/routerconsole/jsp/configadvanced.jsp +++ b/apps/routerconsole/jsp/configadvanced.jsp @@ -10,7 +10,7 @@ <%@include file="summary.jsi" %> -" /> +" />

<%=intl._("I2P Advanced Configuration")%>

@@ -20,7 +20,7 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " />
diff --git a/apps/routerconsole/jsp/configclients.jsp b/apps/routerconsole/jsp/configclients.jsp index 4c70beafed..eadc663396 100644 --- a/apps/routerconsole/jsp/configclients.jsp +++ b/apps/routerconsole/jsp/configclients.jsp @@ -14,17 +14,17 @@ button span.hide{ <%@include file="summary.jsi" %> -" /> -" /> +" /> +" />

<%=intl._("I2P Client Configuration")%>

<%@include file="confignav.jsi" %> <% formhandler.storeMethod(request.getMethod()); %> - " /> - " /> - " /> + " /> + " /> + " />
diff --git a/apps/routerconsole/jsp/configkeyring.jsp b/apps/routerconsole/jsp/configkeyring.jsp index df49cfb08f..b76d4af491 100644 --- a/apps/routerconsole/jsp/configkeyring.jsp +++ b/apps/routerconsole/jsp/configkeyring.jsp @@ -15,10 +15,10 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " /> - " /> + " />

<%=intl._("Keyring")%>

<%=intl._("The router keyring is used to decrypt encrypted leaseSets.")%> <%=intl._("The keyring may contain keys for local or remote encrypted destinations.")%>

diff --git a/apps/routerconsole/jsp/configlogging.jsp b/apps/routerconsole/jsp/configlogging.jsp index a753950ca0..af013d0095 100644 --- a/apps/routerconsole/jsp/configlogging.jsp +++ b/apps/routerconsole/jsp/configlogging.jsp @@ -7,7 +7,7 @@ <%=intl.title("config logging")%> -" /> +" /> <%@include file="summary.jsi" %>

<%=intl._("I2P Logging Configuration")%>

@@ -17,7 +17,7 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " />
diff --git a/apps/routerconsole/jsp/confignav.jsi b/apps/routerconsole/jsp/confignav.jsi index 68bde4bcbe..81f3b0dc63 100644 --- a/apps/routerconsole/jsp/confignav.jsi +++ b/apps/routerconsole/jsp/confignav.jsi @@ -4,7 +4,7 @@ */ %> -" /> +" /> <% navHelper.storeWriter(out); %>
<% diff --git a/apps/routerconsole/jsp/confignet.jsp b/apps/routerconsole/jsp/confignet.jsp index 78dd68fda6..29062748ee 100644 --- a/apps/routerconsole/jsp/confignet.jsp +++ b/apps/routerconsole/jsp/confignet.jsp @@ -10,7 +10,7 @@ <%@include file="summary.jsi" %> -" /> +" />

<%=intl._("I2P Network Configuration")%>

<%@include file="confignav.jsi" %> @@ -18,7 +18,7 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " />
diff --git a/apps/routerconsole/jsp/configpeer.jsp b/apps/routerconsole/jsp/configpeer.jsp index 04873ff547..b5968abedc 100644 --- a/apps/routerconsole/jsp/configpeer.jsp +++ b/apps/routerconsole/jsp/configpeer.jsp @@ -15,13 +15,13 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " /> - " /> + " /> <% String peer = ""; if (request.getParameter("peer") != null) @@ -61,7 +61,7 @@

<%=intl._("Banned Peers")%>

- " /> + " /> <% profilesHelper.storeWriter(out); %>

<%=intl._("Banned IPs")%>

diff --git a/apps/routerconsole/jsp/configreseed.jsp b/apps/routerconsole/jsp/configreseed.jsp index 648a14ee95..511b87b595 100644 --- a/apps/routerconsole/jsp/configreseed.jsp +++ b/apps/routerconsole/jsp/configreseed.jsp @@ -10,16 +10,16 @@ <%@include file="summary.jsi" %> -" /> +" />

<%=intl._("I2P Reseeding Configuration")%>

<%@include file="confignav.jsi" %> <% formhandler.storeMethod(request.getMethod()); %> -" /> -" /> -" /> +" /> +" /> +" />
diff --git a/apps/routerconsole/jsp/configservice.jsp b/apps/routerconsole/jsp/configservice.jsp index 3a2f7af86d..3ee1ef7967 100644 --- a/apps/routerconsole/jsp/configservice.jsp +++ b/apps/routerconsole/jsp/configservice.jsp @@ -15,7 +15,7 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " />
diff --git a/apps/routerconsole/jsp/configstats.jsp b/apps/routerconsole/jsp/configstats.jsp index 7e548a1136..7be59bd440 100644 --- a/apps/routerconsole/jsp/configstats.jsp +++ b/apps/routerconsole/jsp/configstats.jsp @@ -64,11 +64,11 @@ function toggleAll(category) <% formhandler.storeMethod(request.getMethod()); %> - " /> + " /> - " /> + " />
diff --git a/apps/routerconsole/jsp/configtunnels.jsp b/apps/routerconsole/jsp/configtunnels.jsp index fb3fab1c3a..2bdc9b9998 100644 --- a/apps/routerconsole/jsp/configtunnels.jsp +++ b/apps/routerconsole/jsp/configtunnels.jsp @@ -10,16 +10,16 @@ <%@include file="summary.jsi" %> -" /> +" />

<%=intl._("I2P Tunnel Configuration")%>

<%@include file="confignav.jsi" %> <% formhandler.storeMethod(request.getMethod()); %> - " /> - " /> - " /> - " /> + " /> + " /> + " /> + " />

diff --git a/apps/routerconsole/jsp/configui.jsp b/apps/routerconsole/jsp/configui.jsp index bde01f40b4..9d25f87e71 100644 --- a/apps/routerconsole/jsp/configui.jsp +++ b/apps/routerconsole/jsp/configui.jsp @@ -10,7 +10,7 @@ <%@include file="summary.jsi" %> -" /> +" />

<%=uihelper._("I2P UI Configuration")%>

@@ -20,7 +20,7 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " />

<%=uihelper._("Router Console Theme")%>

diff --git a/apps/routerconsole/jsp/configupdate.jsp b/apps/routerconsole/jsp/configupdate.jsp index f57e995a59..f21a4c1b02 100644 --- a/apps/routerconsole/jsp/configupdate.jsp +++ b/apps/routerconsole/jsp/configupdate.jsp @@ -15,10 +15,10 @@ <% formhandler.storeMethod(request.getMethod()); %> - " /> + " /> - " /> + " />
diff --git a/apps/routerconsole/jsp/css.jsi b/apps/routerconsole/jsp/css.jsi index 33c9312c6a..767d0d071e 100644 --- a/apps/routerconsole/jsp/css.jsi +++ b/apps/routerconsole/jsp/css.jsi @@ -27,7 +27,7 @@ -" /> +" /> <% String conNonceParam = request.getParameter("consoleNonce"); if (conNonceParam != null && conNonceParam.equals(System.getProperty("router.consoleNonce"))) { diff --git a/apps/routerconsole/jsp/dumpprofile.jsp b/apps/routerconsole/jsp/dumpprofile.jsp index af6c8de744..7b08097434 100644 --- a/apps/routerconsole/jsp/dumpprofile.jsp +++ b/apps/routerconsole/jsp/dumpprofile.jsp @@ -1,6 +1,6 @@ <%@page contentType="text/plain" %>" -/>" +/>" +/>" /><% helper.storeWriter(out); %> diff --git a/apps/routerconsole/jsp/graphs.jsp b/apps/routerconsole/jsp/graphs.jsp index e54133250a..de463fb093 100644 --- a/apps/routerconsole/jsp/graphs.jsp +++ b/apps/routerconsole/jsp/graphs.jsp @@ -7,7 +7,7 @@ <%=intl.title("graphs")%> <% graphHelper.storeMethod(request.getMethod()); %> - " /> + " /> <% /* GraphHelper sets the defaults in setContextId, so setting the properties must be after the context */ %> <% diff --git a/apps/routerconsole/jsp/index.jsp b/apps/routerconsole/jsp/index.jsp index 33db27fa70..5ceaf67119 100644 --- a/apps/routerconsole/jsp/index.jsp +++ b/apps/routerconsole/jsp/index.jsp @@ -17,7 +17,7 @@ <%@include file="summary.jsi" %>

<%=intl._("I2P Router Console")%>

- " /> + " /> <% if (newshelper.shouldShowNews()) { java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getRouterDir(), "docs/news.xml"); @@ -30,7 +30,7 @@ } // shouldShowNews() %> - " /> + " />
@@ -59,6 +59,6 @@ <% java.io.File fpath = new java.io.File(net.i2p.I2PAppContext.getGlobalContext().getBaseDir(), "docs/readme.html"); %> - " /> + " />
diff --git a/apps/routerconsole/jsp/jobs.jsp b/apps/routerconsole/jsp/jobs.jsp index 53916dcd44..a076de97ca 100644 --- a/apps/routerconsole/jsp/jobs.jsp +++ b/apps/routerconsole/jsp/jobs.jsp @@ -9,7 +9,7 @@ <%@include file="summary.jsi" %>

<%=intl._("I2P Router Job Queue")%>

- " /> + " /> <% jobQueueHelper.storeWriter(out); %>
diff --git a/apps/routerconsole/jsp/logs.jsp b/apps/routerconsole/jsp/logs.jsp index a1551bb57c..f7dd9b815a 100644 --- a/apps/routerconsole/jsp/logs.jsp +++ b/apps/routerconsole/jsp/logs.jsp @@ -22,7 +22,7 @@ Java version: <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%> (<%=System.getProperty("java.runtime.name")%> <%=System.getProperty("java.runtime.version")%>)
Wrapper version: <%=System.getProperty("wrapper.version", "none")%>
- " /> + " /> Server version:
Platform: <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%>
Processor: <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)
diff --git a/apps/routerconsole/jsp/netdb.jsp b/apps/routerconsole/jsp/netdb.jsp index 2862e9e0e7..f4bb5ee757 100644 --- a/apps/routerconsole/jsp/netdb.jsp +++ b/apps/routerconsole/jsp/netdb.jsp @@ -11,10 +11,10 @@
- " /> + " /> <% netdbHelper.storeWriter(out); %> - " /> - " /> - " /> + " /> + " /> + " />
diff --git a/apps/routerconsole/jsp/oldconsole.jsp b/apps/routerconsole/jsp/oldconsole.jsp index 3612169e41..7421b414a8 100644 --- a/apps/routerconsole/jsp/oldconsole.jsp +++ b/apps/routerconsole/jsp/oldconsole.jsp @@ -11,7 +11,7 @@ <%@include file="summary.jsi" %> -" /> +" /> <% conhelper.storeWriter(out); %>

I2P Router » Old Console

diff --git a/apps/routerconsole/jsp/peers.jsp b/apps/routerconsole/jsp/peers.jsp index 4b48c5957d..1110904d55 100644 --- a/apps/routerconsole/jsp/peers.jsp +++ b/apps/routerconsole/jsp/peers.jsp @@ -10,9 +10,9 @@

<%=intl._("I2P Network Peers")%>

- " /> + " /> <% peerHelper.storeWriter(out); %> - " /> + " />
diff --git a/apps/routerconsole/jsp/profiles.jsp b/apps/routerconsole/jsp/profiles.jsp index 98ec488281..a7f5db47ec 100644 --- a/apps/routerconsole/jsp/profiles.jsp +++ b/apps/routerconsole/jsp/profiles.jsp @@ -9,9 +9,9 @@

<%=intl._("I2P Network Peer Profiles")%>

- " /> + " /> <% profilesHelper.storeWriter(out); %> - " /> + " />

<%=intl._("Banned Peers")%>

diff --git a/apps/routerconsole/jsp/stats.jsp b/apps/routerconsole/jsp/stats.jsp index d2787dea96..9cfeaea5fa 100644 --- a/apps/routerconsole/jsp/stats.jsp +++ b/apps/routerconsole/jsp/stats.jsp @@ -8,9 +8,9 @@ <%@include file="summary.jsi" %> -" /> +" /> <% oldhelper.storeWriter(out); %> -" /> +" />

<%=intl._("I2P Router Statistics")%>

diff --git a/apps/routerconsole/jsp/summarynoframe.jsi b/apps/routerconsole/jsp/summarynoframe.jsi index 355f4bc0b2..63c39e6e54 100644 --- a/apps/routerconsole/jsp/summarynoframe.jsi +++ b/apps/routerconsole/jsp/summarynoframe.jsi @@ -6,10 +6,10 @@ */ %> -" /> -" /> -" /> -" /> +" /> +" /> +" /> +" /> <% helper.storeWriter(out); %> <% @@ -28,7 +28,7 @@ %> -" /> +" /> <% // moved to java for ease of translation and to avoid 30 copies helper.renderSummaryBar(); diff --git a/apps/routerconsole/jsp/tunnels.jsp b/apps/routerconsole/jsp/tunnels.jsp index e01b331f6b..843a0a1b43 100644 --- a/apps/routerconsole/jsp/tunnels.jsp +++ b/apps/routerconsole/jsp/tunnels.jsp @@ -9,7 +9,7 @@ <%@include file="summary.jsi" %>

<%=intl._("I2P Tunnel Summary")%>

- " /> + " /> <% tunnelHelper.storeWriter(out); %>
diff --git a/apps/routerconsole/jsp/viewprofile.jsp b/apps/routerconsole/jsp/viewprofile.jsp index 36897d4a9a..05e0fda0e0 100644 --- a/apps/routerconsole/jsp/viewprofile.jsp +++ b/apps/routerconsole/jsp/viewprofile.jsp @@ -17,7 +17,7 @@ peerB64 = net.i2p.data.DataHelper.stripHTML(peerB64); // XSS %> -" /> +" /> <% stathelper.storeWriter(out); %>

<%=intl._("Profile for peer {0}", peerB64)%>

From be7623a462575081d712b3bacd81c510a95c7de7 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 29 Dec 2011 23:25:27 +0000 Subject: [PATCH 14/33] - Start webapps after console for faster startup - Add delay in systray port checker to ensure console is up - Move I2PRequestLog to net.i2p.jetty package --- .../http => net/i2p/jetty}/I2PRequestLog.java | 2 +- .../i2p/router/web/RouterConsoleRunner.java | 67 +++++++++++-------- .../src/net/i2p/apps/systray/UrlLauncher.java | 5 ++ installer/resources/eepsite/jetty.xml | 2 +- 4 files changed, 45 insertions(+), 31 deletions(-) rename apps/jetty/java/src/{org/mortbay/http => net/i2p/jetty}/I2PRequestLog.java (99%) diff --git a/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java b/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java similarity index 99% rename from apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java rename to apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java index 5a9c7d121d..52c287e188 100644 --- a/apps/jetty/java/src/org/mortbay/http/I2PRequestLog.java +++ b/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java @@ -12,7 +12,7 @@ //limitations under the License. //======================================================================== -package org.mortbay.http; +package net.i2p.jetty; import java.io.IOException; import java.io.OutputStream; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 1ccbc42cae..127a4805b5 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -275,7 +275,6 @@ public class RouterConsoleRunner { if (!_webAppsDir.endsWith("/")) _webAppsDir += '/'; - List notStarted = new ArrayList(); WebAppContext rootWebApp = null; ServletHandler rootServletHandler = null; try { @@ -369,38 +368,10 @@ public class RouterConsoleRunner { initialize(rootWebApp); chColl.addHandler(rootWebApp); - File dir = new File(_webAppsDir); - String fileNames[] = dir.list(WarFilenameFilter.instance()); - if (fileNames != null) { - for (int i = 0; i < fileNames.length; i++) { - try { - String appName = fileNames[i].substring(0, fileNames[i].lastIndexOf(".war")); - String enabled = props.getProperty(PREFIX + appName + ENABLED); - if (! "false".equals(enabled)) { - String path = new File(dir, fileNames[i]).getCanonicalPath(); - tmpdir = new SecureDirectory(workDir, appName + "-" + - (_listenPort != null ? _listenPort : _sslListenPort)); - WebAppStarter.addWebApp(I2PAppContext.getGlobalContext(), chColl, appName, path, tmpdir); - - if (enabled == null) { - // do this so configclients.jsp knows about all apps from reading the config - props.setProperty(PREFIX + appName + ENABLED, "true"); - rewrite = true; - } - } else { - notStarted.add(appName); - } - } catch (IOException ioe) { - System.err.println("Error resolving '" + fileNames[i] + "' in '" + dir); - } - } - } } catch (Exception ioe) { ioe.printStackTrace(); } - if (rewrite) - storeWebAppProperties(props); try { // start does a mapContexts() _server.start(); @@ -415,6 +386,44 @@ public class RouterConsoleRunner { me.printStackTrace(); } + // Start all the other webapps after the server is up, + // so things start faster. + // Jetty 6 starts the connector before the router console is ready + // This also prevents one webapp from breaking the whole thing + List notStarted = new ArrayList(); + if (_server.isRunning()) { + File dir = new File(_webAppsDir); + String fileNames[] = dir.list(WarFilenameFilter.instance()); + if (fileNames != null) { + for (int i = 0; i < fileNames.length; i++) { + String appName = fileNames[i].substring(0, fileNames[i].lastIndexOf(".war")); + String enabled = props.getProperty(PREFIX + appName + ENABLED); + if (! "false".equals(enabled)) { + try { + String path = new File(dir, fileNames[i]).getCanonicalPath(); + WebAppStarter.startWebApp(I2PAppContext.getGlobalContext(), chColl, appName, path); + if (enabled == null) { + // do this so configclients.jsp knows about all apps from reading the config + props.setProperty(PREFIX + appName + ENABLED, "true"); + rewrite = true; + } + } catch (Throwable t) { + System.err.println("ERROR: Failed to start " + appName + ' ' + t); + t.printStackTrace(); + notStarted.add(appName); + } + } else { + notStarted.add(appName); + } + } + } + } else { + System.err.println("ERROR: Router console did not start, not starting webapps"); + } + + if (rewrite) + storeWebAppProperties(props); + if (rootServletHandler != null && notStarted.size() > 0) { // map each not-started webapp to the error page ServletHolder noWebApp = rootServletHandler.getServlet("net.i2p.router.web.jsp.nowebapp_jsp"); diff --git a/apps/systray/java/src/net/i2p/apps/systray/UrlLauncher.java b/apps/systray/java/src/net/i2p/apps/systray/UrlLauncher.java index f32492a389..75e5c18c87 100644 --- a/apps/systray/java/src/net/i2p/apps/systray/UrlLauncher.java +++ b/apps/systray/java/src/net/i2p/apps/systray/UrlLauncher.java @@ -77,6 +77,11 @@ public class UrlLauncher { try { test.close(); } catch (IOException ioe) {} + // Jetty 6 seems to start the Connector before the + // webapp is completely ready + try { + Thread.sleep(2*1000); + } catch (InterruptedException ie) {} return true; } catch (Exception e) {} if (System.currentTimeMillis() > done) diff --git a/installer/resources/eepsite/jetty.xml b/installer/resources/eepsite/jetty.xml index 0cf46bd700..33a1226e28 100644 --- a/installer/resources/eepsite/jetty.xml +++ b/installer/resources/eepsite/jetty.xml @@ -238,7 +238,7 @@ - + ./eepsite/logs/yyyy_mm_dd.request.log yyyy_MM_dd 90 From 03e86fcb2454da4c8e20f14fad60736d78d4ca2d Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 30 Dec 2011 19:44:57 +0000 Subject: [PATCH 15/33] make jetty use I2P logging --- apps/jetty/build.xml | 2 +- .../java/src/net/i2p/jetty/I2PLogger.java | 168 ++++++++++++++++++ apps/routerconsole/java/build.xml | 4 + .../i2p/router/web/RouterConsoleRunner.java | 3 + build.xml | 2 +- 5 files changed, 177 insertions(+), 2 deletions(-) create mode 100644 apps/jetty/java/src/net/i2p/jetty/I2PLogger.java diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index 25fe356f43..8901d2fa40 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -114,7 +114,7 @@ debug="true" source="1.5" target="1.5" destdir="./build/obj" includeAntRuntime="false" - classpath="./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar:./jettylib/jetty-util.jar" > + classpath="../../core/java/build/i2p.jar:./jettylib/commons-logging.jar:./jettylib/javax.servlet.jar:./jettylib/org.mortbay.jetty.jar:./jettylib/jetty-util.jar" > diff --git a/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java b/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java new file mode 100644 index 0000000000..d249382fd4 --- /dev/null +++ b/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java @@ -0,0 +1,168 @@ +// ======================================================================== +// Copyright 2004-2005 Mort Bay Consulting Pty. Ltd. +// ------------------------------------------------------------------------ +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ======================================================================== + +package net.i2p.jetty; + +import net.i2p.I2PAppContext; +import net.i2p.util.Log; + +import org.mortbay.jetty.Server; +import org.mortbay.log.Logger; + +/** + * Modified from Jetty 6.1.26 StdErrLog.java and Slf4jLog.java + * + * Usage: org.mortbay.log.Log.setLog(new I2PLogger(ctx)); + * + * @since Jetty 6 + */ +public class I2PLogger implements Logger +{ + private final Log _log; + + StringBuilder _buffer = new StringBuilder(); + + public I2PLogger(I2PAppContext ctx) + { + _log = ctx.logManager().getLog(Server.class); + if (System.getProperty("DEBUG") != null) + setDebugEnabled(true); + } + + public boolean isDebugEnabled() + { + return _log.shouldLog(Log.DEBUG); + } + + public void setDebugEnabled(boolean enabled) + { + if (enabled) + _log.setMinimumPriority(Log.DEBUG); + else + // LogManager.getDefaultLimit() returns a String, not worth it + _log.setMinimumPriority(Log.ERROR); + } + + public void info(String msg,Object arg0, Object arg1) + { + if (arg0 == null && arg1 == null) { + _log.info(msg); + } else if (_log.shouldLog(Log.INFO)) { + synchronized(_buffer) { + format(msg,arg0,arg1); + _log.info(_buffer.toString()); + } + } + } + + public void debug(String msg,Throwable th) + { + _log.debug(msg,th); + } + + public void debug(String msg,Object arg0, Object arg1) + { + if (arg0 == null && arg1 == null) { + _log.debug(msg); + } else if (_log.shouldLog(Log.DEBUG)) { + synchronized(_buffer) { + format(msg,arg0,arg1); + _log.debug(_buffer.toString()); + } + } + } + + public void warn(String msg,Object arg0, Object arg1) + { + if (arg0 == null && arg1 == null) { + _log.warn(msg); + } else if (_log.shouldLog(Log.WARN)) { + synchronized(_buffer) { + format(msg,arg0,arg1); + _log.warn(_buffer.toString()); + } + } + } + + public void warn(String msg, Throwable th) + { + if (th instanceof RuntimeException || th instanceof Error) + _log.error(msg, th); + else + _log.warn(msg,th); + } + + private void format(String msg, Object arg0, Object arg1) + { + int i0=msg==null?-1:msg.indexOf("{}"); + int i1=i0<0?-1:msg.indexOf("{}",i0+2); + + if (i0>=0) + { + format(msg.substring(0,i0)); + format(String.valueOf(arg0==null?"null":arg0)); + + if (i1>=0) + { + format(msg.substring(i0+2,i1)); + format(String.valueOf(arg1==null?"null":arg1)); + format(msg.substring(i1+2)); + } + else + { + format(msg.substring(i0+2)); + if (arg1!=null) + { + _buffer.append(' '); + format(String.valueOf(arg1)); + } + } + } + else + { + format(msg); + if (arg0!=null) + { + _buffer.append(' '); + format(String.valueOf(arg0)); + } + if (arg1!=null) + { + _buffer.append(' '); + format(String.valueOf(arg1)); + } + } + } + + private void format(String msg) + { + if (msg == null) + _buffer.append("null"); + else + _buffer.append(msg); + } + + public Logger getLogger(String name) + { + return this; + } + + @Override + public String toString() + { + return "I2PLogger"; + } + + +} diff --git a/apps/routerconsole/java/build.xml b/apps/routerconsole/java/build.xml index 0ce64a59d0..1d377e6f33 100644 --- a/apps/routerconsole/java/build.xml +++ b/apps/routerconsole/java/build.xml @@ -26,6 +26,7 @@ + @@ -62,6 +63,7 @@ + @@ -243,6 +245,7 @@ + @@ -279,6 +282,7 @@ + diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 127a4805b5..7c057de5ef 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -20,6 +20,7 @@ import net.i2p.apps.systray.SysTray; import net.i2p.data.Base32; import net.i2p.data.DataHelper; import net.i2p.desktopgui.Main; +import net.i2p.jetty.I2PLogger; import net.i2p.router.RouterContext; import net.i2p.util.FileUtil; import net.i2p.util.I2PAppThread; @@ -49,6 +50,7 @@ import org.mortbay.jetty.servlet.ServletHandler; import org.mortbay.jetty.servlet.ServletHolder; import org.mortbay.jetty.servlet.SessionHandler; import org.mortbay.jetty.webapp.WebAppContext; +import org.mortbay.log.Log; import org.mortbay.thread.QueuedThreadPool; import org.mortbay.thread.concurrent.ThreadPool; @@ -219,6 +221,7 @@ public class RouterConsoleRunner { if (!workDirCreated) System.err.println("ERROR: Unable to create Jetty temporary work directory"); + Log.setLog(new I2PLogger(I2PAppContext.getGlobalContext())); // so Jetty can find WebAppConfiguration System.setProperty("jetty.class.path", I2PAppContext.getGlobalContext().getBaseDir() + "/lib/routerconsole.jar"); _server = new Server(); diff --git a/build.xml b/build.xml index 76ecc658ad..a5f9a98455 100644 --- a/build.xml +++ b/build.xml @@ -132,7 +132,7 @@ - + From 4d1736eaf61cfdb67433409da240a83f3022afcb Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 30 Dec 2011 21:58:16 +0000 Subject: [PATCH 16/33] jetty logging tweaks --- .../java/src/net/i2p/addressbook/Servlet.java | 2 +- apps/jetty/build.xml | 3 ++- apps/jetty/resources/log4j.properties | 9 +++++++++ .../java/src/net/i2p/router/web/RouterConsoleRunner.java | 6 +++++- 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 apps/jetty/resources/log4j.properties diff --git a/apps/addressbook/java/src/net/i2p/addressbook/Servlet.java b/apps/addressbook/java/src/net/i2p/addressbook/Servlet.java index beb225ca0d..9b386b423a 100644 --- a/apps/addressbook/java/src/net/i2p/addressbook/Servlet.java +++ b/apps/addressbook/java/src/net/i2p/addressbook/Servlet.java @@ -84,7 +84,7 @@ public class Servlet extends HttpServlet { this.thread.setDaemon(true); this.thread.setName("Addressbook"); this.thread.start(); - System.out.println("INFO: Starting Addressbook " + Daemon.VERSION); + //System.out.println("INFO: Starting Addressbook " + Daemon.VERSION); //System.out.println("INFO: config root under " + args[0]); } diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index 8901d2fa40..f65c75208b 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -139,7 +139,8 @@ - + + diff --git a/apps/jetty/resources/log4j.properties b/apps/jetty/resources/log4j.properties new file mode 100644 index 0000000000..8899c004be --- /dev/null +++ b/apps/jetty/resources/log4j.properties @@ -0,0 +1,9 @@ + +# This is not needed by Jetty - but it helps with many web apps. + +log4j.rootLogger=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n + diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index 7c057de5ef..db9161fb26 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -221,7 +221,11 @@ public class RouterConsoleRunner { if (!workDirCreated) System.err.println("ERROR: Unable to create Jetty temporary work directory"); - Log.setLog(new I2PLogger(I2PAppContext.getGlobalContext())); + try { + Log.setLog(new I2PLogger(I2PAppContext.getGlobalContext())); + } catch (Throwable t) { + System.err.println("INFO: I2P Jetty logging class not found, logging to wrapper log"); + } // so Jetty can find WebAppConfiguration System.setProperty("jetty.class.path", I2PAppContext.getGlobalContext().getBaseDir() + "/lib/routerconsole.jar"); _server = new Server(); From 327f38b5352f9aea1a5d67c4172989ed7c2e8594 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 30 Dec 2011 23:34:18 +0000 Subject: [PATCH 17/33] fix JettyFixes target --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index a5f9a98455..36a4edd695 100644 --- a/build.xml +++ b/build.xml @@ -942,9 +942,9 @@ - + - + From c0662bc111a6231de5358487a30612a5dc39c27b Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 31 Dec 2011 00:06:23 +0000 Subject: [PATCH 18/33] license update --- LICENSE.txt | 5 +++-- licenses/NOTICE-Jetty.txt | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 licenses/NOTICE-Jetty.txt diff --git a/LICENSE.txt b/LICENSE.txt index 4a0edd71e4..1ffd3fb3eb 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -176,8 +176,9 @@ Applications: By welterde. See licenses/LICENSE-GPLv2.txt - Jetty 5.1.15: - Copyright 2000-2004 Mort Bay Consulting Pty. Ltd. + Jetty 6.1.26: + Copyright 1995-2009 Mort Bay Consulting Pty Ltd + See licenses/LICENSE-Jetty.txt See licenses/LICENSE-Apache2.0.txt See licenses/NOTICE-Commons-Logging.txt diff --git a/licenses/NOTICE-Jetty.txt b/licenses/NOTICE-Jetty.txt new file mode 100644 index 0000000000..21d4ed3d0e --- /dev/null +++ b/licenses/NOTICE-Jetty.txt @@ -0,0 +1,36 @@ +============================================================== + Jetty Web Container + Copyright 1995-2009 Mort Bay Consulting Pty Ltd +============================================================== + +The Jetty Web Container is Copyright Mort Bay Consulting Pty Ltd +unless otherwise noted. It is licensed under the apache 2.0 +license. + +The javax.servlet package used by Jetty is copyright +Sun Microsystems, Inc and Apache Software Foundation. It is +distributed under the Common Development and Distribution License. +You can obtain a copy of the license at +https://glassfish.dev.java.net/public/CDDLv1.0.html. + +The UnixCrypt.java code ~Implements the one way cryptography used by +Unix systems for simple password protection. Copyright 1996 Aki Yoshida, +modified April 2001 by Iris Van den Broeke, Daniel Deville. +Permission to use, copy, modify and distribute UnixCrypt +for non-commercial or commercial purposes and without fee is +granted provided that the copyright notice appears in all copies. + +The default JSP implementation is provided by the Glassfish JSP engine +from project Glassfish http://glassfish.dev.java.net. Copyright 2005 +Sun Microsystems, Inc. and portions Copyright Apache Software Foundation. + +Some portions of the code are Copyright: + 2006 Tim Vernum + 1999 Jason Gilbert. + +The jboss integration module contains some LGPL code. + +The win32 Java Service Wrapper (v3.2.3) is Copyright (c) 1999, 2006 +Tanuki Software, Inc. and 2001 Silver Egg Technology. It is +covered by an open license which is viewable at +http://svn.codehaus.org/jetty/jetty/branches/jetty-6.1/extras/win32service/LICENSE.txt From beb6d1f43f69abadeb497856fe4f99403f044716 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 31 Dec 2011 00:49:39 +0000 Subject: [PATCH 19/33] I2PLogger fix; better log init --- apps/jetty/java/src/net/i2p/jetty/I2PLogger.java | 6 ++++++ .../src/net/i2p/router/web/RouterConsoleRunner.java | 13 ++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java b/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java index d249382fd4..c385e7d2ed 100644 --- a/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java +++ b/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java @@ -33,6 +33,11 @@ public class I2PLogger implements Logger StringBuilder _buffer = new StringBuilder(); + public I2PLogger() + { + this(I2PAppContext.getGlobalContext()); + } + public I2PLogger(I2PAppContext ctx) { _log = ctx.logManager().getLog(Server.class); @@ -105,6 +110,7 @@ public class I2PLogger implements Logger private void format(String msg, Object arg0, Object arg1) { + _buffer.setLength(0); int i0=msg==null?-1:msg.indexOf("{}"); int i1=i0<0?-1:msg.indexOf("{}",i0+2); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java index db9161fb26..eb8bddd8cc 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -221,11 +221,14 @@ public class RouterConsoleRunner { if (!workDirCreated) System.err.println("ERROR: Unable to create Jetty temporary work directory"); - try { - Log.setLog(new I2PLogger(I2PAppContext.getGlobalContext())); - } catch (Throwable t) { - System.err.println("INFO: I2P Jetty logging class not found, logging to wrapper log"); - } + //try { + // Log.setLog(new I2PLogger(I2PAppContext.getGlobalContext())); + //} catch (Throwable t) { + // System.err.println("INFO: I2P Jetty logging class not found, logging to wrapper log"); + //} + // This way it doesn't try to load Slf4jLog first + System.setProperty("org.mortbay.log.class", "net.i2p.jetty.I2PLogger"); + // so Jetty can find WebAppConfiguration System.setProperty("jetty.class.path", I2PAppContext.getGlobalContext().getBaseDir() + "/lib/routerconsole.jar"); _server = new Server(); From b5f97d088354c110e339b6aea96c25a627e77b5a Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 31 Dec 2011 14:38:37 +0000 Subject: [PATCH 20/33] - Fix jetty.xml copy bug - Fix NPE logging error when Router.saveConfig() fails early - Log readConfig() and saveConfig() errors to wrapper log if router log not yet available - Handle non-split configuration in MigrateJetty - Better logging of migration errors - Handle existing backup files during migration better --- build.xml | 5 +- router/java/src/net/i2p/router/Router.java | 16 ++++- .../net/i2p/router/startup/MigrateJetty.java | 66 +++++++++---------- .../net/i2p/router/startup/WorkingDir.java | 12 ++-- 4 files changed, 54 insertions(+), 45 deletions(-) diff --git a/build.xml b/build.xml index 36a4edd695..d85aa700e7 100644 --- a/build.xml +++ b/build.xml @@ -937,7 +937,10 @@ - + + diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index 5299dc1781..08ea93bd8c 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -426,7 +426,11 @@ public class Router implements RouterClock.ClockShiftListener { foo.putAll(config); } - /** this does not use ctx.getConfigDir(), must provide a full path in filename */ + /** + * this does not use ctx.getConfigDir(), must provide a full path in filename + * + * @param ctx will be null at startup when called from constructor + */ private static Properties getConfig(RouterContext ctx, String filename) { Log log = null; if (ctx != null) { @@ -444,10 +448,15 @@ public class Router implements RouterClock.ClockShiftListener { } else { if (log != null) log.warn("Configuration file " + filename + " does not exist"); + // normal not to exist at first install + //else + // System.err.println("WARNING: Configuration file " + filename + " does not exist"); } } catch (Exception ioe) { if (log != null) log.error("Error loading the router configuration from " + filename, ioe); + else + System.err.println("Error loading the router configuration from " + filename + ": " + ioe); } return props; } @@ -1193,8 +1202,11 @@ public class Router implements RouterClock.ClockShiftListener { } fos.write(buf.toString().getBytes("UTF-8")); } catch (IOException ioe) { - if (_log.shouldLog(Log.ERROR)) + // warning, _log will be null when called from constructor + if (_log != null) _log.error("Error saving the config to " + _configFilename, ioe); + else + System.err.println("Error saving the config to " + _configFilename + ": " + ioe); return false; } finally { if (fos != null) try { fos.close(); } catch (IOException ioe) {} diff --git a/router/java/src/net/i2p/router/startup/MigrateJetty.java b/router/java/src/net/i2p/router/startup/MigrateJetty.java index edd1750d08..6a82fff95e 100644 --- a/router/java/src/net/i2p/router/startup/MigrateJetty.java +++ b/router/java/src/net/i2p/router/startup/MigrateJetty.java @@ -12,16 +12,17 @@ import net.i2p.router.RouterContext; /** * Migrate the clients.config and jetty.xml files - * from Jetty 5 to Jetty 6 + * from Jetty 5 to Jetty 6. * * For each client for class org.mortbay.jetty.Server: *
  *  Let $D be the dir that jetty.xml is in (usually ~/.i2p/eepsite)
  *  Saves $D/jetty.xml to $D/jetty5.xml
- *  Copies $I2P/eepsite/jetty.xml to $D/jetty.xml, edited for $D
- *  Copies $I2P/eepsite/context/base-context.xml to $D/jetty.xml, edited for $D
- *  Copies $I2P/eepsite/context/cgi-context.xml to $D/jetty.xml, edited for $D
- *  Copies $I2P/eepsite/etc/* to $D/etc
+ *  Copies $I2P/eepsite-jetty6/jetty.xml to $D/jetty.xml, edited for $D
+ *  Copies $I2P/eepsite-jetty6/jetty-ssl.xml to $D/jetty-ssl.xml, edited for $D
+ *  Copies $I2P/eepsite-jetty6/context/base-context.xml to $D/jetty.xml, edited for $D
+ *  Copies $I2P/eepsite-jetty6/context/cgi-context.xml to $D/jetty.xml, edited for $D
+ *  Copies $I2P/eepsite-jetty6/etc/* to $D/etc
  *  Changes main class in clients.config
  *
* Copies clients.config to clients.config.backup @@ -38,6 +39,7 @@ abstract class MigrateJetty { private static final String OLD_CLASS = "org.mortbay.jetty.Server"; private static final String NEW_CLASS = "org.mortbay.start.Main"; private static final String BACKUP = "jetty5.xml"; + private static final String JETTY6_TEMPLATE_DIR = "eepsite-jetty6"; private static final String BASE_CONTEXT = "contexts/base-context.xml"; private static final String CGI_CONTEXT = "contexts/cgi-context.xml"; @@ -47,61 +49,52 @@ abstract class MigrateJetty { ClientAppConfig app = apps.get(i); if (!app.className.equals(OLD_CLASS)) continue; + String client = "client application " + i + " [" + app.clientName + + "] from Jetty 5 " + OLD_CLASS + + " to Jetty 6 " + NEW_CLASS; if (!hasJetty6()) { - System.err.println("WARNING: Jetty 6 unavailable, cannot migrate client " + i + - " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS); + System.err.println("WARNING: Jetty 6 unavailable, cannot migrate " + client); continue; } String xml = app.args; if (xml == null) continue; File xmlFile = new File(xml); - if ((!xmlFile.exists()) || (!xmlFile.isAbsolute())) { + if (!xmlFile.isAbsolute()) + xmlFile = new File(ctx.getAppDir(), xml); + if (!xmlFile.exists()) { System.err.println("WARNING: XML file " + xmlFile + - " not found, cannot migrate client " + i + - " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS); + " not found, cannot migrate " + client); continue; } File eepsite = xmlFile.getParentFile(); File backup = new File(eepsite, BACKUP); - if (backup.exists()) { - System.err.println("WARNING: Backup XML file " + backup + " already exists" + - ", cannot migrate client " + i + - " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS); - continue; - } + if (backup.exists()) + backup = new File(eepsite, BACKUP + ctx.random().nextInt()); boolean ok = WorkingDir.copyFile(xmlFile, backup); if (!ok) { System.err.println("WARNING: Failed to copy XML file " + xmlFile + " to " + backup + - ", cannot migrate client " + i + - " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS); + ", cannot migrate " + client); continue; } - File baseEep = new File(ctx.getBaseDir(), "eepsite"); + File baseEep = new File(ctx.getBaseDir(), JETTY6_TEMPLATE_DIR); // jetty.xml existed before in jetty 5 version, so check this new file // and if it doesn't exist we can't continue File baseContext = new File(baseEep, BASE_CONTEXT); if (!baseContext.exists()) { System.err.println("WARNING: Cannot find new XML file template " + baseContext + - ", cannot migrate client " + i + - " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS); + ", cannot migrate " + client); continue; } String newPath = eepsite.getAbsolutePath() + File.separatorChar; ok = WorkingDir.migrateJettyXml(baseEep, eepsite, "jetty.xml", "./eepsite/", newPath); if (!ok) { System.err.println("WARNING: Failed to modify XML file " + xmlFile + - ", cannot migrate client " + i + - " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS); + ", cannot migrate " + client); continue; } // now we're committed, so don't check any more failure codes + WorkingDir.migrateJettyXml(baseEep, eepsite, "jetty-ssl.xml", "./eepsite/", newPath); (new File(eepsite, "contexts")).mkdir(); WorkingDir.migrateJettyXml(baseEep, eepsite, BASE_CONTEXT, "./eepsite/", newPath); WorkingDir.migrateJettyXml(baseEep, eepsite, CGI_CONTEXT, "./eepsite/", newPath); @@ -114,24 +107,25 @@ abstract class MigrateJetty { WorkingDir.copyFile(new File(baseEep, "etc/webdefault.xml"), to); app.className = NEW_CLASS; shouldSave = true; - System.err.println("WARNING: Migrated client " + i + " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS + ".\n" + - "Check the following files in " + baseEep + + System.err.println("WARNING: Migrated " + client + '\n' + + "Check the following files in " + eepsite + ": jetty.xml, " + BASE_CONTEXT + ", and " + CGI_CONTEXT + "\n" + - "Your old jetty.xml was saved as jetty5.xml\n" + + "Your old jetty.xml was saved as " + backup + '\n' + "If you modified your jetty.xml to change ports, thread limits, etc, you MUST\n" + "edit it to change them again. Your port was reset to 7658."); } if (shouldSave) { File cfgFile = ClientAppConfig.configFile(ctx); File backup = new File(cfgFile.getAbsolutePath() + ".jetty5"); + if (backup.exists()) + backup = new File(cfgFile.getAbsolutePath() + ctx.random().nextInt()); boolean ok = WorkingDir.copyFile(cfgFile, backup); if (ok) { ClientAppConfig.writeClientAppConfig(ctx, apps); System.err.println("WARNING: Migrated clients config file " + cfgFile + - " from Jetty 5 class " + OLD_CLASS + - " to Jetty 6 class " + NEW_CLASS + "\n" + - "Your old clients config file was saved as " + cfgFile + ".jetty5"); + " from Jetty 5 " + OLD_CLASS + + " to Jetty 6 " + NEW_CLASS + "\n" + + "Your old clients config file was saved as " + backup); } } } diff --git a/router/java/src/net/i2p/router/startup/WorkingDir.java b/router/java/src/net/i2p/router/startup/WorkingDir.java index 888262302e..45e6bf5e33 100644 --- a/router/java/src/net/i2p/router/startup/WorkingDir.java +++ b/router/java/src/net/i2p/router/startup/WorkingDir.java @@ -148,7 +148,7 @@ public class WorkingDir { boolean success = migrate(MIGRATE_BASE, oldDirf, dirf); // this one must be after MIGRATE_BASE File oldEep = new File(oldDirf, "eepsite"); - File newEep = new File(oldDirf, "eepsite"); + File newEep = new File(dirf, "eepsite"); String newPath = newEep.getAbsolutePath() + File.separatorChar; success &= migrateJettyXml(oldEep, newEep, "jetty.xml", "./eepsite/", newPath); success &= migrateJettyXml(oldEep, newEep, "jetty-ssl.xml", "./eepsite/", newPath); @@ -245,11 +245,11 @@ public class WorkingDir { } out.println(s); } - System.err.println("Copied clients.config with modifications"); + System.err.println("Copied " + oldFile + " with modifications"); return true; } catch (IOException ioe) { if (in != null) { - System.err.println("FAILED copy clients.config"); + System.err.println("FAILED copy " + oldFile + ": " + ioe); return false; } return false; @@ -280,11 +280,11 @@ public class WorkingDir { out.println(s); } out.println(""); - System.err.println("Copied " + filename + " with modifications"); + System.err.println("Copied " + oldFile + " with modifications"); return true; } catch (IOException ioe) { if (in != null) { - System.err.println("FAILED copy " + filename); + System.err.println("FAILED copy " + oldFile + ": " + ioe); return false; } return false; @@ -357,7 +357,7 @@ public class WorkingDir { System.err.println("Copied " + src.getPath()); } catch (IOException ioe) { - System.err.println("FAILED copy " + src.getPath()); + System.err.println("FAILED copy " + src.getPath() + ": " + ioe); rv = false; } finally { if (in != null) try { in.close(); } catch (IOException ioe) {} From 33b25b57809b735fe96293b4508783dbee040a07 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 1 Jan 2012 17:57:59 +0000 Subject: [PATCH 21/33] - Fix jetty.xml migrate quote handling - Fix I2PRequestLog javadoc - Rename jetty-threadpool.jar to jetty-java5-threadpool.jar to match ubuntu symlink - Bundle jetty-rewrite-handler.jar (20KB) and .xml config to make it easier to do rewrites (unused by I2P) --- apps/jetty/build.xml | 15 +- .../java/src/net/i2p/jetty/I2PRequestLog.java | 4 +- apps/routerconsole/java/build.xml | 6 +- build.xml | 4 +- installer/resources/clients.config | 4 + installer/resources/eepsite/jetty-rewrite.xml | 149 ++++++++++++++++++ .../net/i2p/router/startup/MigrateJetty.java | 10 +- 7 files changed, 177 insertions(+), 15 deletions(-) create mode 100644 installer/resources/eepsite/jetty-rewrite.xml diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index f65c75208b..b939e1432b 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -75,26 +75,29 @@ + - + + - - + - +
diff --git a/installer/resources/clients.config b/installer/resources/clients.config index 8d408cb17a..111845921f 100644 --- a/installer/resources/clients.config +++ b/installer/resources/clients.config @@ -42,6 +42,10 @@ clientApp.2.startOnLoad=true # run our own eepsite with a seperate jetty instance clientApp.3.main=org.mortbay.start.Main clientApp.3.name=I2P webserver (eepsite) +## To use the rewrite handler, edit jetty-rewrite.xml and use: +#clientApp.3.args="/path/to/jetty.xml" "/path/to/jetty-rewrite.xml" +## To use local SSL, edit jetty-ssl.xml and use: +#clientApp.3.args="/path/to/jetty.xml" "/path/to/jetty-ssl.xml" clientApp.3.args="eepsite/jetty.xml" clientApp.3.delay=30 clientApp.3.startOnLoad=true diff --git a/installer/resources/eepsite/jetty-rewrite.xml b/installer/resources/eepsite/jetty-rewrite.xml new file mode 100644 index 0000000000..ef5043aac0 --- /dev/null +++ b/installer/resources/eepsite/jetty-rewrite.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + true + false + requestedPath + + + + + + + + + + + + + + /* + 500 + Server busy + + + + + + + + + + + + + + + /favicon.ico + Cache-Control + Max-Age=3600,public + true + + + + + + + + /rewrite/dump/regex/([^/]*)/(.*) + /test/dump/$2/$1 + + + + + + + /rewrite + /rewrittento + + + + + + + /rewrite/session/ + 401 + Setting error code 401 + + + + + + + *.jsp + Server + Server for JSP + + + + + + + /rewrite/dispatch + http://jetty.mortbay.org + + + + + + X-Forwarded-Scheme + https + https + + + + + + + + + mortbay.com + www.mortbay.com + mortbay.org + www.mortbay.org + + + + + + + /* + CookiePatternRule + 1 + + + + + + + + + + + + diff --git a/router/java/src/net/i2p/router/startup/MigrateJetty.java b/router/java/src/net/i2p/router/startup/MigrateJetty.java index 6a82fff95e..ab01c28553 100644 --- a/router/java/src/net/i2p/router/startup/MigrateJetty.java +++ b/router/java/src/net/i2p/router/startup/MigrateJetty.java @@ -20,6 +20,7 @@ import net.i2p.router.RouterContext; * Saves $D/jetty.xml to $D/jetty5.xml * Copies $I2P/eepsite-jetty6/jetty.xml to $D/jetty.xml, edited for $D * Copies $I2P/eepsite-jetty6/jetty-ssl.xml to $D/jetty-ssl.xml, edited for $D + * Copies $I2P/eepsite-jetty6/jetty-rewrite.xml to $D/jetty-rewrite.xml * Copies $I2P/eepsite-jetty6/context/base-context.xml to $D/jetty.xml, edited for $D * Copies $I2P/eepsite-jetty6/context/cgi-context.xml to $D/jetty.xml, edited for $D * Copies $I2P/eepsite-jetty6/etc/* to $D/etc @@ -56,9 +57,13 @@ abstract class MigrateJetty { System.err.println("WARNING: Jetty 6 unavailable, cannot migrate " + client); continue; } - String xml = app.args; - if (xml == null) + if (app.args == null) continue; + // remove quotes + String args[] = LoadClientAppsJob.parseArgs(app.args); + if (args.length == 0) + continue; + String xml = args[0]; File xmlFile = new File(xml); if (!xmlFile.isAbsolute()) xmlFile = new File(ctx.getAppDir(), xml); @@ -98,6 +103,7 @@ abstract class MigrateJetty { (new File(eepsite, "contexts")).mkdir(); WorkingDir.migrateJettyXml(baseEep, eepsite, BASE_CONTEXT, "./eepsite/", newPath); WorkingDir.migrateJettyXml(baseEep, eepsite, CGI_CONTEXT, "./eepsite/", newPath); + WorkingDir.copyFile(new File(baseEep, "jetty-rewrite.xml"), new File(eepsite, "jetty-rewrite.xml")); (new File(eepsite, "etc")).mkdir(); File to = new File(eepsite, "etc/realm.properties"); if (!to.exists()) From 84e4558d7d9fae0bda6d7e10ac2f29f4e396a242 Mon Sep 17 00:00:00 2001 From: kytv Date: Sun, 1 Jan 2012 23:31:41 +0000 Subject: [PATCH 22/33] Updated packaging scripts to work with Debian's (and Ubuntu's) Jetty packages. --- apps/jetty/build.xml | 1 - build.xml | 80 +++++----- debian/control | 12 +- debian/i2p-router.install | 29 +++- debian/i2p-router.links | 18 +++ debian/patches/0004-jetty6.patch | 266 +++++++++++++++++++++++++++++++ debian/patches/series | 3 +- debian/rules | 8 +- 8 files changed, 368 insertions(+), 49 deletions(-) create mode 100644 debian/patches/0004-jetty6.patch diff --git a/apps/jetty/build.xml b/apps/jetty/build.xml index f65c75208b..6e2f1fd07a 100644 --- a/apps/jetty/build.xml +++ b/apps/jetty/build.xml @@ -82,7 +82,6 @@ jetty-sslengine-xxx.jar: SSL NIO Connector for console jetty-java5-threadpool-xxx.jar: Concurrent thread pool for eepsite commons-logging.jar: JspC compiler - TODO which of these are available in the Ubuntu packages? --> diff --git a/build.xml b/build.xml index d85aa700e7..52ccc03598 100644 --- a/build.xml +++ b/build.xml @@ -50,26 +50,28 @@ - - - - + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + @@ -1379,33 +1381,33 @@ - - - - - - - - - - - - - - - - - + + + + + + + - + + + + + + + + + + - - + + - + + @@ -1415,8 +1417,8 @@ - - + + diff --git a/debian/control b/debian/control index 71d6c5e92d..9c2528c487 100644 --- a/debian/control +++ b/debian/control @@ -10,9 +10,12 @@ Build-Depends: debhelper (>= 7.0.50~), debconf, default-jdk, gettext, + libcommons-el-java, + libcommons-logging-java, libgmp3-dev, + libjetty-extra-java, + libjetty-java, po-debconf -##Build-Depends-Indep: tor-geoipdb Package: i2p Architecture: all @@ -65,7 +68,11 @@ Package: i2p-router Architecture: all Section: net Priority: optional -Depends: ${misc:Depends}, ${java:Depends}, ${shlibs:Depends}, default-jre-headless | java5-runtime-headless | java6-runtime-headless +Depends: ${misc:Depends}, ${java:Depends}, ${shlibs:Depends}, + default-jre-headless | java5-runtime-headless | java6-runtime-headless, + libcommons-logging-java, + libjetty-java, + libtomcat6-java Replaces: i2p ( << 0.8.6-5) Breaks: i2p (<< 0.8.6-5) Recommends: libjbigi-jni (>= ${source:Version}), libjbigi-jni (<< ${source:Version}.1~), ttf-dejavu @@ -76,6 +83,7 @@ Suggests: tor, imule, i2pfox, irc-client, + itoopie, jircii, mail-client, mail-reader, diff --git a/debian/i2p-router.install b/debian/i2p-router.install index 4205beba3f..1462d7fec2 100644 --- a/debian/i2p-router.install +++ b/debian/i2p-router.install @@ -1,4 +1,8 @@ +# history.txt is installed to /usr/share/i2p because +# it's shown in the router console at http://127.0.0.1:7657 +# (this is also why I don't use dh_installchangelogs -k for it) history.txt usr/share/i2p + pkg-temp/blocklist.txt usr/share/i2p pkg-temp/certificates usr/share/i2p pkg-temp/clients.config usr/share/i2p @@ -10,7 +14,30 @@ pkg-temp/hosts.txt usr/share/i2p pkg-temp/i2prouter-nowrapper usr/bin pkg-temp/i2psnark.config usr/share/i2p pkg-temp/i2ptunnel.config usr/share/i2p -pkg-temp/lib/*.jar usr/share/i2p/lib pkg-temp/router.config usr/share/i2p pkg-temp/systray.config usr/share/i2p pkg-temp/webapps usr/share/i2p + +# We'll selectively copy things from pkg-temp +# to ensure that potential Jetty jars aren't +# duplicated +pkg-temp/lib/BOB.jar usr/share/i2p/lib +pkg-temp/lib/desktopgui.jar usr/share/i2p/lib +pkg-temp/lib/i2p.jar usr/share/i2p/lib +pkg-temp/lib/i2psnark.jar usr/share/i2p/lib +pkg-temp/lib/i2ptunnel.jar usr/share/i2p/lib +pkg-temp/lib/jetty-i2p.jar usr/share/i2p/lib +pkg-temp/lib/jrobin.jar usr/share/i2p/lib +pkg-temp/lib/mstreaming.jar usr/share/i2p/lib +pkg-temp/lib/router.jar usr/share/i2p/lib +pkg-temp/lib/routerconsole.jar usr/share/i2p/lib +pkg-temp/lib/sam.jar usr/share/i2p/lib +pkg-temp/lib/standard.jar usr/share/i2p/lib +pkg-temp/lib/streaming.jar usr/share/i2p/lib +pkg-temp/lib/systray.jar usr/share/i2p/lib +pkg-temp/lib/systray4j.jar usr/share/i2p/lib + +# These two are copied over to avoid depending on libjetty-extra-java +# and pulling in dependencies that we don't care about +pkg-temp/lib/commons-el.jar usr/share/i2p/lib +pkg-temp/lib/jetty-threadpool.jar usr/share/i2p/lib diff --git a/debian/i2p-router.links b/debian/i2p-router.links index 9c79676e9b..a4f0cf368d 100644 --- a/debian/i2p-router.links +++ b/debian/i2p-router.links @@ -2,3 +2,21 @@ usr/share/common-licenses/GPL-2 usr/share/doc/i2p-router/licenses/LICENSE-GPLv2. usr/share/common-licenses/LGPL-2.1 usr/share/doc/i2p-router/licenses/LICENSE-LGPLv2.1.txt usr/share/common-licenses/Apache-2.0 usr/share/doc/i2p-router/licenses/LICENSE-Apache2.0.txt usr/share/common-licenses/BSD usr/share/doc/i2p-router/licenses/LICENSE-BSD.txt + +# From libcommons-logging-java +usr/share/java/commons-logging.jar usr/share/i2p/lib/commons-logging.jar +# From libtomcat6-java +usr/share/java/jasper.jar usr/share/i2p/lib/jasper.jar +usr/share/java/jasper-el.jar usr/share/i2p/lib/jasper-el.jar +usr/share/java/tomcat-juli.jar usr/share/i2p/lib/tomcat-juli.jar + +# From libjetty-java +usr/share/java/jetty.jar usr/share/i2p/lib/jetty.jar +usr/share/java/jetty-util.jar usr/share/i2p/lib/jetty-util.jar +usr/share/java/jetty-sslengine.jar usr/share/i2p/lib/jetty-sslengine.jar +usr/share/java/jetty-start.jar usr/share/i2p/lib/jetty-start.jar + +# From libservlet2.5-java +usr/share/java/servlet-api-2.5.jar usr/share/i2p/lib/servlet-api.jar +usr/share/java/jsp-api-2.1.jar usr/share/i2p/lib/jsp-api.jar +usr/share/java/el-api-2.1.jar usr/share/i2p/lib/el-api.jar diff --git a/debian/patches/0004-jetty6.patch b/debian/patches/0004-jetty6.patch new file mode 100644 index 0000000000..a108633e8d --- /dev/null +++ b/debian/patches/0004-jetty6.patch @@ -0,0 +1,266 @@ +From: Kill Your TV +Date: Sun, 1 Jan 2011 22:30:32 +0000 +Subject: Jetty 6 + +This patch updates + + apps/i2ptunnel/java/build.xml + apps/jetty/build.xml + apps/routerconsole/java/build.xml + apps/susidns/src/build.xml + +so that I2P can be built using Jetty packages from Debian/Ubuntu +--- a/apps/jetty/build.xml ++++ b/apps/jetty/build.xml +@@ -2,76 +2,18 @@ + + + +- +- +- +- +- + + + +- + +- +- + + + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + + + + +- ++ + + + + + +- + + + +@@ -177,22 +115,10 @@ + + + +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ ++ + + ++ ++ + +--- a/apps/i2ptunnel/java/build.xml ++++ b/apps/i2ptunnel/java/build.xml +@@ -164,13 +164,15 @@ + + + +- +- +- +- ++ + ++ ++ ++ ++ ++ + +- ++ + + + +@@ -187,10 +189,12 @@ + destdir="../jsp/WEB-INF/classes/" srcdir="../jsp/WEB-INF/classes" includes="**/*.java"> + + +- +- +- + ++ ++ ++ ++ ++ + + + +--- a/apps/routerconsole/java/build.xml ++++ b/apps/routerconsole/java/build.xml +@@ -238,8 +238,10 @@ + --> + + +- +- ++ ++ ++ ++ + + + +@@ -273,7 +275,10 @@ + srcdir="../jsp/WEB-INF/classes" includes="**/*.java"> + + +- ++ ++ ++ ++ + + + +--- a/apps/susidns/src/build.xml ++++ b/apps/susidns/src/build.xml +@@ -14,8 +14,10 @@ + + + +- +- ++ ++ ++ ++ + + + +--- a/build.xml ++++ b/build.xml +@@ -679,7 +679,7 @@ + + + +- ++ + + + diff --git a/debian/patches/series b/debian/patches/series index 530acf5153..919ab6ee3e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,4 +1,5 @@ 0001-path-substitution.patch 0002-jbigi-soname.patch 0003-renaming-jcpuid.patch -debian-version.patch +#debian-version.patch +0004-jetty6.patch diff --git a/debian/rules b/debian/rules index f127e1b253..291a2befbb 100755 --- a/debian/rules +++ b/debian/rules @@ -37,10 +37,9 @@ clean: createcopyright override_dh_auto_clean: dh_auto_clean ant distclean - # The next line is used by KYTV when building from source packages - #rm -f apps/jetty/jetty-5.1.15.tgz rm -f core/c/jbigi/*.[s]o rm -rf core/c/jcpuid/lib/ + #rm -f $(CURDIR)/installer/lib/wrapper/all/wrapper.jar debconf-updatepo override_dh_auto_build: @@ -48,12 +47,11 @@ override_dh_auto_build: binary-indep: build-indep build-indep: dh_prep - # The next line is used by KYTV when building from source packages - #[ -r jetty/jetty-5.1.15.tgz ] && ln -sf $(CURDIR)/jetty/jetty-5.1.15.tgz $(CURDIR)/apps/jetty/jetty-5.1.15.tgz + #mkdir -p $(CURDIR)/installer/lib/wrapper/all + #ln -sf /usr/share/java/wrapper.jar $(CURDIR)/installer/lib/wrapper/all/wrapper.jar ant preppkg-unix javadoc echo router.updateDisabled=true > $(I2P)/router.config mv $(I2P)/runplain.sh $(I2P)/i2prouter-nowrapper - #-cp -fv /usr/share/tor/geoip $(CURDIR)/pkg-temp/geoip/geoip.txt binary-arch: build-arch From 0ad4789ff218cb1444a3f096fdc6db6e775eddeb Mon Sep 17 00:00:00 2001 From: kytv Date: Mon, 2 Jan 2012 02:04:51 +0000 Subject: [PATCH 23/33] Add jetty-rewrite-handler.jar to the Debian packaging --- debian/i2p-router.install | 5 +++-- debian/patches/0004-jetty6.patch | 22 ++++++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/debian/i2p-router.install b/debian/i2p-router.install index 1462d7fec2..aa9d9703ee 100644 --- a/debian/i2p-router.install +++ b/debian/i2p-router.install @@ -37,7 +37,8 @@ pkg-temp/lib/streaming.jar usr/share/i2p/lib pkg-temp/lib/systray.jar usr/share/i2p/lib pkg-temp/lib/systray4j.jar usr/share/i2p/lib -# These two are copied over to avoid depending on libjetty-extra-java +# These are copied over to avoid depending on libjetty-extra-java # and pulling in dependencies that we don't care about pkg-temp/lib/commons-el.jar usr/share/i2p/lib -pkg-temp/lib/jetty-threadpool.jar usr/share/i2p/lib +pkg-temp/lib/jetty-java5-threadpool.jar usr/share/i2p/lib +pkg-temp/lib/jetty-rewrite-handler.jar usr/share/i2p/lib diff --git a/debian/patches/0004-jetty6.patch b/debian/patches/0004-jetty6.patch index a108633e8d..c245d75df1 100644 --- a/debian/patches/0004-jetty6.patch +++ b/debian/patches/0004-jetty6.patch @@ -92,21 +92,22 @@ so that I2P can be built using Jetty packages from Debian/Ubuntu +- - - -- +- +- - -- - - - - - -- +- - - - + - + @@ -67,6 +65,7 @@ + @@ -128,9 +127,12 @@ + + + @@ -172,9 +174,11 @@ + + @@ -193,6 +197,7 @@ + From 7feaadbd7def1975ce917be65516da7d91538f44 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 8 Jan 2012 15:01:35 +0000 Subject: [PATCH 26/33] fixup after prop --- .../java/src/net/i2p/router/web/LogsHelper.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java index 9f9b769827..dd1d59bc8b 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java @@ -15,6 +15,11 @@ public class LogsHelper extends HelperBase { return Server.getVersion(); } + /** @since 0.8.13 */ + static String jettyVersion() { + return Server.getVersion(); + } + public String getLogs() { String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages()); return _("File location") + ": " + _context.logManager().currentFile() + "

" + str; From 51f7f3a3788e6dcebd13e8b303272a17fbd7a54f Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 10 Jan 2012 03:40:53 +0000 Subject: [PATCH 27/33] log all jetty warns as errors --- apps/jetty/java/src/net/i2p/jetty/I2PLogger.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java b/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java index c385e7d2ed..7e5fe91d2c 100644 --- a/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java +++ b/apps/jetty/java/src/net/i2p/jetty/I2PLogger.java @@ -102,10 +102,11 @@ public class I2PLogger implements Logger public void warn(String msg, Throwable th) { - if (th instanceof RuntimeException || th instanceof Error) + // This doesn't cover ClassNotFoundException, etc. + //if (th instanceof RuntimeException || th instanceof Error) _log.error(msg, th); - else - _log.warn(msg,th); + //else + // _log.warn(msg,th); } private void format(String msg, Object arg0, Object arg1) From 3024b3fd3b5f4342fff90c858387fd22269f2e13 Mon Sep 17 00:00:00 2001 From: zzz Date: Tue, 10 Jan 2012 04:03:30 +0000 Subject: [PATCH 28/33] * Move from Servlet 2.4/JSP 2.0 to Servlet 2.5/JSP 2.1 - Replace Jasper 2.0 from Jetty 6 with Apache Tomcat 6.0.35 (CDDL 1.0 + GPLv2) - Replace JSTL 1.1.2 with JSTL 1.2 (CDDL 1.0 + GPLv2) --- LICENSE.txt | 10 ++++- apps/jetty/apache-tomcat-deployer/NOTICE | 16 ++++++++ .../apache-tomcat-deployer/README-i2p.txt | 14 +++++++ .../apache-tomcat-deployer/lib/el-api.jar | Bin 0 -> 33332 bytes .../apache-tomcat-deployer/lib/jasper-el.jar | Bin 0 -> 112553 bytes .../apache-tomcat-deployer/lib/jasper.jar | Bin 0 -> 527595 bytes .../apache-tomcat-deployer/lib/jsp-api.jar | Bin 0 -> 76690 bytes .../lib/servlet-api.jar | Bin 0 -> 88210 bytes .../lib/tomcat-juli.jar | Bin 0 -> 32277 bytes apps/jetty/build.xml | 37 ++++++++++++++---- apps/susidns/src/WEB-INF/lib/README.txt | 12 ++++++ apps/susidns/src/WEB-INF/lib/jstl.jar | Bin 16630 -> 30658 bytes apps/susidns/src/WEB-INF/lib/standard.jar | Bin 315292 -> 392410 bytes build.xml | 12 +++++- installer/resources/deletelist.txt | 2 + router/java/src/net/i2p/router/Router.java | 14 ++++--- 16 files changed, 101 insertions(+), 16 deletions(-) create mode 100644 apps/jetty/apache-tomcat-deployer/NOTICE create mode 100644 apps/jetty/apache-tomcat-deployer/README-i2p.txt create mode 100644 apps/jetty/apache-tomcat-deployer/lib/el-api.jar create mode 100644 apps/jetty/apache-tomcat-deployer/lib/jasper-el.jar create mode 100644 apps/jetty/apache-tomcat-deployer/lib/jasper.jar create mode 100644 apps/jetty/apache-tomcat-deployer/lib/jsp-api.jar create mode 100644 apps/jetty/apache-tomcat-deployer/lib/servlet-api.jar create mode 100644 apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar create mode 100644 apps/susidns/src/WEB-INF/lib/README.txt diff --git a/LICENSE.txt b/LICENSE.txt index 4cc379640e..db99aa5fc2 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -216,8 +216,10 @@ Applications: Copyright (C) 2005 GPLv2 (or any later version) See licenses/LICENSE-GPLv2.txt - Uses Apache Jakarta Standard Tag Library 1.1.2: - See licenses/LICENSE-Apache2.0.txt + Uses Glassfish Standard Tag Library (JSTL) 1.2: + Common Development and Distribution License (CDDL) version 1.0 + GNU General Public License (GPL) version 2 + See https://glassfish.dev.java.net/public/CDDL+GPL.html + See licenses/LICENSE-GPLv2.txt SusiMail: Copyright (C) 2004-2005 @@ -229,6 +231,10 @@ Applications: Bundles systray4j-2.4.1: See licenses/LICENSE-LGPLv2.1.txt + Tomcat 6.0.35: + Copyright 1999-2011 The Apache Software Foundation + See licenses/LICENSE-Apache2.0.txt + See licenses/NOTICE-Tomcat.txt Other Applications and Libraries diff --git a/apps/jetty/apache-tomcat-deployer/NOTICE b/apps/jetty/apache-tomcat-deployer/NOTICE new file mode 100644 index 0000000000..c44c35de88 --- /dev/null +++ b/apps/jetty/apache-tomcat-deployer/NOTICE @@ -0,0 +1,16 @@ +Apache Tomcat +Copyright 1999-2011 The Apache Software Foundation + +This product includes software developed by +The Apache Software Foundation (http://www.apache.org/). + +The Windows Installer is built with the Nullsoft +Scriptable Install Sysem (NSIS), which is +open source software. The original software and +related information is available at +http://nsis.sourceforge.net. + +Java compilation software for JSP pages is provided by Eclipse, +which is open source software. The original software and +related information is available at +http://www.eclipse.org. diff --git a/apps/jetty/apache-tomcat-deployer/README-i2p.txt b/apps/jetty/apache-tomcat-deployer/README-i2p.txt new file mode 100644 index 0000000000..dd39811386 --- /dev/null +++ b/apps/jetty/apache-tomcat-deployer/README-i2p.txt @@ -0,0 +1,14 @@ +This is Apache Tomcat 6.x, supporting Servlet 2.5 and JSP 2.1. +The Glassfish JSP 2.1 bundled in Jetty 6 is way too old. + +Retrieved from the file + apache-tomcat-6.0.35-deployer.tar.gz + +minus the following files and directores: + +build.xml +deployer-howto.html +images/* +lib/catalina* +LICENSE (see ../../../licenses/LICENSE-Apache2.0.txt, it's also inside every jar) +RELEASE-NOTES diff --git a/apps/jetty/apache-tomcat-deployer/lib/el-api.jar b/apps/jetty/apache-tomcat-deployer/lib/el-api.jar new file mode 100644 index 0000000000000000000000000000000000000000..3518f7d76b3b83fc0ae8f660079439d7c68a27e0 GIT binary patch literal 33332 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%0DYtj)N-88 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 literal 0 HcmV?d00001 diff --git a/apps/jetty/apache-tomcat-deployer/lib/jasper.jar b/apps/jetty/apache-tomcat-deployer/lib/jasper.jar new file mode 100644 index 0000000000000000000000000000000000000000..e64284f4f625353e50e1f2956261e1fb515de529 GIT binary patch literal 527595 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

ET*JHK-%F=;QL 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
OufvH(!o;EKZ~b&Oe2Mlv9O% z$0zoK7W55r>l58Pp2}GooGz&viw6=!xL2lsK_s=wPCAs9A?`@qF5}PQ(JQj+bJA5lFljsA^C-0l0qrxQZ)Rz1rH#4c&h%hF8mcwBOIiZ+0jQmeI9%d_V|yTJ3QxVALP zI^J$XP|{x!HEiF8oAea@2B!Rhu%OlpS!L6yZ?XL3O*I=KpmthLg9gIO?1~eaahFuzi6I%1$uKe3yxFNh*)tHCu6GQS9Ra%e`yv5a~Cn+b4^kzHgvQn zuqN(H{E-^yHu<@83K7mWk$Ln_5?TIwX?}D8PKHhK%%0W^#ME~fMK#<8E?pm#wJRWV z6-mqCY4nfgdq9hB1N>Gmu6Q8Kb2@k5r8PTyl(s>|vt5&|P`^f7dpzEyKukN`4$YbI z;;ZW=Mbbr-waaRGd?`U(x`(Bcnf#xKVi)`=s}3*KMmnA4dP9H_TFyyOxF&Z+@Cl=H zj|y#eW`oCAUe#L|UEWdn(J%&mldw{i(?yt7;qo!~!KI7et4kf-Pc}$we$>6em*unj zw<2ld68k_Ns;bAMH3iyq1FH=MfJ{n7!n9E^Ga@&N$M2<>+h}BioO=#JBGX#W1=Ko= zv*hKS#G~{-&v$DG2s_*slT^`i7EiQl1wT9sryf#S^tzG7(Yzt^%IjfIruPd0u}?d!)>EuO(^GE7vUmU~+ZB-z^>C;4o2jOq!TUz)?PZ}95_5xg(nx3)AS^wKU;`sj0aI#;blEZMvZGk!?!|4mP&5&ll$nF>a?!Jb1 zgQKAzwkTOT$SUD!)MH zqj46Wd3R{0@nSJbO@53|Hi&96`Y=wiFE`vZf#4(sWAo3nY4c>k=)>I6R_^$^_Ed%z zqon_L7MS+?cCeMlVchY8x09b;ciRxh&SrOpovr>9hg-vOMuynE4~;F$&ewAt`6=~) zn<;q2ZO_(s`^Rk2Xdp<&SiqUr?tF}83Yb-830WHq<*a@}F1{0o*wbCM;Xkfz z_L@T7o|r*M9iEx;u6I(1f>MYPSNJVBDGa943U5XnASN;wP}PdOF&lV^)sNWxuw=cJ zWj&%}J#?=AdA=sa!TeX&J=sjpaAJETp@KGJ&o>#tiL{%@iFDh6afFsmt^cr()=8;udgh!`Wr$e-B4<+5p=!x)*R%iCB!G4n&Z*v228yNP0AbE zAs#2l93wd~UmM9Av#6Oee^OE0FJRTBK|RwQmo*}G`!j}63&CkMY1S7eLa~uvMHIL` z-}A?0v@J$8@*6RK1e`w893R+G9alI0O^4^$--RE>yO6)~Y{vH4ZM^iwahaADS4cVS z>A8PvKs$=G{_UjRXJ*Y5?TUw{JT;mu05M8ICR!9=434%7RuZRvxn>Mrs98rp@WKix zLHCQ}L>kJyEAFkDtVFx&&L9dv{oGu;8}mztf$A7nxL$DEnJCGgN@biBp%UXynoVvQ z)wrtUeg3t)n9Pk?KZSd@_2NKlO=nyi=kiQv=jo*qF24+7c?QL6*CD!6yZp@Cx{l9(ehlL8oZik|ld$ z#XGW*G6ycT;gGBDP`7xo{h2E>2M`20y#kbB@iX=<&Iq2e5w9B0LB>$@G_oqqb zR4qZib)MtP8kwZ*nt)7f`T*TXta ze-6H=`o=qZ3lJ>iM_cQ0m^t-p5Uw|?+!FW(5jMC;-(dI#ta!{=y#EXFxYmxAz6BBh zJf5b4knY6t>=OpQXuZ?PXTmX&L#$7i>zYohogJtc+8de+svTb>EpT<#I#%wzb#M;erMQKR(^XT4jb~(5^)h6Pwizja`qB_K28e8nrQ(j7gC_MP9g@pyr zoDFkA0??j54&``QW_8YRhse)64k2W=17k14>=a4`i$eN4MXMcCwD#0{wsqXG9&L*@ zhw{4G770go2`1&N&E-pMwN6x#3fRVw8L_7&y;+pXJZzIL6B%4B6;Kn5n+y43e$7O* z#?i@bo$kMfw=D^m$`MG&GG*}=3_55SF6+2MAB`3D4?ZwTX-=6(ET&RYtyG_#*jF0i z)hFy>FFG)T?-u@|5WzA*>vN7UBoH3(#xZo>j!0_6zjOw$&!Vr&a5IXi?NhhIw#>4* zC%W#Lv=dyJ&PJ)tb7zz15?7!mLusmnNww6UI@^8KKks)@CUQ`hN9YY$@b5Jpmy66d} z=CTsCfA*)fv`0+H9P(gItCbmDes1zueX42hMH{t=Q53hph+9t`Kg@tm?dlxxOmEyB zndDZ;(G#WrRN+`a}K`>VIMm%e)Vw zw!c7^z#m{>9RFX;p^CGGHR*p+Ed`yO9W4x9oK5~q^^~NjW3`}<<|_wcvq*Mva;hTC zdb7u6ff%?^QZ)X>8KEoVHP_K%aiTO&N_sk*vx`Z2f^?e?-+2S|TrlV~Kbwa*D3I;6 zeSga{Gx2utr{x+9vCgh|Rs%lcyB4G?{3iKHJkDFt(zHYt6^HWNEbrLD zFPv?P#bIikQXV-y)KYPE8K+N`gzPf=ewrmHL9|08n5n>?6t6CB9diB%D4w=W7~;=0 z$c0u* zCAyt;kR*}$o_XGK!U)O5G#r``1a6&Z?{@*a+y$-06a2FW0;`8_ z6`M|`Z|VnBXlW-(@!^g|qat3#o3u%>9`f4haveokMtee23HYzjfqdw&S`BS&0RS~d zX^6cp)jPg@i#gUz_660?!hccJK2+wo4RwGj#d%fxuGO~RkA{)04RkB75dU+^WC*g2 z%}|1Y8LNYVeRW`Vj%Ex7_6A1gCJdJUnK;Z~WM^Y=Tbre}*4vvb^O}_` zWo>MRihf5(U*=bBH7+%GyZ*hrYi?Tau4NuQGD*hw|RbOa8}J_n&5k>+I5mfV~(y;H~c$2bl!HB^6gPo3N!=wTf5CYm=1Rn}vu^vkuv412z)>c!)-44&>aoT|>OL z%_h3=d}`Cn{F&haPIDZ67psfo$MiTPCY&1$kc_I;^Sle>kq_}f6 zFBy3S3}Ex9#8G0^*%-Odq$}mrJ}upqS^amO zK#s%Rg0KX)%MsK$NWn27?Q_TM0l1#Tn6_avSxmH<9B|FKh-0#)x*wIJw`LjAA!yr5 zbco$F7|$YDGa0vyl}Tkjjpr@iJc_3R7V|P2jq7F`wNU*{b*!QK`*MhWCk50s8LyD_ zKmhqvQSA&UcdsO_q}_Qkv|s-n|2u};dMgIpHXhGN+svi1V>)`1efb9TolR^>zheh( zU;XHFyMdZ=OTQB?ey^pvWkvoC{mwid4 zBIG#2lv%s}u@QR*H8mphA`0X)7(XcXo==odyR#s4-NXLKeUUEqUQX0wKT?xgf!+fopC<(^M;Qb!$yA@l&hsuZq}MAPXD?dS3#iD!eOt}q#IS+X{>MRqetUH z&|+uh_%d)Yt}*!Qpbl>*pP^&VSwhT1 z%N+vQJSE3q%h)RvwC0-;P}8HiR-%;X-zxbb7A9FM+AV@hhvJ_wQ8FzsI8LxrkzU-~ zkH~!)gz`u?aj^OmJo+(cTZtA%wiF>nP&B2 z%dBL#X73CzF=J04Oa(kj#F4(E+tAMq=8d_r>{h0{mGpG8r%upYEzBji)`nm}ZZl6o z$a*El#YY@Ij#8Pir6kW5>QpX(EyZLwsTqUYZ8fc~sSZtD<8Y z_$w=2M0}*K&MgNaD`Q5$nj*(qZkyN6wMnF-50@o^s4v$|i1locuM+$yRWj&_0%=V%SZ63i4y!DZ0%}5=Jh^i z?$+$SI?8&Jc^&X*zA1G^o*8rOoER#u{jJ$8i?}2A@8oz-h&!+5n60h(-U~N3$Ju2z zkHZVIX+;jM^1fKAVY-z@(d4}sGS1>&uJ_Acb$$q*Bz+X_ORtmL@DmQK5EWLB1Ph=D zw-J`xEhdp49Y$2UHZdm66dnxgY&W?WpXTK3yTINHq(r0&fSJ^luIrPu7wV<;YkC21 z>gg74F7N2?%m8)z(fnzU=@i$7H(UUnv?10yqLAR5y3BVB!4XiIxuqWauUZ+c)TDD( z8U=7fOQ*F{20-e>;|!bZvxHL0p4LNsn~SVZ0qQYJ>U17gcX^WVy`hd3HNNxEUy7=`W)`J-lkJ}tUJ z2t51C)>t0u*immi@v^coF=*ZFZPa=${D8HSW}mkyW1qJ@I7_a?goc-!b~J{UD;Psn zxoQR7Oa?uJ2BW;wpSK(@V+fMC{c_(tzhHt-RsG~kN`rj(B_TV+oQ0LV#9H_N{A@}W zQYa_U4K4kta6a40nQltBR1Dg`I+?`CO7U=uXMV_{FL%}?L2UTro{VG&O! ziOQ~aC-3Q*Jeay8FoGwC_xDoo(bkr53J;{4)ff zFuO`N5(&(rw?aMLCg9|8AA!uE{L|W>kiLz5J*Q-GseBse6gy4ok)Z|ZvYtT+rIjV? zSaB94kb-Ox5aBegE8HrdUB{6nMRfqDO#UuU#ZT5a>St*kNs%8zl)bWTvIF~E332H@ z&ZoY31MXWVK?}LRfH(iITuAi2TuJ5I$}R+xs)}%TiFSK$jioZ(q~(WGhn}n&OY2{m z8y{G%8Ks7{E1sTo5`sVNFS|ctf-JWaUwmDzKd|_>}rUmh>;LfhS$j~4x(}mR?ILyI=Yqt9hb^Stjb+ zq`u^}__N1ycSs5{#|`UAsYkPTIxxInBl3X0Meh9l%y8*MZDI+w$5ILNRi(iaMVaLS zV6MQb?Ccn68G(sUBBR6A3-)<=BhtV_oJGGt>&e%(vv+oah9OO1>5B@pZ5 zkbbjt9G+COdbgzeOUs)i4WMA~I2Gy9ELpza#H|-{EO$8kw;6`enaIM~j0Nmig~A24 zIP7QR1dE!b@UyLN70|dolCwCq-J52=C|$gDtFPD4ANcfW+uTNWEUI2q`bgYWls;o| z!`XO5v*W|G&#N*P?c+sb>u?!6x@hL5cMKq2MQx3_hl)3OD0k?&P+I$z=-B`_{!v%E z+9Mu&knZ>{3H)gsn{zGh{QhA8r{3TOH?f)QTCvU`CvjIw-*aZ_O#-=E#~I1mx38VJ zklW{p-QcqfcT9OF(0gXGe?c$=ux<`}urRzl&NRtdU5Mgt$pl1dITWUNIGruJDxWXV zHe@)l^57C+s#h-JzwhhOrhUH!Ri^$j=OgVJPI&mzt6M2`*;~iWspw}+O%7jWSEpwy z|AeZ;k~4j~n2@^=ov-n97t#nGo5aC)w{NcHF>{BQ7^AO@kdeCGG89GNJ3{w$$Sb`s zjnaFpf0$9~a1i0+CBC?_q}f2TJ8+Vn$`zIXOvpDz7UaJix#|oBx$zSnQfIHNG?e{q0_zC z3pLikk-HtGb7~>&W^}ukGz?cV(N%_2P%Cc{C4=ENb>m>DMyZ5xrXjnV(XlS*R+jrA zV{=uV1Bi~KtHvAp^_1BJk=%BzvT8AmAG&`NH+G}4VP+yg)FxsvuwK!q_t`9XJi*$^ z@9xqY=DHS%UCmT+N)KDT)nM1~`m4g)c{KM9YX2X~-YLk^Fj&(qblJ9T+paF#wyVp= zD%*CKyKLLGZQHI>`|O!Hv*%)FPQ({~tc!K=uNC=aWM;hiyrVcXR>{+@pbvjSK7edrL@LZ=~fe*(VB`Q=~NS|c(kPl3-Fj(^*S*Np1H{kuFGyp z%RkSsT`KdKK!Ft~gc~wMnU&|$FJztnBt77FyX$o>7gXJspD+4$yK8Aqvs54ftFa(a|jPEAa;M5~6!N}jzUt0A)v_wD8z}ZswD{)%gsfHWF zE`CIV?~8OVVFF5x{8;&{~;Y@u~CIK$PeK`+j zal5jQq{8AqCigE0b$Gd7vSX*dO5H_@{2&+mdNPBdpa0=lFfC|%3d;jdxC3DsGpl2p z=U&pKdW6`wI5n&wN9SMV>Kiqr5JR>P71P9vS36bOwI7G~8#d~6r9X_!vwb#fh9YGL z!$6&4${FZ%))J$l>g+(>)L5H2@gTEGt_uOU?*b-?XNsd4cYW~j-OY=3b(G`G+j#rm zHs?k-r9O`lc`2CL)u`T=J7VEw%vl^7lD7DETY(osmPCgxfgj78<7l)8i;i&s!tIlc zIfBGN=NtT5_7=)=;rskM^5wcR=dj*i^HIX?&~3e*Hc@W;{T|&@FJULQgy~mY`?e>W z<BR&%8w3+AK%$YV81WSniT$QWojetOFS|XI4{F zxk_sUf|lCK!)Wha{kY%U5)M@h@)z{J))EC00&bNTyp!XKB<@*Prbvs>EM*z@=LDNS;>`Ya;3S9RUVrSeDnXRoK z12qmNuKiw!xqq@Jm@e;uby^8Rd4YwDlMSoRMLFte zw|>5tMpu=ue-)7f7x(`no4vEy-pQ71;~3Uv4ZD?cL%Po^a)oZjtMVfL_GUfgSr`7@ zT{4ISP1HmT`9|vv(-B{lP^fk?bihuEUW2`5P>@67Y>&*7{U#u|4nYO7pV-?YZu;`3 z-hs8Y?MwzTc*HuBeX{b<=~_Pk9L;@9HZ7fY4&{@j+_Bn8lPcGGUIy`A92wbA++foOu^lr5I_Wuco+mZ*nMHXn+|H=_E0TSbrds8s2D#g7TpF8N_g5-s zpL7F#S&ZSPx-ZS1(m~mqc()_w<+3fEzWzl(Jc1UxuX$A0o9dn~9uSe*YSJP}Yjy)W z-DaytHFHk~KKH1#@7B3+D(Y^%RN2^{{$s2Y@B@9h$p|@8)n200+HA3KQ0`Aj5u1e5 zR;#qrSZe_w9oDXahLIysaJ@g+D}}rpCb|G+^K>|$)Nk!{j?GW=Yi9RGz0Ej+C*9l{ z*r^RbbSrAinRZ*l?_%6{x*U=G@P7Z%32f4qczI{LhR9PWKz+_6Eg=9$&aFxuM$9KV zj%k5?>?aS|oc!HUxch#Q%Pfd{L}tHPF!kaB9fAcnJJ>l=ZCkuBA?S)GKyTD7KQ329 zM3LP+NyFhjbSZU_d+m{@mgB-O zAm>(B3AZA?o7G?vnII)H`%8MNnq+>Qq%ZQ?k##4TbbOEmqsT8%f-CqMkmVTX?Y$fR zp}`+?f@;oMXjqH*=qliVG%4&GuMuU>XQj|5K&*a187|?RN`_sv5FOGY$4YqI%pG22 zgr!v7qQSa`!Yc#)9Y)V3=eVz^By086GBO`(X=t)>kw6tniHv1#ldbD`N|b?!bu4Vx zON6be$y}5hHI@MOlJDqC@Jc;PQ1q$vknP@7m#ZUz%cwjWdCkpi$(K9>UY0M*n#ev6 z=1fIbIBrRGmPuI#kORUbphF)QVoCfHu0fO$m$5*ZAqF#Y6Oj!6QgA>FdRn)CumuV4 zo~!39vYng+Q_%(8>&ZpUDhQQ}guy00=q}uFOen^^6?-uo(->a)lvE8A0+2 z;N!;KCHW5gvmmPwHzRtR<3sI2qc)*{2m)v~#S%~K1Yg3yoBTH{+#+2xv;x|tDkNe6 zvM4xlB-!hf?7$jO(M|7QmW7+sH0+Vmwl&qpY#ejo{&cXvv_N{fLE8y1SCJ_zScpGa zJ!2w!K^}r6S7u5joCZ(gA|nfUYOp4K4&b9KtFU+6e$|9s4Iku!EI^co@yn8&2tm)9 z|4YILnHE6M6A*rUNFzU0x|tKfhf_7IrcHpo2uDt}eDSBGZw|Mv2`?YEQagvtu#JVA zb@sBM5*t9j$cFi4kEWQpb3W5o5y5DCPXdU~XktQ2A)8UdWg5bgQC22!uK9O|84OX1 z9o!lgv;U4-c#LH;R=<)|%{|B5D?Z+aRXZyONYQek&&a=(+_6NtOiR4IsJ)#CG5Z) zm!V=TGL2X17|tuV;HaiKm-_f+AuB*ZXv8h;D7f=)fNxpZedy=3(j#yg>^msir;4_E z7*)-WDa1#mPt3<+GT<~Tx278?(N}CivtFh5i0&UW+JtwO8E)RH;r!V2MTw@<2T^xN zta#95Tz9TnHH3!`s)EyoYby7Tb;z_U?*YH0*rK8OP6s4tE=mX+cW#M*8$<-%f1V>3+EdK2y4koDhv>7RX)n36{q45F6> zpg8X!w@07Y&~G>zAKOO8zVgR&1f>~UdH1KW4QX3JSiX_;BCXk9Ani};E49u4QoqEP z=Xjh^KJm;B2%P=DeutiH&vbv!6j<<(N1V1`3hAQ=y;WiU7C<8M)Q!sDj+}jIhm~4XB9aMJWG6%2-ULuv~$jR7=Gz6G@`**yK;qs1la5Oq5bOk>fLWCYLA_i28nU^v{X(NIq9Add= zltGg+FSSsKChO^B2C9WMiF%E~0py94wGmAiQ90u2kZ4w%sx>gVmh@^F+#-gf$MC(< zPb}|lGwfC=hR<_epi&KrC~H6qQo!yeq&eClqN0JN(Fflii#^WyOQ^M%T3oB4&;a^+F1a;`R6#3cRpxUZ7R1;g(GGGk2rpUw}PI?zZvLOJ>nvlSHw|9Bgy*7tD z5>ADLz0cex0AgE4dIw&6z_dYJC#G{l7|)1?OcckI@dz5p>Ehj8i-I5MiLzx8PfpUQ zG6r}B_IeHpL<01uzFqVBa*Dbqw5?s8%|FtxTg0O}gwx?4MswVh&WZDiDd$FJ7N+MU zD5gDtZbfidKq;-N8yi~U65kHDSIZS8DTHHnO{7AO>%qq+nuBCxagI3&Zn^+)Y)BtR z`lwJ;1&Qkh*PLs~P7k6}f6+y_BGUDE2mUCoIx!b*U!-6=}hENI=Ih%S{S zX1s3=4>t0i=pCA6Z7GJBVZp?Qj4a5Z4@CfJAmLF%WW)xAY=YjjdxkgS=twvi^|6DAe1!3-Q$ zhpF<@8dFZ9V;J?1Q*6K`o^g!2VfyaQ!vYRaDXrbcxOI^UC($8xSfjM5^vJ$ z<$Dc0pTxcJKZd8ChPemFL=g16ea7WLTNOO8AQVA$B{1EE2*_ zInpt8h(Op{dP#VzY()AbJ+QN$8QVyn$lf~G{`tW4BaqHC7DE7J$cOc(MD;RadjkPF zmRg4bYyleC<*~egDQ@*erZu%=bQgS!i6_v9M`{~Ofk6ZXLP?%COY>}=8P(&{g3#F- z^7R>8Hqw?|JJyORcGAiae7hEGxbr%=_KFZx4(B{WktQNrHj@@ZFl=^H9M8&-%?(Br zxKuNoCk;5SR-&koaTgJXxF=0G^#zZ6i z*Wg)ixR*vbOz4wUZ0NKlPWi#{>*2cR<|`0HX$F((p9*ybC0tnoeFohotGZ{YP{smn zXM_0LiKC`q_MH4?UEI?Mahn?YJX~FnT`I{53A5nyC?OxE#2g8;=H*&J!gX6t>wW6q?yv5&;joWle9PZ(OgiCuNrUAmJOoz zYuc1Ftf-5fo@5i397gn>Q_UQ9_)CY6FQO*l2p?^Xg#@kh26G;U10PN9H$iY<^AyVQ z*{p^NpEw6!J_HvAq$32DV+qR%(`^gi3GZcd_}E3XZ<5{67rzvTEo+lehHo2~m(M`@ zL_XoA%mdglXX|j&cfG;%kZIA;XBthPuyN!HQVTf2`e7g^yYEieAv!fC zqPkLRM+EgD8yCD`$|WM_vOP~w0eqOYE#kP7&_)KBgEl^5Gr_29dtke!zatVtpDSO@ zB}5aB|E0J=I~l~fn9kfv;nP z4!O#suS?t+@a!1yxQnk`fi=Yfulw}4Lay+0!8TFg+C1mSVnRoksyJk3J9#f z8lMEd+@~nlo)U`kL)zp5H--9NI`up;PR7M@nxA5E=Hp8EJ98Jx!$&{tYZg8q3VB)} z&dI|DK2XNtgU(U-KXAtJgB4C^G0l~Ps4ex2+&&~$R6IY=mw?+}IQc*D68eC~=>Zkm z!xdD>BhWb`mz2>8Uj`|t}?joa+0lG!-f1wck z@WM=gyPJXKP64|eQ2C1~kA;NImGkn&NxdtuSr$@vzr_URr-D@RA0;sX8a>()zVF8DyQ)00+V5 z7-)UKu*S#MLf6}lvWqXbAX5Lj#Qsk=#$A6IPz9ucDzF-x!6JM?!V?IoRulirhC98h(RU~?0C-b->HZ*yIFj>_}l>#k`5Ut-BrHickjdRG2Q>{*rJFIVTc%rd`zrVq#xpH>5v$9X|2S1?DE3*RnE{D_GPSs*PUiVCESTY%=6U23D4tHFGqH> zB|due<_bzMJo?U39Yz}IvBcL>Vb!6004Og)0-tf!7>GkJWgr4Z@M0jx`mRE(K68qTd|LUz3MMVM1y*HQ%MpBoEG>oGK9S4p6Q<()zp$0~{91)BH)rqqYCwR@3RRk#2Anc0~q+JjZ^swWjZcsl*sxH*d~k5y9D9BIi7SovnItWd3}_=a0asS%~t zWb|#!yB6A#rL3E5aW7d`jo(Dw`04Fo&0 zHYq#q`8>7^dgBgW;3!q;6ii&?Ad=ZG);!~B5bTs3UyyFl^2uc{PqobS4EBuI`{!Hw z+B>{Gs!*zL0oT3J^=?SiK7>?fJ;2Zym)@Y=K~FfKBFeYd%?2T%(7aL*Y{T;OuD+88 z)Ba&?o?24C5m~}xgj=AGpmwc))Dhi2X#e18c)QM9pqevle}u)C;^$?1t@&3CBp*jp zBK=z8lw*?H@#kOW8`*0p%0;hsySmT3c>h4m`68ToN0fVhCdx`n7>Ct1dZ zO2@9VVA5jQx%;XJyvjlm1oCG6TuV#Ys~5q&BQtcInQcLn{A#nM{K7;keu*b`D2=ngP!(txRgz*2RTRu+@f~{W7*g6XI2s-(*9&i`n?RgWoZE@|x#X zYKo=v$#;k}0i1L*P1x6%8Z63E#Vl!Fv><>SCt1Z%W!AYM#0+~L*g2&C2uK#u-s&ht z5t8t{VUk+ouuS9NaI`yaq*x!H|(6{+k%G>N%;Bvi}ItH(5uA9nE{Veai$Xps^ zphI=Jf@JWH`cgVpbef36a>Oe(>Pr7OfBPg?IjY=$cp9pKNO)-G=3p(Gg2e%Jt2^TE z^Me2-65gH`@1@%mSNstUB^A!9TebM zErVzo(LA{Q5X*tiT}baNse2OFHbdm{SFCKRv%r2B4fW=FkAScv&g_hGn1yoewS)xX z+=ho8%Wg5(hyM@6*Y2+lT)8i&Kb-&k$PF$)f~lyPn7O=oSG!W5@4lI=wA+UP@Gn8y z+ARr_&+#;l18Ec)(G@;kit8M{O1D=S`9EO6!)e5C@Nhn8B>k$Z-tEPg_N}V!Rk_z| z_K!`|V}W>OftTw7k%mj?3Y)8fR)CuKG>lGwz3mROHw{SUZ8oY#ti7fINml`=^(`I} zKubdENSLESzskKax^mb3Z-k$!%9}%g(q|-S@aLZBcDO+9$JUa#anGRjh`A2TWOqzN z)OqjZC+m_s0qY5P1SZEU(Y~2yPfIX9^Ok%pHbI{85X7nFzS>)v15T&Gh8zR7+l+iP z!Yl*h701x#Ly7~!=im$E=X{F<(MDY4n0kNkz~qqYrA^=QHqDD+laj!MFw4gz?$PytUftzO?B?zO4uyp9+pyjc zC}RYqQZ$6nwYlK+F{KT!jIslHDJwo8hBxKDAaV6gEVR1Qx@d+Qu~_LdfpRp7`CXag z(&i@jU?70+i74sNnSd&6Jc8ai|btObH2j zltRqJl;VU?zr=ukGuB{j#|t5eB11>SONxVuL5`l}VFsJXC`5@P!$&Yl4uLQ2Yh$At zlJ0}x+|t2B)JhIPh*2dt1sLHbKnW>^{Irvpu_i_eS%D@>3NnJsTs7$1R6-8)3IBwc zkVYHw(t-+kDalFxK}JwX5(_b*{WevQ5m7=zJ(Mg9%m?``YXH;LD1;=$%tuMBO;ErA zo&!>m3quF=oT?C(5}%}#GKVgYh;eiv91OEU7wC(T=U>l;J=C@gB05l zYJW7ejgbFGV4#e>@sBUO=YIzVR;uXQw9Y}H{n!x?@FNL{(JwIAT55tEo<> zsq}QG*t?OP4WN)e{IRATrhB$179 zwyUA9t)_E(u65)>h3m$wDcRxYgYF#GK0F4*wDRW<*U3|!O1$Q#^Ity8)s3EBKGpq# zmG@naJ_(2Gb}N4Zdn}!9b-3mh9ojC}%uc*EpUytEOMd-|G)K7n!H@y7Kxnu6Rv$iz zR4<$UJALzQ2oy$EN;wsuL2pUx@eyXT9H!_QrU2n2Dij(ivf!k+S@jF@1+KdX+5C<^ z1anUXQ$u#Q$IED|?L2SlGYJE<^Z89fi7aEJg+U8H>uJoVXsK(;ifQLa^`MPZHgd1s z5u;M#m#wbddg)7(8t<}> zf$R@oh#~9N-|$z#B&`}RmJXLG#;W>EBB~^Jon(Q)oWJoz~AmPa~{)>H0GAUT+o;&$=?-u1VD8>KgCKWL0_gPX%nt$^ichjOTevvVIiMpdd zRAm}tI-0!oituBL2{0b=1-T6qf@ZkSR86e@J5r5?W&pd73*oMb;(4p9R>Bpt@|YW6 zM?j+M2UMWwG2$H&6v)WBm4@s9@T1AnH$6fQuB7^48Nl4r=%blHfvYxBqQc4#_-*ui zYMJdAjd-+7X#E8*-K?$d6?HXKB4`=yMnk1^*Tk7TBy;W$2P8!^qm?hvq*?MeOYH-eN=+VSagx2#fL>IzuQX04rLRy~oL@vLC%@no3N^m>Koan4nx>XU zxQT+WIhVSbSV?63HF1+GOWQi>NvkAmiG|>{^qw$3cM$CI9mN zdMx6taY$Jjtfg7s?RKw;bKe1df%^Kz)Xt0%9@;16b#!5Bc06&he4X13v@+NguDL3)YObq4-C=mk-Pf93RtNlCo`{5}pL)5z1p5hSYEf&WGRQ__a=eJPDNx z6@_0DGbdaUWmuRC?I7=|RixL6&}4Rw}XQ^liku-VT{Oq&*MD*46zBPl?|u*Oe`P?VcW| znQk&Lj6jy0II}06c$XS>Tb}@Oe96+PncgU&#%IrCi7}UqDDfk6oZ>Ww1MO>rm*U)| zz^11CD2%5jN`xNc3?1c7jul95=g3+df-{T^gZo?kmMMe#SNWc|OWI-wFKkIXO)>>f zDM!0hcQ9E4E$x1Mu$WFAW2grV8ki~=8yHNfwgsg{zMcR5`WFFT(Al+8H+J@Kj$MRB z#YVkuLinni;f5EHOkOUwQpHglw)(~i$BZ?0=Jg5M^SyD^q9pYJC#=-fD#rH^+%X%3 zi%L`zKjEojRF)^Hh>p&Td;^YqstDKmxV{?gK~%DK(?Z5eH7c=HyL9h&5{MDQZQ^UcDkNoZr4%(pOsNAdhHOueM1Xq#eSLGGtjbzf?Pd&J=SCu z%eb{`pr%lLCT&frW@!4~Rr2}-Gxl+IuBntMI~*LFaau3*=hliB;Qtzif6DcX)U^Mg9HV`yVMuFL12`R8R(Fv>>Sz&@SS>+AehmWyn0m<- z7=LR@M|O&8L0N)@kQSys`2Jo`BR!aFqY4f!rn59=QRc?uo)48PLGY0`e~WwiTb->} z>|^ns?Wb-{BKk*b^5asm*x`}KL+7uW!W{`5qM34n@AL`GyvMB$>MfHsAu zgyJYQVo8J|JO#;x)6c?VJ@;P$iWN$FH+QyOL~l`B&#=+J7L z5vJ&DLE>*M+;$ihHhLmDX+rgs46D8UttD(5yO#f2U5N^sN=fawT9tC3{{hzS(Dk)> z6w0DZC+gC1nwcpktX9iR9E*(7J!#T67w_WQBz7gIvj4C-bF@xd`$!EqUnb0}JL*{X zp%pZ*#a!CWGiGFM(~$VAW@hJ3%RLKWuc(iqga(6(y40xQHc~@O%m$G8r#PDJ=4sZN zUfPRqIAj8AJ_?0gve7`ZuVX#U#&SZR2VGv2hDtYQe*rDA5uB9HQ50J>g;e~Z{;D~jy;p8v@hiJj=3}~JL|ZAbJD%RIS@cf*vvQE$ zf*Oy8*uzas+CUKj#YSILpstpHix6Jc!_W$nY5Z-uA_T4HKSsbPV3q7c! z|7cbxN+K;a`jV`)da*q-(5EZ0Eefr2lW(-Z$}PCANUBV~e^1ut(xlRU3;9A1fzIIpEM$BfgFO)!@~z4w`3kIbK;JWhQBr=i-ubGYC}PiT>%Z z2^>^wc3YX9I_izo;vtCilN@}7Ga6+f6jcdJTh2p5LBWIFu1!c{u^_U01EG4`uVDCOS|VU-I?BdvDvgHiLzvAZvSe@s zU9;bCx}3p_oY5|6g4pKnoDj5{Wc6n+HSjLjvV&z*j**j4)aKdg z1R+%|q?~KxC6Amg2$92)uz>??ZupXs0WM@*ZV8&u-q|6fT}a)*O%@IB(pquu!OO=o zQQ|Vud|%68vrRc63ZHmz*}2{Oij7pLHyYM&Rq}JNj7RL8o^#kA3(rp597})~3H2k} z;N>$YSH6-!MT@R4QdH?e?A;Nf^qA8_Xb0W%b4drQH;UqA#4tl^ObqboYLTxT!@ZMd zYwmou@0HtYt6yyHJ`L%YI>y1w2+DEIBu{(x08#e!}iiSOE*Otl) zBj^kzZ(y=Ic97qqiaRNy+&s(e04d39fuaKyCb-rKQ;iF5G}I z@O^FBvxEMF`;JADo&SEFYuY5hJjZ4aPq{#mW^Csv@M+%N53iMfV-xcKB$V0vAN#LLq+d;#p?Sx3T(!9{!? zH?>9+I@{(PH9_gyWMBCN8FYlac!vHuaj^t3Qb(Nh!_}QVbxn1)bDCj^z_Kq_!}~{; zUG>gZ_K84a~CpJk-7as989pe_l!(_?+vU_k2ea z`{jQkj{Qe5D`&TrX!}#lnu7xYasKZM1vz^YQ_}yj1uAOkXlm?i>H6Q+K_^uv|D&Y+ zT5`Bxg(EGTVHczd7QWY>hlUEzlTrm%M0K=8d+amZ*E$6shHt_V>wuk}fl21P0qOwR z3y9mHLafhZ4gD%Y!|=ZGW_h3Vt*alx4gveoB;|ID-V@7f9m8~~ zUUb%xsGVw$8&~@5U(?NKe)`9FE?gAQrfGNH_LcB3uGbbs;*cVCPJz^jW=e-m|Iseb2%u;|KPy?|{n=RL4ScQV&i1P{U$8 z*W4?7*?wjLD}89Fi5cK&jXEXwAheLhae3VSk2KPdBAA?{kPFiLM&<%=M%*lRlkfMH z#{(#=oT%JHW&Sf^P?(1T7NT5C%*~ZworwpR3Mv$t)MlFDwT_2~YrwDA;ALFYx1)Blb^^eOQv)0!F|O36(RIt>v$>`Mv6 zE%{Oxse^t=QUz)rBq@noT0w7;qAH)D6X_CZO6U-2h6-^t|G4034r6PkTP8*1A_`P} z!8lwtE9K(Xh@XL9DM4UeAuWw=l{|_ie*#(7)#0yhmoF@H)wwa={xAL5sJ*a?*iQ&& zf&KpsVF^<^Q%6H*`~T+SkgW2bU0G%%Mo9?!UsNr6+qF5;slf)}y}zZ%5zrvP9Svje zLlsJ?12Hxfd-a0(gtt8qH;Q4avZ#pRXRHZsOZ(|g-cxcP=g+aZK=2MpfdEhx&7=jT zDMJ)A_{@T_xZ6QNW>l?IBigL48?Px%Tu>skQK8y=G9nQz9#00#akRYyd41y95w&Tnop+#uL# zl=S0vNn7>^F-#Uzl*R;>K9@trqf(Ze7z~e$7S~GI3=gexw0b5H(^L46jZ+G-GcezQ zS;D=XsC7^LrSW7j6hj3-PJky@`tf$)bT(MQOma1!Y2!b94%Cido(irMKhQMx2o!{4O}mwsoH&mA22qvN*eQ^U*KW&2B5bG zv9}9w4dk&MFrHbx@o`$@YphBrl|4%&=aYQ=Lz5JfC{Pz!3atD@ju_XqL1S;y;&NofY~~w9gein^BO-XL{lw1hVHXsB+gS@*D=~tZtPE}i96fwbMuSaK zU7SBs9Rlc-O8Gl!7#lCoQ8}pWdOtw_Ya5pR!T+lG6Ph$X*_Gk{BD;!MSlXEUwllN; z&xR~|e)Fg5M+Ms1Z?OEG@?{fv%VJ;yYr$iIsRNQMJ}6qG6w;=ek1T0-)>t)HD5XTY z6^=uSh>XDtgb>UrM|=`h;^-9PWRvUdI{(Aa`v&s&akmKoMgyf6R1M02^djEC*abj7 z^72mf^8>RugYZY{pojdDB!Dr-&I!8UD!>OY^EdDgXCtfvP#g%P#c1(n{pB!VbkXs^ zzM{ZphfS0@uEshQW5HKApOd_Jtq@04%J@K5iv>)6N!ec2PI+@1^fKYKXlPo$!@D>j zU`$&w;Y4#iF=iNF!E0~*lkc(ez=z48hZ6}=_OcbgTy+-DW~!%P6%D(5na6T-nCW%9 z{91hv5+pKFblY86mD10Hgr~!&pUP{>t?+C8LuDdo!1wRBn+PXh(d1|Xt*DWuImtDS ze(d7yzQ-_B2X_PU;VsBF551x<1B|>v!ysG%@h_$D?;z%igIy%Rncp_(mrQ=`rINi# zH@-|73et*J9bVJzJkt%%IDnjyb1sNtDwq{xUPsD_YYL2T4;FLzc63OF@x0Mqkbiib ze#o}Aba@v!rqTr1rbl(+S5>cBTPvWPt+uV{6|JGWT~={17f{8q2ahva))0uPD-q#- z3)k|BZ~$YGOF9BTt}6;LF&Tjg!p#9~O%|plBP9{hk{W5kPDm!IMx5hO%ESD-c zCMBsC@&`;bu-%~pLVZsi`Qv@<4_4Ine~nJJjTyV49}7G(DyM*N-2X6UuKyZIbL@{Q}91hdPep zb1Qvedmw!}U5er%=o-3GhF9t+(FqNu!gb|*l#nQ?`xjurR)3)OK-hL};!)9j{Lkq4 zz(i|FltLKF-&T!m%7j!@sO+3W#Xrt+xddQ8b{@(C|3_y2JrqNdeS9culsK%GA+ORc3H%Z> zTK}8#zvXFU_oT~>jEv@!4}*60T9aaETwnI-=Fk%W;%>SaohO;CDipS+rfQ*X8?uwnn1@-{61kAMKO} zPfA~dL{<~}1IQ`qmcgIA>#9}Va_!rB6HR?NifogcFg6&9ZwUW2AdmuI1PtMSCY#j% zm+8vI$=Tjk#nAje)77Ddhc~VZ+V@vNcKU_cTJcYb;3YU;d}`)olhCw~vzCG$AggUb z)i7x6$|Bo*f#k|wJD5pGz2_6afqyGlv{FbJrV{U1<{q%)LlZi(3y8S>G-Ga0pCa!S z;N?HMU-hu}z4y9)_8GqZ++uM1+K=P_JwYxP)`)=+(Fi2~4}V7z@STXwz1c7Mcr>5* z)ahpshTKd2xTAsVhTr9Qq3iyT>%UItFWfaOj{ z@`c-{f3u88KRD0(#PLNv{Dt2qa3dor2>C`xZ6Tw=j6s+rY$$ig6x~Yg`|A~HPl8Rr zS&7h$kt30y{zb7rcJ-rlQ50|fPh7*|TvvNX1ZxxDZDq}cQxN?Mf!FU zJMDPGuf6xCqq|QB;~q(T#(fAl>z;|>#MTKxYT1b08i3tqOmD84?*hTz|N{CH6_7S{aIY~p5arWC|95#AzeT`nR>r%SfAf-Q~d9>iskfrpI7Ws)W)$AQz@ zMCmuj*Fj;8;)=ynNgYq(>jDstd`|5~5-x4w-0h}WUEFwmYE<8mO|H3_Zc3J!r-b<` zJQ)yA6ffQ677jsr%JUF~lVp8hx@@bEnvy#5ZH`Uv1qW6tzeVjop1DAiFhNt-3>0f~nMH$VYbxxj8VrB*9}XtJ z7-AU1MADr%@=+N=oF`3oJflCv66Fkbtc$k>C~P}YHbDTgq%wcEGsZI3!C9bKx+9x0 zDU|6g3x}JtSTHGZCF2>ABQLR$W$tk^)nVz~K%BLAZ)ztnuQ#%NeXE(C12<@K9icGERexILS;4|9X&VSqY<{ETbktQAq z3ZazD#&_|U7L}gCG>DZ{xK8Q(6NQCpkkJ+I;(_vit0XSJY4x{b0C+T?sAD!=|OQ-eMfEOeg@?t-jiO*er&gbA+&*gVY z$80W>?Fs*SAhN<_=8{1Mc~DdW2y-MXx4rN(ZrD}w$-mU%i8|%kd9mso*3!g=Su(Mu z0>{OJ+3W^31mqF8I-cXGY%_U!998MD8%1XNZRTiN9Q(6Nm&-1GgOt*`P;BNQv0{DP zK_IkU(2zzh76r};bv^)=cjGSc`37xLg{%mVQ{Zc%B}M|F-^I?(*~p&h17bAy(tay< z&TuS#R%HRky0bUNuuE2;(`b%ms;gSF?l~FBy#sD&2yF*t`U!Cxj zi`p<4FN0PWxopSY*-HOCMsoJGo}J6ZetK;ki+tP7SxX#Q#<-MBi_-Z@xQNBh=Tfq%^TL(qNVM! zrN0Z$=1`(}4qf2WFA$%yBhk|Wuh*Fn}_F=%oHuw6Ws2)%s;tpz?n8avozc* z@?Qc-v_^~z&{2NCG}0dR3uSy#S$d&LJ1O5dR*AB>QdwZa9DsyMmHqeWkLwaV^6yid zxCfBXD~A)k&?~2tVE7_z%F{^PH=|IcSZoZ_?dNx zJQC3cqNTMZd?-;=B4R7iNENYwVZs>6*2q&VV(3H91saL?lIPDRRN7W{Cl$%x6iyc< z(4%n3>Qr1$hJubF?ogT?*ecZI3?dyN zrc|%`V3NK5D7=D)BzZafyR$tVk+w6_N*@sVQD$AM|9mk(I&x==p{jW9xe;zLIfYq+;C3Lb-dG$nE54 zT~Ws{kCd}IYd_frpWIN_x0P)O@>lqy((WMJk|k>8JYaE>1@>eP9c)x{dbq|CS1NhI zL|zjgru?H<9_9M}mlJK<_ur4OC#`6ke)PB`gM>4mqMnd#bhIIWBg8K_pO;RNeWhL} ziCQmk{P(fjv>R$3o_YK; zzV~ct+j;~i_#(#VnCQB})V}Rkb^e$hN5}b)9qHNCOEYuzNGjHfl}mqr9M!6{VoTTj zUH4M|AwgMl(P@MRyTfFI;2xmS_n^6#%fNtTH^5DkZ?b6wH1Fdjp@Uoxw0n2Bl`VV0 zcy~VAbqq_itkGW-|E7B6VjzR?)apa|MMF?3MJeNt2 zuuP^^(huUYMa(Z~{Pst0dtykUpz8Nx*g6JvtHrQuXZS(G86G84Nq45tiRHD8n~Xu2 z68_>p$gGp@6jXZw`THIlTeF9zcS!Srx_UZw7yU41ir;~?Q)M8X>wY#)e@DU^4o z6`L?gCS}$lC4K`%@T&|%D3&2Weoxs~NTE~cq=?Xl1|>*-es=)o+O?7jjCtOAkgH3O z{syh;7CQHsrej#WW$8bj?$y;dxYai>-oekW(4n1uA=Nj*U43wRhV$xa^cyjMnn`p_ zbHf$w50uI7RI5JBZ@F>@Q{97Ex+3*MNqjBm_hd68sci2|=Z-x0+;^w zQr#X8+7pD@5~Y=&3l=cibg5ndZ{9F>+6f)R^45;I2@%w7TKaYuX$(4{S(ydUk zSuj3PuqPakF)H#*T*sOaoVbKlYjv%1-%926A)%^$vQPN z#ChGg2oUP(5pI(bKBoZR!L^ay_iYb!@(Z?g2zKqm9B6+Dwsi_#kq|zo0^iv}{BXVi z&RziC6VSqd@9j%S{i~$-sj)`Vu8QVMcGhOR;k)ub(4Ey5?O@~KBNJ*2DEXI^a@Tks zN4*|{s5OxzB1zK-BFY4R?Vc5B)d)oD-#8B+63KWP=XJXS$C$5Gq9gjAPwM)39^dV% z_yn)LTUYTlq@!P?h8oh>ZjLKbwe5P@G*;CJF#F3ErGl!K%B#gm=GoMVaQ|kvJ_XG$ zSK#%^_^xQ*#2}B9%nt>K<4BhK7pvxL!Q_c6BhIR@TK$qL7f$_uD0|2DOt-FSw7b(u z$F^dtd9h@Auj7TKmh|ALenKKcGgPW7eoq6SZHo3e(J- z$)42bbiuNS;uJ!YsPSnD$=Y^9jSH&*?9?95!TQK`XVS%t9FhR?M{)Z`5gH__$Q6Jb@~$_a`3D0r7{QFP zt|Vp6oQWc8^Dh@Si*$48yMe7gQ&%F0cyC`n$amB72w=dq3c_CL4;i=8fZ>C5?R>tz zudw={F{1Wv-)}XR)#b+wQI{0z73vgBYO~#EBbLy0Y33h1Qn+|iXi9KHvaPEY18VoL zVBH>reoYlbgX6H7yK(1arf_@v(CSkyqf|t|fH`Gx1M1Sr1{MX{DSB--?FKp+}!w&7*7tz5EjzI|()^}ud-(E}Gw=<0by%Lp8Si~X9 znoLps<3}D9D^F2UXnFAh4GuSrSEV?Lcc7Lp1IRHJfOKdVVOS7kFa8@ukI6X#7zay!gAyU`%SrY zHZADecyInxsV6jjyfR>sT7)Z+ZR9{oL{&P8YC#BHk6e~O%qp2WlGafa&Ldn(Og++2 zJ11!f6#1BVU*=D~V1gS&f=}|8530mE>WW~QwzNw5+=258{DDNa8#>FTRdyrM9fRCg zC7_K;7JQ+Ma-L&DP4p<@wXtegJKgL9zmQ34fY9b zgZ2^L31>E|Idcnc^rET`TI5J(fDajyb$qJ?9Y&_^|LgJTzou|#8Y7gtKq#{Sq0IPi zpll~-XY3&WoWK1aEKexwIL*q#^E5+1=s_ylL^Lg`CfX75hR|K);y1!T8iM@jijPDMWkGL0eW7;ppuVc)4D#WNvg~b@_bWpz!0w6u6^@0KAcd z*`1Mhm-!{cG{k}hye!*YTl%h=rf=T57%g#5<3=x&dle(+Q+ST>M%gJ3AsY_e(;3#{J9yQ&t7lOAJgo!joBdDD=Gi8=d8 z@VxGIaL>y;G5w(JsMlV-f62)WPR&_GgE;w~zNsH-e-e(k^sz{(5D@!H(6`uIZQ&|( zp>;u6pZTS)MDR2ex2K&4Jyv~)d(~y+2KOTx zi@79FI*5_^mf1Fak$zsmWSYxWKO}ofo`Slg7(-39XApWo%8b5WPdbQP$3C|}^rMUI zM&`7LW|5q9m}LeQ2m41K8BZ&`gm9hY{l{G-F>aphfUZdaIxE^V#!bpuQ1TJClU%w- zAT*huX8xy7)nL95;AMyB>D-CNwN}JWi?d(uYk^ky43q38frv`|h$0{fqe5A(&ROsS z5%DfEA-Fy|sNSFWxrhR7DK`01atDm@j?_QdL8%sEqjyx=#HIKqu2xQ`G{Cf`lwdSLWHNhS6-FGCFDBm^GjQH>$eYY`kSW07K2 zS|8E9N>5ybBK!rl;>y-GfETj>z^0dS<<&VmVFfOhkm>~Cwo}$=1K$g+4)5VwU}vZJkzObZT#Y6W%Db2R0-%F zeOyS`$Tt8(5%o~74%A#wq_t*?9Q|P+8zbp5owuIoLUE{3BXz65yuC2_3Dv9yiUT=O z32tSuZbDRgg}6~Vhtx3XrJzJECBftPZKrYcRhznt+5o^lz1NN%N@DLhYGs#MFYM^N z?#sSSQ$znnxix~P&Q!|nsnr;xCi0lf=CNB~n>lURu+r&+DXYe{vL{P(6NV^bbmwm} z=^_uzwTLB-(Fx&J_C(|qdRgKAkb<&j2Y*2X2|k!gCzIOJC6iS3R04G=-7^va;Z*Ws zu&u!p#~D#cwnql=;MHQsQHvo|+|n~+MW?y-i+04(sulAY%7Hm;k_e567gme`#I2HE z!CKsfeJ8m_#u|C0@~^C(SJQwfCsy3;Iv6N3j^4SuMEdw|%~wJ6zP-yaViz+*Go#d9^QU2gd;I`v%g43Re>0a4GxadExVL*+rItSerznW@dYyT$U*OJU= zVEH*VuDpl>O-ZYz#t=lEqt^$XL(%QT$%wB;;pcxnr6q8V$weQ9w>rlUwQ!x-2QwLE zpI}qu9`R|^vN2g)pjmBA;3a=gR`J0psIm}>$9SRNQMG@>vQ+Vgu@Zw*mbuF8YlYDc zYCZ-ZPVPcr#*2-A=}KTGzi1R}1iCc#8)IDv*JEQSf*bDE8|S(E@0e~g>2UP|V!8*2 zY5IS`!2d+_K+=ZnJU{Z#=dbgob`uSIh40<)BK{k}0eWbL;?O<9zZ^jXY|T!Mk5_H1 zN@8Wazu4XNrkZ<0+Yw*){23LaQST4@W{XCD z{(CSI(-cQrWI=Re5IgXG81CIUZF@kvV8X2x>#BCYx+Dy*DH&5?*3o0U(`LJ=HBw~9 zQ-SOO#4-DJZy_z9@u)~WeZ!buZP*Ci@+nV!?U-4lz9-|W31!sqZV#!PH_BtYY1_FJ zm{}thnV=*eB!;A1pFACr`ypfUd0>v`J>`;2C z%9x3(hXzMiE`KVIC7(>i`ql(U57&>Hu^hk7K`!OxIC@AncdDxltt|Y+aG^$QE|^LB zSW6c(1(si+W&C7p z**0aQz)J9m(a32pZ=ulH{JAtC2;9P{D#;-j_@*E3-|L6ig0=tw9OBcXoxRVC)D zD2z(sOrCkf4e5$vV=rZ^rjIS$pjx;SdhQGX)GiKK?09n+)+FH=S$m;)YCK{D> z!iz{Q>CVv9T_>o)?CknpI~r(C_PK90j8UD-W8NT5{XP z>HQF80&h<~f_m+*lNFhF6C8u}^jR`Gln*kCviPZbHEEH!_T46iM=KilzqGI z$Q`(952EF6gV4r^OVaq%9|islvh7h5mJXd%t!8vcdQ`AtKAfpB|Q^j0|&Y7EJDi8EYi=@ORAY38<4TwA@Jfs89~Ijs2b z({uhMB>AXpM7JH@U=!}mXy$%>axME%EI#u`>s>n*LVcZJ%ufn~HCaAZc_MThHpg9j z;`!omVH(3A6|_Pp!RJ9T@Pm(F;(bt2Fjfv;NU*$f>=s2z42bG6Sq`_uBMoqAhYJ+XVY(DwcOFpLf2EtT9-KDYFWL zonO?=b)$YFV0&~Bx|ob_%p9D1-tjg~ip2Sr=a6Aiut>u+dLCQTzee1fp~n=uv0-Hz>7pbTe=?{=Y#wp|YVk zClCK2n?Y(rAs<1gf-I2uf%w}GavVQA6eY|5*nW4wB8+62lmTM+iLonSymZ`s8{|no z+Dq0d1T~L-(|zWwxupH|Tu;{b%){IKkWuXP_xpcFNUD^d-B1k?vEwK<6 zcIdQZhJLO|-Z-{hZQ#O`EW+e1iQ@KzyJWRqesbDxt^!rU`rL8&$(=a;%A%XX#GXvv z_tQiRt3#7%EaN_XpN184Wp}KgxcEkLz}_1M4x=IdIIZiPaZgd_aK0f)qm~D7m&Svh zFZT#a0kb@J6&lLZ=O=UdqtDrGr|BK-O!GeGQMud;6{kkdd1KRsYOtOnnU#>5RD`Td zhAW%twW%(W;m#m6G`jQ`12R3D(DzR0XD1q#K5;ZJ%-m=JwE zTZ?-MdO>CqIBK4R$tzYQx zug71tbIlTo6FKh4Z^dJ?EtULrA3VlSz(A3>0O|9w7~A z^;VPs#Geo($`%hDsbz~7CjopSD59-eXw!D$neb=8^KymRz$p;JxCMbn`37TveI%wlw`SVCda#s9tzNizELMiLOl0-bK~ZFuaEI4e*RR?xf13qCHeTih{nPe$1H zA3mZ={u)$0V7YMpOQ}Q5#97|a&fdh)+2cP_2k?3*hok_{qtw)XCsZclUmi*>$)|BO zgNZ2kCQU#Z3nmlUO2cMy>e_r^i*+~kgykOB|Kl%CXMb!GP)ro`u7l$;Go4yzVsdNx zkIVrRLwZdQfi#vdOlFW5+s_@2Dv3J!{WffuV}^5Er|aMc&1>!MY94z7TRyoxW~Vqn z1qV%MhC9|(D@X@pS*Cl=MH@_u@X4OmU~Ma9K`=|-nvqa?0b9=YkrM{vEF3Tf^kv#X zHq(9+d+y6cz+opKxYrh~0m+ez_K zFVDl1PnjP$tI=$s!P3H=&5zRZR}wdd1%ve$vZlk{e#%eAbQTe)sR{T9ZuepY?ac|1 zoIL588w9`ObfYovGl|hC2*#-?b9K0#*S@ygd*RKd_ER_0Bi7HU4`Ajwhb<6NM;ag{ z(=8*~&1oD^*~oH|V82^rd_2CNRKP-1?4s@5nQ4_8#eH^Amu`Izy(I6MBKGpaW?3$d z(4a&}q8bXtslyWr&yi@N-^4fR5J`XE`58eqeDrI!1wfrsIL%y5#ae)sicvletHR5q zdXi>H!KF~W7pcu{hTDg(;u%9BWL|^@@)4#8<}_?k6uB5_;hZoNB-)IQfmz1613c1` ztx=!{6`YGJ<0tUwC%_^CwIoi(zeHz~@_gc?QAOUf+Br%=msIYpKMfU#euE za<6fTzkT~Vxi|b|`Mv)CgWUhSAoq82Uz0^rK-MYAa$Qx-MHMN>cTCX5_{}APD99{G z$>7i2@np{_J^IJFcv2eT+UyNfLK&#bec>BznX<4kM*!Q2fXnK9INtO+U(0-cK7EDz zBIS+{nEW$*06iHo)PTd^f;)0BtFz~x(P zW7U1GkF{%g{ZIty(U?>z3xE-X?n9YlZPJQL-@dp>7a=K^_OU)g((G?M`0=y$M0FY$zIyEVh_&0oSq9WsF24u}MD z`wusSWa?d{1qn%hwj3yQ{S;F=}63JOl$sHQ z&d72cac}H z1fW~>^`pt+DVT`cpG3!-eJnC6@)mb^F5K7cIJpXs z*ecLuKgzHDy2|?3Y&I9soQmZE5PVl|9&-s%olS>gSnmSS1DwoP)E8~}NNehbwWo~n z4)Bc1kU}+lcAQWu6^Vf!FwcW}#8{|-z$ zU|YX;M{ad)OC#?1u<}gk`7@6~Li<^zk}u2vX9Q^M2a4AqxNW|O8Ztk(m0A~eiEO>r zFIRsQ9=T?{omPD%~8?%S}ORn4=yvBG>P!k!e%o z*K8&Y$RHodAfh-()kACy?kJmBlmoSE$w#Z_p!neyZM|buAOy!LjhUH9Buo;z-Fr0gp+l zrLQ$fnX%jWY%#}cCY>_BaSJMk*)%YS?@EtXDAi8lwqI!ts34UoS z@^^KVH&RwdJNfkKBcdTkTPj-x?N@9VItXrzEo%eoeAM}g@1tNY@-xm@GK*MpPc8+r zKOC*9mIY#BvL_(#VrMSY{`@@LbA2_<*pEzQDz?c8wrp~JHC;U2^A*b*%cKHV2 zU{T&Ki&|-bX+IJ!GCiC~Ky}j#Qv1OH!Fe&j=5p4fi-TuS7c=0C`uL|dy4}7xnthfN zYKRR&v*cH~OZG&egA>;huEyL!8M`^2sV>&Et=7ll@4q&VJ5e;T!Kq^* zb;|atv%r178x4nxtL){mR*103>i(T{$9LDbkE5D5TqrE6SYxNj%UuV`%V&0BvxE7p zj2-JCNQD~9c0#ppv#C^%r9zt?ZEE@rdf*p?XUT;r-_jFp`HsZ?egE7TBzU;vs3vScehmGU)T^dzFrU&J$iU{mz1R> z;>x#WtVvp&kTqssKa^dIKTdCTK9PUFAUgHYjEUt<_eLX3t0s!&mKUR6K`SRpJcC+7 zkPYYLjIWF4Y%tDI4Urx+#)&hojW%ag8A@(WdVH0@&EGPQ?E@b{5Z)u_+?Ti;{ZS{x z8??a~(Y{AfxQ7lqihYq#!azLa5M(dM%>Ks+{afO|dT>4a%g=iDkKB585CRhi*xpf2 zNd;H(h~1?`m&irpXO3vOSh(mVVr(L#5jT9hT&g5eqID1-P_3b*Z^wIRBSU#3x5&Ri zMHnT30fssK5F$j2g;;$c=&H^}=so1m>=Le_s<_G{zQa-vQ|2LhzQRCjNr3Dm+p$fi zbx*6TLv>)LWl!40p>PQMjG<2ckGkL|1$sxYHfqEnjXMb_w^5F>1UUj)DR%rr2k~Tw z?n>t8x%Q087!Z)It@^CfrkK3tp6BY0%^hWKMU5#YC%4hu=;#?&7aM zh0gz&dH0m~^z^u1ndn`yPd@!@ZV1e|1)WRj2f@4j%>&)#Usb6(eUB>Gqu0>t**c&i zH@5(MNVTnRY9YR+BFvO`voK?O6w9K8Gg({U5yjfV{Y;~HXp;)voO{r*3~O1Uv9Z%? z3X<2^dP&7v2Gp(UPhUgB`bKkd95D>WaE0<|jeK8M`1uXy%f5@{;!vEhGZUg`Pt$gxsYp;R_5 zEpB=Dp!xL7xL&<>=@&rY-v8$EDF1+Pvp1lfnO1bG3VySE$D^TjW7Uy;ZJSS4J#-=a zrSYK%#gXUs=%SIJ&q>QHb&J|xuoL&kiiX{CeF=$sTMUdYR_EO6P)VMM) z$H!MTKCdr8ep;+Y7$^#1D={2lGHa_aR0;Gnvdic$(F3q3ZOdB*;A?DB7hm$<`w6)H zLXjexY+7znAG!OC$P;mzt8YnbY|vjwAJYL9OPQi`4d9jRr-SZZHem#uR;$H)L$$Fy z78{IiImw(5DUK+BVQvCISG@%ml~z>wcJ+0+2-8Tt(ynT7dolWt1O&f6;;EDPCGS6# zd}hNg&Uo@8?K{uw_ZW;gS#!J@>nvxo#;s6*l$9IOt%J6K^R}*&_F^478{ZOxW8AHo z%U5QNjT@NDz2|OTnf(<=yWu`A(@=xou4gQ|&EqEp028l#_N@Ks9BhWWr+6Irf(}(C zpjNQv{1s)6$!ExfJUbP{1LUh3rt#Xw`brNZn2muLG7HX{l0!(Z7TX(H0+hm&6*2noj$2Q?j5OoFLj@A%CRx} z@$WOi3Lmnx-EoqYMz{onN4Ksa-I)tzwwBS^XNTdoq%V1(Y&Eam5vn8AhA%*Ud^gtTbc2ndO zhu}ogfWWcY1R>t#JlW2xf;~MUp9R#YaEbeNWa$QQe|>P!6;uaFOrS+3irv9O%B&2h z-~(~zpXRnoT_PO{V7ibAHTB)a+4xI z6rH4zE*8-LL|>HwtcS&oVEE5SKLNy~zXacIF}+BIDd{CZ;;fW6!^A}<)AK>*<+|zX z{n8=bmxDUg-g9ul7Np({@ZJ`*9%j_Oh6J=45|l?3YNjC9%)#)})#&ga&@=bNripGk zS@UMeMQatLZrB?J)4Iqft}44Qx+{x~I2X*$S{3tFFnz>%>V8FXI6OIIr>Hf@hJgmQ z)4zI1`WUtIpBPDEE|#PxwqG@&cK6!TyeH3>biVeQ@#+}Lt4bJ#qCiX0T`Z2ab&iaY zo)bgfL$XP&vj$z*P+l|%w1&d3u_)CXCy&LRlCi?c#DTVmv-dqoI3V;pw8|utc>%=3 zEbX;sk06t`89Ssm>YAITb((sqYu6mqN`$Y8KQc>NbP6Ub$a0wCRmeUJwzam5gN?2#GzF&N*caQcMd=w;mDIjpa0*?SEQ!qv^6z&)!9zT7?a}a;~;}-a|z_w3in573CVKB4CXl&(ldJ$QO z23=e7g7gDXfQ>4MZ+&^DzKSxST5w$8*4jd`#3&68yvr^P(EvYJl4*wYH=l^D58(4O7F3$EY|6Pim_-};3+NwhWSbVX3x+8^!l#>ljb|9q+ z3V1m@uBM3320GQoPUXaE7@;q~?g&bp`|7JVvY{&yXxO)C_uhE7$;s@MG@jl2=1aY< zZ|>oNC}#)yMsy)G+zz#uxudZjq=n+q=)8-ZYTn};KgayNlF12voXeJiT^OUcFyyoh zL2$el^v8ToOc7n^yj-Bf5b3q*vPTN@|6x(P{E$2X*uA@U4(VsX85&(M595hc|j>ce_mUXMM1;L$rjAzXeC_Jo-aN^JC24}2rLk`&L9 zqO5H?G*b*LiaXt0Av;*BuQsdKq?A^jIm{!$!*cwM8hWX_o#OL(qi*OW2s-4L=JR=G z$*c5tz8=6gnLjE(XcuyVcls!nhBcjJk&|4@q&@RFvdF4$d^VK`sy!f}QwrUkW8Vm+ zdBRr&`N#yUDz9)QXc2-2%Q+<0WLn2M6*IggM5f$7FY-tKk_&d+LR^~ZE>g1JL>Jsz zb@~~W(jvDP7~FNJ>nf>roR9P=3Q}jFmaz-Z%bv%oO~jdxvEM%+X5go;0uO{39}r^y zvddAlv-@9wjR9j;ka>3h0vMtqxr|35f1U?Qgo}I;C8cFWENB&B6OvJp6873SyF&le z6%26gIsooZ0lXWj1uC+5KcrN)*TH1#WnK5@(+kXRsI#ga30PQH$K_rnv?=W~Mq}M@ z@xoW=oboIv-UHp?0)Mx3Ndy?pEOpq95&Api9QPj-6t4x$@}I?r5RX$JmjM;TvDtWV zNC=4T6Z@~-h;7&Hxhkg&%Qk}0!O@`s7v{@wdl;7?g%mD^IUzi>!JAWwuAa2WfnNFX zYz~=>docy%vFEW=DANKq3gcO6CJ{Z))B8e5N172wu}XP+_P25iOqF5|&VxVlj=FIG zah$1`l|`Z~YaEpO@w1iG)~GNv+l-;8aWcE1<34=iifAe)qH^SMgYkJ9I_jU1R-RLX zW6o!z0R(RBGXf&m6lg4~IfF#UKWc(-WmFS#PE}`9i5uBtpiexQr;V3&9I2t#pi-rt z(whq$vpfv@J7580TRsGz&uqJqF2Pb!uP1Fwo~6Hw@q&G+r$GaxPASiMXHVj(7qLhd z*QwS_N;03nozBw#YB&(@wJgxbK?I8~_O9G6zE%_V*EOA{No3BL=FCG0v_-0iX$yo& z5JGUPli;9FbjW$)jPZ$IWt=PZ8yu~fiTR^GMEWwA$P$y?1Hw%#w-#g*A9K`USc$g_ zCXp3W%`LatB)%#1K=yYX7Smg!1{?@2WfS-RLaR|(#tw-A-beP=3NZ{!p**-A ziM)B2{s00fXdWbS`Lt9)shU}xVoH=-9h<_(*X|OuSoSNBCxy_uj066>k*}^KQ@?gx91?`mbY3$*fC#@~*U%Tt?MFv8;oTYvGWcss<7Y^&2Lt zJQ_F&EkW2Q#B_6pvubr%z&Xh{iZ{((sgCgl*RSEg?K?S~D?87f?)z}IMvQ9Zi(9Kr z^jrY-JNQ|`R~`H(<^v1Vxl|%8+a}7$#vIjODwkA@CDH1+b>gTWP}Wa4z5I`n(Jt2P zZYG{J@k|lbd4?-NtPoWk&Nyu34I)}C5@NX@JvfH@Sv8Tnhnf>~>aRSeXxX2m1M8ed zG=>NEXph5lKD`?CYj^MdYdU=>^$*Cb8;Bki@tsk<|Hy~(XZ6P?0zzsYm=PiRFUC`{ z1~w+f|Eri1GyLzTs)duq|3>W;{r5kqMYgh>I>G*Ab!Un?Lf+EIDFK zhH+Ah-9D;e@znJinNn2Au}m`TTrdzvlYWAYqe0 zd92SI(GCHEsnnZe1=0$76-?-Z6&=LBBaPU1wURvqqlMc4IWJ#^`vHgUXn90d#5u$R z*iS|u`Cv79+6c>sel5A+Ca{^1=ls>APN;$_-uP}-Otn91 zq15PFAhDh>7bF6iT{u4p)|c?9 z61U6SH^`m5vitDkR5g4%pUesJtfJ0qm|ExKTV zWGr{6hhut5>IgyPC^bNf=Zh0u-CjKidd}QD)Lm0UMtAVYmO-#}1|kJ^MT;<1pNV#c zVrMQ$O&Rth7h_F@UL23`1#L*O#HZ9cony&~3do1VURy2Ab) z>8JZyLcJ1Zpy!f8bDgLapyO1Xv?19L%`C5mLI>MfrnN=VHG5Gewfi5tK6iCCiYY)= z;{c{p{2N!}-(mP)4~*KH5|SGFCypbBg!b3KQhgM

CoEP&&$U;C7`A!(s<|6pQWLKAtSyiw;Ob3DczsX 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 z%0A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

uJ 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 at*_Q*Qz3M~<`R=2(@rng+RA`Yf%`vn<#}ZQ literal 0 HcmV?d00001 diff --git a/apps/jetty/apache-tomcat-deployer/lib/jsp-api.jar b/apps/jetty/apache-tomcat-deployer/lib/jsp-api.jar new file mode 100644 index 0000000000000000000000000000000000000000..6ef6574cea37f17321800b1921f18e6ab63d47fd GIT binary patch literal 76690 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¬N}!Qh0fqc*#a@Ho6yWOmw_VQXGBMF^Kn0WlmHQ7> z{7`nC(LWKzOx>(KOn!7{zmGWUbe9B^09yzs185I_q{5&9<9{sUzr&K>7s2sGRdE); zYXWu!qQf7lFlgW8pNbH-b}$3l`ENq;5mH)uGr+_GO8D8Xh-Uvs`tQXbKaaBO0}3Do z3i!D#VVeI_0lys&y4;LchyhR+prQU8?8z+t3H%#{xV^(I{?RwV0_dNcP?_aFVSlfQ z>z8~PRKUc69T={X|6#@-{#a)9w`5H>YdhEf4b4BMCm)ws_UeGj2Ln;+=UxQaXA3e3dMmPJEzen1zo0}W48U5=N z`Co!1=NBwj`Zf%Je!N}uk?jM zg^T|e=)W#V|5YEqp8fwP6!qr+0{u%H{(1t;pHN`^@RtVhr|^BiD*KCb)s&Y@p3|GJ0g&&+~ P&m0p3!g&TnV9@^u`FVe3 literal 0 HcmV?d00001 diff --git a/apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar b/apps/jetty/apache-tomcat-deployer/lib/tomcat-juli.jar new file mode 100644 index 0000000000000000000000000000000000000000..07571768cafb3948f98eb0b1d3ac5fa01393875d GIT binary patch literal 32277 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