From e68ca573f027878474ea333de5958a21fa76c110 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 13 May 2015 10:41:49 +0000 Subject: [PATCH 1/6] remove status message --- .../java/src/net/i2p/router/update/DevSU3UpdateChecker.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java index 9d3cb4f8e..1e392053a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java +++ b/apps/routerconsole/java/src/net/i2p/router/update/DevSU3UpdateChecker.java @@ -76,7 +76,7 @@ class DevSU3UpdateChecker extends UpdateRunner { _mgr.notifyVersionAvailable(this, _currentURI, UpdateType.ROUTER_DEV_SU3, "", UpdateMethod.HTTP, _urls, newVersion, RouterVersion.FULL_VERSION); } else { - updateStatus("" + _("No new version found at {0}", linkify(url)) + ""); + //updateStatus("" + _("No new version found at {0}", linkify(url)) + ""); if (_log.shouldWarn()) _log.warn("Found old version \"" + newVersion + "\" at " + url); } From a3b13279346f33fe47a46e75116f636ed4dd631e Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 13 May 2015 10:48:48 +0000 Subject: [PATCH 2/6] javadoc fixes --- apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/UDPSink.java | 1 - core/java/src/net/i2p/data/PrivateKeyFile.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/UDPSink.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/UDPSink.java index c9a9ab3f3..2766b1e07 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/UDPSink.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/UDPSink.java @@ -14,7 +14,6 @@ import net.i2p.data.Destination; public class UDPSink implements Sink { /** - * @param src ignored * @throws IllegalArgumentException on DatagramSocket IOException */ public UDPSink(InetAddress host, int port) { diff --git a/core/java/src/net/i2p/data/PrivateKeyFile.java b/core/java/src/net/i2p/data/PrivateKeyFile.java index 4e1a6d74a..96cc8a47b 100644 --- a/core/java/src/net/i2p/data/PrivateKeyFile.java +++ b/core/java/src/net/i2p/data/PrivateKeyFile.java @@ -41,7 +41,7 @@ import net.i2p.util.SecureFileOutputStream; * - Certificate if length != 0 * - Private key (256 bytes) * - Signing Private key (20 bytes, or length specified by key certificate) - * Total 663 bytes + * Total: 663 or more bytes * * * @author welterde, zzz From 0e17c560b3c1eeeaff7fc6c4c536f7b3d20046d9 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 13 May 2015 10:52:26 +0000 Subject: [PATCH 3/6] NTCP: Catch race in Reader (ticket #1534) --- .../src/net/i2p/router/transport/ntcp/Reader.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/ntcp/Reader.java b/router/java/src/net/i2p/router/transport/ntcp/Reader.java index d16ea85b7..1e7746d21 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/Reader.java +++ b/router/java/src/net/i2p/router/transport/ntcp/Reader.java @@ -98,8 +98,10 @@ class Reader { if (keepReading) { // keep on reading the same one } else { - _liveReads.remove(con); - con = null; + if (con != null) { + _liveReads.remove(con); + con = null; + } if (_pendingConnections.isEmpty()) { _pendingConnections.wait(); } else { @@ -116,6 +118,10 @@ class Reader { _log.debug("begin read for " + con); try { processRead(con); + } catch (IllegalStateException ise) { + // FailedEstablishState.receive() (race - see below) + if (_log.shouldWarn()) + _log.warn("Error in the ntcp reader", ise); } catch (RuntimeException re) { _log.log(Log.CRIT, "Error in the ntcp reader", re); } @@ -153,6 +159,7 @@ class Reader { EventPumper.releaseBuf(buf); break; } + // FIXME call est.isCorrupt() before also? throws ISE here... see above est.receive(buf); EventPumper.releaseBuf(buf); if (est.isCorrupt()) { From 081f1865a87d1569c28ac389f6a63e4bd045a29b Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 13 May 2015 12:04:28 +0000 Subject: [PATCH 4/6] Console: Fix URLs caught in XSS filter on /confighome (ticket #1569) Fix name and URL escaping Truncate long URLs in display --- .../net/i2p/router/web/ConfigHomeHandler.java | 11 ++++++---- .../src/net/i2p/router/web/HomeHelper.java | 22 ++++++++++++------- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java index 16bccdfaf..5e426988e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ConfigHomeHandler.java @@ -58,18 +58,21 @@ public class ConfigHomeHandler extends FormHandler { else apps = HomeHelper.buildApps(_context, config); if (adding) { - String name = getJettyString("name"); + String name = getJettyString("nofilter_name"); if (name == null || name.length() <= 0) { addFormError(_("No name entered")); return; } - String url = getJettyString("url"); + String url = getJettyString("nofilter_url"); if (url == null || url.length() <= 0) { addFormError(_("No URL entered")); return; } - name = DataHelper.escapeHTML(name).replace(",", ","); // HomeHelper.S - url = DataHelper.escapeHTML(url).replace(",", ","); + // these would get double-escaped so we can't do it this way... + //name = DataHelper.escapeHTML(name).replace(",", ","); + //url = DataHelper.escapeHTML(url).replace(",", ","); + name = name.replace(",", "."); + url = url.replace(",", "."); // fail HomeHelper.App app = null; if ("1".equals(group)) app = new HomeHelper.App(name, "", url, "/themes/console/images/eepsite.png"); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java index 1569ebc9b..114441e5c 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Set; import java.util.TreeSet; +import net.i2p.data.DataHelper; import net.i2p.router.RouterContext; import net.i2p.util.PortMapper; @@ -209,17 +210,22 @@ public class HomeHelper extends HelperBase { buf.append("\"\""); } buf.append("") - .append(app.name) - .append("") - .append(app.url.replace("&", "&")) - .append("\n"); + .append(DataHelper.escapeHTML(app.name)) + .append(""); + // truncate before escaping + if (app.url.length() > 50) + buf.append(DataHelper.escapeHTML(app.url.substring(0, 48))).append("…"); + else + buf.append(url); + buf.append("\n"); } buf.append("") .append(_("Add")).append(":" + - "" + - ""); + "" + + ""); buf.append("\n"); return buf.toString(); } From 1fb96439168a69284a638125001fe1b28359b591 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 13 May 2015 14:00:19 +0000 Subject: [PATCH 5/6] i2psnark: Fix deletion of single-file torrent outside snark dir (ticket #1544) --- .../org/klomp/snark/web/I2PSnarkServlet.java | 21 ++++++++++--------- history.txt | 5 +++++ .../src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java index 9df86b3b9..64a0ddb05 100644 --- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java +++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java @@ -1047,19 +1047,20 @@ public class I2PSnarkServlet extends BasicServlet { File f = new File(name); f.delete(); _manager.addMessage(_("Torrent file deleted: {0}", f.getAbsolutePath())); - List> files = meta.getFiles(); - String dataFile = snark.getBaseName(); - f = new File(_manager.getDataDir(), dataFile); - if (files == null) { // single file torrent - if (f.delete()) - _manager.addMessage(_("Data file deleted: {0}", f.getAbsolutePath())); - else - _manager.addMessage(_("Data file could not be deleted: {0}", f.getAbsolutePath())); - break; - } Storage storage = snark.getStorage(); if (storage == null) break; + List> files = meta.getFiles(); + if (files == null) { // single file torrent + for (File df : storage.getFiles()) { + // should be only one + if (df.delete()) + _manager.addMessage(_("Data file deleted: {0}", df.getAbsolutePath())); + else + _manager.addMessage(_("Data file could not be deleted: {0}", df.getAbsolutePath())); + } + break; + } // step 1 delete files for (File df : storage.getFiles()) { if (df.delete()) { diff --git a/history.txt b/history.txt index 79b0fdfd3..2fa062515 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +2015-05-13 zzz + * Console: Fix URLs caught in XSS filter on /confighome (ticket #1569) + * i2psnark: Fix deletion of single-file torrent outside snark dir (ticket #1544) + * NTCP: Catch race in Reader (ticket #1534) + 2015-02-12 dg * Job Queue/stats: add stat/graph for amount of scheduled jobs (router.tunnelBacklog) * FloodfillMonitorJob: diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index 601535dbe..a85b0c8aa 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 = 21; + public final static long BUILD = 22; /** for example "-test" */ public final static String EXTRA = "-rc"; From 1f17d2a1490e2ce98b6b5cbe148a929e0d98bad1 Mon Sep 17 00:00:00 2001 From: zzz Date: Fri, 15 May 2015 14:17:08 +0000 Subject: [PATCH 6/6] add cacapo plugin cert --- .../plugin/cacapo_at_mail.i2p.crt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 installer/resources/certificates/plugin/cacapo_at_mail.i2p.crt diff --git a/installer/resources/certificates/plugin/cacapo_at_mail.i2p.crt b/installer/resources/certificates/plugin/cacapo_at_mail.i2p.crt new file mode 100644 index 000000000..f56b88d6b --- /dev/null +++ b/installer/resources/certificates/plugin/cacapo_at_mail.i2p.crt @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFfTCCA2WgAwIBAgIEUTjHEzANBgkqhkiG9w0BAQ0FADBvMQswCQYDVQQGEwJY +WDELMAkGA1UECBMCWFgxCzAJBgNVBAcTAlhYMR4wHAYDVQQKExVJMlAgQW5vbnlt +b3VzIE5ldHdvcmsxDDAKBgNVBAsTA0kyUDEYMBYGA1UEAwwPY2FjYXBvQG1haWwu +aTJwMB4XDTE1MDIwOTEyNTQxOFoXDTI1MDIwODEyNTQxOFowbzELMAkGA1UEBhMC +WFgxCzAJBgNVBAgTAlhYMQswCQYDVQQHEwJYWDEeMBwGA1UEChMVSTJQIEFub255 +bW91cyBOZXR3b3JrMQwwCgYDVQQLEwNJMlAxGDAWBgNVBAMMD2NhY2Fwb0BtYWls +LmkycDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJjVqyjEJqCCufjO +E80hXMPZiQZCiBjSKiA27dTX5rKABI26eLzcKl7e80Ooe9wEGBXEHZCxGIXAFt8x +EHBP4W2u1dmBLpnz6cGxZRMvlTuCKHAbzdJwsWblruXgRg6EQCrtewJ9yuY5SypM +WyJEkL68XMiTeg6fsU367ifWeuPnaO9wqL45pjt9raJMYzXZb3dc6WNUIhg0u7w0 +GA4z7X3CZc3f58/4F5ivKOmDd3FqM/suIH6qZJHvQQJZqLtfReLquD5TlqQjcZ1I +vtfYJWsx3Mx3tyXU4x7CHlXyxM4hEGOgMb041GR8td7AvqM0PLuexvNUHO1wDyWF +C6lydNlBwOOUXqPZCG5afgjliwAIIt0WoASEUqSFDiRmhaQZyShQ9P7NUg7jo8x1 +SK/YL6agSRfyARvKG+lVoSPlVMdwuP4SGYHW9OA0wlI1fO3aY+q71iP3DFfWsLCh +hE/KXKzruDdGe0tIQdWaz5Xrv4bLN8Ot5a79TYRFUeY7lCyFP7vqert+l31hiyZS +gVugjF6zz91F/gtLsjG+y2HdbdlD3TR/+I/dZFuoiZoVPtXGla36CHLrzyTmKPg9 +nZLtrVmOKAfUW1ejYjSeO9Rv05hOsGtPtdi70jw1b7WkUC7Ic8L4HzJE0zDzKwEk +ESVZiLX9G9b0O9CDQnKxRluuZDmVAgMBAAGjITAfMB0GA1UdDgQWBBT9cbSyt2cH +nN9RnC6o9TOoPH5QWTANBgkqhkiG9w0BAQ0FAAOCAgEAVMpgq3aTTv4v3ZmSJ1P6 +jZBXX85IdnRUvadXX0HDgqpqs8k3Sm67C0UwpLQHeYw5t6ilSJocCw62pMCgfxwf +dmJ9VEcFoQSd30BdCMXNmPxAnQ+/INUBPzmcZwe+KlI07IQUsjoEPtRG9LBxwric +PifjxKzzVgOlPPb5XGNmVLdlncY9Z4v5McZPQx6+hG4CqNULEOrx/xRpQDTsGUem +AXR/ocHm7dDwUIQrkRPkbPK+urEtqKS+RL5ttQ4myzJWasCiDoAdlDv15X7u2G+i +E8rTSohtr4Crd4DbNpT11aQHtnympNJCAc7PyRLcQRV3FASXvDUsvwT4dMcPN+M1 +ZR5oatbo9hxy/MPyhQun4awMRvaF7HSKrPI8XJRdJzzufusv662N6A7UX31i5W82 +rnSxfP/haklNfwcBAQ0R3R/MkoURYanJYoHnr2WuAx0yfxNIYlJMX7hfPdWOW6a4 +7nQQAkrgW3knQGlKwCEypjm0tdK0bsUrQ0F91wUUYSUSFuPDPb19ifKXklBoCVlB +6u3ckHu7LG/YZcHmtsxMRMuT+6LtIs/huFnfs4YhJYggswFJHjEX5PcBfsiQklz+ +ahs+UsJAb+lbMOlWj+LYDdyC4T7ZHT+Ii/JZdBN3WNXiBzNuXGC7bd0KWBgCaFuU +ZAPV0YlmPjsGRaSl7vfh+cI= +-----END CERTIFICATE-----