Inject Tor ports via annotated int parameters

This commit is contained in:
Sebastian Kürten
2021-11-03 15:43:01 +01:00
parent bf091ef854
commit a1f9e80e12
15 changed files with 137 additions and 105 deletions

View File

@@ -1,12 +0,0 @@
package org.briarproject.bramble.plugin;
/**
* Interface used for injecting the tor ports.
*/
public interface TorPorts {
int getSocksPort();
int getControlPort();
}

View File

@@ -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;
}
}

View File

@@ -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());
}

View File

@@ -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);
}