diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java index 64304bd3bc796c509ea8dfec05c62d24d0d4e502..f327f739da95915bfd2fcc47be0bf2845d94e22a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateHandler.java @@ -43,7 +43,9 @@ class PluginUpdateHandler implements Checker, Updater { Properties props = PluginStarter.pluginProperties(_context, appName); String oldVersion = props.getProperty("version"); - String xpi2pURL = props.getProperty("updateURL"); + String xpi2pURL = props.getProperty("updateURL.su3"); + if (xpi2pURL == null) + xpi2pURL = props.getProperty("updateURL"); List<URI> updateSources = null; if (xpi2pURL != null) { try { 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 0025436a547fa50f3039b7fe525f8701acf1c702..e42df7877eb98489d09e819dbf4219c9067ef17c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java @@ -254,6 +254,10 @@ class PluginUpdateRunner extends UpdateRunner { String signingKeyName; try { su3.verifyAndMigrate(to); + if (su3.getFileType() != SU3File.TYPE_ZIP) + throw new IOException("bad file type"); + if (su3.getContentType() != SU3File.CONTENT_PLUGIN) + throw new IOException("bad content type"); sudVersion = su3.getVersionString(); signingKeyName = su3.getSignerString(); } catch (IOException ioe) { @@ -265,9 +269,8 @@ class PluginUpdateRunner extends UpdateRunner { Properties props = getPluginConfig(f, to, url); if (props == null) return; - String pubkey = props.getProperty("key"); String signer = props.getProperty("signer"); - if (pubkey == null || signer == null || pubkey.length() != 172 || signer.length() <= 0) { + if (signer == null || signer.length() <= 0) { f.delete(); to.delete(); statusDone("<b>" + _("Plugin from {0} contains an invalid key", url) + "</b>"); @@ -284,7 +287,7 @@ class PluginUpdateRunner extends UpdateRunner { statusDone("<b>" + _("Plugin signature verification of {0} failed", url) + "</b>"); return; } - processFinal(to, appDir, url, props, sudVersion, pubkey, signer); + processFinal(to, appDir, url, props, sudVersion, null, signer); } /** @@ -317,6 +320,7 @@ class PluginUpdateRunner extends UpdateRunner { } /** + * @param pubkey null OK for su3 * @since 0.9.15 */ private void processFinal(File to, File appDir, String url, Properties props, String sudVersion, String pubkey, String signer) { @@ -377,7 +381,7 @@ class PluginUpdateRunner extends UpdateRunner { String oldPubkey = oldProps.getProperty("key"); String oldKeyName = oldProps.getProperty("signer"); String oldAppName = oldProps.getProperty("name"); - if ((!pubkey.equals(oldPubkey)) || (!signer.equals(oldKeyName)) || (!appName.equals(oldAppName))) { + if ((pubkey != null && !pubkey.equals(oldPubkey)) || (!signer.equals(oldKeyName)) || (!appName.equals(oldAppName))) { to.delete(); statusDone("<b>" + _("Signature of downloaded plugin does not match installed plugin") + "</b>"); return; 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 1c1c28568dddbf65e41b9aa9601032179996574a..443b9f093e0131547748564b923878629d0576f2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHandler.java @@ -344,7 +344,9 @@ public class ConfigClientsHandler extends FormHandler { private void updatePlugin(String app) { Properties props = PluginStarter.pluginProperties(_context, app); - String url = props.getProperty("updateURL"); + String url = props.getProperty("updateURL.su3"); + if (url == null) + url = props.getProperty("updateURL"); if (url == null) { addFormError(_("No update URL specified for {0}",app)); return; diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java index c1463000bcdda1b6bc7776d84741e36e75ef2074..8d33a365efbb0e45bf6d13e6758d5ec2db3945c6 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigClientsHelper.java @@ -232,7 +232,9 @@ public class ConfigClientsHelper extends HelperBase { desc.append("<tr><td>") .append("<a href=\"").append(s).append("\">").append(_("Website")).append("</a><td> "); } - String updateURL = stripHTML(appProps, "updateURL"); + String updateURL = stripHTML(appProps, "updateURL.su3"); + if (updateURL == null) + updateURL = stripHTML(appProps, "updateURL"); if (updateURL != null) { desc.append("<tr><td>") .append("<a href=\"").append(updateURL).append("\">").append(_("Update link")).append("</a><td> ");