forked from I2P_Developers/i2p.i2p
hook up loading of filter definitions for server tunnels
This commit is contained in:
@@ -105,6 +105,8 @@ public class I2PTunnel extends EventDispatcherImpl implements Logging {
|
||||
|
||||
public long readTimeout = -1;
|
||||
|
||||
public String filterDefinition;
|
||||
|
||||
private static final String nocli_args[] = { "-nocli", "-die"};
|
||||
|
||||
private final List<I2PTunnelTask> tasks = new CopyOnWriteArrayList<I2PTunnelTask>();
|
||||
|
@@ -30,6 +30,7 @@ import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.ThreadFactory;
|
||||
|
||||
import net.i2p.I2PException;
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.client.I2PClient;
|
||||
import net.i2p.client.I2PSession;
|
||||
import net.i2p.client.I2PSessionException;
|
||||
@@ -38,6 +39,7 @@ import net.i2p.client.streaming.I2PSocket;
|
||||
import net.i2p.client.streaming.I2PSocketManager;
|
||||
import net.i2p.client.streaming.I2PSocketManagerFactory;
|
||||
import net.i2p.client.streaming.RouterRestartException;
|
||||
import net.i2p.client.streaming.IncomingConnectionFilter;
|
||||
import net.i2p.crypto.SigType;
|
||||
import net.i2p.data.Base64;
|
||||
import net.i2p.data.Hash;
|
||||
@@ -45,6 +47,8 @@ import net.i2p.util.EventDispatcher;
|
||||
import net.i2p.util.I2PAppThread;
|
||||
import net.i2p.util.I2PSSLSocketFactory;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.i2ptunnel.access.FilterFactory;
|
||||
import net.i2p.i2ptunnel.access.InvalidDefinitionException;
|
||||
|
||||
public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
|
||||
|
||||
@@ -218,9 +222,20 @@ public class I2PTunnelServer extends I2PTunnelTask implements Runnable {
|
||||
_log.error("Invalid port specified [" + getTunnel().port + "], reverting to " + portNum);
|
||||
}
|
||||
}
|
||||
|
||||
IncomingConnectionFilter filter = IncomingConnectionFilter.ALLOW;
|
||||
if (getTunnel().filterDefinition != null) {
|
||||
File filterDefinition = new File(getTunnel().filterDefinition);
|
||||
I2PAppContext context = getTunnel().getContext();
|
||||
try {
|
||||
filter = FilterFactory.createFilter(context, filterDefinition);
|
||||
} catch (IOException | InvalidDefinitionException bad) {
|
||||
throw new IllegalArgumentException("Can't create socket manager", bad);
|
||||
}
|
||||
}
|
||||
try {
|
||||
I2PSocketManager rv = I2PSocketManagerFactory.createDisconnectedManager(privData, getTunnel().host,
|
||||
portNum, props);
|
||||
portNum, props, filter);
|
||||
rv.setName("I2PTunnel Server");
|
||||
getTunnel().addSession(rv.getSession());
|
||||
String alt = props.getProperty(PROP_ALT_PKF);
|
||||
|
@@ -85,6 +85,7 @@ public class TunnelController implements Logging {
|
||||
public static final String PROP_TARGET_HOST = "targetHost";
|
||||
public static final String PROP_TARGET_PORT = "targetPort";
|
||||
public static final String PROP_TYPE = "type";
|
||||
public static final String PROP_FILTER = "filterDefinition";
|
||||
|
||||
/**
|
||||
* all of these are @since 0.9.33 (moved from TunnelConfig)
|
||||
@@ -834,6 +835,8 @@ public class TunnelController implements Logging {
|
||||
_config.setProperty(OPT_SIG_TYPE, PREFERRED_SIGTYPE.name());
|
||||
}
|
||||
if (!isClient(type)) {
|
||||
_tunnel.filterDefinition = _config.getProperty(PROP_FILTER);
|
||||
|
||||
String p1 = _config.getProperty(OPT_MAX_CONNS_MIN, "0");
|
||||
String p2 = _config.getProperty(OPT_MAX_CONNS_HOUR, "0");
|
||||
String p3 = _config.getProperty(OPT_MAX_CONNS_DAY, "0");
|
||||
|
Reference in New Issue
Block a user