From b62732b5b32c375fbd38121eb3e351a447310c42 Mon Sep 17 00:00:00 2001
From: zzz
Date: Fri, 11 Jan 2019 14:44:33 +0000
Subject: [PATCH 01/34] Console: More LS2 debug output I2CP: Bump min LS2
router version for release
---
.../net/i2p/router/web/helpers/NetDbRenderer.java | 15 +++++++++++++--
.../src/net/i2p/client/impl/I2PSessionImpl.java | 3 +--
core/java/src/net/i2p/data/LeaseSet2.java | 7 +++++++
3 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
index e28bdb179f..4f4d205b0e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/NetDbRenderer.java
@@ -32,6 +32,7 @@ import net.i2p.data.Destination;
import net.i2p.data.Hash;
import net.i2p.data.Lease;
import net.i2p.data.LeaseSet;
+import net.i2p.data.LeaseSet2;
import net.i2p.data.router.RouterAddress;
import net.i2p.data.router.RouterInfo;
import net.i2p.router.RouterContext;
@@ -519,11 +520,21 @@ class NetDbRenderer {
median = dist;
}
buf.append(" Distance: ").append(fmt.format(biLog2(dist)));
- buf.append(" Type: ").append(ls.getType());
+ int type = ls.getType();
+ buf.append(" Type: ").append(type);
+ if (type != DatabaseEntry.KEY_TYPE_LEASESET) {
+ LeaseSet2 ls2 = (LeaseSet2) ls;
+ buf.append(" Unpublished? ").append(ls2.isUnpublished());
+ boolean isOff = ls2.isOffline();
+ buf.append(" Offline signed? ").append(isOff);
+ if (isOff)
+ buf.append(" Type: ").append(ls2.getTransientSigningKey().getType());
+ }
buf.append("\n");
//buf.append(dest.toBase32()).append(" ");
buf.append("Signature type: ").append(dest.getSigningPublicKey().getType());
- buf.append(" Encryption Key: ").append(ls.getEncryptionKey().toBase64().substring(0, 20)).append("…");
+ if (type != DatabaseEntry.KEY_TYPE_META_LS2)
+ buf.append(" Encryption Key: ").append(ls.getEncryptionKey().toBase64().substring(0, 20)).append("…");
buf.append(" |
\n| ");
buf.append("Routing Key: ").append(ls.getRoutingKey().toBase64());
buf.append(" |
");
diff --git a/core/java/src/net/i2p/client/impl/I2PSessionImpl.java b/core/java/src/net/i2p/client/impl/I2PSessionImpl.java
index e7ca36871b..f47e05446d 100644
--- a/core/java/src/net/i2p/client/impl/I2PSessionImpl.java
+++ b/core/java/src/net/i2p/client/impl/I2PSessionImpl.java
@@ -209,8 +209,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2
private static final long MAX_SEND_WAIT = 10*1000;
private static final String MIN_FAST_VERSION = "0.9.4";
-////// TESTING, change to 38 before release
- private static final String MIN_LS2_VERSION = "0.9.37";
+ private static final String MIN_LS2_VERSION = "0.9.38";
/** @param routerVersion as rcvd in the SetDateMessage, may be null for very old routers */
void dateUpdated(String routerVersion) {
diff --git a/core/java/src/net/i2p/data/LeaseSet2.java b/core/java/src/net/i2p/data/LeaseSet2.java
index e65a85f190..7d77299ec5 100644
--- a/core/java/src/net/i2p/data/LeaseSet2.java
+++ b/core/java/src/net/i2p/data/LeaseSet2.java
@@ -120,6 +120,13 @@ public class LeaseSet2 extends LeaseSet {
return (_flags & FLAG_OFFLINE_KEYS) != 0;
}
+ /**
+ * @return transient public key or null if not offline signed
+ */
+ public SigningPublicKey getTransientSigningKey() {
+ return _transientSigningPublicKey;
+ }
+
/**
* Destination must be previously set.
*
From f5ca17c844cfae49cc2c4ac5a8d68c2c4e1b5ced Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 12 Jan 2019 13:43:09 +0000
Subject: [PATCH 02/34] NetDB: Use isSlow() in floodfill criteria
---
.../net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
index 3de4828cfa..b87ccadaaa 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/FloodfillMonitorJob.java
@@ -109,7 +109,7 @@ class FloodfillMonitorJob extends JobImpl {
return false;
// ARM ElG decrypt is too slow
- if (SystemVersion.isARM() || SystemVersion.isAndroid())
+ if (SystemVersion.isSlow())
return false;
if (getContext().getBooleanProperty(UDPTransport.PROP_LAPTOP_MODE))
From 10f2d838c9dcd4b772422e6e082673b2b2372a64 Mon Sep 17 00:00:00 2001
From: zzz
Date: Sat, 12 Jan 2019 13:45:38 +0000
Subject: [PATCH 03/34] SSU: More consolidation of clock().now() calls
---
.../i2p/router/transport/udp/OutboundMessageFragments.java | 3 ++-
.../net/i2p/router/transport/udp/OutboundMessageState.java | 7 +++++++
.../java/src/net/i2p/router/transport/udp/PeerState.java | 6 +++---
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
index 5659bfdb4f..b24137fab9 100644
--- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
+++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageFragments.java
@@ -286,9 +286,10 @@ class OutboundMessageFragments {
// if there is nothing left to send.
// Otherwise, return the volley to be sent.
// Otherwise, wait()
+ long now = _context.clock().now();
while (_iterator.hasNext()) {
peer = _iterator.next();
- int remaining = peer.finishMessages();
+ int remaining = peer.finishMessages(now);
if (remaining <= 0) {
// race with add()
_iterator.remove();
diff --git a/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java b/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java
index b1d4d71d2a..f5a42ee27a 100644
--- a/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java
+++ b/router/java/src/net/i2p/router/transport/udp/OutboundMessageState.java
@@ -116,6 +116,13 @@ class OutboundMessageState implements CDPQEntry {
return _expiration < _context.clock().now();
}
+ /**
+ * @since 0.9.38
+ */
+ public boolean isExpired(long now) {
+ return _expiration < now;
+ }
+
public synchronized boolean isComplete() {
return _fragmentAcks == 0;
}
diff --git a/router/java/src/net/i2p/router/transport/udp/PeerState.java b/router/java/src/net/i2p/router/transport/udp/PeerState.java
index ebb3a0ea6a..aa08bd9459 100644
--- a/router/java/src/net/i2p/router/transport/udp/PeerState.java
+++ b/router/java/src/net/i2p/router/transport/udp/PeerState.java
@@ -1560,7 +1560,7 @@ public class PeerState {
*
* @return number of active outbound messages remaining
*/
- public int finishMessages() {
+ public int finishMessages(long now) {
// short circuit, unsynchronized
if (_outboundMessages.isEmpty())
return _outboundQueue.size();
@@ -1582,7 +1582,7 @@ public class PeerState {
_retransmitter = null;
if (succeeded == null) succeeded = new ArrayList(4);
succeeded.add(state);
- } else if (state.isExpired()) {
+ } else if (state.isExpired(now)) {
iter.remove();
if (_retransmitter == state)
_retransmitter = null;
@@ -1789,7 +1789,7 @@ public class PeerState {
long now = _context.clock().now();
if (state.getNextSendTime() <= now) {
OutboundMessageState retrans = _retransmitter;
- if ( (retrans != null) && ( (retrans.isExpired() || retrans.isComplete()) ) ) {
+ if ( (retrans != null) && ( (retrans.isExpired(now) || retrans.isComplete()) ) ) {
_retransmitter = null;
retrans = null;
}
From 4283d71b92a73b92e3532dcc4d755b52ebc5049e Mon Sep 17 00:00:00 2001
From: zzz
Date: Sun, 13 Jan 2019 13:14:58 +0000
Subject: [PATCH 04/34] I2CP: Set LS2 unpublished bit, show in debug output
---
.../client/impl/RequestLeaseSetMessageHandler.java | 2 ++
.../impl/RequestVariableLeaseSetMessageHandler.java | 2 ++
core/java/src/net/i2p/data/EncryptedLeaseSet.java | 1 +
core/java/src/net/i2p/data/LeaseSet2.java | 1 +
core/java/src/net/i2p/data/MetaLeaseSet.java | 1 +
history.txt | 13 +++++++++++++
router/java/src/net/i2p/router/RouterVersion.java | 2 +-
7 files changed, 21 insertions(+), 1 deletion(-)
diff --git a/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
index 138b40e8cf..8b3bf1b3f1 100644
--- a/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/RequestLeaseSetMessageHandler.java
@@ -128,6 +128,8 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
session.destroySession();
return;
}
+ if (Boolean.parseBoolean(session.getOptions().getProperty("i2cp.dontPublishLeaseSet")))
+ ((LeaseSet2)leaseSet).setUnpublished();
} else {
leaseSet = new LeaseSet();
}
diff --git a/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java b/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
index 282ac7d50f..05eabce9f2 100644
--- a/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
+++ b/core/java/src/net/i2p/client/impl/RequestVariableLeaseSetMessageHandler.java
@@ -53,6 +53,8 @@ class RequestVariableLeaseSetMessageHandler extends RequestLeaseSetMessageHandle
session.destroySession();
return;
}
+ if (Boolean.parseBoolean(session.getOptions().getProperty("i2cp.dontPublishLeaseSet")))
+ ((LeaseSet2)leaseSet).setUnpublished();
} else {
leaseSet = new LeaseSet();
}
diff --git a/core/java/src/net/i2p/data/EncryptedLeaseSet.java b/core/java/src/net/i2p/data/EncryptedLeaseSet.java
index 23bc75e14e..3f531179d0 100644
--- a/core/java/src/net/i2p/data/EncryptedLeaseSet.java
+++ b/core/java/src/net/i2p/data/EncryptedLeaseSet.java
@@ -298,6 +298,7 @@ public class EncryptedLeaseSet extends LeaseSet2 {
buf.append("\n\tTransient Expires: ").append(new java.util.Date(_transientExpires));
buf.append("\n\tOffline Signature: ").append(_offlineSignature);
}
+ buf.append("\n\tUnpublished? ").append(isUnpublished());
buf.append("\n\tSignature: ").append(_signature);
buf.append("\n\tPublished: ").append(new java.util.Date(_published));
buf.append("\n\tExpires: ").append(new java.util.Date(_expires));
diff --git a/core/java/src/net/i2p/data/LeaseSet2.java b/core/java/src/net/i2p/data/LeaseSet2.java
index 7d77299ec5..d5e1831ab0 100644
--- a/core/java/src/net/i2p/data/LeaseSet2.java
+++ b/core/java/src/net/i2p/data/LeaseSet2.java
@@ -540,6 +540,7 @@ public class LeaseSet2 extends LeaseSet {
buf.append("\n\t\t[").append(key).append("] = [").append(val).append("]");
}
}
+ buf.append("\n\tUnpublished? ").append(isUnpublished());
buf.append("\n\tSignature: ").append(_signature);
buf.append("\n\tPublished: ").append(new java.util.Date(_published));
buf.append("\n\tExpires: ").append(new java.util.Date(_expires));
diff --git a/core/java/src/net/i2p/data/MetaLeaseSet.java b/core/java/src/net/i2p/data/MetaLeaseSet.java
index e20736913d..70835db823 100644
--- a/core/java/src/net/i2p/data/MetaLeaseSet.java
+++ b/core/java/src/net/i2p/data/MetaLeaseSet.java
@@ -171,6 +171,7 @@ public class MetaLeaseSet extends LeaseSet2 {
buf.append("\n\t\t[").append(key).append("] = [").append(val).append("]");
}
}
+ buf.append("\n\tUnpublished? ").append(isUnpublished());
buf.append("\n\tSignature: ").append(_signature);
buf.append("\n\tPublished: ").append(new java.util.Date(_published));
buf.append("\n\tExpires: ").append(new java.util.Date(_expires));
diff --git a/history.txt b/history.txt
index eab8dee24d..966857b1a4 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,16 @@
+2019-01-13 zzz
+ * I2CP: Set LS2 unpublished bit, show in debug output
+
+2019-01-12 zzz
+ * NetDB: Use isSlow() in floodfill criteria
+ * SSU: More consolidation of clock().now() calls
+
+2019-01-10 zzz
+ * I2CP:
+ - Router-side handling of meta LS2
+ - Remove client-side-only options from those sent to router
+ - Router-side stub for encrypted LS2
+
2019-01-09 zzz
* Console: Fix broken image link on /configui
* I2CP: Stub out client-side creation of meta and enc. LS2
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 25340f779d..421ff4f630 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 = 15;
+ public final static long BUILD = 16;
/** for example "-test" */
public final static String EXTRA = "-rc";
From cf27938983488d8811faf12326f0367ab7ce96dd Mon Sep 17 00:00:00 2001
From: zab2
Date: Sun, 13 Jan 2019 14:04:03 +0000
Subject: [PATCH 05/34] fix compilation with Gradle to account for GeoIP2 and
systray changes
---
apps/desktopgui/build.gradle | 1 +
router/build.gradle | 2 --
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/apps/desktopgui/build.gradle b/apps/desktopgui/build.gradle
index 36f8eaaed8..70e4138125 100644
--- a/apps/desktopgui/build.gradle
+++ b/apps/desktopgui/build.gradle
@@ -10,4 +10,5 @@ dependencies {
compile project(':core')
compile project(':router')
compile project(':installer')
+ compile project(':apps:systray')
}
diff --git a/router/build.gradle b/router/build.gradle
index 4873ba9af3..bb2aa937b6 100644
--- a/router/build.gradle
+++ b/router/build.gradle
@@ -4,7 +4,6 @@ sourceSets {
main {
java {
srcDir 'java/src'
- exclude 'com/maxmind'
}
}
test {
@@ -21,7 +20,6 @@ sourceSets {
dependencies {
api project(':core')
- implementation 'com.maxmind.geoip:geoip-api:1.3.1'
implementation 'gnu.getopt:java-getopt:1.0.13'
testImplementation project(path: ':core', configuration: 'tests')
}
From ca86bbe4f737758f086e08f017f057159454cb71 Mon Sep 17 00:00:00 2001
From: zzz
Date: Mon, 14 Jan 2019 15:58:40 +0000
Subject: [PATCH 06/34] EncType javadoc update
---
core/java/src/net/i2p/crypto/EncType.java | 26 ++++++++++++++++-------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/core/java/src/net/i2p/crypto/EncType.java b/core/java/src/net/i2p/crypto/EncType.java
index 9af0471069..d24558e08e 100644
--- a/core/java/src/net/i2p/crypto/EncType.java
+++ b/core/java/src/net/i2p/crypto/EncType.java
@@ -30,16 +30,26 @@ public enum EncType {
*/
ELGAMAL_2048(0, 256, 256, EncAlgo.ELGAMAL, "ElGamal/None/NoPadding", CryptoConstants.I2P_ELGAMAL_2048_SPEC, "0"),
- /** Pubkey 64 bytes; privkey 32 bytes; */
- EC_P256(1, 64, 32, EncAlgo.EC, "EC/None/NoPadding", ECConstants.P256_SPEC, "0.9.20"),
-
- /** Pubkey 96 bytes; privkey 48 bytes; */
- EC_P384(2, 96, 48, EncAlgo.EC, "EC/None/NoPadding", ECConstants.P384_SPEC, "0.9.20"),
-
- /** Pubkey 132 bytes; privkey 66 bytes; */
- EC_P521(3, 132, 66, EncAlgo.EC, "EC/None/NoPadding", ECConstants.P521_SPEC, "0.9.20"),
+ /**
+ * Used by i2pd. Not yet supported by Java I2P.
+ * Pubkey 64 bytes; privkey 32 bytes.
+ */
+ EC_P256(1, 64, 32, EncAlgo.EC, "EC/None/NoPadding", ECConstants.P256_SPEC, "0.9.38"),
/**
+ * Reserved, not used by anybody.
+ * Pubkey 96 bytes; privkey 48 bytes.
+ */
+ EC_P384(2, 96, 48, EncAlgo.EC, "EC/None/NoPadding", ECConstants.P384_SPEC, "0.9.38"),
+
+ /**
+ * Reserved, not used by anybody.
+ * Pubkey 132 bytes; privkey 66 bytes.
+ */
+ EC_P521(3, 132, 66, EncAlgo.EC, "EC/None/NoPadding", ECConstants.P521_SPEC, "0.9.38"),
+
+ /**
+ * Proposal 144. Not yet supported by anybody.
* Pubkey 32 bytes; privkey 32 bytes
* @since 0.9.38
*/
From 16f4f040926a31420c01d30d39d3a9983aa0da67 Mon Sep 17 00:00:00 2001
From: zzz
Date: Tue, 15 Jan 2019 16:05:40 +0000
Subject: [PATCH 07/34] change firefox profile installer link
---
apps/routerconsole/jsp/welcome.jsp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/apps/routerconsole/jsp/welcome.jsp b/apps/routerconsole/jsp/welcome.jsp
index 2f202270ed..fdd00f5edc 100644
--- a/apps/routerconsole/jsp/welcome.jsp
+++ b/apps/routerconsole/jsp/welcome.jsp
@@ -243,7 +243,7 @@
<%=intl._t("Otherwise, the recommended way to browse I2P websites is with a separate profile in the Firefox browser.")%>
- <%=intl._t("Install Firefox")%>
-
- <%=intl._t("Install the I2P Firefox profile")%>
+
- <%=intl._t("Install the I2P Firefox profile")%>
<%
} //isWindows()
From d851631494ebc89d43c284272295cee9a9934a1b Mon Sep 17 00:00:00 2001
From: zzz
Date: Tue, 15 Jan 2019 17:18:59 +0000
Subject: [PATCH 08/34] SusiMail: Fix sending mail with attachments (ticket
#2373) Fix deleting attachments from drafts Fix dup attachments after
clicking add attachment without browsing first Fix update of draft folder
after saving as draft Change text of add attachment button for clarity Debug
logging
---
.../src/src/i2p/susi/webmail/Attachment.java | 19 ++++++++++++
.../src/src/i2p/susi/webmail/Draft.java | 2 +-
.../src/src/i2p/susi/webmail/WebMail.java | 30 ++++++++++++++++---
.../src/i2p/susi/webmail/smtp/SMTPClient.java | 2 ++
history.txt | 8 +++++
.../src/net/i2p/router/RouterVersion.java | 2 +-
6 files changed, 57 insertions(+), 6 deletions(-)
diff --git a/apps/susimail/src/src/i2p/susi/webmail/Attachment.java b/apps/susimail/src/src/i2p/susi/webmail/Attachment.java
index 6f1593ceab..125d8997f4 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/Attachment.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/Attachment.java
@@ -95,4 +95,23 @@ public class Attachment {
public void deleteData() {
data.delete();
}
+
+ /**
+ * @since 0.9.38
+ */
+ @Override
+ public int hashCode() {
+ return fileName.hashCode() ^ data.hashCode();
+ }
+
+ /**
+ * @since 0.9.38
+ */
+ @Override
+ public boolean equals (Object o) {
+ if (o == null || !(o instanceof Attachment))
+ return false;
+ Attachment a = (Attachment) o;
+ return fileName.equals(a.fileName) && data.equals(a.data);
+ }
}
diff --git a/apps/susimail/src/src/i2p/susi/webmail/Draft.java b/apps/susimail/src/src/i2p/susi/webmail/Draft.java
index 7a8cce4adf..d860710109 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/Draft.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/Draft.java
@@ -71,7 +71,7 @@ class Draft extends Mail {
String name = DataHelper.getUTF8(b);
String type = flds[1];
String enc = flds[2];
- b = Base64.decode(flds[0]);
+ b = Base64.decode(flds[3]);
if (b == null)
continue;
String path = DataHelper.getUTF8(b);
diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
index 27f6c630a9..4eff6255f6 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java
@@ -1405,15 +1405,15 @@ public class WebMail extends HttpServlet
State state = null;
String filename = request.getFilename( NEW_FILENAME );
// We handle an attachment whether sending or uploading
- if (filename != null &&
- (buttonPressed(request, NEW_UPLOAD) || buttonPressed(request, SEND))) {
+ if (filename != null && filename.length() > 0 &&
+ (buttonPressed(request, NEW_UPLOAD) || buttonPressed(request, SEND) || buttonPressed(request, SAVE_AS_DRAFT))) {
int i = filename.lastIndexOf('/');
if( i != - 1 )
filename = filename.substring( i + 1 );
i = filename.lastIndexOf('\\');
if( i != -1 )
filename = filename.substring( i + 1 );
- if( filename != null && filename.length() > 0 ) {
+ if (filename.length() > 0) {
InputStream in = null;
OutputStream out = null;
I2PAppContext ctx = I2PAppContext.getGlobalContext();
@@ -1452,6 +1452,12 @@ public class WebMail extends HttpServlet
sessionObject.attachments.add(
new Attachment(filename, contentType, encodeTo, f)
);
+ // Save the draft
+ String uidl = Base64.decodeToString(request.getParameter(NEW_UIDL));
+ if (uidl != null) {
+ StringBuilder draft = composeDraft(sessionObject, request);
+ saveDraft(sessionObject, uidl, draft);
+ }
} else {
sessionObject.error += _t("No Encoding found for {0}", encodeTo) + '\n';
}
@@ -1466,6 +1472,7 @@ public class WebMail extends HttpServlet
state = State.NEW;
}
else if( sessionObject.attachments != null && buttonPressed( request, DELETE_ATTACHMENT ) ) {
+ boolean deleted = false;
for (String item : getCheckedItems(request)) {
try {
int n = Integer.parseInt(item);
@@ -1473,11 +1480,21 @@ public class WebMail extends HttpServlet
Attachment attachment = sessionObject.attachments.get(i);
if( attachment.hashCode() == n ) {
sessionObject.attachments.remove( i );
+ attachment.deleteData();
+ deleted = true;
break;
}
}
} catch (NumberFormatException nfe) {}
}
+ // Save the draft or else the attachment comes back
+ if (deleted) {
+ String uidl = Base64.decodeToString(request.getParameter(NEW_UIDL));
+ if (uidl != null) {
+ StringBuilder draft = composeDraft(sessionObject, request);
+ saveDraft(sessionObject, uidl, draft);
+ }
+ }
state = State.NEW;
}
return state;
@@ -2893,6 +2910,7 @@ public class WebMail extends HttpServlet
}
} else {
sessionObject.error += relay.error;
+ if (log.shouldWarn()) log.warn("Error sending mail: " + relay.error);
}
sessionObject.info = sessionObject.info.replace(_t("Sending mail.") + '\n', "");
}
@@ -2997,7 +3015,11 @@ public class WebMail extends HttpServlet
if (!a.isEmpty()) {
if (sessionObject.attachments == null)
sessionObject.attachments = new ArrayList(a.size());
+ else
+ sessionObject.attachments.clear();
sessionObject.attachments.addAll(a);
+ } else if (sessionObject.attachments != null) {
+ sessionObject.attachments.clear();
}
// needed when processing the CANCEL button
out.println("");
@@ -3036,7 +3058,7 @@ public class WebMail extends HttpServlet
"| " + _t("Subject") + ": | |
\n" +
" | |
" +
"
|
\n" +
- "| " + _t("Add Attachment") + ": | " + button(NEW_UPLOAD, _t("Add another attachment")) + " |
");
+ "| " + _t("Add Attachment") + ": | " + button(NEW_UPLOAD, _t("Add Attachment")) + " |
");
if( sessionObject.attachments != null && !sessionObject.attachments.isEmpty() ) {
boolean wroteHeader = false;
diff --git a/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java b/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java
index 6c33586b12..19937ab691 100644
--- a/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java
+++ b/apps/susimail/src/src/i2p/susi/webmail/smtp/SMTPClient.java
@@ -346,6 +346,8 @@ public class SMTPClient {
error += _t("Error sending mail") + " (" + result + ")\n";
}
} catch (IOException e) {
+ if (_log.shouldWarn())
+ _log.warn("Error sending mail", e);
error += _t("Error sending mail") + ": " + e.getMessage() + '\n';
}
if( !mailSent && lastResponse.length() > 0 ) {
diff --git a/history.txt b/history.txt
index 966857b1a4..4901b436f8 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,11 @@
+2019-01-15 zzz
+ * SusiMail:
+ - Fix sending mail with attachments (ticket #2373)
+ - Fix deleting attachments from drafts
+ - Fix dup attachments after clicking add attachment without browsing first
+ - Fix update of draft folder after saving as draft
+ - Change text of add attachment button for clarity
+
2019-01-13 zzz
* I2CP: Set LS2 unpublished bit, show in debug output
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 421ff4f630..098e16d499 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 = 16;
+ public final static long BUILD = 17;
/** for example "-test" */
public final static String EXTRA = "-rc";
From 6ca383071bf26331e0a943389cc0a33ea4e2ebd0 Mon Sep 17 00:00:00 2001
From: zzz
Date: Wed, 16 Jan 2019 20:10:36 +0000
Subject: [PATCH 09/34] Debian: AppArmor updates (ticket #2319)
---
debian/apparmor/i2p | 18 ++++++++++++++++--
debian/apparmor/usr.bin.i2prouter | 5 +++--
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git a/debian/apparmor/i2p b/debian/apparmor/i2p
index cc73de43e4..22ca60f175 100644
--- a/debian/apparmor/i2p
+++ b/debian/apparmor/i2p
@@ -6,6 +6,11 @@
#include
#include
+ # for launching browswers
+ #include
+ #include
+ #include
+
network inet stream,
network inet dgram,
network inet6 stream,
@@ -14,11 +19,14 @@
# Needed by Java
@{PROC} r,
owner @{PROC}/[0-9]*/ r,
+ owner @{PROC}/[0-9]*/cgroup r,
+ owner @{PROC}/[0-9]*/mountinfo r,
owner @{PROC}/[0-9]*/status r,
@{PROC}/[0-9]*/net/ipv6_route r,
@{PROC}/[0-9]*/net/if_inet6 r,
/sys/devices/system/cpu/ r,
/sys/devices/system/cpu/** r,
+ /sys/fs/cgroup/** r,
/etc/ssl/certs/java/** r,
/etc/timezone r,
@@ -58,11 +66,14 @@
/usr/share/java/gnu-getopt.jar r,
/usr/share/java/gnu-getopt-*.jar r,
/usr/share/java/jetty9-*.jar r,
+ /usr/share/java/json-simple.jar r,
+ /usr/share/java/json-simple-*.jar r,
/usr/share/java/jsp-api-*.jar r,
/usr/share/java/servlet-api-*.jar r,
/usr/share/java/standard.jar r,
/usr/share/java/standard-*.jar r,
/usr/share/java/tomcat8-*.jar r,
+ /usr/share/java/tomcat9-*.jar r,
/usr/share/java/taglibs-standard-*.jar r,
/usr/share/flags/countries/16x11/* r,
@@ -75,8 +86,8 @@
# 'm' is needed by the I2P-Bote plugin
/{,lib/live/mount/overlay/}tmp/ rwm,
- owner /{,lib/live/mount/overlay/}tmp/hsperfdata_i2psvc/ rwk,
- owner /{,lib/live/mount/overlay/}tmp/hsperfdata_i2psvc/** rw,
+ owner /{,lib/live/mount/overlay/}tmp/hsperfdata_*/ rwk,
+ owner /{,lib/live/mount/overlay/}tmp/hsperfdata_*/** rw,
owner /{,lib/live/mount/overlay/}tmp/wrapper* rwk,
owner /{,lib/live/mount/overlay/}tmp/wrapper*/** rw,
# Scrypt used by I2P-Bote
@@ -89,6 +100,9 @@
# temp dir (non-service)
owner /{,lib/live/mount/overlay/}tmp/i2p-*.tmp/ rwm,
owner /{,lib/live/mount/overlay/}tmp/i2p-*.tmp/** rwkm,
+ # temp dir (Jetty default)
+ owner /{,lib/live/mount/overlay/}tmp/jetty-*/ rwm,
+ owner /{,lib/live/mount/overlay/}tmp/jetty-*/** rwkm,
# /graphs in the router console
owner /{,lib/live/mount/overlay/}tmp/imageio[0-9]*.tmp rwk,
diff --git a/debian/apparmor/usr.bin.i2prouter b/debian/apparmor/usr.bin.i2prouter
index 9fb11d452a..8b9f08da59 100644
--- a/debian/apparmor/usr.bin.i2prouter
+++ b/debian/apparmor/usr.bin.i2prouter
@@ -20,7 +20,7 @@
/bin/cat rix,
/bin/grep rix,
/bin/mkdir rix,
- /bin/ps rix,
+ /bin/ps rUx,
/bin/rm rix,
/bin/sed rix,
/bin/sleep rix,
@@ -34,7 +34,8 @@
/usr/bin/dirname rix,
/usr/bin/expr rix,
/usr/bin/id rix,
- /usr/bin/ldd rix,
+ # should replace this in i2prouter with something safer
+ /usr/bin/ldd rUx,
/usr/bin/tail rix,
/usr/bin/tr rix,
From b4e2619c3ba4fce54bc4eb35c7ab3a99d6cd7dd8 Mon Sep 17 00:00:00 2001
From: zzz
Date: Fri, 18 Jan 2019 11:35:36 +0000
Subject: [PATCH 10/34] Plugins: Fix loading of webapp configuration classes on
Jetty 9.4 by whitelisting them as allowed server classes (ticket #2385)
---
.../java/src/net/i2p/router/web/WebAppStarter.java | 5 ++++-
history.txt | 4 ++++
router/java/src/net/i2p/router/RouterVersion.java | 2 +-
3 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
index 94ac58d97d..34ab11b665 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/WebAppStarter.java
@@ -139,8 +139,11 @@ public class WebAppStarter {
if (classNames.length == 0)
classNames = wac.getDefaultConfigurationClasses();
String[] newClassNames = new String[classNames.length + 1];
- for (int j = 0; j < classNames.length; j++)
+ for (int j = 0; j < classNames.length; j++) {
newClassNames[j] = classNames[j];
+ // fix for Jetty 9.4 ticket #2385
+ wac.prependServerClass("-" + classNames[j]);
+ }
newClassNames[classNames.length] = WebAppConfiguration.class.getName();
wac.setConfigurationClasses(newClassNames);
}
diff --git a/history.txt b/history.txt
index 4901b436f8..b30b47f3e4 100644
--- a/history.txt
+++ b/history.txt
@@ -1,4 +1,8 @@
+2019-01-18 zzz
+ * Plugins: Fix loading of webapp configuration classes (ticket #2385)
+
2019-01-15 zzz
+ * Debian: AppArmor updates (ticket #2319)
* SusiMail:
- Fix sending mail with attachments (ticket #2373)
- Fix deleting attachments from drafts
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 098e16d499..14408f1ed4 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 = 17;
+ public final static long BUILD = 18;
/** for example "-test" */
public final static String EXTRA = "-rc";
From 344c81266650f955e64b9d41492602d79871ea42 Mon Sep 17 00:00:00 2001
From: zzz
Date: Fri, 18 Jan 2019 12:15:43 +0000
Subject: [PATCH 11/34] NTCP: Stop X25519KeyFactory on shutdown (ticket #2388)
---
history.txt | 1 +
router/java/src/net/i2p/router/RouterVersion.java | 2 +-
router/java/src/net/i2p/router/transport/TransportManager.java | 2 ++
3 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/history.txt b/history.txt
index b30b47f3e4..df4dad1282 100644
--- a/history.txt
+++ b/history.txt
@@ -1,4 +1,5 @@
2019-01-18 zzz
+ * NTCP: Stop X25519KeyFactory on shutdown (ticket #2388)
* Plugins: Fix loading of webapp configuration classes (ticket #2385)
2019-01-15 zzz
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index 14408f1ed4..987fc2f753 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 = 18;
+ public final static long BUILD = 19;
/** for example "-test" */
public final static String EXTRA = "-rc";
diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java
index a09e8986c6..070eb2b215 100644
--- a/router/java/src/net/i2p/router/transport/TransportManager.java
+++ b/router/java/src/net/i2p/router/transport/TransportManager.java
@@ -378,6 +378,8 @@ public class TransportManager implements TransportEventListener {
synchronized void shutdown() {
stopListening();
_dhThread.shutdown();
+ if (_xdhThread != null)
+ _xdhThread.shutdown();
Addresses.clearCaches();
TransportImpl.clearCaches();
}
From 272588d820db63cbb29759f36369d93696444b8e Mon Sep 17 00:00:00 2001
From: zzz
Date: Fri, 18 Jan 2019 14:32:28 +0000
Subject: [PATCH 12/34] Debian: Add Disco files, refresh patch for Jetty 9.4
---
debian-alt/disco/changelog | 1019 +++++++++++++++++
.../patches/0002-jetty-compatibility.patch | 14 +-
debian-alt/{sid => disco}/patches/series | 0
debian-alt/disco/rules | 221 ++++
debian-alt/doc/launchpad.txt | 3 +-
5 files changed, 1249 insertions(+), 8 deletions(-)
create mode 100644 debian-alt/disco/changelog
rename debian-alt/{sid => disco}/patches/0002-jetty-compatibility.patch (97%)
rename debian-alt/{sid => disco}/patches/series (100%)
create mode 100755 debian-alt/disco/rules
diff --git a/debian-alt/disco/changelog b/debian-alt/disco/changelog
new file mode 100644
index 0000000000..4c2a511cba
--- /dev/null
+++ b/debian-alt/disco/changelog
@@ -0,0 +1,1019 @@
+i2p (0.9.37-1ubuntu1) bionic; urgency=medium
+
+ * New upstream version 0.9.37
+
+ -- zzz on i2p (key signing) Fri, 05 Oct 2018 12:12:12 +0000
+
+i2p (0.9.36-2ubuntu1) bionic; urgency=medium
+
+ * New upstream version 0.9.36
+
+ -- zzz on i2p (key signing) Wed, 23 Aug 2018 12:12:12 +0000
+
+i2p (0.9.35-1ubuntu1) artful; urgency=medium
+
+ * New upstream version 0.9.35
+
+ -- zzz on i2p (key signing) Wed, 27 Jun 2018 12:12:12 +0000
+
+i2p (0.9.34-2ubuntu1) artful; urgency=medium
+
+ * New upstream version 0.9.34
+
+ -- zzz on i2p (key signing) Wed, 11 Apr 2018 12:12:12 +0000
+
+i2p (0.9.33-1ubuntu1) artful; urgency=medium
+
+ * New upstream version 0.9.33
+
+ -- zzz on i2p (key signing) Wed, 30 Jan 2018 12:12:12 +0000
+
+i2p (0.9.32-1ubuntu1) xenial; urgency=medium
+
+ * New upstream version 0.9.32
+
+ -- zzz on i2p (key signing) Wed, 08 Nov 2017 12:12:12 +0000
+
+i2p (0.9.31-1ubuntu1) xenial; urgency=medium
+
+ * New upstream version 0.9.31
+
+ -- zzz on i2p (key signing) Wed, 09 Aug 2017 12:12:12 +0000
+
+i2p (0.9.30-3ubuntu1) xenial; urgency=medium
+
+ * New upstream version 0.9.30
+
+ -- zzz on i2p (key signing) Wed, 03 May 2017 12:12:12 +0000
+
+i2p (0.9.29-1ubuntu1) trusty; urgency=medium
+
+ * New upstream version 0.9.29
+
+ -- zzz on i2p (key signing) Mon, 27 Feb 2017 12:12:12 +0000
+
+i2p (0.9.28-1ubuntu1) trusty; urgency=medium
+
+ * New upstream version 0.9.28
+
+ -- zzz on i2p (key signing) Tue, 13 Dec 2016 12:12:12 +0000
+
+i2p (0.9.27-1-1ubuntu1) trusty; urgency=medium
+
+ * New upstream version 0.9.27
+
+ -- zzz on i2p (key signing) Mon, 17 Oct 2016 12:12:12 +0000
+
+i2p (0.9.26-1ubuntu1) trusty; urgency=medium
+
+ * New upstream version 0.9.26
+
+ -- zzz on i2p (key signing) Tue, 07 Jun 2016 12:12:12 +0000
+
+i2p (0.9.25-1ubuntu1) trusty; urgency=medium
+
+ * New upstream version 0.9.25
+
+ -- zzz on i2p (key signing) Sat, 26 Mar 2016 12:12:12 +0000
+
+i2p (0.9.24-1ubuntu1) trusty; urgency=medium
+
+ * Upload to PPA
+
+ -- Kill Your TV Sat, 30 Jan 2016 14:12:27 +0000
+
+i2p (0.9.24-1) unstable; urgency=medium
+
+ * New upstream version 0.9.24
+
+ -- Kill Your TV Sat, 30 Jan 2016 12:08:27 +0000
+
+i2p (0.9.23-2) unstable; urgency=medium
+
+ * Backport of two fixes from after the release of 0.9.23
+ - debian/patches/0005-Console-Fix-escaping-of-plugin-description-on-config.patch
+ - debian/patches/0006-NetDb-Fix-deadlock-ticket-1722.patch
+ * AppArmor:
+ - Remove 'l' from the debian AppArmor profiles
+ - Allow writing to /tmp/imageio*, needed by graph creation on some systems
+
+ -- Kill Your TV Sun, 06 Dec 2015 14:28:23 +0000
+
+i2p (0.9.23-1) unstable; urgency=medium
+
+ * New Upstream Version
+ - Accelerate transition to Ed25519
+ - Fix some bugs soft restarting after a large clock shift (e.g. resume) (but more to do)
+ - Fix streaming retransmission timers that were dying, and related timer bugs
+ - Fix streaming connections rejected while tunnel is opening
+ - Fix rare i2psnark and UPnP deadlocks
+ - Fix lifetime participating bandwidth display in console
+ - Increase default outbound exploratory tunnel length to 3
+ - Use max of 2 not-failing peers in exploratory tunnels to improve build success
+ - Add support for hostnames prefixed with "www.";
+ - Store news feed items separately on disk, show on new /news page, limit display on home page to 2
+ - Increase probability of rekeying to EdDSA
+ - Detect for broken ECDSA support in Gentoo
+ - Console: Add a Java 6 warning, this is the last release to support Java 6
+ - Changes to prepare for Java 9 compatibility
+ - i2ptunnel: Pass Accept-Encoding header through client and server proxies, to allow end-to-end compression
+ - i2psnark: Increase piece size, piece count, and file count limits
+ - i2psnark: Save added and completed times
+ - i2psnark: Save magnet parameters across restart
+ - i2psnark: Don't delete .torrent file on errors at startup, rename to .torrent.BAD
+ - i2psnark: Add recheck, start, stop buttons on details pages
+ - i2psnark: Add option to disable "smart sort"
+ - Speed up IP address validation
+ - Separate streaming blacklists for ECDSA and EdDSA
+ - Translation updates
+ - Update GeoIP data (new installs and PPA only)
+
+ -- Kill Your TV Thu, 19 Nov 2015 12:41:36 +0000
+
+i2p (0.9.22-1) unstable; urgency=medium
+
+ * New Upstream Version
+ - Start migration to Ed25519 router info signatures
+ - Fix i2psnark getting stuck before download complete, and not deleting temp
+ files
+ - Fix excluded SSL ciphers in console
+ - Translation updates
+ - Update GeoIP data
+
+ -- Kill Your TV Sun, 13 Sep 2015 11:27:16 +0000
+
+i2p (0.9.21-2) unstable; urgency=medium
+
+ * Add exception to apparmor rules for scrypt, needed by I2P-Bote
+
+ -- Kill Your TV Sun, 02 Aug 2015 15:00:30 +0000
+
+i2p (0.9.21-1) unstable; urgency=medium
+
+ * New Upstream Version
+ - Add multisession support for dual-signature crypto on the same tunnels
+ - Use multisession for shared clients
+ - Increase default outbound bandwidth limit to 60 KBps
+ - Increase default maximum participating tunnels
+ - Floodfills will send database store acks directly if connected, for efficiency
+ - Set TCP keepalive on I2CP and SAM sockets
+ - More efficient decompression in HTTP proxy, use less threads
+ - Add support for fast extensions in i2psnark
+ - i2psnark only autostarts torrents that were running previously
+ - Add support for translated console news
+ - SSU fixes to compete better with NTCP for bandwidth when limited
+ - Fixes to prevent SSU stalls
+ - Wait for outbound tunnels before sending first leaseset to client, to
+ prevent dropping first message
+ - Clean up resources correctly when SAM stops
+ - Better error handling and notification when HTTP proxy is not running
+ - More i2ptunnel fixes at startup and shutdown of tunnels
+ - Fix total_size in i2psnark metadata message
+ - Restore dates in console news headers
+ - Several I2CP fixes
+ - Use same session for naming lookups in I2PSocketEepGet
+ - Increase max bandwidth to 16 MBps, add larger Bloom filter
+ - New floodfills will send their info to nearby floodfills to speed integration
+ - Apache Tomcat 6.0.44
+ - Translation updates
+ * Drop the following patches; included in 0.9.21:
+ - 0005-i2ptunnel-Don-t-connect-manager-to-router-in-constru.patch
+ - 0006-i2ptunnel-Don-t-call-startup-in-chained-constructor-.patch
+ - 0007-Define-I2PTunnelClientBase-stats-in-one-place.patch
+ - 0008-i2psnark-Fix-NPE-ticket-1602.patch
+
+
+ -- Kill Your TV Fri, 31 Jul 2015 20:01:42 +0000
+
+i2p (0.9.20-3) unstable; urgency=medium
+
+ * Add datagram exception to the apparmor profile
+
+ -- Kill Your TV Sat, 20 Jun 2015 11:22:28 +0000
+i2p (0.9.20-2) unstable; urgency=medium
+
+ [str4d]
+ * i2ptunnel: Don't connect manager to router in constructor (ticket #815)
+ * i2ptunnel: Don't call startup() in chained constructor (ticket #1593)
+ * Define I2PTunnelClientBase stats in one place
+
+ [killyourtv]
+ * Tighten apparmor rules for TMPDIR
+ * Add support for specifying limits to the initscript
+ * Fix NPE in I2PSnark (I2P Trac #1602)
+
+ -- Kill Your TV Sun, 14 Jun 2015 16:11:33 +0000
+
+i2p (0.9.20-1) unstable; urgency=medium
+
+ * New Upstream Version
+ - Add support for address book export
+ - Add support for SSL in HTTP server tunnel
+ - Allow class 'M' (64-128 KBps share bandwidth) to become floodfill
+ - Raise connection limits for new classes 'P' (512-2000 KBps share
+ bandwidth) and 'X' (over 2000 KBps)
+ - Add support for signed development builds
+ - Clock skew fixes
+ - Fixes and configuration for when IPv4 is firewalled but IPv6 still works
+ - Locking fixes for i2ptunnel clients to prevent hangs at startup
+ - Verify hostnames when reseeding
+ - Fix deletion of config files for deleted torrents in i2psnark
+ - Fix hangs fetching proxy.i2p local resources via Privoxy
+ - Fixes for duplicate shared clients
+ - Fix for occasional page truncation in HTTP client
+ - Fixes for handling corrupted SSU packets
+ - Fix closing of SAM sessions when I2P session closes
+ - Reduce NTCP threads
+ - Eliminate SimpleScheduler threads
+ - Add continent-based NTP servers as fallbacks for country-based ones
+ - Remove all default non-SSL reseed hosts
+ - Disable fallback to non-su3 reseeding
+ - Several fixes in streaming for better "loopback" performance,
+ may or may not help in real world
+ - Reduce latency in i2ptunnel
+ - Add a larger Bloom filter for very high bandwidth and memory
+ - Add Bloom filter warning when configured for high bandwidth but not
+ enough memory
+ - Reduce max netdb search depth to reduce floodfill load
+ - Improved header processing and error handling in i2ptunnel HTTP server
+ - Better error handling and user feedback when HTTP client tunnel is
+ disabled
+ - More changes to improve floodfill capacity
+ - New configuration for forcing IPv4 (only) to firewalled on /confignet
+ - New configuration for floodfill on /configadvanced
+ - Show separate IPv4 and IPv6 status in summary bar when appropriate
+ - Better handling of corrupt SSU packets
+ - Jetty 8.1.17.v20150415
+ - Translation updates
+ - Update GeoIP data (new installs and PPA only)
+
+ -- Kill Your TV Tue, 02 Jun 2015 18:36:42 +0000
+
+i2p (0.9.19-4) unstable; urgency=medium
+
+ * Re-enable systemd unit file
+
+ -- Kill Your TV Thu, 30 Apr 2015 22:54:56 +0000
+
+i2p (0.9.19-3) unstable; urgency=medium
+
+ * A couple more apparmor profile tweaks
+
+ -- Kill Your TV Tue, 14 Apr 2015 20:35:39 +0000
+
+i2p (0.9.19-2) unstable; urgency=medium
+
+ * Fix usr.bin.i2prouter apparmor profile
+
+ -- Kill Your TV Tue, 14 Apr 2015 12:58:22 +0000
+
+i2p (0.9.19-1) unstable; urgency=medium
+
+ * New Upstream Version
+ - Floodfill performance improvements
+ - Easier ways to reseed manually from a file or URL
+ - New way to export reseed data for others
+ - Support for installing plugin from file
+ - Fixes for high CPU usage in floodfills
+ - i2ptunnel locking fixes
+ - Fixes in read timeout handling in streaming
+ - Update to UPnP library 3.0
+ - Improve tracking of floodfill lookup success
+ - Direct router info lookups if connected to floodfill
+ - Auto-adjustment of i2psnark tunnel quantity
+ - Increase exploratory tunnel quantity when floodfill
+ - Increase min and default bandwidth for i2psnark
+ - Improved strategies for dropping jobs on high job lag to prevent overload
+ - Apache Tomcat 6.0.43
+ - Translation updates
+ - Update GeoIP data
+ * debconf translation updates
+ * Minor updates to AppArmor profiles
+
+ -- Kill Your TV Sun, 12 Apr 2015 22:34:40 +0000
+
+i2p (0.9.18-1) unstable; urgency=medium
+
+ * New Upstream Version
+ * Daemon runs confined with AppArmor
+ Bug Fixes
+ - Fix parsing of ECDSA address helper in HTTP client proxy
+ - Fix news last-modified processing which prevented notification of update
+ - Improve handling of UPnP device changes
+ - Don't hang at startup forever waiting for entropy
+ - Possible fixes for high CPU usage in NTCP
+ Other
+ - Publish router info faster when address costs change
+ - Start i2ptunnel 90s sooner
+ - Accept tunnels 10m sooner
+ - Increase exploratory tunnel quantity during initial exploration
+ - Latency reductions in several places
+ - Add startup browser configuration with advanced config
+ routerconsole.browser
+ - Persistent leaseset keys to eliminate correlation with restart
+ - Faster unchoking of new peers in i2psnark
+ - More aggressive throttling of lookups at floodfills
+ - Tunnel build request record refactoring
+ - Reduce thread usage in i2ptunnel
+ - Add i2ptunnel server option for multihomed sites
+ - Disallow some common I2P application ports as router ports
+ - Increase connection limits for fast routers
+ - Add Save-As button for SusiMail messages
+ - Use 'hidden service' terminology in the console
+ - Encrypted netdb lookups for 32-bit x86
+ - Translation updates
+
+ -- Kill Your TV Sun, 22 Feb 2015 22:23:50 +0000
+
+i2p (0.9.17-1) unstable; urgency=medium
+
+ * New Upstream Version
+ Changes
+ - Signed news
+ - ECDSA default for new server tunnels
+ - Reseeding now SSL-only by default
+ Bug Fixes
+ - Fix SSU sending corrupt ack-only packets with partial bitfields
+ - Fix SSU inbound connection fail from non-DSA router
+ - Don't select incompatible peers if we are a non-DSA router
+ - Fix EdDSA signature verification bug
+ - Set I2NP lookup type flags in all cases, not just when a reply tunnel is used
+ - Stop i2ptunnel server acceptor thread after close
+ - Fix bug preventing some plugins from stopping completely
+ - Fix SAM v3 bug causing failures in incoming connections
+ Other
+ - Add a warning in the console sidebar if ECDSA not supported
+ - Log warnings for Java 6 that we will eventually require Java 7
+ - Don't let proxied routers auto-floodfill
+ - Don't resend SSU acks that are too old
+ - Don't publish direct info in SSU address if introducers are required
+ - New default opentrackers in i2psnark
+ - Add support for specifiying data directory per-torrent in i2psnark
+ - Changes in streaming accept() error behavior
+ - Minor blockfile format changes
+ - New option for persistent random key to preserve peer ordering across restarts
+ - Translation updates
+ - Update GeoIP data
+
+ -- Kill Your TV Sun, 30 Nov 2014 22:20:06 +0000
+
+i2p (0.9.16-1) unstable; urgency=medium
+
+ * New Upstream Version
+ - Add support for stronger Router Info signatures
+ - Encrypt RI lookups and responses on faster boxes
+ - Require I2CP authorization for all messages when enabled (requires 0.9.11
+ or higher client)
+ - Disable TLSv3 and older ciphers for reseeding and other uses of SSL
+ - Use ECDSA by default for i2ptunnel IRC, SOCKS-IRC, and standard client
+ tunnels
+ - Don't prefer floodfills in some countries
+ - New column sorting, set-all priority buttons, and upload ratio display in
+ i2psnark
+ - Increase i2psnark tunnel default to 3 hops
+ - Implement bundling of multiple fragments in a single SSU message for
+ efficiency
+ - New add-to-addressbook links on netdb leaseset page
+ - Implement I2NP DatabaseLookupMessage search type field to improve lookup
+ efficiency
+ - CPUID fixes and updates for recent processors
+ - i2psnark fix magnet links with %-encoding
+ - Improve handling of SSU socket closing out from under us (hopefully fix
+ 100% CPU)
+ - SSU bitfield handling fixes
+ - Fix HTTP header issues in i2psnark
+ - Fix rare NPE when building garlic message
+ - Fix console lockups (hopefully)
+ - Fix i2ptunnel js confirm-delete
+ - Move router data structures from i2p.jar to router.jar (breaks i2pcontrol
+ plugin)
+ - New router keys now stored in router.keys.dat (privKeys.dat format)
+ instead of router.keys
+ - Improve handling of unsupported encryption throughout
+ - More error checking of client I2CP messages by the router
+ - Initial work on hooks for pluggable transports
+ - Enforce request timestamp in tunnel build messages
+ - Re-enable message status in streaming, but treat no leaseset as a soft
+ failure for now
+ - Return unused DH keypairs to the pool for efficiency
+ - Raise failsafe tagset limit and improve deletion strategy when hit
+ - Change eepsite Jetty threadpool and queue configuration
+ - NTCP establishment refactoring in prep for NTCP2 and PT
+ - Jetty 8.1.16-v20140903
+ - Translation updates
+ - Update GeoIP data
+
+i2p (0.9.15-1) unstable; urgency=medium
+
+ * New Upstream release
+ - Add support for Ed25519 signatures
+ - i2psnark move to separate config file for each torrent to better support
+ per-torrent settings
+ - Add i2psnark support for data outside the i2psnark/ directory
+ - Enable stronger signatures (su3 format) for plugins
+ - Speed up SSU introductions by responding to hole punch messages
+ - Several improvements in SAM efficiency
+ - More HTML escaping and form submission fixes in the console and i2psnark
+ - Streaming fixes for long signatures
+ - i2psnark fixes for file name character mapping when seeding
+ - I2PTunnel fixes stopping client tunnels
+ - I2PTunnel fix updating options on a running delay-open client tunnel
+ - Re-enable plugin installation via the console, removed in 0.9.14
+ - i2psnark now remembers uploaded count across restarts
+ - i2psnark increase max piece size to 8 MB
+ - i2psnark several UI fixes
+ - Prohibit SSU peer test requests unless a connection is established
+ - i2ptunnel add support for local SSL connections for standard and IRC
+ client tunnels
+ - Console and log warnings for unavailable crypto
+ - More consistent routing for Delivery Status Messages to reduce network
+ connections
+ - Disable external entities in UPnP XML parser
+ - Translation updates
+ - Update GeoIP data
+
+ -- Kill Your TV Sun, 21 Sep 2014 00:07:36 +0000
+
+i2p (0.9.14.1-1) unstable; urgency=medium
+
+ * New upstream point release, 0.9.14.1
+ - Updates to geoip.txt and geoipv6.dat.gz based on Maxmind GeoLite Country
+ database from 2014-08-06.
+ - Console:
+ + Fix update buttons
+ + Don't filter parameter names starting with "nofilter_"
+ + Re-allow configadvanced, news URL, and unsigned update URL if
+ routerconsole.advanced=true
+ + Re-allow plugin install if routerconsole.advanced=true or
+ routerconsole.enablePluginInstall=true
+ + Only allow whitelisted plugin signers, unless
+ routerconsole.allowUntrustedPlugins=true
+ + Re-allow clients.config changes if routerconsole.advanced=true or
+ routerconsole.enableClientChange=true
+ + More escaping
+ - i2psnark: Fix add torrent form
+ - ExecNamingService: Remove
+ - Plugins: Add whitelist of keys
+
+ -- Kill Your TV Sat, 09 Aug 2014 23:09:33 +0000
+
+i2p (0.9.14-1) unstable; urgency=high
+
+ * New upstream release, 0.9.14
+ * Fix several XSS issues
+ - Disable changing news feed URL from UI
+ - Disable plugin install
+ - Disable setting unsigned update URL from UI
+ - Disable clients.config editing from the UI
+ - Add Content-Security-Policy and X-XSS-Protection headers
+ - Disable unused ExecNamingService (thx joernchen of Phenoelit)
+ * Bug fixes
+ - Fix tunnel building so it doesn't get "stuck" on a single pool
+ - Reject participating tunnels when hidden
+ - Several i2psnark improvements and fixes (GUI and DHT), including changes
+ for better compatibility with Vuze
+ * Other
+ - Reseeding now fetches a signed zip file containing router infos for
+ security and speed
+ - Use JVM's AES implementation if it is faster
+ - More advanced options shown in the i2ptunnel edit pages
+ - Per-message reliabilitiy settings in I2CP and error propagation back
+ from router to client
+ - Lots of findbugs fixes and cleanups
+ - Support signature types in SAM, bump rev to 3.1
+ - New event log page in console
+ - Jetty 8.1.15.v20140411
+ - Tomcat 6.0.41
+
+ -- Kill Your TV Sat, 26 Jul 2014 23:23:36 +0000
+
+i2p (0.9.13-1) unstable; urgency=medium
+
+ * New Upstream release
+ * debconf: New Slovak translation
+
+ -- Kill Your TV Thu, 22 May 2014 19:08:45 +0000
+
+i2p (0.9.12-2) unstable; urgency=low
+
+ * Re-enable i2p-docs package
+ * Have libjbigi package depend on i2p-router
+ * Remove ${misc:Depends} from the i2p dependencies to avoid hard-depending
+ on i2p-router (= ${source:Version}. This prevents users from trying dev
+ builds using "dpkg -i i2p-router-${devbuild}_all.deb. The i2p package
+ already depended on i2p-router.
+
+ -- Kill Your TV Sun, 06 Apr 2014 16:27:31 +0000
+
+i2p (0.9.12-1) unstable; urgency=medium
+
+ * New upstream release
+
+ -- Kill Your TV Mon, 31 Mar 2014 19:07:54 +0000
+
+i2p (0.9.11-3) unstable; urgency=medium
+
+ * Enable systemd for unstable and saucy|trusty
+ * Fix postinst
+
+ -- Kill Your TV Tue, 11 Mar 2014 00:45:52 +0000
+
+i2p (0.9.11-1) unstable; urgency=medium
+
+ * New release
+ * Debconf: New Korean and Polish translations
+
+ -- Kill Your TV Sat, 09 Feb 2014 00:00:00 +0000
+
+i2p (0.9.10-1) unstable; urgency=medium
+
+ * New release
+ * Remove /var/lib/i2p when i2p package is purged.
+ * Bump standards version to 3.9.5 (no changes needed)
+
+ -- Kill Your TV Wed, 22 Jan 2014 16:00:24 +0000
+
+i2p (0.9.9-1) unstable; urgency=medium
+
+ * New Upstream release
+ * debconf:
+ - Updated French translation
+ - New Romanian translation
+
+ -- Kill Your TV Sat, 07 Dec 2013 18:17:24 +0000
+
+i2p (0.9.8-1) unstable; urgency=low
+
+ * New Upstream Version
+ * Debconf: updated Swedish translation
+
+ -- Kill Your TV Mon, 30 Sep 2013 16:14:40 +0000
+
+i2p (0.9.7.1-1) unstable; urgency=low
+
+ * New upstream version 0.9.7.1
+ * Compress packages with xz
+
+ -- Kill Your TV Sat, 10 Aug 2013 22:10:08 +0000
+
+i2p (0.9.7-2) unstable; urgency=low
+
+ * Bugfix: Add missing ; to i2prouter script.
+ * Test scripts with "sh -n" in the build target
+
+ -- Kill Your TV Tue, 16 Jul 2013 11:08:48 +0000
+
+i2p (0.9.7-1) unstable; urgency=low
+
+ * New upstream release
+ * debconf:
+ - New Chinese, Portuguese, and Turkish translations
+ - Russian translation updates
+
+ -- Kill Your TV Mon, 15 Jul 2013 19:35:09 +0000
+
+i2p (0.9.6-1) unstable; urgency=low
+
+ * New upstream release
+ * i2prouter: allow overrides to be set in /etc/default/i2p
+
+ -- Kill Your TV Mon, 27 May 2013 00:00:00 +0000
+
+i2p (0.9.5-2) unstable; urgency=low
+
+ * debian/i2p.postinst: Explicitly set permissions on /etc/i2p/wrapper.config
+ to compensate for stricter umasks.
+
+ -- Kill Your TV Sun, 31 Mar 2013 12:50:17 +0000
+
+i2p (0.9.5-1) unstable; urgency=low
+
+ * New Upstream release
+ * Drop debian/patches/0007-backported-news-fix.patch and
+ debian/patches/#0006-remove-izpack.patch
+ * Spanish debconf update
+
+ -- Kill Your TV Fri, 08 Mar 2013 23:04:51 +0000
+
+i2p (0.9.4-3) unstable; urgency=low
+
+ * Backport fix from MTN for ticket #817
+
+ -- Kill Your TV Sat, 22 Dec 2012 13:07:47 +0000
+
+i2p (0.9.4-2) unstable; urgency=low
+
+ * Add missing build-dep on libservice-wrapper-java
+
+ -- Kill Your TV Mon, 17 Dec 2012 20:40:07 +0000
+
+i2p (0.9.4-1) stable; urgency=low
+
+ * explicitly prefer openjdk-*-headless over default-jre-headless. Debian
+ Squeeze has default-jre-headless set to gij. Performance with gij is
+ subpar. We can't force a depend on openjdk since kFreeBSD does not include
+ it (yet).
+ * French Debconf translation updates
+ * Initscript: Don't display a warning if /var/run/i2p contains files after
+ shutdown.
+ * Upsteam changelog (full details in history.txt):
+ - Add per-destination outbound priorities
+ - Fix major bug that reduced SSU connection limits which reduced tunnel
+ build success rates
+ - Fix bug with external I2CP that prevented some external apps from working
+ - Fixed several bugs in i2psnark DHT
+ - Fixed bug in i2psnark PEX that inflated peer counts
+ - Handle dropped I2CP messages better
+ - Reduce overhead of I2CP messages
+ - Enforce max size in transport outbound message queues
+ - Fix a bug that would drop messages of exactly 512 bytes in SSU
+ - More performance improvements, memory reduction, and object churn reduction
+ - Better detection of network disconnections
+ - Further improvements in the SSU transport
+ - Add console password form
+ - Convert http proxy and console from basic to digest authentication for added security
+ - Improved verification of console form submissions, using jsp sessions.
+ Cookies may now be required on forms, except when the console password is
+ enabled
+ - Initial work on new interfaces to manage applications started via
+ clients.config
+ - Increase minimum peer port to 1024
+ - Increase granularity of bandwidth limiter for smoother transmissions
+ - Translation updates: Chinese, French, German, Italian, Polish,
+ Portuguese, Swedish, and Ukrainian
+
+ -- Kill Your TV Mon, 17 Dec 2012 23:59:59 +0000
+
+i2p (0.9.3-1) stable; urgency=low
+
+ * New Upstream release
+ * Upstream changelog (full details in history.txt):
+ - Active Queue Management
+ - I2PSnark DHT: Several bug fixes, enable by default.
+ - Priority queues
+ - Several SSU fixes including memory leak, and better handling of routers
+ behind firewalls that change UDP ports; additional defenses for malicious
+ packets.
+ - Fix piece selection (rarest-first) bugs in i2psnark
+ - Fix bug causing multiple browsers to open at startup
+ - Improvements in caching
+ - Several synchronization fixes and lock contention reduction
+ - Major reduction in SSU buffers memory use
+ - Fix streaming connection timeout back to 1 minute, was inadvertently
+ changed to 5 minutes; set i2ptunnel server read timeout to 5 minutes, was
+ unlimited
+ - Improved defenses in i2ptunnel for "darkloris"
+ - More validation at torrent creation in i2psnark
+ - Several parameter changes in SSU to improve throughput
+ - New event log for major events including restarts; show multiple restart
+ lines on graphs
+ - Remove duplicate messages from logs
+ - Don't respond to blocked streaming connections with a reset, just drop
+ - Remove all uses of inefficient SimpleTimer
+ - More checks for valid IPs and ports entered in console
+ - Fix bug that wasted a lot of entropy
+ - Translation updates: Italian, Portuguese, Spanish, Swedish
+ - Add non-NIO configuration in jetty.xml, recommended for Java 5
+ - Update GeoIP data
+
+ -- Kill Your TV Sat, 27 Oct 2012 16:47:37 +0000
+
+i2p (0.9.2-2) stable; urgency=high
+
+ * Fix stupid bug in i2prouter
+
+ -- Kill Your TV Sat, 22 Sep 2012 13:57:39 +0000
+
+i2p (0.9.2-1) stable; urgency=low
+
+ * New upstream release (see history.txt for details)
+
+ -- Kill Your TV Fri, 21 Sep 2012 18:13:32 +0000
+
+i2p (0.9.1-1) stable; urgency=low
+
+ * New upstream version 0.9.1
+ * Don't depend on Debian's/Ubuntu's version of Jetty. Jetty6 is going away
+ in the next Debian stable, so we'll switch to our libs sooner than later.
+ * Debconf
+ - New Greek translation
+ - New Italian translation
+ - New Hungarian translation
+ * Initscript
+ - Add graceful option
+ - Change exit statuses
+
+ -- Kill Your TV Mon, 30 Jul 2012 17:41:04 +0000
+
+i2p (0.9-1) stable; urgency=low
+
+ * New Upstream Version
+
+ -- Kill Your TV Wed, 02 May 2012 16:33:11 +0000
+
+i2p (0.8.13-2) stable; urgency=low
+
+ * Fix bug in postinst cause by changes to adduser's behaviour.
+
+ -- Kill Your TV Mon, 09 Apr 2012 16:25:19 +0000
+
+i2p (0.8.13-1) stable; urgency=low
+
+ * New upstream version 0.8.13
+ * Packages are compressed with bzip2
+ * Remove debian/patches/0005-EepGet_correct_status.patch
+ * Bump standards version to 3.9.3 (no changes to source needed)
+ * Debconf:
+ - New Czech language translation
+ - Updated German, Polish, Russian, and Ukrainian translations
+
+ -- Kill Your TV Mon, 27 Feb 2012 21:06:56 +0000
+
+i2p (0.8.12-2) stable; urgency=low
+
+ * postinst: Don't fail if the i2psvc group doesn't exist
+
+ -- Kill Your TV Fri, 06 Jan 2012 18:43:09 +0000
+
+i2p (0.8.12-1) stable; urgency=low
+
+ * New upstream I2P release
+ * Debconf:
+ - add wrapper.java.maxmemory from wrapper.config
+ - The warning about the daemon user needing to exist was confusing to some
+ that assumed this meant that i2psvc had to exit. This warning has been
+ clarified.
+ - Spanish, Swedish, Ukrainian translation updates
+ * Initscript changes/fixes:
+ - increase shutdown wait-time in initscript
+ - renumber "wrapper.additional" lines (since gaps are allowed with newer
+ wrapper versions)
+ - move I2PTEMP to /tmp/i2p-daemon
+ - move router.ping to /var/run/i2p
+ - various other clean-ups
+ - explicity redirect errors to stderr
+ * maintainer scripts:
+ - postinst: rewrite the handling of an existing i2psvc account
+ - postrm: remove /etc/default/i2p if the package is purged
+
+ -- Kill Your TV Fri, 06 Jan 2012 02:49:03 +0000
+
+i2p (0.8.11-2) stable; urgency=medium
+
+ * Fix STUPID bug running I2P with i2prouter. Thanks soundwave.
+
+ -- Kill Your TV Tue, 08 Nov 2011 20:02:05 +0000
+
+i2p (0.8.11-1) stable; urgency=low
+
+ * New Upstream Version
+ * sv and uk debconf translation updates
+
+ -- Kill Your TV Mon, 07 Nov 2011 19:20:15 +0000
+
+i2p (0.8.10-1) stable; urgency=medium
+
+ * New upstream version
+
+ -- Kill Your TV Thu, 20 Oct 2011 05:25:04 +0000
+
+i2p (0.8.9-1) stable; urgency=medium
+
+ * New upstream version
+
+ -- Kill Your TV Tue, 11 Oct 2011 19:55:08 +0000
+
+i2p (0.8.8-3) UNRELEASED; urgency=low
+
+ * Add dump option to initscript
+
+ -- Kill Your TV Tue, 06 Sep 2011 12:42:22 +0000
+
+i2p (0.8.8-2) stable; urgency=medium
+
+ * Backport patch from mtn 04ec606 to fix trac #515
+ * Fix trac ticket #514 ("debconf values are overwritten upon
+ installation")
+ * Fix initscript bug that caused the encoding to be ANSI when the router
+ started at boot.
+
+ -- Kill Your TV Fri, 02 Sep 2011 23:32:32 +0000
+
+i2p (0.8.8-1) stable; urgency=low
+
+ * New Upstream Version
+
+ -- Kill Your TV Tue, 23 Aug 2011 20:24:22 +0000
+
+i2p (0.8.7-6) UNRELEASED; urgency=low
+
+ * Add ttf-dejavu-core and ttf-dejavu-extra as dependencies so that graphs on
+ headless systems can be generated.
+
+ -- Kill Your TV Thu, 18 Aug 2011 15:50:59 +0000
+
+i2p (0.8.7-5) stable; urgency=low
+
+ * Depend on default-jre-headless | java5-runtime-headless |
+ java6-runtime-headless instead of the non-headless versions. Sure the
+ -headless packages fulfilled the dependency, but this way it should pull in
+ the headless package by default.
+ * Remove unused lock from core/java/src/net/i2p/crypto/ElGamalEngine.java to
+ fix lock-ups on arm/ppc CPUs
+
+ -- Kill Your TV Mon, 01 Aug 2011 17:51:14 +0000
+
+i2p (0.8.7-4) stable; urgency=low
+
+ * Change to allow jbigi to be built on non-x86
+
+ -- Kill Your TV Tue, 26 Jul 2011 23:13:00 +0000
+
+i2p (0.8.7-3) stable; urgency=low
+
+ * When i2p-doc package is installed, add the Javadoc link to the router
+ console.
+
+ -- Kill Your TV Tue, 28 Jun 2011 22:39:46 +0000
+
+i2p (0.8.7-2) stable; urgency=low
+
+ * Remove --with quilt from debian/rules. This is only meant for use in mtn
+
+
+ -- Kill Your TV Mon, 27 Jun 2011 16:41:40 +0000
+
+i2p (0.8.7-1) stable; urgency=low
+
+ * The "W00t! My debs are official!" release
+ * New upstream release. See /usr/share/doc/i2p/changelog.gz for the details.
+ * Drop from debian/patches: 0002-sync-countries, 0006-i2p-jetty,
+ 0007-eepget-redirections, 0008-config-news, 0009-jetty-snark-disable and
+ re-work the existing patches.
+ * Debconf translations (thanks guys!)
+ - Russian (by hiddenz@mail.i2p)
+ - German & Spanish (by m1xxy@mail.i2p)
+
+ -- Kill Your TV Mon, 27 Jun 2011 12:38:59 +0000
+
+i2p (0.8.6-7) stable; urgency=low
+
+ * Fix bug in maintainer script that caused upgrade to fail on some systems.
+
+ -- Kill Your TV Sun, 29 May 2011 15:53:04 +0000
+
+i2p (0.8.6-6) stable; urgency=low
+
+ * Remove extraneous cruft from debian/rules from back when cpuid couldn't be
+ built for i386
+ * Ship our own router.config with router.updatesDisabled=true to prevent
+ upgrades to be performed by the router itself. Per Debian policy, upgrades
+ *must* take place via the package manager.
+ * Backported eepget fix
+ * Backported news fix
+
+ -- Kill Your TV Sat, 28 May 2011 10:23:51 +0000
+
+i2p (0.8.6-5) stable; urgency=low
+
+ * Remove /etc/i2p/wrapper.service. Changes have been moved to the
+ initscript.
+ * Don't disable browser launch. This is handled automatically for the i2psvc
+ user.
+ * Create debian/copyright dynamically at build time
+ * Don't ship the standalone jetty-i2psnark
+ * Create split package so that the wrapper isn't required
+ * Install missing certificates directory
+
+ -- Kill Your TV Fri, 27 May 2011 03:48:56 +0000
+
+i2p (0.8.6-4) stable; urgency=low
+
+ * backported patch from 9a26dcaef3687ff7fa08cf3b3eb2180ebb2dedde to fix
+ missing "addWebApplications" in Jetty.
+
+ -- Kill Your TV Sun, 22 May 2011 19:00:37 +0000
+
+i2p (0.8.6-3) stable; urgency=low
+
+ [Kill Your TV]
+ * Creating libjbigi-jni packages again. Backported patch from MTN so that
+ jbigi can be built for i386
+ * Drop build-dep on unzip since jbigi can be built.
+ * Check to see if doc/libjbigi-jni is a directory and remove it. It is
+ supposed to be a symlink to doc/i2p
+ * Don't chown $I2P to i2psvc
+ * Add Build-Dep for tor-geoipdb and remove from debian/
+ * Add launch-i2psnark to doc/examples
+ * Remove obsolete build-dep on default-jdk-builddep
+ [Karl Goetz]
+ * Move adduser to depends from pre-depends
+ * Tidy postinst
+
+ -- Kill Your TV Fri, 20 May 2011 22:03:52 +0000
+
+i2p (0.8.6-2) stable; urgency=low
+
+ * Fix permissions bug for /var/run/i2p, reported by "signhere" on IRC
+
+ -- Kill Your TV Tue, 17 May 2011 16:30:29 +0000
+
+i2p (0.8.6-1) stable; urgency=low
+
+ * New upstream version
+
+ -- Kill Your TV Tue, 17 May 2011 12:30:07 +0000
+
+i2p (0.8.5-4) stable; urgency=low
+
+ * Correct lintian error
+
+ -- Kill Your TV Sun, 15 May 2011 16:20:39 +0000
+
+i2p (0.8.5-3) stable; urgency=low
+
+ * *Sigh* Set debian/i2p.default run_daemon to false
+
+ -- Kill Your TV Fri, 29 Apr 2011 09:54:39 +0000
+
+i2p (0.8.5-2) stable; urgency=low
+
+ * Change debconf priority to medium.
+ * RUN_DAEMON defaults to false. Earlier versions defaulted to true. Since
+ the priority is changing, this should as well.
+ * Split jbigi into its own source package
+ * Update geoip.txt
+ * Update Suggests:
+
+ -- Kill Your TV Mon, 25 Apr 2011 17:00:43 +0000
+
+i2p (0.8.5-1) stable; urgency=low
+
+ * New upstream
+
+ -- Kill Your TV Mon, 18 Apr 2011 15:41:42 +0000
+
+i2p (0.8.4-4) stable; urgency=low
+
+ * Update geoip from tor-0.2.2.23-alpha
+
+ -- Kill Your TV Sat, 09 Apr 2011 23:34:11 +0000
+
+i2p (0.8.4-3) stable; urgency=low
+
+ * Back out upgrade 'do you want to reboot' logic since it's utterly borked.
+
+ -- Kill Your TV Thu, 17 Mar 2011 18:54:09 +0000
+
+i2p (0.8.4-2) stable; urgency=low
+
+ * Stop including /usr/share/i2p/lib/jbigi.jar.
+ * Compile a dynamic jbigi and create a new package, libjbigi-jni. Since I
+ can't get jcpuid to compile I take this library from jbigi.jar.
+ Unfortunately it was not compiled with -fPIC, causing lintian to complain.
+ Additionally it is a 32bit compile, forcing libc-i386 to be installed on
+ amd64 boxes.
+ * Add dependency on libc-i386 because of jcpuid and a build-dep on unzip for
+ the same reason.
+ * Don't display errors generated from chowning files that don't exist.
+ * Bug fix: Somehow I missed packaging the geoip information before. Oops.
+ * Bug fix: Add history.txt to /usr/share/i2p. I didn't realize it was shown
+ in the console at /help.
+ * Since I'm packaging the missing geoip information, I use an updated
+ geoiodb from tor (taken from Debian package tor-geoipdb version
+ 0.2.2.22-alpha-1)
+ * Patching countries.txt to add entries that are in Maxmind's database.
+ * Now using debconf to ask about running as a daemon.
+ * From this point forward, users will be asked to confirm that they want to
+ upgrade this package, due to it requiring a router reboot.
+ * Updated README.Debian to better explain differences compared with
+ upstream.
+ * Add history.txt to /usr/share/i2p
+
+ -- Kill Your TV Sun, 13 Mar 2011 10:45:47 +0000
+
+i2p (0.8.4-1) stable; urgency=low
+
+ * New upstream version, monotone revision
+ fea6969d789a6b85396439be9906abb9b4a4a405
+
+ -- Kill Your TV Thu, 03 Mar 2011 11:37:37 +0000
+
+i2p (0.8.3-2) testing; urgency=low
+
+ * Minor changes to initscript
+
+ -- Kill Your TV Wed, 26 Jan 2011 14:29:50 +0000
+
+i2p (0.8.3-1) testing; urgency=low
+
+ * New upstream
+
+ -- Kill Your TV Mon, 24 Jan 2011 20:23:38 +0000
+
+i2p (0.8.2-1) testing; urgency=low
+
+ * Initial packaging
+
+ -- Kill Your TV Sun, 23 Jan 2011 00:03:31 +0000
+
diff --git a/debian-alt/sid/patches/0002-jetty-compatibility.patch b/debian-alt/disco/patches/0002-jetty-compatibility.patch
similarity index 97%
rename from debian-alt/sid/patches/0002-jetty-compatibility.patch
rename to debian-alt/disco/patches/0002-jetty-compatibility.patch
index 022c1a55bf..95cd92d91e 100644
--- a/debian-alt/sid/patches/0002-jetty-compatibility.patch
+++ b/debian-alt/disco/patches/0002-jetty-compatibility.patch
@@ -54,8 +54,8 @@
+import javax.servlet.ServletRequest;
import net.i2p.I2PAppContext;
- import net.i2p.app.ClientAppManager;
-@@ -46,6 +47,7 @@
+ import net.i2p.app.ClientApp;
+@@ -48,6 +49,7 @@
import org.eclipse.jetty.security.HashLoginService;
import org.eclipse.jetty.security.ConstraintMapping;
import org.eclipse.jetty.security.ConstraintSecurityHandler;
@@ -63,7 +63,7 @@
import org.eclipse.jetty.security.authentication.DigestAuthenticator;
import org.eclipse.jetty.server.AbstractConnector;
import org.eclipse.jetty.server.ConnectionFactory;
-@@ -932,6 +934,8 @@
+@@ -959,6 +961,8 @@
} else {
HashLoginService realm = new CustomHashLoginService(JETTY_REALM, context.getContextPath(),
ctx.logManager().getLog(RouterConsoleRunner.class));
@@ -72,7 +72,7 @@
sec.setLoginService(realm);
sec.setAuthenticator(authenticator);
String[] role = new String[] {JETTY_ROLE};
-@@ -939,7 +943,7 @@
+@@ -966,7 +970,7 @@
String user = e.getKey();
String pw = e.getValue();
Credential cred = Credential.getCredential(MD5_CREDENTIAL_TYPE + pw);
@@ -81,7 +81,7 @@
Constraint constraint = new Constraint(user, JETTY_ROLE);
constraint.setAuthenticate(true);
ConstraintMapping cm = new ConstraintMapping();
-@@ -959,7 +963,7 @@
+@@ -986,7 +990,7 @@
try {
// each char truncated to 8 bytes
String user2 = new String(b2, "ISO-8859-1");
@@ -90,7 +90,7 @@
constraint = new Constraint(user2, JETTY_ROLE);
constraint.setAuthenticate(true);
cm = new ConstraintMapping();
-@@ -970,7 +974,7 @@
+@@ -997,7 +1001,7 @@
// each UTF-8 byte as a char
// this is what chrome does
String user3 = new String(b1, "ISO-8859-1");
@@ -99,7 +99,7 @@
constraint = new Constraint(user3, JETTY_ROLE);
constraint.setAuthenticate(true);
cm = new ConstraintMapping();
-@@ -1045,8 +1049,8 @@
+@@ -1072,8 +1076,8 @@
}
@Override
diff --git a/debian-alt/sid/patches/series b/debian-alt/disco/patches/series
similarity index 100%
rename from debian-alt/sid/patches/series
rename to debian-alt/disco/patches/series
diff --git a/debian-alt/disco/rules b/debian-alt/disco/rules
new file mode 100755
index 0000000000..775815e668
--- /dev/null
+++ b/debian-alt/disco/rules
@@ -0,0 +1,221 @@
+#!/usr/bin/make -f
+
+# Quoting Policy version 3.9.2.0, 2011-04-07 section 4.9:
+
+# /start quote
+# For some packages, notably ones where the same source tree is compiled in
+# different ways to produce two binary packages, the build target does not make
+# much sense. For these packages it is good enough to provide two (or more)
+# targets (build-a and build-b or whatever) for each of the ways of building the
+# package, and a build target that does nothing. The binary target will have to
+# build the package in each of the possible ways and make the binary package out
+# of each.
+# ...
+# When a package has a configuration and build routine which takes a long time,
+# or when the makefiles are poorly designed, or when build needs to run clean
+# first, it is a good idea to touch build when the build process is complete.
+# This will ensure that if debian/rules build is run again it will not rebuild
+# the whole program.
+# /end quote
+
+# Since that fits building I2P very well, we override the build target.
+#
+
+build:
+ @echo 'The build target is disabled. Use the appropriate binary target.'
+
+#JAVA_HOME=/usr/lib/jvm/default-java
+export DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+JAVA_HOME=/usr/lib/jvm/java-8-openjdk-$(DEB_HOST_ARCH)
+I2P=$(CURDIR)/pkg-temp
+ROUTERVERSION=$(CURDIR)/router/java/src/net/i2p/router/RouterVersion.java
+export DEB_BUILD_HARDENING=1
+
+# I2P's version will be displayed in the router console as "$I2PVERSION-$EXTRAPREFIX$DEBIANVERSION", eg. 0.8.12-0-deb1
+#export EXTRAPREFIX := deb
+export JAVA_HOME I2P
+export DEBIANVERSION := $(shell dpkg-parsechangelog |awk -F' ' '/^Version:/{print $$2}' |sed 's/.*-\([.0-9A-Za-z~+]\{1,\}\)$$/\1/')
+# required for jbigi/jcpuid build
+export BITS := $(shell dpkg-architecture -qDEB_HOST_ARCH_BITS)
+#export DEB_HOST_ARCH_CPU := $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
+
+%:
+ dh $@ --with systemd,bash-completion
+
+clean: createcopyright
+
+override_dh_auto_clean:
+ -[ -r $(CURDIR)/debian/routerversion.java.bak ] && mv -f $(CURDIR)/debian/routerversion.java.bak $(ROUTERVERSION)
+ dh_auto_clean
+ ant distclean
+ find $(CURDIR)/core \( -name '*\.so' -o -name '*\.o' \) -exec rm -f {} \;
+ rm -rf $(CURDIR)/core/c/jcpuid/lib/
+ rm -f $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
+ rm -rf $(CURDIR)/debian/python-i2p
+ rm -f $(CURDIR)/override.properties
+ rm -f $(CURDIR)/apps/susidns/src/lib/standard.jar
+ rm -f $(CURDIR)/apps/susidns/src/lib/jstl.jar
+ rm -f $(CURDIR)/apps/susidns/src/lib/jstlel.jar
+ debconf-updatepo
+
+override_dh_auto_build:
+
+override_dh_systemd_enable:
+ # We purposely do not set I2P to start at boot.
+ # This matches the behavior of the initscript
+ # and the setting RUN_DAEMON=false in /etc/default/i2p
+
+binary-indep: build-indep
+build-indep:
+ dh_prep
+ mkdir -p $(CURDIR)/installer/lib/wrapper/all
+ ln -sf /usr/share/java/wrapper.jar $(CURDIR)/installer/lib/wrapper/all/wrapper.jar
+ if [ ! -e $(CURDIR)/debian/routerversion.java.bak ]; then \
+ cp $(ROUTERVERSION) $(CURDIR)/debian/routerversion.java.bak; \
+ fi
+ifeq "$(findstring deb,$(shell grep 'deb' $(ROUTERVERSION)))" ""
+ sed -e "s/\(.*EXTRA\ =\ \)[^ ]*\"\(.*\)\"/\1\"-$$EXTRAPREFIX$$DEBIANVERSION\"/" < $(ROUTERVERSION) > $(ROUTERVERSION).tmp
+ mv -f $(ROUTERVERSION).tmp $(ROUTERVERSION)
+else
+ @echo "Already found deb in version, not doing anything"
+endif
+ @# build options
+ @/bin/echo -e "javac.version=1.8" > $(CURDIR)/override.properties
+ @/bin/echo -e "javac.compilerargs=-bootclasspath $(JAVA_HOME)/jre/lib/rt.jar:$(JAVA_HOME)/jre/lib/jce.jar" >> $(CURDIR)/override.properties
+ @/bin/echo -e "javac.compilerargs7=-bootclasspath $(JAVA_HOME)/jre/lib/rt.jar:$(JAVA_HOME)/jre/lib/jce.jar" >> $(CURDIR)/override.properties
+ @/bin/echo -e "build.built-by=debian" >> $(CURDIR)/override.properties
+ @/bin/echo -e "build.reproducible=true" >> $(CURDIR)/override.properties
+
+ @# debian and ubuntu: everywhere
+ @/bin/echo -e "with-geoip-database=true" >> $(CURDIR)/override.properties
+
+ @# ubuntu: in xenial
+ @# debian: in jessie-backports stretch sid
+ @/bin/echo -e "with-libjetty9-java=true" >> $(CURDIR)/override.properties
+ mkdir -p $(CURDIR)/apps/jetty/jettylib
+ ln -sf /usr/share/java/jetty9-continuation.jar $(CURDIR)/apps/jetty/jettylib/jetty-continuation.jar
+ ln -sf /usr/share/java/jetty9-deploy.jar $(CURDIR)/apps/jetty/jettylib/jetty-deploy.jar
+ ln -sf /usr/share/java/jetty9-http.jar $(CURDIR)/apps/jetty/jettylib/jetty-http.jar
+ ln -sf /usr/share/java/jetty9-io.jar $(CURDIR)/apps/jetty/jettylib/jetty-io.jar
+ ln -sf /usr/share/java/jetty9-rewrite.jar $(CURDIR)/apps/jetty/jettylib/jetty-rewrite-handler.jar
+ ln -sf /usr/share/java/jetty9-security.jar $(CURDIR)/apps/jetty/jettylib/jetty-security.jar
+ ln -sf /usr/share/java/jetty9-servlet.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlet.jar
+ ln -sf /usr/share/java/jetty9-servlets.jar $(CURDIR)/apps/jetty/jettylib/jetty-servlets.jar
+ ln -sf /usr/share/java/jetty9-start.jar $(CURDIR)/apps/jetty/jettylib/jetty-start.jar
+ ln -sf /usr/share/java/jetty9-util.jar $(CURDIR)/apps/jetty/jettylib/jetty-util.jar
+ ln -sf /usr/share/java/jetty9-webapp.jar $(CURDIR)/apps/jetty/jettylib/jetty-webapp.jar
+ ln -sf /usr/share/java/jetty9-xml.jar $(CURDIR)/apps/jetty/jettylib/jetty-xml.jar
+ ln -sf /usr/share/java/jetty9-server.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jetty.jar
+ ln -sf /usr/share/java/jetty9-jmx.jar $(CURDIR)/apps/jetty/jettylib/org.mortbay.jmx.jar
+ @# following two are from libservlet3.1-java which is a dependency of libjetty9-java
+ ln -sf /usr/share/java/servlet-api-3.1.jar $(CURDIR)/apps/jetty/jettylib/javax.servlet.jar
+ @# this is roughly the same as tomcat8-jsp-api.jar, we use this one
+ ln -sf /usr/share/java/jsp-api-2.3.jar $(CURDIR)/apps/jetty/jettylib/jsp-api.jar
+
+ @# debian and ubuntu: wheezy-backports, jessie+, xenial+
+ @/bin/echo -e "with-libtomcat8-java=true" >> $(CURDIR)/override.properties
+ mkdir -p $(CURDIR)/apps/jetty/jettylib
+ ln -sf /usr/share/java/tomcat8-api.jar $(CURDIR)/apps/jetty/jettylib/tomcat-api.jar
+ ln -sf /usr/share/java/tomcat8-coyote.jar $(CURDIR)/apps/jetty/jettylib/tomcat-coyote.jar
+ ln -sf /usr/share/java/tomcat8-el-api.jar $(CURDIR)/apps/jetty/jettylib/commons-el.jar
+ ln -sf /usr/share/java/tomcat8-jasper.jar $(CURDIR)/apps/jetty/jettylib/jasper-runtime.jar
+ ln -sf /usr/share/java/tomcat8-jasper-el.jar $(CURDIR)/apps/jetty/jettylib/jasper-el.jar
+ ln -sf /usr/share/java/tomcat8-juli.jar $(CURDIR)/apps/jetty/jettylib/commons-logging.jar
+ ln -sf /usr/share/java/tomcat8-util.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util.jar
+ ln -sf /usr/share/java/tomcat8-util-scan.jar $(CURDIR)/apps/jetty/jettylib/tomcat-util-scan.jar
+
+ @# debian and ubuntu: stretch+, zesty+
+ @/bin/echo -e "with-libtaglibs-standard=true" >> $(CURDIR)/override.properties
+ ln -sf /usr/share/java/taglibs-standard-spec.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
+ ln -sf /usr/share/java/taglibs-standard-impl.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
+ ln -sf /usr/share/java/taglibs-standard-jstlel.jar $(CURDIR)/apps/susidns/src/lib/jstlel.jar
+
+ @# debian and ubuntu: everywhere
+ @#/bin/echo -e "with-glassfish-javaee=true" >> $(CURDIR)/override.properties
+ @# glassfish-javaee.jar has ancient and conflicting classes, e.g. javax.mail
+ @#ln -sf /usr/share/java/glassfish-javaee.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
+ @#ln -sf /usr/share/java/glassfish-appserv-jstl.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
+
+ @# debian and ubuntu: everywhere
+ @#/bin/echo -e "with-libjakarta-taglibs-standard-java=true" >> $(CURDIR)/override.properties
+ @#ln -sf /usr/share/java/standard.jar $(CURDIR)/apps/susidns/src/lib/standard.jar
+
+ @# debian and ubuntu: everywhere
+ @#/bin/echo -e "with-libjstl1.1-java=true" >> $(CURDIR)/override.properties
+ @#ln -sf /usr/share/java/jstl1.1.jar $(CURDIR)/apps/susidns/src/lib/jstl.jar
+
+ @# debian and ubuntu: everywhere
+ @/bin/echo -e "with-gettext-base=true" >> $(CURDIR)/override.properties
+ @mkdir -p $(CURDIR)/core/java/build
+ ln -sf /usr/share/java/libintl.jar $(CURDIR)/core/java/build/libintl.jar
+
+ @# debian and ubuntu: everywhere
+ @/bin/echo -e "with-libgetopt-java=true" >> $(CURDIR)/override.properties
+ @mkdir -p $(CURDIR)/core/java/build
+ ln -sf /usr/share/java/gnu-getopt.jar $(CURDIR)/core/java/build/gnu-getopt.jar
+
+ @# debian: jessie+; ubuntu: trusty+
+ @/bin/echo -e "with-libjson-simple-java=true" >> $(CURDIR)/override.properties
+ @mkdir -p $(CURDIR)/core/java/build
+ ln -sf /usr/share/java/json-simple.jar $(CURDIR)/core/java/build/json-simple.jar
+
+ @# debian: everywhere; ubuntu: trusty+
+ @/bin/echo -e "with-famfamfam-flag-png=true" >> $(CURDIR)/override.properties
+
+ @# 2 MB of dependencies vs. 20 KB of copied source
+ @# Requires 4.4 or higher.
+ @# Debian: Not in wheezy/jessie
+ @# Ubuntu: Only in wily and later
+ @#/bin/echo -e "with-libhttpclient-java=true" >> $(CURDIR)/override.properties
+ @#mkdir -p $(CURDIR)/core/java/build
+ @#ln -sf /usr/share/java/httpclient.jar $(CURDIR)/core/java/build/httpclient.jar
+ @#ln -sf /usr/share/java/httpcore.jar $(CURDIR)/core/java/build/httpcore.jar
+
+ TZ=UTC JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 ant preppkg-unix javadoc
+ echo router.updateDisabled=true > $(I2P)/router.config
+ mv $(I2P)/runplain.sh $(I2P)/i2prouter-nowrapper
+
+binary-arch: build-arch
+build-arch:
+ # build jbigi
+ cd $(CURDIR)/core/c/jbigi && ./build_jbigi.sh dynamic
+ # build jcpuid
+ cd $(CURDIR)/core/c/jcpuid && ./build.sh
+
+binary: binary-arch binary-indep
+
+createcopyright:
+ @echo " *** Creating debian/copyright*** "
+ @rm -f $(CURDIR)/debian/copyright
+ @/bin/echo -e "This package was Debianized by kytv " >> $(CURDIR)/debian/copyright
+ @/bin/echo -e "Sun, 23 Jan 2011 20:26:51 +0000" >> $(CURDIR)/debian/copyright
+ @/bin/echo -e "\nIt was downloaded from https://geti2p.net" >> $(CURDIR)/debian/copyright
+ @/bin/echo -e "\nI2P is tracked upstream using the Monotone VCS" >> $(CURDIR)/debian/copyright
+ @/bin/echo -e "Complete information on fetching the source with monotone can be found" >> $(CURDIR)/debian/copyright
+ @/bin/echo -e "at https://geti2p.net/newdevelopers#getting-the-i2p-code\n\n\n" >> $(CURDIR)/debian/copyright
+ @/bin/cat $(CURDIR)/LICENSE.txt >> $(CURDIR)/debian/copyright
+ @/bin/echo -e "\n\n The debian packaging has been released into the public domain." >> $(CURDIR)/debian/copyright
+
+override_dh_compress:
+ dh_compress -X.xsl -X.xml
+
+override_dh_install:
+ dh_install --list-missing
+ dh_apparmor --profile-name=system_i2p -pi2p
+ dh_apparmor --profile-name=usr.bin.i2prouter -pi2p
+
+override_dh_installchangelogs:
+ dh_installchangelogs history.txt
+
+override_dh_installdocs:
+ dh_installdocs -pi2p -plibjbigi-jni --link-doc=i2p-router
+ dh_installdocs --remaining-packages
+
+override_dh_shlibdeps:
+ dh_shlibdeps -llibjbigi-jni debian/libjbigi-jni/usr/lib/jni/*.so
+
+#override_dh_installinit:
+# dh_installinit -r
+
+get-orig-source:
+ uscan --verbose --rename --destdir $(CURDIR)/.. --watchfile debian/watch --force-download
diff --git a/debian-alt/doc/launchpad.txt b/debian-alt/doc/launchpad.txt
index f2ca6dac11..dc3212c44c 100644
--- a/debian-alt/doc/launchpad.txt
+++ b/debian-alt/doc/launchpad.txt
@@ -17,7 +17,8 @@ Min version Max version Uses src pkg Copied to Debian
precise saucy precise wheezy
trusty wily precise jessie
xenial yakkety xenial --
-bionic cosmic bionic stretch, buster, sid
+bionic cosmic bionic stretch
+disco disco bionic buster, sid
Prep (first time only)
From 6ad64d5b44669fd3986543a90cd3c620d6b679b4 Mon Sep 17 00:00:00 2001
From: meeh
Date: Fri, 18 Jan 2019 16:25:01 +0000
Subject: [PATCH 13/34] Mac OSX Launcher: Adding the "launcher launcher" for
startup functionality.
---
.../macosx/StartupItemApp/AppDelegate.swift | 54 +++++++++++++++++
.../AppIcon.appiconset/Contents.json | 58 +++++++++++++++++++
.../Assets.xcassets/Contents.json | 6 ++
launchers/macosx/StartupItemApp/Info.plist | 34 +++++++++++
.../StartupItemApp.entitlements | 14 +++++
5 files changed, 166 insertions(+)
create mode 100644 launchers/macosx/StartupItemApp/AppDelegate.swift
create mode 100644 launchers/macosx/StartupItemApp/Assets.xcassets/AppIcon.appiconset/Contents.json
create mode 100644 launchers/macosx/StartupItemApp/Assets.xcassets/Contents.json
create mode 100644 launchers/macosx/StartupItemApp/Info.plist
create mode 100644 launchers/macosx/StartupItemApp/StartupItemApp.entitlements
diff --git a/launchers/macosx/StartupItemApp/AppDelegate.swift b/launchers/macosx/StartupItemApp/AppDelegate.swift
new file mode 100644
index 0000000000..71b6002a4a
--- /dev/null
+++ b/launchers/macosx/StartupItemApp/AppDelegate.swift
@@ -0,0 +1,54 @@
+//
+// AppDelegate.swift
+// StartupItemApp
+//
+// Created by Mikal Villa on 21/12/2018.
+// Copyright © 2018 The I2P Project. All rights reserved.
+//
+
+import Cocoa
+
+extension Notification.Name {
+ static let killLauncher = Notification.Name("killStartupLauncher")
+}
+
+@NSApplicationMain
+class AppDelegate: NSObject {
+
+ @objc func terminate() {
+ NSApp.terminate(nil)
+ }
+}
+
+extension AppDelegate: NSApplicationDelegate {
+
+ func applicationDidFinishLaunching(_ aNotification: Notification) {
+
+ let mainAppIdentifier = "net.i2p.bootstrap-macosx.I2PLauncher"
+ let runningApps = NSWorkspace.shared.runningApplications
+ let isRunning = !runningApps.filter { $0.bundleIdentifier == mainAppIdentifier }.isEmpty
+
+ if !isRunning {
+ DistributedNotificationCenter.default().addObserver(self,
+ selector: #selector(self.terminate),
+ name: .killLauncher,
+ object: mainAppIdentifier)
+
+ let path = Bundle.main.bundlePath as NSString
+ var components = path.pathComponents
+ components.removeLast()
+ components.removeLast()
+ components.removeLast()
+ components.append("MacOS")
+ components.append("I2PLauncher") //main app name
+
+ let newPath = NSString.path(withComponents: components)
+
+ NSWorkspace.shared.launchApplication(newPath)
+ }
+ else {
+ self.terminate()
+ }
+ }
+}
+
diff --git a/launchers/macosx/StartupItemApp/Assets.xcassets/AppIcon.appiconset/Contents.json b/launchers/macosx/StartupItemApp/Assets.xcassets/AppIcon.appiconset/Contents.json
new file mode 100644
index 0000000000..2db2b1c7c6
--- /dev/null
+++ b/launchers/macosx/StartupItemApp/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -0,0 +1,58 @@
+{
+ "images" : [
+ {
+ "idiom" : "mac",
+ "size" : "16x16",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "16x16",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "32x32",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "32x32",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "128x128",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "128x128",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "256x256",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "256x256",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "512x512",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "mac",
+ "size" : "512x512",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/launchers/macosx/StartupItemApp/Assets.xcassets/Contents.json b/launchers/macosx/StartupItemApp/Assets.xcassets/Contents.json
new file mode 100644
index 0000000000..da4a164c91
--- /dev/null
+++ b/launchers/macosx/StartupItemApp/Assets.xcassets/Contents.json
@@ -0,0 +1,6 @@
+{
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+}
\ No newline at end of file
diff --git a/launchers/macosx/StartupItemApp/Info.plist b/launchers/macosx/StartupItemApp/Info.plist
new file mode 100644
index 0000000000..d4bd41467b
--- /dev/null
+++ b/launchers/macosx/StartupItemApp/Info.plist
@@ -0,0 +1,34 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIconFile
+
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ 1
+ LSMinimumSystemVersion
+ $(MACOSX_DEPLOYMENT_TARGET)
+ NSHumanReadableCopyright
+ Copyright © 2018 The I2P Project. All rights reserved.
+ NSMainNibFile
+ MainMenu
+ NSPrincipalClass
+ NSApplication
+ LSBackgroundOnly
+
+
+
diff --git a/launchers/macosx/StartupItemApp/StartupItemApp.entitlements b/launchers/macosx/StartupItemApp/StartupItemApp.entitlements
new file mode 100644
index 0000000000..7ba9c077ae
--- /dev/null
+++ b/launchers/macosx/StartupItemApp/StartupItemApp.entitlements
@@ -0,0 +1,14 @@
+
+
+
+
+ com.apple.security.app-sandbox
+
+ com.apple.security.application-groups
+
+ $(TeamIdentifierPrefix)
+
+ com.apple.security.files.user-selected.read-only
+
+
+
From ba853a8c9729ef26e7a4d1f0152bf60308cce2fb Mon Sep 17 00:00:00 2001
From: meeh
Date: Fri, 18 Jan 2019 16:26:08 +0000
Subject: [PATCH 14/34] Mac OSX Launcher: The firefox manager code
---
.../Utils/browser/FirefoxManager.swift | 70 +++++++++++++++++++
1 file changed, 70 insertions(+)
diff --git a/launchers/macosx/I2PLauncher/Utils/browser/FirefoxManager.swift b/launchers/macosx/I2PLauncher/Utils/browser/FirefoxManager.swift
index 76d602ad71..d30c35691a 100644
--- a/launchers/macosx/I2PLauncher/Utils/browser/FirefoxManager.swift
+++ b/launchers/macosx/I2PLauncher/Utils/browser/FirefoxManager.swift
@@ -10,6 +10,76 @@ import Foundation
class FirefoxManager {
+
+ var firefoxAppPath = ""
+ private var isFirefoxFound = false
+ private var isFirefoxProfileExtracted = false
+
+ fileprivate func directoryExistsAtPath(_ path: String) -> Bool {
+ var isDirectory = ObjCBool(true)
+ let exists = FileManager.default.fileExists(atPath: path, isDirectory: &isDirectory)
+ return exists && isDirectory.boolValue
+ }
+
+ func IsFirefoxFound() -> Bool {
+ return self.isFirefoxFound
+ }
+
+ func IsProfileExtracted() -> Bool {
+ return self.isFirefoxProfileExtracted
+ }
+
+ func bundleExecutableSuffixPath() -> String {
+ return "/Contents/MacOS/firefox"
+ }
+
+ func executeFirefox() -> Bool {
+ let fullExecPath = "\(self.firefoxAppPath)\(self.bundleExecutableSuffixPath())"
+ let firefoxProcess = Subprocess(executablePath: fullExecPath, arguments: [ "-profile", Preferences.shared()["I2Pref_firefoxProfilePath"] as! String, "http://127.0.0.1:7657/home" ])
+ DispatchQueue.global(qos: .background).async {
+ let proc = firefoxProcess.execute()
+ }
+ return true
+ }
+ func tryAutoDetect() -> Bool {
+ let expectedPath = Preferences.shared()["I2Pref_firefoxBundlePath"] as! String
+
+ self.isFirefoxProfileExtracted = directoryExistsAtPath(Preferences.shared()["I2Pref_firefoxProfilePath"] as! String)
+
+ let result = directoryExistsAtPath(expectedPath)
+ self.isFirefoxFound = result
+ if (result) {
+ self.firefoxAppPath = expectedPath
+ return true
+ }
+ return false
+ }
+
+
+ private static var sharedFirefoxManager: FirefoxManager = {
+ let firefoxMgr = FirefoxManager()
+
+ return firefoxMgr
+ }()
+
+
+ class func shared() -> FirefoxManager {
+ return sharedFirefoxManager
+ }
+}
+
+extension FirefoxManager {
+ func unzipProfile() -> Bool {
+ let resourceUrl = Bundle.main.url(forResource: "profile", withExtension: "tgz")
+ let profileTgz = resourceUrl!.path
+ let unzipProc = Subprocess(executablePath: "/usr/bin/tar", arguments: ["-xf",profileTgz,"-C",NSString(format: "%@/Library/Application Support/i2p", NSHomeDirectory()) as String])
+ DispatchQueue.global(qos: .background).async {
+ let proc = unzipProc.execute(captureOutput: true)
+ print("Firefox Profile Extraction Errors: \(proc?.errors)")
+ print("Firefox Profile Extraction Output: \(proc?.output)")
+ }
+ return false
+ }
}
From 52125917b4005a2db21da9d6a95363472340aa35 Mon Sep 17 00:00:00 2001
From: meeh
Date: Fri, 18 Jan 2019 16:28:17 +0000
Subject: [PATCH 15/34] Mac OSX Launcher: Storyboard updates, added firefox
button, preferences changes etc.
---
.../macosx/I2PLauncher/Preferences.storyboard | 44 ++++++++++++-------
.../macosx/I2PLauncher/Storyboard.storyboard | 11 ++++-
2 files changed, 37 insertions(+), 18 deletions(-)
diff --git a/launchers/macosx/I2PLauncher/Preferences.storyboard b/launchers/macosx/I2PLauncher/Preferences.storyboard
index cb7c530a9d..836b9144cb 100644
--- a/launchers/macosx/I2PLauncher/Preferences.storyboard
+++ b/launchers/macosx/I2PLauncher/Preferences.storyboard
@@ -67,7 +67,7 @@