package org.torproject.jtor;
import java.security.Security;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.torproject.jtor.circuits.CircuitManager;
import org.torproject.jtor.directory.Directory;
import org.torproject.jtor.directory.impl.NetworkStatusManager;
import org.torproject.jtor.logging.LogManager;
import org.torproject.jtor.socks.SocksPortListener;
/**
* This class is the main entry-point for running a Tor proxy
* or client.
*/
public class TorClient {
private final LogManager logManager;
private final TorConfig config;
private final Directory directory;
private final CircuitManager circuitManager;
private final SocksPortListener socksListener;
private final NetworkStatusManager networkStatusManager;
public TorClient() {
Security.addProvider(new BouncyCastleProvider());
logManager = Tor.createLogManager();
config = Tor.createConfig(logManager);
directory = Tor.createDirectory(logManager, config);
circuitManager = Tor.createCircuitManager(directory, logManager);
networkStatusManager = Tor.createNetworkStatusManager(directory, logManager);
socksListener = Tor.createSocksPortListener(logManager, circuitManager);
}
/**
* Start running the Tor client service.
*/
public void start() {
directory.loadFromStore();
networkStatusManager.startDownloadingDocuments();
circuitManager.startBuildingCircuits();
socksListener.addListeningPort(5090);
}
public static void main(String[] args) {
final TorClient client = new TorClient();
client.start();
}
}