mirror of
https://github.com/wownero/i2p-zero.git
synced 2026-10-20 08:38:35 +02:00
prevent duplicate port assignment
This commit is contained in:
@@ -179,7 +179,7 @@ public class TunnelControl implements Runnable {
|
||||
public boolean enabled = true;
|
||||
public abstract String getType();
|
||||
public abstract String getHost();
|
||||
public abstract String getPort();
|
||||
public abstract int getPort();
|
||||
public abstract String getI2P();
|
||||
public abstract Tunnel start();
|
||||
|
||||
@@ -228,7 +228,7 @@ public class TunnelControl implements Runnable {
|
||||
|
||||
@Override public String getType() { return "client"; }
|
||||
@Override public String getHost() { return "localhost"; }
|
||||
@Override public String getPort() { return port+""; }
|
||||
@Override public int getPort() { return port; }
|
||||
@Override public String getI2P() { return dest; }
|
||||
|
||||
}
|
||||
@@ -250,7 +250,7 @@ public class TunnelControl implements Runnable {
|
||||
|
||||
@Override public String getType() { return "http"; }
|
||||
@Override public String getHost() { return "localhost"; }
|
||||
@Override public String getPort() { return port+""; }
|
||||
@Override public int getPort() { return port; }
|
||||
@Override public String getI2P() { return "n/a"; }
|
||||
}
|
||||
public static class ServerTunnel<T extends ServerTunnel> extends Tunnel {
|
||||
@@ -296,7 +296,7 @@ public class TunnelControl implements Runnable {
|
||||
|
||||
@Override public String getType() { return "server"; }
|
||||
@Override public String getHost() { return host; }
|
||||
@Override public String getPort() { return port+""; }
|
||||
@Override public int getPort() { return port; }
|
||||
@Override public String getI2P() { return dest; }
|
||||
|
||||
}
|
||||
@@ -427,7 +427,7 @@ public class TunnelControl implements Runnable {
|
||||
|
||||
@Override public String getType() { return "socks"; }
|
||||
@Override public String getHost() { return "localhost"; }
|
||||
@Override public String getPort() { return port+""; }
|
||||
@Override public int getPort() { return port; }
|
||||
@Override public String getI2P() { return "n/a"; }
|
||||
}
|
||||
|
||||
@@ -485,6 +485,10 @@ public class TunnelControl implements Runnable {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public boolean isPortAlreadyAssigned(int port) {
|
||||
return tunnelList.tunnels.stream().anyMatch(t->!(t instanceof ServerTunnel) && t.getPort()!=port);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -552,10 +556,16 @@ public class TunnelControl implements Runnable {
|
||||
case "client.create": {
|
||||
String dest = args[1];
|
||||
int port = Integer.parseInt(args[2]);
|
||||
var clientTunnel = new ClientTunnel(dest, port, routerWrapper);
|
||||
clientTunnel.start();
|
||||
tunnelList.addTunnel(clientTunnel);
|
||||
out.println(clientTunnel.port);
|
||||
|
||||
if(isPortAlreadyAssigned(port)) {
|
||||
out.println("ERROR - PORT ALREADY ASSIGNED");
|
||||
}
|
||||
else {
|
||||
var clientTunnel = new ClientTunnel(dest, port, routerWrapper);
|
||||
clientTunnel.start();
|
||||
tunnelList.addTunnel(clientTunnel);
|
||||
out.println(clientTunnel.port);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -579,8 +589,13 @@ public class TunnelControl implements Runnable {
|
||||
|
||||
case "socks.create": {
|
||||
int port = Integer.parseInt(args[1]);
|
||||
tunnelList.addTunnel(new SocksTunnel(port, routerWrapper).start());
|
||||
out.println("OK");
|
||||
if(isPortAlreadyAssigned(port)) {
|
||||
out.println("ERROR - PORT ALREADY ASSIGNED");
|
||||
}
|
||||
else {
|
||||
tunnelList.addTunnel(new SocksTunnel(port, routerWrapper).start());
|
||||
out.println("OK");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -603,8 +618,15 @@ public class TunnelControl implements Runnable {
|
||||
|
||||
case "http.create": {
|
||||
int port = Integer.parseInt(args[1]);
|
||||
tunnelList.addTunnel(new HttpClientTunnel(port, routerWrapper).start());
|
||||
out.println("OK");
|
||||
|
||||
if(isPortAlreadyAssigned(port)) {
|
||||
out.println("ERROR - PORT ALREADY ASSIGNED");
|
||||
}
|
||||
else {
|
||||
tunnelList.addTunnel(new HttpClientTunnel(port, routerWrapper).start());
|
||||
out.println("OK");
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user