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 617c70518..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 @@ -70,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, 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 1434ea229..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; @@ -56,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, @@ -71,7 +75,9 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { 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; @@ -86,6 +92,8 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { this.wakeLockManager = wakeLockManager; this.clock = clock; this.torDirectory = torDirectory; + this.torSocksPort = torSocksPort; + this.torControlPort = torControlPort; } @Override @@ -133,7 +141,8 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory { 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/TorConstants.java b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java index b90e1b564..56985ebbe 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/plugin/TorConstants.java @@ -10,8 +10,8 @@ public interface TorConstants { String PROP_ONION_V2 = "onion"; String PROP_ONION_V3 = "onion3"; - int SOCKS_PORT = 59050; - int CONTROL_PORT = 59051; + int DEFAULT_SOCKS_PORT = 59050; + int DEFAULT_CONTROL_PORT = 59051; int CONNECT_TO_PROXY_TIMEOUT = 5000; // Milliseconds int EXTRA_SOCKET_TIMEOUT = 30000; // Milliseconds 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/tor/TorPlugin.java b/bramble-core/src/main/java/org/briarproject/bramble/plugin/tor/TorPlugin.java index 4714489d9..3d602bd82 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 @@ -34,6 +34,7 @@ import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.system.LocationUtils; import org.briarproject.bramble.api.system.ResourceProvider; +import java.io.ByteArrayInputStream; import java.io.EOFException; import java.io.File; import java.io.FileInputStream; @@ -44,6 +45,7 @@ import java.io.OutputStream; import java.net.InetSocketAddress; import java.net.ServerSocket; import java.net.Socket; +import java.nio.charset.Charset; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -68,13 +70,11 @@ import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; import static net.freehaven.tor.control.TorControlCommands.HS_ADDRESS; import static net.freehaven.tor.control.TorControlCommands.HS_PRIVKEY; -import static org.briarproject.bramble.api.nullsafety.NullSafety.requireNonNull; import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.DISABLED; import static org.briarproject.bramble.api.plugin.Plugin.State.ENABLING; import static org.briarproject.bramble.api.plugin.Plugin.State.INACTIVE; import static org.briarproject.bramble.api.plugin.Plugin.State.STARTING_STOPPING; -import static org.briarproject.bramble.api.plugin.TorConstants.CONTROL_PORT; import static org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_PREF_PLUGIN_ENABLE; import static org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_PREF_TOR_MOBILE; import static org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_PREF_TOR_NETWORK; @@ -132,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); @@ -162,7 +165,9 @@ 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; @@ -182,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"); @@ -287,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", CONTROL_PORT); + 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 @@ -390,9 +397,23 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener { return zin; } + private static void append(StringBuilder strb, String name, int value) { + strb.append(name); + strb.append(" "); + strb.append(value); + strb.append("\n"); + } + private InputStream getConfigInputStream() { - ClassLoader cl = getClass().getClassLoader(); - return requireNonNull(cl.getResourceAsStream("torrc")); + StringBuilder strb = new StringBuilder(); + append(strb, "ControlPort", torControlPort); + append(strb, "CookieAuthentication", 1); + append(strb, "DisableNetwork", 1); + append(strb, "RunAsDaemon", 1); + append(strb, "SafeSocks", 1); + append(strb, "SocksPort", torSocksPort); + return new ByteArrayInputStream( + strb.toString().getBytes(Charset.forName("UTF-8"))); } private void listFiles(File f) { 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 be342f011..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,5 +1,7 @@ package org.briarproject.bramble.socks; +import org.briarproject.bramble.api.plugin.TorSocksPort; + import java.net.InetSocketAddress; import javax.net.SocketFactory; @@ -9,15 +11,14 @@ import dagger.Provides; import static org.briarproject.bramble.api.plugin.TorConstants.CONNECT_TO_PROXY_TIMEOUT; import static org.briarproject.bramble.api.plugin.TorConstants.EXTRA_SOCKET_TIMEOUT; -import static org.briarproject.bramble.api.plugin.TorConstants.SOCKS_PORT; @Module public class SocksModule { @Provides - SocketFactory provideTorSocketFactory() { + SocketFactory provideTorSocketFactory(@TorSocksPort int torSocksPort) { InetSocketAddress proxy = new InetSocketAddress("127.0.0.1", - SOCKS_PORT); + torSocksPort); return new SocksSocketFactory(proxy, CONNECT_TO_PROXY_TIMEOUT, EXTRA_SOCKET_TIMEOUT); } diff --git a/bramble-core/src/main/resources/torrc b/bramble-core/src/main/resources/torrc deleted file mode 100644 index 3d27a7f20..000000000 --- a/bramble-core/src/main/resources/torrc +++ /dev/null @@ -1,6 +0,0 @@ -ControlPort 59051 -CookieAuthentication 1 -DisableNetwork 1 -RunAsDaemon 1 -SafeSocks 1 -SocksPort 59050 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 791d01896..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 @@ -35,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, 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 568ba51c3..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 @@ -35,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, 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 c13b7e61b..4101fa394 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; @@ -54,6 +56,8 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { private final BatteryManager batteryManager; private final Clock clock; private final File torDirectory; + private int torSocksPort; + private int torControlPort; @Inject UnixTorPluginFactory(@IoExecutor Executor ioExecutor, @@ -67,7 +71,9 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { 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; @@ -80,6 +86,8 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { this.batteryManager = batteryManager; this.clock = clock; this.torDirectory = torDirectory; + this.torSocksPort = torSocksPort; + this.torControlPort = torControlPort; } @Override @@ -125,7 +133,8 @@ public class UnixTorPluginFactory implements DuplexPluginFactory { 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 99ebef925..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 @@ -36,6 +36,8 @@ import static java.util.Collections.singletonList; import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.logging.Logger.getLogger; import static org.briarproject.bramble.api.plugin.Plugin.State.ACTIVE; +import static org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT; +import static org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT; import static org.briarproject.bramble.test.TestUtils.deleteTestDirectory; import static org.briarproject.bramble.test.TestUtils.getTestDirectory; import static org.briarproject.bramble.test.TestUtils.isOptionalTestEnabled; @@ -139,7 +141,8 @@ public class BridgeTest extends BrambleTestCase { factory = new UnixTorPluginFactory(ioExecutor, wakefulIoExecutor, networkManager, locationUtils, eventBus, torSocketFactory, backoffFactory, resourceProvider, bridgeProvider, - batteryManager, clock, torDir); + 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 79268f2e3..3c33b1cbd 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,7 +18,9 @@ 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; @@ -74,6 +76,8 @@ import static java.util.Arrays.asList; import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static java.util.Collections.singletonMap; +import static org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_CONTROL_PORT; +import static org.briarproject.bramble.api.plugin.TorConstants.DEFAULT_SOCKS_PORT; import static org.briarproject.bramble.api.reporting.ReportingConstants.DEV_ONION_ADDRESS; import static org.briarproject.bramble.api.reporting.ReportingConstants.DEV_PUBLIC_KEY_HEX; @@ -154,6 +158,28 @@ public class AppModule { return app.getDir("tor", MODE_PRIVATE); } + @Provides + @Singleton + @TorSocksPort + int provideTorSocksPort() { + if (!IS_DEBUG_BUILD) { + return DEFAULT_SOCKS_PORT; + } else { + return DEFAULT_SOCKS_PORT + 2; + } + } + + @Provides + @Singleton + @TorControlPort + int provideTorControlPort() { + if (!IS_DEBUG_BUILD) { + return DEFAULT_CONTROL_PORT; + } else { + return DEFAULT_CONTROL_PORT + 2; + } + } + @Provides @Singleton PluginConfig providePluginConfig(AndroidBluetoothPluginFactory bluetooth, 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 0c3e66319..ac7879906 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 @@ -7,7 +7,11 @@ import org.briarproject.bramble.account.AccountModule import org.briarproject.bramble.api.FeatureFlags 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 @@ -73,6 +77,14 @@ internal class HeadlessModule(private val appDir: 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 67171a977..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 @@ -6,6 +6,10 @@ import dagger.Provides import org.briarproject.bramble.account.AccountModule 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 @@ -64,6 +68,14 @@ internal class HeadlessTestModule(private val appDir: File) { return HeadlessDatabaseConfig(dbDir, keyDir) } + @Provides + @TorSocksPort + internal fun provideTorSocksPort(): Int = DEFAULT_SOCKS_PORT + + @Provides + @TorControlPort + internal fun provideTorControlPort(): Int = DEFAULT_CONTROL_PORT + @Provides @Singleton internal fun providePluginConfig(): PluginConfig {