From e59d7a821bcd1138754e897c2bffcf29c4166f22 Mon Sep 17 00:00:00 2001 From: zzz Date: Sun, 23 Sep 2018 15:11:16 +0000 Subject: [PATCH] Plugins: Blacklist neodatis and seedless for Java 9+ (ticket #2295) --- .../i2p/router/update/PluginUpdateRunner.java | 10 ++++++ .../src/net/i2p/router/web/PluginStarter.java | 31 ++++++++++++++++++- history.txt | 3 ++ .../src/net/i2p/router/RouterVersion.java | 2 +- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java index d72c494ce7..2970c60962 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java @@ -28,6 +28,7 @@ import net.i2p.util.OrderedProperties; import net.i2p.util.PortMapper; import net.i2p.util.SecureDirectory; import net.i2p.util.SecureFile; +import net.i2p.util.SystemVersion; import net.i2p.util.VersionComparator; @@ -475,6 +476,15 @@ class PluginUpdateRunner extends UpdateRunner { statusDone("" + _t("Plugin requires Jetty version {0} or lower", "8.9999") + ""); return; } + if (SystemVersion.isJava9()) { + blacklistVersion = PluginStarter.java9Blacklist.get(appName); + if (blacklistVersion != null && + VersionComparator.comp(version, blacklistVersion) <= 0) { + to.delete(); + statusDone("" + _t("Plugin requires Java version {0} or lower", "8.9999") + ""); + return; + } + } maxVersion = PluginStarter.stripHTML(props, "max-jetty-version"); if (maxVersion != null && VersionComparator.comp(maxVersion, oldVersion) < 0) { 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 a0114bbad6..cf354d6820 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PluginStarter.java @@ -36,6 +36,7 @@ import net.i2p.util.I2PAppThread; import net.i2p.util.Log; import net.i2p.util.PortMapper; import net.i2p.util.SimpleTimer2; +import net.i2p.util.SystemVersion; import net.i2p.util.Translate; import net.i2p.util.VersionComparator; @@ -78,12 +79,28 @@ public class PluginStarter implements Runnable { public static final Map jetty9Blacklist; static { - Map map = new HashMap(4); + Map map = new HashMap(2); map.put("i2pbote", "0.4.5"); map.put("BwSchedule", "0.0.36"); jetty9Blacklist = Collections.unmodifiableMap(map); } + /** + * Plugin name to plugin version of plugins that do not work + * with Java 9+ + * Unmodifiable. + * + * @since 0.9.30 + */ + public static final Map java9Blacklist; + + static { + Map map = new HashMap(2); + map.put("01_neodatis", "2.1-2.14-209-17"); + map.put("02_seedless", "0.1.7-0.1.12"); + java9Blacklist = Collections.unmodifiableMap(map); + } + public PluginStarter(RouterContext ctx) { _context = ctx; } @@ -362,6 +379,18 @@ public class PluginStarter implements Runnable { throw new Exception(foo); } + if (SystemVersion.isJava9()) { + blacklistVersion = java9Blacklist.get(appName); + if (blacklistVersion != null && + VersionComparator.comp(curVersion, blacklistVersion) <= 0) { + String foo = "Plugin " + appName + " requires Jetty version 8.9999 or lower"; + log.error(foo); + disablePlugin(appName); + foo = gettext("Plugin requires Java version {0} or lower", "8.9999", ctx); + throw new Exception(foo); + } + } + String maxVersion = stripHTML(props, "max-jetty-version"); if (maxVersion != null && VersionComparator.comp(maxVersion, jVersion) < 0) { diff --git a/history.txt b/history.txt index 20ba7b1649..a932c289f7 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,6 @@ +2018-09-23 zzz + * Plugins: Blacklist neodatis and seedless for Java 9+ (ticket #2295) + 2018-09-22 zzz * NTCP: - Fix handling of multiple connections diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index ba403a9f3e..ae4c8ac3a4 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 = 5; + public final static long BUILD = 6; /** for example "-test" */ public final static String EXTRA = "-rc";