diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 507b3e91..09c7d1a3 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -11,7 +11,7 @@ on: env: # Java version to use for the release - RELEASE_JAVA_VERSION: 11 + RELEASE_JAVA_VERSION: 17 jobs: test: @@ -19,7 +19,7 @@ jobs: strategy: matrix: - java: [ 11, 17, 21 ] + java: [ 17, 21 ] name: Java ${{ matrix.java }} diff --git a/jicoco-config/pom.xml b/jicoco-config/pom.xml index f29343a8..33e04338 100644 --- a/jicoco-config/pom.xml +++ b/jicoco-config/pom.xml @@ -105,7 +105,7 @@ - 11 + 17 diff --git a/jicoco-health-checker/pom.xml b/jicoco-health-checker/pom.xml index ee876a36..d8c72c37 100644 --- a/jicoco-health-checker/pom.xml +++ b/jicoco-health-checker/pom.xml @@ -76,7 +76,7 @@ - 11 + 17 @@ -108,7 +108,7 @@ - 11 + 17 -Xlint:all,-serial diff --git a/jicoco-jetty/pom.xml b/jicoco-jetty/pom.xml index f32ff613..9019d011 100644 --- a/jicoco-jetty/pom.xml +++ b/jicoco-jetty/pom.xml @@ -39,27 +39,22 @@ org.eclipse.jetty jetty-proxy - ${jetty.version} org.eclipse.jetty jetty-server - ${jetty.version} - org.eclipse.jetty - jetty-servlet - ${jetty.version} + org.eclipse.jetty.ee10 + jetty-ee10-servlet - org.eclipse.jetty - jetty-servlets - ${jetty.version} + org.eclipse.jetty.ee10 + jetty-ee10-servlets org.eclipse.jetty jetty-util - ${jetty.version} org.xeustechnologies @@ -233,7 +228,7 @@ - 11 + 17 @@ -265,7 +260,7 @@ - 11 + 17 -Xlint:all,-serial diff --git a/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt b/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt index 2cea3bb5..4bb33a67 100644 --- a/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt +++ b/jicoco-jetty/src/main/kotlin/org/jitsi/rest/JettyHelpers.kt @@ -18,16 +18,20 @@ package org.jitsi.rest import jakarta.servlet.DispatcherType +import org.eclipse.jetty.ee10.servlet.ServletContextHandler +import org.eclipse.jetty.ee10.servlet.ServletHolder +import org.eclipse.jetty.ee10.servlets.CrossOriginFilter import org.eclipse.jetty.http.HttpStatus +import org.eclipse.jetty.server.Handler import org.eclipse.jetty.server.HttpConfiguration import org.eclipse.jetty.server.HttpConnectionFactory +import org.eclipse.jetty.server.Request +import org.eclipse.jetty.server.Response import org.eclipse.jetty.server.SecureRequestCustomizer import org.eclipse.jetty.server.Server import org.eclipse.jetty.server.ServerConnector import org.eclipse.jetty.server.SslConnectionFactory -import org.eclipse.jetty.servlet.ServletContextHandler -import org.eclipse.jetty.servlet.ServletHolder -import org.eclipse.jetty.servlets.CrossOriginFilter +import org.eclipse.jetty.util.Callback import org.eclipse.jetty.util.ssl.SslContextFactory import java.nio.file.Paths import java.util.EnumSet @@ -39,15 +43,9 @@ import java.util.EnumSet fun createJettyServer(config: JettyBundleActivatorConfig): Server { val httpConfig = HttpConfiguration().apply { sendServerVersion = config.sendServerVersion - addCustomizer { _, _, request -> - if (request.method.equals("TRACE", ignoreCase = true)) { - request.isHandled = true - request.response.status = HttpStatus.METHOD_NOT_ALLOWED_405 - } - } } val server = Server().apply { - handler = ServletContextHandler() + handler = TraceBlockingHandler(ServletContextHandler()) } val connector = ServerConnector(server, HttpConnectionFactory(httpConfig)).apply { port = config.port @@ -83,7 +81,7 @@ fun createSecureJettyServer(config: JettyBundleActivatorConfig): Server { sendServerVersion = config.sendServerVersion } val server = Server().apply { - handler = ServletContextHandler() + handler = TraceBlockingHandler(ServletContextHandler()) } val connector = ServerConnector( @@ -114,11 +112,28 @@ fun createServer(config: JettyBundleActivatorConfig): Server { fun JettyBundleActivatorConfig.isEnabled(): Boolean = port != -1 || tlsPort != -1 -// Note: it's technically possible that this cast fails, but -// shouldn't happen in practice given that the above methods always install -// a ServletContextHandler handler. +/** + * A [Handler.Wrapper] that rejects HTTP TRACE requests with 405 Method Not Allowed, + * forwarding everything else to the wrapped [ServletContextHandler]. + */ +private class TraceBlockingHandler( + val servletContextHandler: ServletContextHandler +) : Handler.Wrapper(servletContextHandler) { + override fun handle(request: Request, response: Response, callback: Callback): Boolean { + if (request.method.equals("TRACE", ignoreCase = true)) { + Response.writeError(request, response, callback, HttpStatus.METHOD_NOT_ALLOWED_405) + return true + } + return super.handle(request, response, callback) + } +} + val Server.servletContextHandler: ServletContextHandler - get() = handler as ServletContextHandler + get() = when (val h = handler) { + is TraceBlockingHandler -> h.servletContextHandler + is ServletContextHandler -> h + else -> error("Unexpected server handler type: ${h?.javaClass?.name}") + } fun ServletContextHandler.enableCors(pathSpec: String = "/*") { addFilter(CrossOriginFilter::class.java, pathSpec, EnumSet.of(DispatcherType.REQUEST)).apply { diff --git a/jicoco-jwt/pom.xml b/jicoco-jwt/pom.xml index aeaee832..576e7baf 100644 --- a/jicoco-jwt/pom.xml +++ b/jicoco-jwt/pom.xml @@ -116,7 +116,7 @@ - 11 + 17 @@ -150,7 +150,7 @@ - 11 + 17 -Xlint:all diff --git a/jicoco-mediajson/pom.xml b/jicoco-mediajson/pom.xml index bb7083e4..427e44ad 100644 --- a/jicoco-mediajson/pom.xml +++ b/jicoco-mediajson/pom.xml @@ -97,7 +97,7 @@ - 11 + 17 @@ -131,7 +131,7 @@ - 11 + 17 -Xlint:all diff --git a/jicoco-metrics/pom.xml b/jicoco-metrics/pom.xml index dd8356ae..fe1d9c7d 100644 --- a/jicoco-metrics/pom.xml +++ b/jicoco-metrics/pom.xml @@ -141,7 +141,7 @@ - 11 + 17 @@ -175,7 +175,7 @@ - 11 + 17 -Xlint:all diff --git a/jicoco-mucclient/pom.xml b/jicoco-mucclient/pom.xml index b0be935e..92cf1a88 100644 --- a/jicoco-mucclient/pom.xml +++ b/jicoco-mucclient/pom.xml @@ -158,7 +158,7 @@ - 11 + 17 @@ -190,7 +190,7 @@ - 11 + 17 -Xlint:all,-serial diff --git a/jicoco-test-kotlin/pom.xml b/jicoco-test-kotlin/pom.xml index 4075148e..bd08b7f2 100644 --- a/jicoco-test-kotlin/pom.xml +++ b/jicoco-test-kotlin/pom.xml @@ -90,7 +90,7 @@ - 11 + 17 diff --git a/pom.xml b/pom.xml index db910972..8b0ffffc 100644 --- a/pom.xml +++ b/pom.xml @@ -66,8 +66,8 @@ 1.13.8 0.16.0 1.9.10 - 11.0.21 - 3.0.10 + 12.0.35 + 3.1.11 0.12.6 1.83 4.4.8-jitsi-4 @@ -85,6 +85,26 @@ kotlin-stdlib-jdk8 ${kotlin.version} + + + org.eclipse.jetty + jetty-bom + ${jetty.version} + pom + import + + + org.eclipse.jetty.ee10 + jetty-ee10-bom + ${jetty.version} + pom + import +