From 804049209d16e299950976dad4674e8a1bed019a Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 30 May 2022 17:03:42 +0100 Subject: [PATCH 1/3] Upgrade jtorctl to 0.4. --- bramble-core/build.gradle | 2 +- bramble-core/witness.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bramble-core/build.gradle b/bramble-core/build.gradle index 0a9644544..1d8e6eab5 100644 --- a/bramble-core/build.gradle +++ b/bramble-core/build.gradle @@ -16,7 +16,7 @@ dependencies { implementation 'org.bitlet:weupnp:0.1.4' implementation 'net.i2p.crypto:eddsa:0.2.0' implementation 'org.whispersystems:curve25519-java:0.5.0' - implementation 'org.briarproject:jtorctl:0.3' + implementation 'org.briarproject:jtorctl:0.4' //noinspection GradleDependency implementation "com.squareup.okhttp3:okhttp:$okhttp_version" diff --git a/bramble-core/witness.gradle b/bramble-core/witness.gradle index b38b997b2..7689c5821 100644 --- a/bramble-core/witness.gradle +++ b/bramble-core/witness.gradle @@ -35,7 +35,7 @@ dependencyVerification { 'org.apache-extras.beanshell:bsh:2.0b6:bsh-2.0b6.jar:a17955976070c0573235ee662f2794a78082758b61accffce8d3f8aedcd91047', 'org.bitlet:weupnp:0.1.4:weupnp-0.1.4.jar:88df7e6504929d00bdb832863761385c68ab92af945b04f0770b126270a444fb', 'org.bouncycastle:bcprov-jdk15to18:1.70:bcprov-jdk15to18-1.70.jar:7df4c54f29ce2dd616dc3b198ca4db3dfcc79e3cb397c084a0aff97b85c0bf38', - 'org.briarproject:jtorctl:0.3:jtorctl-0.3.jar:f2939238a097898998432effe93b0334d97a787972ab3a91a8973a1d309fc864', + 'org.briarproject:jtorctl:0.4:jtorctl-0.4.jar:4e61f59dc9f3984438a7151c4df8d7c1f83d5fb3eb8c151acfc794a8fef85a36', 'org.checkerframework:checker-compat-qual:2.5.3:checker-compat-qual-2.5.3.jar:d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d', 'org.checkerframework:checker-qual:2.5.2:checker-qual-2.5.2.jar:64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a', 'org.codehaus.mojo.signature:java16:1.1:java16-1.1.signature:53799223a2c98dba2d0add810bed76315460df285c69e4f397ae6098f87dd619', From 285a5f2928774bd350585a3dae8c1ec0e04e39f8 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 30 May 2022 17:10:28 +0100 Subject: [PATCH 2/3] Rethrow TorNotRunningException to get a crash report. --- .../bramble/plugin/tor/TorPlugin.java | 79 +++++++++++++------ 1 file changed, 55 insertions(+), 24 deletions(-) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java index 6ce335a77..5c37791fd 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java @@ -2,6 +2,7 @@ package org.briarproject.bramble.plugin.tor; import net.freehaven.tor.control.EventHandler; import net.freehaven.tor.control.TorControlConnection; +import net.freehaven.tor.control.TorNotRunningException; import org.briarproject.bramble.PoliteExecutor; import org.briarproject.bramble.api.Pair; @@ -321,6 +322,8 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { LOG.info("Tor has already built a circuit"); state.getAndSetCircuitBuilt(true); } + } catch (TorNotRunningException e) { + throw new RuntimeException(e); } catch (IOException e) { throw new PluginException(e); } @@ -492,6 +495,8 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { } else { response = controlConnection.addOnion(privKey, portLines); } + } catch (TorNotRunningException e) { + throw new RuntimeException(e); } catch (IOException e) { logException(LOG, WARNING, e); return; @@ -540,30 +545,38 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { protected void enableNetwork(boolean enable) throws IOException { state.enableNetwork(enable); - controlConnection.setConf("DisableNetwork", enable ? "0" : "1"); + try { + controlConnection.setConf("DisableNetwork", enable ? "0" : "1"); + } catch (TorNotRunningException e) { + throw new RuntimeException(e); + } } private void enableBridges(boolean enable, List bridgeTypes) throws IOException { - if (enable) { - Collection conf = new ArrayList<>(); - conf.add("UseBridges 1"); - File obfs4File = getObfs4ExecutableFile(); - if (bridgeTypes.contains(MEEK)) { - conf.add("ClientTransportPlugin meek_lite exec " + - obfs4File.getAbsolutePath()); + try { + if (enable) { + Collection conf = new ArrayList<>(); + conf.add("UseBridges 1"); + File obfs4File = getObfs4ExecutableFile(); + if (bridgeTypes.contains(MEEK)) { + conf.add("ClientTransportPlugin meek_lite exec " + + obfs4File.getAbsolutePath()); + } + if (bridgeTypes.contains(DEFAULT_OBFS4) || + bridgeTypes.contains(NON_DEFAULT_OBFS4)) { + conf.add("ClientTransportPlugin obfs4 exec " + + obfs4File.getAbsolutePath()); + } + for (BridgeType bridgeType : bridgeTypes) { + conf.addAll(circumventionProvider.getBridges(bridgeType)); + } + controlConnection.setConf(conf); + } else { + controlConnection.setConf("UseBridges", "0"); } - if (bridgeTypes.contains(DEFAULT_OBFS4) || - bridgeTypes.contains(NON_DEFAULT_OBFS4)) { - conf.add("ClientTransportPlugin obfs4 exec " + - obfs4File.getAbsolutePath()); - } - for (BridgeType bridgeType : bridgeTypes) { - conf.addAll(circumventionProvider.getBridges(bridgeType)); - } - controlConnection.setConf(conf); - } else { - controlConnection.setConf("UseBridges", "0"); + } catch (TorNotRunningException e) { + throw new RuntimeException(e); } } @@ -577,6 +590,8 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { controlConnection.setConf("DisableNetwork", "1"); controlConnection.shutdownTor("TERM"); controlSocket.close(); + } catch (TorNotRunningException e) { + throw new RuntimeException(e); } catch (IOException e) { logException(LOG, WARNING, e); } @@ -708,7 +723,11 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { }); Map portLines = singletonMap(80, "127.0.0.1:" + port); - controlConnection.addOnion(blob, portLines); + try { + controlConnection.addOnion(blob, portLines); + } catch (TorNotRunningException e) { + throw new RuntimeException(e); + } return new RendezvousEndpoint() { @Override @@ -718,7 +737,11 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { @Override public void close() throws IOException { - controlConnection.delOnion(localOnion); + try { + controlConnection.delOnion(localOnion); + } catch (TorNotRunningException e) { + throw new RuntimeException(e); + } tryToClose(ss, LOG, WARNING); } }; @@ -950,12 +973,20 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { } private void enableConnectionPadding(boolean enable) throws IOException { - controlConnection.setConf("ConnectionPadding", enable ? "1" : "0"); + try { + controlConnection.setConf("ConnectionPadding", enable ? "1" : "0"); + } catch (TorNotRunningException e) { + throw new RuntimeException(e); + } } private void useIpv6(boolean ipv6Only) throws IOException { - controlConnection.setConf("ClientUseIPv4", ipv6Only ? "0" : "1"); - controlConnection.setConf("ClientUseIPv6", ipv6Only ? "1" : "0"); + try { + controlConnection.setConf("ClientUseIPv4", ipv6Only ? "0" : "1"); + controlConnection.setConf("ClientUseIPv6", ipv6Only ? "1" : "0"); + } catch (TorNotRunningException e) { + throw new RuntimeException(e); + } } @ThreadSafe From 0092f38bab416a1cd8e67ed51f5f831e129b049e Mon Sep 17 00:00:00 2001 From: akwizgran Date: Mon, 30 May 2022 17:19:36 +0100 Subject: [PATCH 3/3] Fix missing space in log message. --- .../java/org/briarproject/bramble/plugin/tor/TorPlugin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java index 5c37791fd..9a93f96d2 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java @@ -1106,7 +1106,7 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { @GuardedBy("this") private void logOrConnections() { if (LOG.isLoggable(INFO)) { - LOG.info(orConnectionsConnected + "OR connections connected"); + LOG.info(orConnectionsConnected + " OR connections connected"); } } }