diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HostCheckHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/HostCheckHandler.java index dfdc7ce90e..1bcdcee607 100644 --- 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.Log; import net.i2p.util.PortMapper; import org.eclipse.jetty.server.Request; -import org.eclipse.jetty.server.handler.HandlerWrapper; +import org.eclipse.jetty.servlets.gzip.GzipHandler; /** * Block certain Host headers to prevent DNS rebinding attacks. @@ -26,12 +26,13 @@ import org.eclipse.jetty.server.handler.HandlerWrapper; * * @since 0.9.32 */ -public class HostCheckHandler extends HandlerWrapper +public class HostCheckHandler extends GzipHandler { private final I2PAppContext _context; private final PortMapper _portMapper; private final Set _listenHosts; private static final String PROP_REDIRECT = "routerconsole.redirectToHTTPS"; + private static final String PROP_GZIP = "routerconsole.enableCompression"; /** * MUST call setListenHosts() afterwards. @@ -41,6 +42,11 @@ public class HostCheckHandler extends HandlerWrapper _context = ctx; _portMapper = ctx.portMapper(); _listenHosts = new HashSet(8); + setMinGzipSize(64*1024); + if (!_context.getBooleanPropertyDefaultTrue(PROP_GZIP)) { + addIncludedMimeTypes("application/x-javascript", "application/xhtml+xml", "application/xml", + "image/svg+xml", "text/css", "text/html", "text/plain"); + } } /** 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 abd021a910..37f80e9f4f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/RouterConsoleRunner.java @@ -368,15 +368,19 @@ public class RouterConsoleRunner implements RouterApp { *
      *	Server
      *		HandlerCollection
-     *			HostCheckHandler
+     *			HostCheckHandler (extends GzipHandler)
      *				ContextHandlerCollection
-     *					WebAppContext (i.e. ContextHandler)
+     *					LocaleWebAppHandler (routerconsole)
      *						SessionHandler
      *						SecurityHandler
      *						ServletHandler
      *							servlets...
-     *					WebAppContext
-     *					...
+     *					WebAppContext (i2psnark)
+     *					WebAppContext (i2ptunnel)
+     *					WebAppContext (imagegen)
+     *					WebAppContext (susidns)
+     *					WebAppContext (susimail)
+     *					WebAppContext (for each plugin with a .war)
      *			DefaultHandler
      *			RequestLogHandler (opt)
      *
diff --git a/history.txt b/history.txt index 5fd90d4d55..837f87b014 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2018-03-09 zzz + * Console: Enable compression (ticket #2157) + 2018-03-08 zzz * Crypto: Generate non-CA cert for family * Router: @@ -6,6 +9,9 @@ - Don't select IPv6-only routers for IBGW or OBEP - Don't try to build tunnel if adjacent peers aren't compatible - Remove ancient version check in peer selectors + - Check for transport compatibility before direct store of RI; + send through tunnel if incompatible + - Fix repeated store of RI when IPv6-only 2018-03-07 zzz * Router: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 7f4edb9752..31c35f8c3e 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 13; + public final static long BUILD = 14; /** for example "-test" */ public final static String EXTRA = "";