cleaner thread code

pull/2/head
knaccc 5 years ago
parent 7992aeda99
commit 74e6ba67c3

@ -43,51 +43,41 @@ public class Main {
Router r = new Router(p);
new Thread() {
@Override
public void run() {
r.setKillVMOnEnd(true);
r.runRouter();
}
}.start();
new Thread() {
@Override
public void run() {
try {
while(true) {
if(r.isAlive()) {
break;
}
else {
Thread.sleep(1000);
System.out.println("Waiting for I2P router to start...");
}
new Thread(()->{
r.setKillVMOnEnd(true);
r.runRouter();
}).start();
new Thread(()->{
try {
while(true) {
if(r.isAlive()) {
break;
}
else {
Thread.sleep(1000);
System.out.println("Waiting for I2P router to start...");
}
}
String[] args = new String[]{"sam.keys", "127.0.0.1", "7656", "i2cp.tcp.host=127.0.0.1", "i2cp.tcp.port=7654"};
I2PAppContext context = r.getContext();
ClientAppManager mgr = new ClientAppManagerImpl(context);
SAMBridge samBridge = new SAMBridge(context, mgr, args);
samBridge.startup();
String[] samArgs = new String[]{"sam.keys", "127.0.0.1", "7656", "i2cp.tcp.host=127.0.0.1", "i2cp.tcp.port=7654"};
I2PAppContext context = r.getContext();
ClientAppManager mgr = new ClientAppManagerImpl(context);
SAMBridge samBridge = new SAMBridge(context, mgr, samArgs);
samBridge.startup();
new Thread(new TunnelControl(new File(new File(p.getProperty("i2p.dir.config")), "tunnel"))).start();
new Thread(new TunnelControl(new File(new File(p.getProperty("i2p.dir.config")), "tunnel"))).start();
}
catch (Exception e) {
e.printStackTrace();
}
}
}.start();
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("I2P router will shut down gracefully");
r.shutdownGracefully();
catch (Exception e) {
e.printStackTrace();
}
});
}).start();
Runtime.getRuntime().addShutdownHook(new Thread(()->{
System.out.println("I2P router will shut down gracefully");
r.shutdownGracefully();
}));
}

@ -56,73 +56,55 @@ public class TunnelControl implements Runnable {
String destPubKey = Base64.encode(Files.readAllBytes(new File(pubkeyPath).toPath()));
// listen using the I2P server keypair, and forward incoming connections to a destination and port
new Thread() {
@Override
public void run() {
I2PTunnel t = new I2PTunnel(new String[]{"-die", "-nocli", "-e", "server "+destHost+" "+destPort+" " + seckeyPath});
serverTunnels.put(destPubKey, t);
}
}.start();
new Thread(()->{
I2PTunnel t = new I2PTunnel(new String[]{"-die", "-nocli", "-e", "server "+destHost+" "+destPort+" " + seckeyPath});
serverTunnels.put(destPubKey, t);
}).start();
out.println(destPubKey);
}
else if(args[0].equals("server.destroy")) {
String destPubKey = args[1];
new Thread() {
@Override
public void run() {
var t = serverTunnels.get(destPubKey);
serverTunnels.remove(destPubKey);
t.runClose(new String[]{"forced", "all"}, t);
}
}.start();
new Thread(()->{
var t = serverTunnels.get(destPubKey);
serverTunnels.remove(destPubKey);
t.runClose(new String[]{"forced", "all"}, t);
}).start();
out.println("OK");
}
else if(args[0].equals("client.create")) {
String destPubKey = args[1];
int port = clientPortSeq++;
new Thread() {
@Override
public void run() {
var t = new I2PTunnel(new String[]{"-die", "-nocli", "-e", "config localhost 7654", "-e", "client " + port + " " + destPubKey});
clientTunnels.put(port, t);
}
}.start();
new Thread(()->{
var t = new I2PTunnel(new String[]{"-die", "-nocli", "-e", "config localhost 7654", "-e", "client " + port + " " + destPubKey});
clientTunnels.put(port, t);
}).start();
out.println(port);
}
if(args[0].equals("client.destroy")) {
int port = Integer.parseInt(args[1]);
new Thread() {
@Override
public void run() {
var t = clientTunnels.get(port);
clientTunnels.remove(port);
t.runClose(new String[]{"forced", "all"}, t);
}
}.start();
new Thread(()->{
var t = clientTunnels.get(port);
clientTunnels.remove(port);
t.runClose(new String[]{"forced", "all"}, t);
}).start();
out.println("OK");
}
if(args[0].equals("socks.create")) {
int port = Integer.parseInt(args[1]);
new Thread() {
@Override
public void run() {
// sockstunnel port
var t = new I2PTunnel(new String[]{"-die", "-nocli", "-e", "sockstunnel " + port});
socksTunnels.put(port, t);
}
}.start();
new Thread(()->{
// sockstunnel port
var t = new I2PTunnel(new String[]{"-die", "-nocli", "-e", "sockstunnel " + port});
socksTunnels.put(port, t);
}).start();
out.println("OK");
}
if(args[0].equals("socks.destroy")) {
int port = Integer.parseInt(args[1]);
new Thread() {
@Override
public void run() {
var t = socksTunnels.get(port);
socksTunnels.remove(port);
t.runClose(new String[]{"forced", "all"}, t);
}
}.start();
new Thread(()->{
var t = socksTunnels.get(port);
socksTunnels.remove(port);
t.runClose(new String[]{"forced", "all"}, t);
}).start();
out.println("OK");
}

Loading…
Cancel
Save