mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 21:29:54 +01:00
Enable Tor on Mac OS once binaries are available.
This commit is contained in:
@@ -10,7 +10,6 @@ import org.briarproject.bramble.api.system.LocationUtils;
|
|||||||
import org.briarproject.bramble.api.system.ResourceProvider;
|
import org.briarproject.bramble.api.system.ResourceProvider;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.net.URISyntaxException;
|
import java.net.URISyntaxException;
|
||||||
import java.security.CodeSource;
|
import java.security.CodeSource;
|
||||||
@@ -19,9 +18,9 @@ import java.util.concurrent.Executor;
|
|||||||
import javax.net.SocketFactory;
|
import javax.net.SocketFactory;
|
||||||
|
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
class LinuxTorPlugin extends TorPlugin {
|
abstract class JavaTorPlugin extends TorPlugin {
|
||||||
|
|
||||||
LinuxTorPlugin(Executor ioExecutor, NetworkManager networkManager,
|
JavaTorPlugin(Executor ioExecutor, NetworkManager networkManager,
|
||||||
LocationUtils locationUtils, SocketFactory torSocketFactory,
|
LocationUtils locationUtils, SocketFactory torSocketFactory,
|
||||||
Clock clock, ResourceProvider resourceProvider,
|
Clock clock, ResourceProvider resourceProvider,
|
||||||
CircumventionProvider circumventionProvider,
|
CircumventionProvider circumventionProvider,
|
||||||
@@ -34,17 +33,6 @@ class LinuxTorPlugin extends TorPlugin {
|
|||||||
torDirectory);
|
torDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected int getProcessId() {
|
|
||||||
try {
|
|
||||||
// Java 9: ProcessHandle.current().pid()
|
|
||||||
return Integer.parseInt(
|
|
||||||
new File("/proc/self").getCanonicalFile().getName());
|
|
||||||
} catch (IOException e) {
|
|
||||||
throw new AssertionError(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected long getLastUpdateTime() {
|
protected long getLastUpdateTime() {
|
||||||
CodeSource codeSource =
|
CodeSource codeSource =
|
||||||
@@ -58,5 +46,4 @@ class LinuxTorPlugin extends TorPlugin {
|
|||||||
throw new AssertionError(e);
|
throw new AssertionError(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
package org.briarproject.bramble.plugin.tor;
|
||||||
|
|
||||||
|
import com.sun.jna.Library;
|
||||||
|
import com.sun.jna.Native;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.battery.BatteryManager;
|
||||||
|
import org.briarproject.bramble.api.network.NetworkManager;
|
||||||
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
import org.briarproject.bramble.api.plugin.Backoff;
|
||||||
|
import org.briarproject.bramble.api.plugin.duplex.DuplexPluginCallback;
|
||||||
|
import org.briarproject.bramble.api.system.Clock;
|
||||||
|
import org.briarproject.bramble.api.system.LocationUtils;
|
||||||
|
import org.briarproject.bramble.api.system.ResourceProvider;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.concurrent.Executor;
|
||||||
|
|
||||||
|
import javax.net.SocketFactory;
|
||||||
|
|
||||||
|
@NotNullByDefault
|
||||||
|
class UnixTorPlugin extends JavaTorPlugin {
|
||||||
|
|
||||||
|
UnixTorPlugin(Executor ioExecutor, NetworkManager networkManager,
|
||||||
|
LocationUtils locationUtils, SocketFactory torSocketFactory,
|
||||||
|
Clock clock, ResourceProvider resourceProvider,
|
||||||
|
CircumventionProvider circumventionProvider,
|
||||||
|
BatteryManager batteryManager, Backoff backoff,
|
||||||
|
DuplexPluginCallback callback, String architecture, int maxLatency,
|
||||||
|
int maxIdleTime, File torDirectory) {
|
||||||
|
super(ioExecutor, networkManager, locationUtils, torSocketFactory,
|
||||||
|
clock, resourceProvider, circumventionProvider, batteryManager,
|
||||||
|
backoff, callback, architecture, maxLatency, maxIdleTime,
|
||||||
|
torDirectory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getProcessId() {
|
||||||
|
return CLibrary.INSTANCE.getpid();
|
||||||
|
}
|
||||||
|
|
||||||
|
private interface CLibrary extends Library {
|
||||||
|
|
||||||
|
CLibrary INSTANCE = (CLibrary) Native.loadLibrary("c", CLibrary.class);
|
||||||
|
|
||||||
|
int getpid();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -22,14 +22,15 @@ import java.util.logging.Logger;
|
|||||||
import javax.annotation.concurrent.Immutable;
|
import javax.annotation.concurrent.Immutable;
|
||||||
import javax.net.SocketFactory;
|
import javax.net.SocketFactory;
|
||||||
|
|
||||||
|
import static java.util.logging.Logger.getLogger;
|
||||||
import static org.briarproject.bramble.util.OsUtils.isLinux;
|
import static org.briarproject.bramble.util.OsUtils.isLinux;
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
public class LinuxTorPluginFactory implements DuplexPluginFactory {
|
public class UnixTorPluginFactory implements DuplexPluginFactory {
|
||||||
|
|
||||||
private static final Logger LOG =
|
private static final Logger LOG =
|
||||||
Logger.getLogger(LinuxTorPluginFactory.class.getName());
|
getLogger(UnixTorPluginFactory.class.getName());
|
||||||
|
|
||||||
private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
|
private static final int MAX_LATENCY = 30 * 1000; // 30 seconds
|
||||||
private static final int MAX_IDLE_TIME = 30 * 1000; // 30 seconds
|
private static final int MAX_IDLE_TIME = 30 * 1000; // 30 seconds
|
||||||
@@ -49,7 +50,7 @@ public class LinuxTorPluginFactory implements DuplexPluginFactory {
|
|||||||
private final Clock clock;
|
private final Clock clock;
|
||||||
private final File torDirectory;
|
private final File torDirectory;
|
||||||
|
|
||||||
public LinuxTorPluginFactory(Executor ioExecutor,
|
public UnixTorPluginFactory(Executor ioExecutor,
|
||||||
NetworkManager networkManager, LocationUtils locationUtils,
|
NetworkManager networkManager, LocationUtils locationUtils,
|
||||||
EventBus eventBus, SocketFactory torSocketFactory,
|
EventBus eventBus, SocketFactory torSocketFactory,
|
||||||
BackoffFactory backoffFactory, ResourceProvider resourceProvider,
|
BackoffFactory backoffFactory, ResourceProvider resourceProvider,
|
||||||
@@ -95,7 +96,7 @@ public class LinuxTorPluginFactory implements DuplexPluginFactory {
|
|||||||
|
|
||||||
Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
|
Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
|
||||||
MAX_POLLING_INTERVAL, BACKOFF_BASE);
|
MAX_POLLING_INTERVAL, BACKOFF_BASE);
|
||||||
LinuxTorPlugin plugin = new LinuxTorPlugin(ioExecutor, networkManager,
|
UnixTorPlugin plugin = new UnixTorPlugin(ioExecutor, networkManager,
|
||||||
locationUtils, torSocketFactory, clock, resourceProvider,
|
locationUtils, torSocketFactory, clock, resourceProvider,
|
||||||
circumventionProvider, batteryManager, backoff, callback,
|
circumventionProvider, batteryManager, backoff, callback,
|
||||||
architecture, MAX_LATENCY, MAX_IDLE_TIME, torDirectory);
|
architecture, MAX_LATENCY, MAX_IDLE_TIME, torDirectory);
|
||||||
@@ -70,7 +70,7 @@ public class BridgeTest extends BrambleTestCase {
|
|||||||
private final File torDir = getTestDirectory();
|
private final File torDir = getTestDirectory();
|
||||||
private final String bridge;
|
private final String bridge;
|
||||||
|
|
||||||
private LinuxTorPluginFactory factory;
|
private UnixTorPluginFactory factory;
|
||||||
|
|
||||||
public BridgeTest(String bridge) {
|
public BridgeTest(String bridge) {
|
||||||
this.bridge = bridge;
|
this.bridge = bridge;
|
||||||
@@ -108,7 +108,7 @@ public class BridgeTest extends BrambleTestCase {
|
|||||||
return singletonList(bridge);
|
return singletonList(bridge);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
factory = new LinuxTorPluginFactory(ioExecutor, networkManager,
|
factory = new UnixTorPluginFactory(ioExecutor, networkManager,
|
||||||
locationUtils, eventBus, torSocketFactory, backoffFactory,
|
locationUtils, eventBus, torSocketFactory, backoffFactory,
|
||||||
resourceProvider, bridgeProvider, batteryManager, clock,
|
resourceProvider, bridgeProvider, batteryManager, clock,
|
||||||
torDir);
|
torDir);
|
||||||
@@ -124,7 +124,7 @@ public class BridgeTest extends BrambleTestCase {
|
|||||||
DuplexPlugin duplexPlugin =
|
DuplexPlugin duplexPlugin =
|
||||||
factory.createPlugin(new TorPluginCallBack());
|
factory.createPlugin(new TorPluginCallBack());
|
||||||
assertNotNull(duplexPlugin);
|
assertNotNull(duplexPlugin);
|
||||||
LinuxTorPlugin plugin = (LinuxTorPlugin) duplexPlugin;
|
UnixTorPlugin plugin = (UnixTorPlugin) duplexPlugin;
|
||||||
|
|
||||||
LOG.warning("Testing " + bridge);
|
LOG.warning("Testing " + bridge);
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -24,9 +24,10 @@ import org.briarproject.bramble.battery.DefaultBatteryManagerModule
|
|||||||
import org.briarproject.bramble.network.JavaNetworkModule
|
import org.briarproject.bramble.network.JavaNetworkModule
|
||||||
import org.briarproject.bramble.plugin.tor.CircumventionModule
|
import org.briarproject.bramble.plugin.tor.CircumventionModule
|
||||||
import org.briarproject.bramble.plugin.tor.CircumventionProvider
|
import org.briarproject.bramble.plugin.tor.CircumventionProvider
|
||||||
import org.briarproject.bramble.plugin.tor.LinuxTorPluginFactory
|
import org.briarproject.bramble.plugin.tor.UnixTorPluginFactory
|
||||||
import org.briarproject.bramble.system.JavaSystemModule
|
import org.briarproject.bramble.system.JavaSystemModule
|
||||||
import org.briarproject.bramble.util.OsUtils.isLinux
|
import org.briarproject.bramble.util.OsUtils.isLinux
|
||||||
|
import org.briarproject.bramble.util.OsUtils.isMac
|
||||||
import org.briarproject.bramble.util.StringUtils.fromHexString
|
import org.briarproject.bramble.util.StringUtils.fromHexString
|
||||||
import org.briarproject.briar.headless.blogs.HeadlessBlogModule
|
import org.briarproject.briar.headless.blogs.HeadlessBlogModule
|
||||||
import org.briarproject.briar.headless.contact.HeadlessContactModule
|
import org.briarproject.briar.headless.contact.HeadlessContactModule
|
||||||
@@ -72,11 +73,11 @@ internal class HeadlessModule(private val appDir: File) {
|
|||||||
): PluginConfig {
|
): PluginConfig {
|
||||||
val torDirectory = File(appDir, "tor")
|
val torDirectory = File(appDir, "tor")
|
||||||
val duplex: List<DuplexPluginFactory>
|
val duplex: List<DuplexPluginFactory>
|
||||||
if (isLinux()) {
|
if (isLinux() || isMac()) {
|
||||||
val tor = LinuxTorPluginFactory(
|
val tor = UnixTorPluginFactory(
|
||||||
ioExecutor, networkManager, locationUtils, eventBus,
|
ioExecutor, networkManager, locationUtils, eventBus, torSocketFactory,
|
||||||
torSocketFactory, backoffFactory, resourceProvider, circumventionProvider,
|
backoffFactory, resourceProvider, circumventionProvider, batteryManager, clock,
|
||||||
batteryManager, clock, torDirectory
|
torDirectory
|
||||||
)
|
)
|
||||||
duplex = listOf(tor)
|
duplex = listOf(tor)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user