From a1f9e80e120a258287500e08d5135c81a0a1a878 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20K=C3=BCrten?= Date: Wed, 3 Nov 2021 15:43:01 +0100 Subject: [PATCH] Inject Tor ports via annotated int parameters --- .../bramble/plugin/tor/AndroidTorPlugin.java | 10 +++---- .../plugin/tor/AndroidTorPluginFactory.java | 19 +++++++----- .../bramble/api/plugin/TorControlPort.java | 20 +++++++++++++ .../bramble/api/plugin/TorSocksPort.java | 20 +++++++++++++ .../briarproject/bramble/plugin/TorPorts.java | 12 -------- .../bramble/plugin/TorPortsImpl.java | 22 -------------- .../bramble/plugin/tor/TorPlugin.java | 21 ++++++++------ .../bramble/socks/SocksModule.java | 6 ++-- .../bramble/plugin/tor/JavaTorPlugin.java | 11 +++---- .../bramble/plugin/tor/UnixTorPlugin.java | 11 +++---- .../plugin/tor/UnixTorPluginFactory.java | 19 +++++++----- .../bramble/plugin/tor/BridgeTest.java | 10 ++----- .../briarproject/briar/android/AppModule.java | 29 +++++++++++++------ .../briar/headless/HeadlessModule.kt | 18 +++++++----- .../briar/headless/HeadlessTestModule.kt | 14 +++++---- 15 files changed, 137 insertions(+), 105 deletions(-) create mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorControlPort.java create mode 100644 bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorSocksPort.java delete mode 100644 bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPorts.java delete mode 100644 bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPortsImpl.java diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java index a9aff29b0..d8933d101 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPlugin.java @@ -16,7 +16,6 @@ import org.briarproject.bramble.api.system.AndroidWakeLockManager; import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; -import org.briarproject.bramble.plugin.TorPorts; import org.briarproject.bramble.util.AndroidUtils; import java.io.File; @@ -60,7 +59,6 @@ class AndroidTorPlugin extends TorPlugin { NetworkManager networkManager, LocationUtils locationUtils, SocketFactory torSocketFactory, - TorPorts torPorts, Clock clock, ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, @@ -72,12 +70,14 @@ class AndroidTorPlugin extends TorPlugin { String architecture, long maxLatency, int maxIdleTime, - File torDirectory) { + File torDirectory, + int torSocksPort, + int torControlPort) { super(ioExecutor, wakefulIoExecutor, networkManager, locationUtils, - torSocketFactory, torPorts, clock, resourceProvider, + torSocketFactory, clock, resourceProvider, circumventionProvider, batteryManager, backoff, torRendezvousCrypto, callback, architecture, maxLatency, - maxIdleTime, torDirectory); + maxIdleTime, torDirectory, torSocksPort, torControlPort); this.app = app; wakeLock = wakeLockManager.createWakeLock("TorPlugin"); String nativeLibDir = app.getApplicationInfo().nativeLibraryDir; diff --git a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java index a52926d26..765d9b703 100644 --- a/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java +++ b/bramble-android/src/main/java/org/briarproject/bramble/plugin/tor/AndroidTorPluginFactory.java @@ -11,7 +11,9 @@ import org.briarproject.bramble.api.plugin.Backoff; import org.briarproject.bramble.api.plugin.BackoffFactory; import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.TorConstants; +import org.briarproject.bramble.api.plugin.TorControlPort; import org.briarproject.bramble.api.plugin.TorDirectory; +import org.briarproject.bramble.api.plugin.TorSocksPort; import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin; import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory; @@ -20,7 +22,6 @@ import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.WakefulIoExecutor; -import org.briarproject.bramble.plugin.TorPorts; import org.briarproject.bramble.util.AndroidUtils; import java.io.File; @@ -50,7 +51,6 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { private final LocationUtils locationUtils; private final EventBus eventBus; private final SocketFactory torSocketFactory; - private final TorPorts torPorts; private final BackoffFactory backoffFactory; private final ResourceProvider resourceProvider; private final CircumventionProvider circumventionProvider; @@ -58,6 +58,8 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { private final AndroidWakeLockManager wakeLockManager; private final Clock clock; private final File torDirectory; + private int torSocksPort; + private int torControlPort; @Inject AndroidTorPluginFactory(@IoExecutor Executor ioExecutor, @@ -67,14 +69,15 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { LocationUtils locationUtils, EventBus eventBus, SocketFactory torSocketFactory, - TorPorts torPorts, BackoffFactory backoffFactory, ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, BatteryManager batteryManager, AndroidWakeLockManager wakeLockManager, Clock clock, - @TorDirectory File torDirectory) { + @TorDirectory File torDirectory, + @TorSocksPort int torSocksPort, + @TorControlPort int torControlPort) { this.ioExecutor = ioExecutor; this.wakefulIoExecutor = wakefulIoExecutor; this.app = app; @@ -82,7 +85,6 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { this.locationUtils = locationUtils; this.eventBus = eventBus; this.torSocketFactory = torSocketFactory; - this.torPorts = torPorts; this.backoffFactory = backoffFactory; this.resourceProvider = resourceProvider; this.circumventionProvider = circumventionProvider; @@ -90,6 +92,8 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { this.wakeLockManager = wakeLockManager; this.clock = clock; this.torDirectory = torDirectory; + this.torSocksPort = torSocksPort; + this.torControlPort = torControlPort; } @Override @@ -134,10 +138,11 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { TorRendezvousCrypto torRendezvousCrypto = new TorRendezvousCryptoImpl(); AndroidTorPlugin plugin = new AndroidTorPlugin(ioExecutor, wakefulIoExecutor, app, networkManager, locationUtils, - torSocketFactory, torPorts, clock, resourceProvider, + torSocketFactory, clock, resourceProvider, circumventionProvider, batteryManager, wakeLockManager, backoff, torRendezvousCrypto, callback, architecture, - MAX_LATENCY, MAX_IDLE_TIME, torDirectory); + MAX_LATENCY, MAX_IDLE_TIME, torDirectory, torSocksPort, + torControlPort); eventBus.addListener(plugin); return plugin; } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorControlPort.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorControlPort.java new file mode 100644 index 000000000..4293e4048 --- /dev/null +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorControlPort.java @@ -0,0 +1,20 @@ +package org.briarproject.bramble.api.plugin; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.inject.Qualifier; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * Annotation for injecting the control port for the Tor plugin. + */ +@Qualifier +@Target({FIELD, METHOD, PARAMETER}) +@Retention(RUNTIME) +public @interface TorControlPort { +} diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorSocksPort.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorSocksPort.java new file mode 100644 index 000000000..1441e41ae --- /dev/null +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorSocksPort.java @@ -0,0 +1,20 @@ +package org.briarproject.bramble.api.plugin; + +import java.lang.annotation.Retention; +import java.lang.annotation.Target; + +import javax.inject.Qualifier; + +import static java.lang.annotation.ElementType.FIELD; +import static java.lang.annotation.ElementType.METHOD; +import static java.lang.annotation.ElementType.PARAMETER; +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +/** + * Annotation for injecting the socks port for the Tor plugin. + */ +@Qualifier +@Target({FIELD, METHOD, PARAMETER}) +@Retention(RUNTIME) +public @interface TorSocksPort { +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPorts.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPorts.java deleted file mode 100644 index 0dd9eb9ad..000000000 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPorts.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.briarproject.bramble.plugin; - -/** - * Interface used for injecting the tor ports. - */ -public interface TorPorts { - - int getSocksPort(); - - int getControlPort(); - -} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPortsImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPortsImpl.java deleted file mode 100644 index 83a3dc68b..000000000 --- a/bramble-core/src/main/java/org/briarproject/bramble/plugin/TorPortsImpl.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.briarproject.bramble.plugin; - -public class TorPortsImpl implements TorPorts { - - private int socksPort; - private int controlPort; - - public TorPortsImpl(int socksPort, int controlPort) { - this.socksPort = socksPort; - this.controlPort = controlPort; - } - - @Override - public int getSocksPort() { - return socksPort; - } - - @Override - public int getControlPort() { - return controlPort; - } -} 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 128bf67c1..15928fb35 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 @@ -33,7 +33,6 @@ import org.briarproject.bramble.api.settings.event.SettingsUpdatedEvent; import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; -import org.briarproject.bramble.plugin.TorPorts; import java.io.ByteArrayInputStream; import java.io.EOFException; @@ -124,7 +123,6 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { private final NetworkManager networkManager; private final LocationUtils locationUtils; private final SocketFactory torSocketFactory; - private final TorPorts torPorts; private final Clock clock; private final BatteryManager batteryManager; private final Backoff backoff; @@ -134,8 +132,11 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { private final CircumventionProvider circumventionProvider; private final ResourceProvider resourceProvider; private final long maxLatency; - private final int maxIdleTime, socketTimeout; + private final int maxIdleTime; + private final int socketTimeout; private final File torDirectory, geoIpFile, configFile; + private int torSocksPort; + private int torControlPort; private final File doneFile, cookieFile; private final AtomicBoolean used = new AtomicBoolean(false); @@ -154,7 +155,6 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { NetworkManager networkManager, LocationUtils locationUtils, SocketFactory torSocketFactory, - TorPorts torPorts, Clock clock, ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, @@ -165,13 +165,14 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { String architecture, long maxLatency, int maxIdleTime, - File torDirectory) { + File torDirectory, + int torSocksPort, + int torControlPort) { this.ioExecutor = ioExecutor; this.wakefulIoExecutor = wakefulIoExecutor; this.networkManager = networkManager; this.locationUtils = locationUtils; this.torSocketFactory = torSocketFactory; - this.torPorts = torPorts; this.clock = clock; this.resourceProvider = resourceProvider; this.circumventionProvider = circumventionProvider; @@ -186,6 +187,8 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { socketTimeout = Integer.MAX_VALUE; else socketTimeout = maxIdleTime * 2; this.torDirectory = torDirectory; + this.torSocksPort = torSocksPort; + this.torControlPort = torControlPort; geoIpFile = new File(torDirectory, "geoip"); configFile = new File(torDirectory, "torrc"); doneFile = new File(torDirectory, "done"); @@ -291,7 +294,7 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { } try { // Open a control connection and authenticate using the cookie file - controlSocket = new Socket("127.0.0.1", torPorts.getControlPort()); + controlSocket = new Socket("127.0.0.1", torControlPort); controlConnection = new TorControlConnection(controlSocket); controlConnection.authenticate(read(cookieFile)); // Tell Tor to exit when the control connection is closed @@ -396,12 +399,12 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { private InputStream getTorrc() { StringBuilder strb = new StringBuilder(); - append(strb, "ControlPort", torPorts.getControlPort()); + append(strb, "ControlPort", torControlPort); append(strb, "CookieAuthentication", 1); append(strb, "DisableNetwork", 1); append(strb, "RunAsDaemon", 1); append(strb, "SafeSocks", 1); - append(strb, "SocksPort", torPorts.getSocksPort()); + append(strb, "SocksPort", torSocksPort); return new ByteArrayInputStream(strb.toString().getBytes()); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java index 9706c8e67..c74666884 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/socks/SocksModule.java @@ -1,6 +1,6 @@ package org.briarproject.bramble.socks; -import org.briarproject.bramble.plugin.TorPorts; +import org.briarproject.bramble.api.plugin.TorSocksPort; import java.net.InetSocketAddress; @@ -16,9 +16,9 @@ import static org.briarproject.bramble.api.plugin.TorConstants.EXTRA_SOCKET_TIME public class SocksModule { @Provides - SocketFactory provideTorSocketFactory(TorPorts torPorts) { + SocketFactory provideTorSocketFactory(@TorSocksPort int torSocksPort) { InetSocketAddress proxy = new InetSocketAddress("127.0.0.1", - torPorts.getSocksPort()); + torSocksPort); return new SocksSocketFactory(proxy, CONNECT_TO_PROXY_TIMEOUT, EXTRA_SOCKET_TIMEOUT); } diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java index 1327f3b83..dcc0c9f00 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/JavaTorPlugin.java @@ -8,7 +8,6 @@ import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; -import org.briarproject.bramble.plugin.TorPorts; import java.io.File; import java.net.URI; @@ -26,7 +25,6 @@ abstract class JavaTorPlugin extends TorPlugin { NetworkManager networkManager, LocationUtils locationUtils, SocketFactory torSocketFactory, - TorPorts torPorts, Clock clock, ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, @@ -37,12 +35,15 @@ abstract class JavaTorPlugin extends TorPlugin { String architecture, long maxLatency, int maxIdleTime, - File torDirectory) { + File torDirectory, + int torSocksPort, + int torControlPort) { super(ioExecutor, wakefulIoExecutor, networkManager, locationUtils, - torSocketFactory, torPorts, clock, resourceProvider, + torSocketFactory, clock, resourceProvider, circumventionProvider, batteryManager, backoff, torRendezvousCrypto, callback, architecture, - maxLatency, maxIdleTime, torDirectory); + maxLatency, maxIdleTime, torDirectory, torSocksPort, + torControlPort); } @Override diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java index 8b36cd2da..c68dc0130 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPlugin.java @@ -11,7 +11,6 @@ import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; -import org.briarproject.bramble.plugin.TorPorts; import java.io.File; import java.util.concurrent.Executor; @@ -26,7 +25,6 @@ class UnixTorPlugin extends JavaTorPlugin { NetworkManager networkManager, LocationUtils locationUtils, SocketFactory torSocketFactory, - TorPorts torPorts, Clock clock, ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, @@ -37,12 +35,15 @@ class UnixTorPlugin extends JavaTorPlugin { String architecture, long maxLatency, int maxIdleTime, - File torDirectory) { + File torDirectory, + int torSocksPort, + int torControlPort) { super(ioExecutor, wakefulIoExecutor, networkManager, locationUtils, - torSocketFactory, torPorts, clock, resourceProvider, + torSocketFactory, clock, resourceProvider, circumventionProvider, batteryManager, backoff, torRendezvousCrypto, callback, architecture, - maxLatency, maxIdleTime, torDirectory); + maxLatency, maxIdleTime, torDirectory, torSocksPort, + torControlPort); } @Override diff --git a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java index ceeb596c5..b2986d6e4 100644 --- a/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java +++ b/bramble-java/src/main/java/org/briarproject/bramble/plugin/tor/UnixTorPluginFactory.java @@ -9,7 +9,9 @@ import org.briarproject.bramble.api.plugin.Backoff; import org.briarproject.bramble.api.plugin.BackoffFactory; import org.briarproject.bramble.api.plugin.PluginCallback; import org.briarproject.bramble.api.plugin.TorConstants; +import org.briarproject.bramble.api.plugin.TorControlPort; import org.briarproject.bramble.api.plugin.TorDirectory; +import org.briarproject.bramble.api.plugin.TorSocksPort; import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.duplex.DuplexPlugin; import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory; @@ -17,7 +19,6 @@ import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.WakefulIoExecutor; -import org.briarproject.bramble.plugin.TorPorts; import java.io.File; import java.util.concurrent.Executor; @@ -49,13 +50,14 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { private final LocationUtils locationUtils; private final EventBus eventBus; private final SocketFactory torSocketFactory; - private final TorPorts torPorts; private final BackoffFactory backoffFactory; private final ResourceProvider resourceProvider; private final CircumventionProvider circumventionProvider; private final BatteryManager batteryManager; private final Clock clock; private final File torDirectory; + private int torSocksPort; + private int torControlPort; @Inject UnixTorPluginFactory(@IoExecutor Executor ioExecutor, @@ -64,26 +66,28 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { LocationUtils locationUtils, EventBus eventBus, SocketFactory torSocketFactory, - TorPorts torPorts, BackoffFactory backoffFactory, ResourceProvider resourceProvider, CircumventionProvider circumventionProvider, BatteryManager batteryManager, Clock clock, - @TorDirectory File torDirectory) { + @TorDirectory File torDirectory, + @TorSocksPort int torSocksPort, + @TorControlPort int torControlPort) { this.ioExecutor = ioExecutor; this.wakefulIoExecutor = wakefulIoExecutor; this.networkManager = networkManager; this.locationUtils = locationUtils; this.eventBus = eventBus; this.torSocketFactory = torSocketFactory; - this.torPorts = torPorts; this.backoffFactory = backoffFactory; this.resourceProvider = resourceProvider; this.circumventionProvider = circumventionProvider; this.batteryManager = batteryManager; this.clock = clock; this.torDirectory = torDirectory; + this.torSocksPort = torSocksPort; + this.torControlPort = torControlPort; } @Override @@ -126,10 +130,11 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { MAX_POLLING_INTERVAL, BACKOFF_BASE); TorRendezvousCrypto torRendezvousCrypto = new TorRendezvousCryptoImpl(); UnixTorPlugin plugin = new UnixTorPlugin(ioExecutor, wakefulIoExecutor, - networkManager, locationUtils, torSocketFactory, torPorts, + networkManager, locationUtils, torSocketFactory, clock, resourceProvider, circumventionProvider, batteryManager, backoff, torRendezvousCrypto, callback, architecture, - MAX_LATENCY, MAX_IDLE_TIME, torDirectory); + MAX_LATENCY, MAX_IDLE_TIME, torDirectory, torSocksPort, + torControlPort); eventBus.addListener(plugin); return plugin; } diff --git a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java index 4ce0766cd..a38ae29f8 100644 --- a/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java +++ b/bramble-java/src/test/java/org/briarproject/bramble/plugin/tor/BridgeTest.java @@ -11,8 +11,6 @@ import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; import org.briarproject.bramble.api.system.WakefulIoExecutor; -import org.briarproject.bramble.plugin.TorPorts; -import org.briarproject.bramble.plugin.TorPortsImpl; import org.briarproject.bramble.test.BrambleJavaIntegrationTestComponent; import org.briarproject.bramble.test.BrambleTestCase; import org.briarproject.bramble.test.DaggerBrambleJavaIntegrationTestComponent; @@ -119,9 +117,6 @@ public class BridgeTest extends BrambleTestCase { LocationUtils locationUtils = () -> "US"; SocketFactory torSocketFactory = SocketFactory.getDefault(); - TorPorts torPorts = - new TorPortsImpl(DEFAULT_SOCKS_PORT, DEFAULT_CONTROL_PORT); - CircumventionProvider bridgeProvider = new CircumventionProvider() { @Override public boolean isTorProbablyBlocked(String countryCode) { @@ -145,8 +140,9 @@ public class BridgeTest extends BrambleTestCase { }; factory = new UnixTorPluginFactory(ioExecutor, wakefulIoExecutor, networkManager, locationUtils, eventBus, torSocketFactory, - torPorts, backoffFactory, resourceProvider, bridgeProvider, - batteryManager, clock, torDir); + backoffFactory, resourceProvider, bridgeProvider, + batteryManager, clock, torDir, DEFAULT_SOCKS_PORT, + DEFAULT_CONTROL_PORT); } @After diff --git a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java index 284091802..787cb3989 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/AppModule.java @@ -18,13 +18,13 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.BluetoothConstants; import org.briarproject.bramble.api.plugin.LanTcpConstants; import org.briarproject.bramble.api.plugin.PluginConfig; +import org.briarproject.bramble.api.plugin.TorControlPort; import org.briarproject.bramble.api.plugin.TorDirectory; +import org.briarproject.bramble.api.plugin.TorSocksPort; import org.briarproject.bramble.api.plugin.TransportId; import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory; import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory; import org.briarproject.bramble.api.reporting.DevConfig; -import org.briarproject.bramble.plugin.TorPorts; -import org.briarproject.bramble.plugin.TorPortsImpl; import org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPluginFactory; import org.briarproject.bramble.plugin.file.AndroidRemovableDrivePluginFactory; import org.briarproject.bramble.plugin.tcp.AndroidLanTcpPluginFactory; @@ -154,20 +154,31 @@ public class AppModule { @Provides @Singleton - TorPorts provideTorPorts() { + @TorDirectory + File provideTorDirectory(Application app) { + return app.getDir("tor", MODE_PRIVATE); + } + + @Provides + @Singleton + @TorSocksPort + int provideTorSocksPort() { if (!IS_DEBUG_BUILD) { - return new TorPortsImpl(DEFAULT_SOCKS_PORT, DEFAULT_CONTROL_PORT); + return DEFAULT_SOCKS_PORT; } else { - return new TorPortsImpl(DEFAULT_SOCKS_PORT + 2, - DEFAULT_CONTROL_PORT + 2); + return DEFAULT_SOCKS_PORT + 2; } } @Provides @Singleton - @TorDirectory - File provideTorDirectory(Application app) { - return app.getDir("tor", MODE_PRIVATE); + @TorControlPort + int provideTorControlPort() { + if (!IS_DEBUG_BUILD) { + return DEFAULT_CONTROL_PORT; + } else { + return DEFAULT_CONTROL_PORT + 2; + } } @Provides diff --git a/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt b/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt index 0f285faad..5e5b3a00e 100644 --- a/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt +++ b/briar-headless/src/main/java/org/briarproject/briar/headless/HeadlessModule.kt @@ -9,15 +9,15 @@ import org.briarproject.bramble.api.db.DatabaseConfig import org.briarproject.bramble.api.plugin.PluginConfig import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT +import org.briarproject.bramble.api.plugin.TorControlPort import org.briarproject.bramble.api.plugin.TorDirectory +import org.briarproject.bramble.api.plugin.TorSocksPort import org.briarproject.bramble.api.plugin.TransportId import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory import org.briarproject.bramble.battery.DefaultBatteryManagerModule import org.briarproject.bramble.event.DefaultEventExecutorModule import org.briarproject.bramble.network.JavaNetworkModule -import org.briarproject.bramble.plugin.TorPorts -import org.briarproject.bramble.plugin.TorPortsImpl import org.briarproject.bramble.plugin.tor.CircumventionModule import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory import org.briarproject.bramble.socks.SocksModule @@ -71,18 +71,20 @@ internal class HeadlessModule(private val appDir: File) { return HeadlessDatabaseConfig(dbDir, keyDir) } - @Provides - @Singleton - fun provideTorPorts(): TorPorts { - return TorPortsImpl(DEFAULT_SOCKS_PORT, DEFAULT_CONTROL_PORT) - } - @Provides @TorDirectory internal fun provideTorDirectory(): File { return File(appDir, "tor") } + @Provides + @TorSocksPort + internal fun provideTorSocksPort(): Int = DEFAULT_SOCKS_PORT + + @Provides + @TorControlPort + internal fun provideTorControlPort(): Int = DEFAULT_CONTROL_PORT + @Provides @Singleton internal fun providePluginConfig(tor: UnixTorPluginFactory): PluginConfig { diff --git a/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt b/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt index a2be02579..b2be6db86 100644 --- a/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt +++ b/briar-headless/src/test/java/org/briarproject/briar/headless/HeadlessTestModule.kt @@ -8,13 +8,13 @@ import org.briarproject.bramble.api.db.DatabaseConfig import org.briarproject.bramble.api.plugin.PluginConfig import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT import org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT +import org.briarproject.bramble.api.plugin.TorControlPort +import org.briarproject.bramble.api.plugin.TorSocksPort import org.briarproject.bramble.api.plugin.TransportId import org.briarproject.bramble.api.plugin.duplex.DuplexPluginFactory import org.briarproject.bramble.api.plugin.simplex.SimplexPluginFactory import org.briarproject.bramble.event.DefaultEventExecutorModule import org.briarproject.bramble.network.JavaNetworkModule -import org.briarproject.bramble.plugin.TorPorts -import org.briarproject.bramble.plugin.TorPortsImpl import org.briarproject.bramble.plugin.tor.CircumventionModule import org.briarproject.bramble.socks.SocksModule import org.briarproject.bramble.system.ClockModule @@ -69,10 +69,12 @@ internal class HeadlessTestModule(private val appDir: File) { } @Provides - @Singleton - fun provideTorPorts(): TorPorts { - return TorPortsImpl(DEFAULT_SOCKS_PORT, DEFAULT_CONTROL_PORT) - } + @TorSocksPort + internal fun provideTorSocksPort(): Int = DEFAULT_SOCKS_PORT + + @Provides + @TorControlPort + internal fun provideTorControlPort(): Int = DEFAULT_CONTROL_PORT @Provides @Singleton