Source: i2p Severity: serious Tags: patch sid buster Justification: FTBFS Hi,
The jetty9 package has been updated to the version 9.4 and it breaks i2p. Could you pleased review and apply the patch attached? It fixes the build failure but it's untested at run time. Thank you, Emmanuel Bourg
--- a/apps/jetty/java/src/net/i2p/jetty/JettyXmlConfigurationParser.java +++ b/apps/jetty/java/src/net/i2p/jetty/JettyXmlConfigurationParser.java @@ -43,9 +43,9 @@ private static XmlParser initParser() { XmlParser parser = new XmlParser(); - URL config60 = Loader.getResource(XmlConfiguration.class, "org/eclipse/jetty/xml/configure_6_0.dtd"); - URL config76 = Loader.getResource(XmlConfiguration.class,"org/eclipse/jetty/xml/configure_7_6.dtd"); - URL config90 = Loader.getResource(XmlConfiguration.class,"org/eclipse/jetty/xml/configure_9_0.dtd"); + URL config60 = Loader.getResource("org/eclipse/jetty/xml/configure_6_0.dtd"); + URL config76 = Loader.getResource("org/eclipse/jetty/xml/configure_7_6.dtd"); + URL config90 = Loader.getResource("org/eclipse/jetty/xml/configure_9_0.dtd"); parser.redirectEntity("configure.dtd",config90); parser.redirectEntity("configure_1_0.dtd",config60); parser.redirectEntity("configure_1_1.dtd",config60); --- a/apps/jetty/java/src/net/i2p/servlet/I2PDefaultServlet.java +++ b/apps/jetty/java/src/net/i2p/servlet/I2PDefaultServlet.java @@ -132,7 +132,6 @@ * * Get the resource list as a HTML directory listing. */ - @Override protected void sendDirectory(HttpServletRequest request, HttpServletResponse response, Resource resource, --- a/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java +++ b/apps/jetty/java/src/net/i2p/jetty/I2PRequestLog.java @@ -317,7 +317,7 @@ buf.append(request.getMethod()); buf.append(' '); - request.getUri().writeTo(u8buf); + u8buf.append(request.getHttpURI().toString()); buf.append(' '); buf.append(request.getProtocol()); --- a/apps/routerconsole/java/src/net/i2p/router/web/HostCheckHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/HostCheckHandler.java @@ -15,7 +15,7 @@ import net.i2p.util.PortMapper; import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.servlets.gzip.GzipHandler; +import org.eclipse.jetty.server.handler.gzip.GzipHandler; /** * Block certain Host headers to prevent DNS rebinding attacks. --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -22,6 +22,7 @@ import java.util.SortedSet; import java.util.StringTokenizer; import java.util.concurrent.LinkedBlockingQueue; +import javax.servlet.ServletRequest; import net.i2p.I2PAppContext; import net.i2p.app.ClientAppManager; @@ -46,6 +47,7 @@ import org.eclipse.jetty.security.HashLoginService; import org.eclipse.jetty.security.ConstraintMapping; import org.eclipse.jetty.security.ConstraintSecurityHandler; +import org.eclipse.jetty.security.UserStore; import org.eclipse.jetty.security.authentication.DigestAuthenticator; import org.eclipse.jetty.server.AbstractConnector; import org.eclipse.jetty.server.ConnectionFactory; @@ -932,6 +934,8 @@ } else { HashLoginService realm = new CustomHashLoginService(JETTY_REALM, context.getContextPath(), ctx.logManager().getLog(RouterConsoleRunner.class)); + UserStore userStore = new UserStore(); + realm.setUserStore(userStore); sec.setLoginService(realm); sec.setAuthenticator(authenticator); String[] role = new String[] {JETTY_ROLE}; @@ -939,7 +943,7 @@ String user = e.getKey(); String pw = e.getValue(); Credential cred = Credential.getCredential(MD5_CREDENTIAL_TYPE + pw); - realm.putUser(user, cred, role); + userStore.addUser(user, cred, role); Constraint constraint = new Constraint(user, JETTY_ROLE); constraint.setAuthenticate(true); ConstraintMapping cm = new ConstraintMapping(); @@ -959,7 +963,7 @@ try { // each char truncated to 8 bytes String user2 = new String(b2, "ISO-8859-1"); - realm.putUser(user2, cred, role); + userStore.addUser(user2, cred, role); constraint = new Constraint(user2, JETTY_ROLE); constraint.setAuthenticate(true); cm = new ConstraintMapping(); @@ -970,7 +974,7 @@ // each UTF-8 byte as a char // this is what chrome does String user3 = new String(b1, "ISO-8859-1"); - realm.putUser(user3, cred, role); + userStore.addUser(user3, cred, role); constraint = new Constraint(user3, JETTY_ROLE); constraint.setAuthenticate(true); cm = new ConstraintMapping(); @@ -1045,8 +1049,8 @@ } @Override - public UserIdentity login(String username, Object credentials) { - UserIdentity rv = super.login(username, credentials); + public UserIdentity login(String username, Object credentials, ServletRequest request) { + UserIdentity rv = super.login(username, credentials, request); if (rv == null) //_log.logAlways(net.i2p.util.Log.WARN, "Console authentication failed, webapp: " + _webapp + ", user: " + username); _log.logAlways(net.i2p.util.Log.WARN, "Console authentication failed, user: " + username); --- a/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LocaleWebAppHandler.java @@ -85,9 +85,9 @@ String testPath = pathInContext.substring(0, len - 4) + '_' + lang + ".jsp"; // Do we have a servlet for the new path that isn't the catchall *.jsp? @SuppressWarnings("rawtypes") - Map.Entry servlet = _wac.getServletHandler().getHolderEntry(testPath); + org.eclipse.jetty.http.pathmap.MappedResource servlet = _wac.getServletHandler().getMappedServlet(testPath); if (servlet != null) { - String servletPath = (String) servlet.getKey(); + String servletPath = servlet.getPathSpec().getDeclaration(); if (servletPath != null && !servletPath.startsWith("*")) { // success!! //System.err.println("Servlet is: " + servletPath);