forked from I2P_Developers/i2p.i2p
i2ptunnel: Define standard tunnel properties and types in one place
This commit is contained in:
@@ -45,6 +45,45 @@ public class TunnelController implements Logging {
|
||||
|
||||
public static final String KEY_BACKUP_DIR = "i2ptunnel-keyBackup";
|
||||
|
||||
/** all of these @since 0.9.14 */
|
||||
public static final String PROP_DESCR = "description";
|
||||
public static final String PROP_DEST = "targetDestination";
|
||||
public static final String PROP_I2CP_HOST = "i2cpHost";
|
||||
public static final String PROP_I2CP_PORT = "i2cpPort";
|
||||
public static final String PROP_INTFC = "interface";
|
||||
public static final String PROP_FILE = "privKeyFile";
|
||||
public static final String PROP_LISTEN_PORT = "listenPort";
|
||||
public static final String PROP_NAME = "name";
|
||||
public static final String PROP_PROXIES = "proxyList";
|
||||
public static final String PROP_SHARED = "sharedClient";
|
||||
public static final String PROP_SPOOFED_HOST = "spoofedHost";
|
||||
public static final String PROP_START = "startOnLoad";
|
||||
public static final String PROP_TARGET_HOST = "targetHost";
|
||||
public static final String PROP_TARGET_PORT = "targetPort";
|
||||
public static final String PROP_TYPE = "type";
|
||||
|
||||
/** @since 0.9.14 */
|
||||
public static final String PFX_OPTION = "option.";
|
||||
|
||||
private static final String OPT_PERSISTENT = PFX_OPTION + "persistentClientKey";
|
||||
private static final String OPT_BUNDLE_REPLY = PFX_OPTION + "shouldBundleReplyInfo";
|
||||
private static final String OPT_TAGS_SEND = PFX_OPTION + "crypto.tagsToSend";
|
||||
private static final String OPT_LOW_TAGS = PFX_OPTION + "crypto.lowTagThreshold";
|
||||
|
||||
/** all of these @since 0.9.14 */
|
||||
public static final String TYPE_CONNECT = "connectclient";
|
||||
public static final String TYPE_HTTP_BIDIR_SERVER = "httpbidirserver";
|
||||
public static final String TYPE_HTTP_CLIENT = "httpclient";
|
||||
public static final String TYPE_HTTP_SERVER = "httpserver";
|
||||
public static final String TYPE_IRC_CLIENT = "ircclient";
|
||||
public static final String TYPE_IRC_SERVER = "ircserver";
|
||||
public static final String TYPE_SOCKS = "sockstunnel";
|
||||
public static final String TYPE_SOCKS_IRC = "socksirctunnel";
|
||||
public static final String TYPE_STD_CLIENT = "client";
|
||||
public static final String TYPE_STD_SERVER = "server";
|
||||
public static final String TYPE_STREAMR_CLIENT = "streamrclient";
|
||||
public static final String TYPE_STREAMR_SERVER = "streamrserver";
|
||||
|
||||
/**
|
||||
* Create a new controller for a tunnel out of the specific config options.
|
||||
* The config may contain a large number of options - only ones that begin in
|
||||
@@ -104,7 +143,7 @@ public class TunnelController implements Logging {
|
||||
try {
|
||||
fos = new SecureFileOutputStream(keyFile);
|
||||
SigType stype = I2PClient.DEFAULT_SIGTYPE;
|
||||
String st = _config.getProperty("option." + I2PClient.PROP_SIGTYPE);
|
||||
String st = _config.getProperty(PFX_OPTION + I2PClient.PROP_SIGTYPE);
|
||||
if (st != null) {
|
||||
SigType type = SigType.parseSigType(st);
|
||||
if (type != null)
|
||||
@@ -193,29 +232,29 @@ public class TunnelController implements Logging {
|
||||
}
|
||||
setI2CPOptions();
|
||||
setSessionOptions();
|
||||
if ("httpclient".equals(type)) {
|
||||
if (TYPE_HTTP_CLIENT.equals(type)) {
|
||||
startHttpClient();
|
||||
} else if("ircclient".equals(type)) {
|
||||
} else if(TYPE_IRC_CLIENT.equals(type)) {
|
||||
startIrcClient();
|
||||
} else if("sockstunnel".equals(type)) {
|
||||
} else if(TYPE_SOCKS.equals(type)) {
|
||||
startSocksClient();
|
||||
} else if("socksirctunnel".equals(type)) {
|
||||
} else if(TYPE_SOCKS_IRC.equals(type)) {
|
||||
startSocksIRCClient();
|
||||
} else if("connectclient".equals(type)) {
|
||||
} else if(TYPE_CONNECT.equals(type)) {
|
||||
startConnectClient();
|
||||
} else if ("client".equals(type)) {
|
||||
} else if (TYPE_STD_CLIENT.equals(type)) {
|
||||
startClient();
|
||||
} else if ("streamrclient".equals(type)) {
|
||||
} else if (TYPE_STREAMR_CLIENT.equals(type)) {
|
||||
startStreamrClient();
|
||||
} else if ("server".equals(type)) {
|
||||
} else if (TYPE_STD_SERVER.equals(type)) {
|
||||
startServer();
|
||||
} else if ("httpserver".equals(type)) {
|
||||
} else if (TYPE_HTTP_SERVER.equals(type)) {
|
||||
startHttpServer();
|
||||
} else if ("httpbidirserver".equals(type)) {
|
||||
} else if (TYPE_HTTP_BIDIR_SERVER.equals(type)) {
|
||||
startHttpBidirServer();
|
||||
} else if ("ircserver".equals(type)) {
|
||||
} else if (TYPE_IRC_SERVER.equals(type)) {
|
||||
startIrcServer();
|
||||
} else if ("streamrserver".equals(type)) {
|
||||
} else if (TYPE_STREAMR_SERVER.equals(type)) {
|
||||
startStreamrServer();
|
||||
} else {
|
||||
if (_log.shouldLog(Log.ERROR))
|
||||
@@ -428,8 +467,8 @@ public class TunnelController implements Logging {
|
||||
Properties opts = new Properties();
|
||||
for (Map.Entry<Object, Object> e : _config.entrySet()) {
|
||||
String key = (String) e.getKey();
|
||||
if (key.startsWith("option.")) {
|
||||
key = key.substring("option.".length());
|
||||
if (key.startsWith(PFX_OPTION)) {
|
||||
key = key.substring(PFX_OPTION.length());
|
||||
String val = (String) e.getValue();
|
||||
opts.setProperty(key, val);
|
||||
}
|
||||
@@ -444,11 +483,11 @@ public class TunnelController implements Logging {
|
||||
// as a "spoofed" option. Since 0.9.9.
|
||||
String target = getTargetDestination();
|
||||
if (target != null)
|
||||
opts.setProperty("targetDestination", target);
|
||||
opts.setProperty(PROP_DEST, target);
|
||||
// Ditto outproxy list. Since 0.9.12.
|
||||
String proxies = getProxyList();
|
||||
if (proxies != null)
|
||||
opts.setProperty("proxyList", proxies);
|
||||
opts.setProperty(PROP_PROXIES, proxies);
|
||||
_tunnel.setClientOptions(opts);
|
||||
}
|
||||
|
||||
@@ -504,15 +543,15 @@ public class TunnelController implements Logging {
|
||||
// is done in the I2PTunnelServer constructor.
|
||||
String type = getType();
|
||||
if (type != null) {
|
||||
if (type.equals("httpserver") || type.equals("streamrserver")) {
|
||||
if (!_config.containsKey("option.shouldBundleReplyInfo"))
|
||||
_config.setProperty("option.shouldBundleReplyInfo", "false");
|
||||
} else if (type.contains("irc") || type.equals("streamrclient")) {
|
||||
if (type.equals(TYPE_HTTP_SERVER) || type.equals(TYPE_STREAMR_SERVER)) {
|
||||
if (!_config.containsKey(OPT_BUNDLE_REPLY))
|
||||
_config.setProperty(OPT_BUNDLE_REPLY, "false");
|
||||
} else if (type.contains("irc") || type.equals(TYPE_STREAMR_CLIENT)) {
|
||||
// maybe a bad idea for ircclient if DCC is enabled
|
||||
if (!_config.containsKey("option.crypto.tagsToSend"))
|
||||
_config.setProperty("option.crypto.tagsToSend", "20");
|
||||
if (!_config.containsKey("option.crypto.lowTagThreshold"))
|
||||
_config.setProperty("option.crypto.lowTagThreshold", "14");
|
||||
if (!_config.containsKey(OPT_TAGS_SEND))
|
||||
_config.setProperty(OPT_TAGS_SEND, "20");
|
||||
if (!_config.containsKey(OPT_LOW_TAGS))
|
||||
_config.setProperty(OPT_LOW_TAGS, "14");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -541,11 +580,11 @@ public class TunnelController implements Logging {
|
||||
return rv;
|
||||
}
|
||||
|
||||
public String getType() { return _config.getProperty("type"); }
|
||||
public String getName() { return _config.getProperty("name"); }
|
||||
public String getDescription() { return _config.getProperty("description"); }
|
||||
public String getI2CPHost() { return _config.getProperty("i2cpHost"); }
|
||||
public String getI2CPPort() { return _config.getProperty("i2cpPort"); }
|
||||
public String getType() { return _config.getProperty(PROP_TYPE); }
|
||||
public String getName() { return _config.getProperty(PROP_NAME); }
|
||||
public String getDescription() { return _config.getProperty(PROP_DESCR); }
|
||||
public String getI2CPHost() { return _config.getProperty(PROP_I2CP_HOST); }
|
||||
public String getI2CPPort() { return _config.getProperty(PROP_I2CP_PORT); }
|
||||
|
||||
/**
|
||||
* These are the ones with a prefix of "option."
|
||||
@@ -557,8 +596,8 @@ public class TunnelController implements Logging {
|
||||
StringBuilder opts = new StringBuilder(64);
|
||||
for (Map.Entry<Object, Object> e : _config.entrySet()) {
|
||||
String key = (String) e.getKey();
|
||||
if (key.startsWith("option.")) {
|
||||
key = key.substring("option.".length());
|
||||
if (key.startsWith(PFX_OPTION)) {
|
||||
key = key.substring(PFX_OPTION.length());
|
||||
String val = (String) e.getValue();
|
||||
if (opts.length() > 0) opts.append(' ');
|
||||
opts.append(key).append('=').append(val);
|
||||
@@ -567,19 +606,19 @@ public class TunnelController implements Logging {
|
||||
return opts.toString();
|
||||
}
|
||||
|
||||
public String getListenOnInterface() { return _config.getProperty("interface"); }
|
||||
public String getTargetHost() { return _config.getProperty("targetHost"); }
|
||||
public String getTargetPort() { return _config.getProperty("targetPort"); }
|
||||
public String getSpoofedHost() { return _config.getProperty("spoofedHost"); }
|
||||
public String getPrivKeyFile() { return _config.getProperty("privKeyFile"); }
|
||||
public String getListenPort() { return _config.getProperty("listenPort"); }
|
||||
public String getTargetDestination() { return _config.getProperty("targetDestination"); }
|
||||
public String getProxyList() { return _config.getProperty("proxyList"); }
|
||||
public String getListenOnInterface() { return _config.getProperty(PROP_INTFC); }
|
||||
public String getTargetHost() { return _config.getProperty(PROP_TARGET_HOST); }
|
||||
public String getTargetPort() { return _config.getProperty(PROP_TARGET_PORT); }
|
||||
public String getSpoofedHost() { return _config.getProperty(PROP_SPOOFED_HOST); }
|
||||
public String getPrivKeyFile() { return _config.getProperty(PROP_FILE); }
|
||||
public String getListenPort() { return _config.getProperty(PROP_LISTEN_PORT); }
|
||||
public String getTargetDestination() { return _config.getProperty(PROP_DEST); }
|
||||
public String getProxyList() { return _config.getProperty(PROP_PROXIES); }
|
||||
/** default true */
|
||||
public String getSharedClient() { return _config.getProperty("sharedClient", "true"); }
|
||||
public String getSharedClient() { return _config.getProperty(PROP_SHARED, "true"); }
|
||||
/** default true */
|
||||
public boolean getStartOnLoad() { return Boolean.parseBoolean(_config.getProperty("startOnLoad", "true")); }
|
||||
public boolean getPersistentClientKey() { return Boolean.parseBoolean(_config.getProperty("option.persistentClientKey")); }
|
||||
public boolean getStartOnLoad() { return Boolean.parseBoolean(_config.getProperty(PROP_START, "true")); }
|
||||
public boolean getPersistentClientKey() { return Boolean.parseBoolean(_config.getProperty(OPT_PERSISTENT)); }
|
||||
|
||||
public String getMyDestination() {
|
||||
if (_tunnel != null) {
|
||||
|
@@ -399,7 +399,7 @@ public class EditBean extends IndexBean {
|
||||
|
||||
/** @since 0.9.12 */
|
||||
public boolean isAdvanced() {
|
||||
return _context.getBooleanProperty("routerconsole.advanced");
|
||||
return _context.getBooleanProperty(PROP_ADVANCED);
|
||||
}
|
||||
|
||||
public String getI2CPHost(int tunnel) {
|
||||
@@ -427,8 +427,8 @@ public class EditBean extends IndexBean {
|
||||
if (tun != null) {
|
||||
Properties opts = getOptions(tun);
|
||||
if (opts == null) return "";
|
||||
boolean isMD5Proxy = "httpclient".equals(tun.getType()) ||
|
||||
"connectclient".equals(tun.getType());
|
||||
boolean isMD5Proxy = TunnelController.TYPE_HTTP_CLIENT.equals(tun.getType()) ||
|
||||
TunnelController.TYPE_CONNECT.equals(tun.getType());
|
||||
Map<String, String> sorted = new TreeMap<String, String>();
|
||||
for (Map.Entry<Object, Object> e : opts.entrySet()) {
|
||||
String key = (String)e.getKey();
|
||||
|
@@ -113,6 +113,7 @@ public class IndexBean {
|
||||
public static final String PROP_CSS_DISABLED = "routerconsole.css.disabled";
|
||||
public static final String PROP_JS_DISABLED = "routerconsole.javascript.disabled";
|
||||
private static final String PROP_PW_ENABLE = "routerconsole.auth.enable";
|
||||
private static final String OPT = TunnelController.PFX_OPTION;
|
||||
|
||||
public IndexBean() {
|
||||
_context = I2PAppContext.getGlobalContext();
|
||||
@@ -445,13 +446,13 @@ public class IndexBean {
|
||||
}
|
||||
|
||||
public static boolean isClient(String type) {
|
||||
return ( ("client".equals(type)) ||
|
||||
("httpclient".equals(type)) ||
|
||||
("sockstunnel".equals(type)) ||
|
||||
("socksirctunnel".equals(type)) ||
|
||||
("connectclient".equals(type)) ||
|
||||
("streamrclient".equals(type)) ||
|
||||
("ircclient".equals(type)));
|
||||
return ( (TunnelController.TYPE_STD_CLIENT.equals(type)) ||
|
||||
(TunnelController.TYPE_HTTP_CLIENT.equals(type)) ||
|
||||
(TunnelController.TYPE_SOCKS.equals(type)) ||
|
||||
(TunnelController.TYPE_SOCKS_IRC.equals(type)) ||
|
||||
(TunnelController.TYPE_CONNECT.equals(type)) ||
|
||||
(TunnelController.TYPE_STREAMR_CLIENT.equals(type)) ||
|
||||
(TunnelController.TYPE_IRC_CLIENT.equals(type)));
|
||||
}
|
||||
|
||||
public String getTunnelName(int tunnel) {
|
||||
@@ -514,18 +515,18 @@ public class IndexBean {
|
||||
}
|
||||
|
||||
public String getTypeName(String internalType) {
|
||||
if ("client".equals(internalType)) return _("Standard client");
|
||||
else if ("httpclient".equals(internalType)) return _("HTTP/HTTPS client");
|
||||
else if ("ircclient".equals(internalType)) return _("IRC client");
|
||||
else if ("server".equals(internalType)) return _("Standard server");
|
||||
else if ("httpserver".equals(internalType)) return _("HTTP server");
|
||||
else if ("sockstunnel".equals(internalType)) return _("SOCKS 4/4a/5 proxy");
|
||||
else if ("socksirctunnel".equals(internalType)) return _("SOCKS IRC proxy");
|
||||
else if ("connectclient".equals(internalType)) return _("CONNECT/SSL/HTTPS proxy");
|
||||
else if ("ircserver".equals(internalType)) return _("IRC server");
|
||||
else if ("streamrclient".equals(internalType)) return _("Streamr client");
|
||||
else if ("streamrserver".equals(internalType)) return _("Streamr server");
|
||||
else if ("httpbidirserver".equals(internalType)) return _("HTTP bidir");
|
||||
if (TunnelController.TYPE_STD_CLIENT.equals(internalType)) return _("Standard client");
|
||||
else if (TunnelController.TYPE_HTTP_CLIENT.equals(internalType)) return _("HTTP/HTTPS client");
|
||||
else if (TunnelController.TYPE_IRC_CLIENT.equals(internalType)) return _("IRC client");
|
||||
else if (TunnelController.TYPE_STD_SERVER.equals(internalType)) return _("Standard server");
|
||||
else if (TunnelController.TYPE_HTTP_SERVER.equals(internalType)) return _("HTTP server");
|
||||
else if (TunnelController.TYPE_SOCKS.equals(internalType)) return _("SOCKS 4/4a/5 proxy");
|
||||
else if (TunnelController.TYPE_SOCKS_IRC.equals(internalType)) return _("SOCKS IRC proxy");
|
||||
else if (TunnelController.TYPE_CONNECT.equals(internalType)) return _("CONNECT/SSL/HTTPS proxy");
|
||||
else if (TunnelController.TYPE_IRC_SERVER.equals(internalType)) return _("IRC server");
|
||||
else if (TunnelController.TYPE_STREAMR_CLIENT.equals(internalType)) return _("Streamr client");
|
||||
else if (TunnelController.TYPE_STREAMR_SERVER.equals(internalType)) return _("Streamr server");
|
||||
else if (TunnelController.TYPE_HTTP_BIDIR_SERVER.equals(internalType)) return _("HTTP bidir");
|
||||
else return internalType;
|
||||
}
|
||||
|
||||
@@ -580,8 +581,9 @@ public class IndexBean {
|
||||
TunnelController tun = getController(tunnel);
|
||||
if (tun == null) return "";
|
||||
String rv;
|
||||
if ("client".equals(tun.getType()) || "ircclient".equals(tun.getType()) ||
|
||||
"streamrclient".equals(tun.getType()))
|
||||
if (TunnelController.TYPE_STD_CLIENT.equals(tun.getType()) ||
|
||||
TunnelController.TYPE_IRC_CLIENT.equals(tun.getType()) ||
|
||||
TunnelController.TYPE_STREAMR_CLIENT.equals(tun.getType()))
|
||||
rv = tun.getTargetDestination();
|
||||
else
|
||||
rv = tun.getProxyList();
|
||||
@@ -595,7 +597,7 @@ public class IndexBean {
|
||||
public boolean isServerTargetLinkValid(int tunnel) {
|
||||
TunnelController tun = getController(tunnel);
|
||||
return tun != null &&
|
||||
"httpserver".equals(tun.getType()) &&
|
||||
TunnelController.TYPE_HTTP_SERVER.equals(tun.getType()) &&
|
||||
tun.getTargetHost() != null &&
|
||||
tun.getTargetPort() != null;
|
||||
}
|
||||
@@ -665,7 +667,7 @@ public class IndexBean {
|
||||
public boolean getIsUsingOutproxyPlugin(int tunnel) {
|
||||
TunnelController tun = getController(tunnel);
|
||||
if (tun != null) {
|
||||
if ("httpclient".equals(tun.getType())) {
|
||||
if (TunnelController.TYPE_HTTP_CLIENT.equals(tun.getType())) {
|
||||
Properties opts = tun.getClientOptionProps();
|
||||
if (Boolean.parseBoolean(opts.getProperty(I2PTunnelHTTPClient.PROP_USE_OUTPROXY_PLUGIN, "true"))) {
|
||||
ClientAppManager mgr = _context.clientAppManager();
|
||||
@@ -1100,9 +1102,9 @@ public class IndexBean {
|
||||
String signerPKF = null;
|
||||
for (int i = 0; i < getTunnelCount(); i++) {
|
||||
TunnelController c = getController(i);
|
||||
if (_certSigner.equals(c.getConfig("").getProperty("name")) ||
|
||||
_certSigner.equals(c.getConfig("").getProperty("spoofedHost"))) {
|
||||
signerPKF = c.getConfig("").getProperty("privKeyFile");
|
||||
if (_certSigner.equals(c.getConfig("").getProperty(TunnelController.PROP_NAME)) ||
|
||||
_certSigner.equals(c.getConfig("").getProperty(TunnelController.PROP_SPOOFED_HOST))) {
|
||||
signerPKF = c.getConfig("").getProperty(TunnelController.PROP_FILE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1160,62 +1162,63 @@ public class IndexBean {
|
||||
Properties config = new Properties();
|
||||
updateConfigGeneric(config);
|
||||
|
||||
if ((isClient(_type) && !"streamrclient".equals(_type)) || "streamrserver".equals(_type)) {
|
||||
if ((isClient(_type) && !TunnelController.TYPE_STREAMR_CLIENT.equals(_type)) ||
|
||||
TunnelController.TYPE_STREAMR_SERVER.equals(_type)) {
|
||||
// streamrserver uses interface
|
||||
if (_reachableBy != null)
|
||||
config.setProperty("interface", _reachableBy);
|
||||
config.setProperty(TunnelController.PROP_INTFC, _reachableBy);
|
||||
else
|
||||
config.setProperty("interface", "");
|
||||
config.setProperty(TunnelController.PROP_INTFC, "");
|
||||
} else {
|
||||
// streamrclient uses targetHost
|
||||
if (_targetHost != null)
|
||||
config.setProperty("targetHost", _targetHost);
|
||||
config.setProperty(TunnelController.PROP_TARGET_HOST, _targetHost);
|
||||
}
|
||||
|
||||
if (isClient(_type)) {
|
||||
// generic client stuff
|
||||
if (_port != null)
|
||||
config.setProperty("listenPort", _port);
|
||||
config.setProperty("sharedClient", _sharedClient + "");
|
||||
config.setProperty(TunnelController.PROP_LISTEN_PORT, _port);
|
||||
config.setProperty(TunnelController.PROP_SHARED, _sharedClient + "");
|
||||
for (String p : _booleanClientOpts)
|
||||
config.setProperty("option." + p, "" + _booleanOptions.contains(p));
|
||||
config.setProperty(OPT + p, "" + _booleanOptions.contains(p));
|
||||
for (String p : _otherClientOpts)
|
||||
if (_otherOptions.containsKey(p))
|
||||
config.setProperty("option." + p, _otherOptions.get(p));
|
||||
config.setProperty(OPT + p, _otherOptions.get(p));
|
||||
} else {
|
||||
// generic server stuff
|
||||
if (_targetPort != null)
|
||||
config.setProperty("targetPort", _targetPort);
|
||||
config.setProperty(TunnelController.PROP_TARGET_PORT, _targetPort);
|
||||
for (String p : _booleanServerOpts)
|
||||
config.setProperty("option." + p, "" + _booleanOptions.contains(p));
|
||||
config.setProperty(OPT + p, "" + _booleanOptions.contains(p));
|
||||
for (String p : _otherServerOpts)
|
||||
if (_otherOptions.containsKey(p))
|
||||
config.setProperty("option." + p, _otherOptions.get(p));
|
||||
config.setProperty(OPT + p, _otherOptions.get(p));
|
||||
}
|
||||
|
||||
// generic proxy stuff
|
||||
if ("httpclient".equals(_type) || "connectclient".equals(_type) ||
|
||||
"sockstunnel".equals(_type) ||"socksirctunnel".equals(_type)) {
|
||||
if (TunnelController.TYPE_HTTP_CLIENT.equals(_type) || TunnelController.TYPE_CONNECT.equals(_type) ||
|
||||
TunnelController.TYPE_SOCKS.equals(_type) ||TunnelController.TYPE_SOCKS_IRC.equals(_type)) {
|
||||
for (String p : _booleanProxyOpts)
|
||||
config.setProperty("option." + p, "" + _booleanOptions.contains(p));
|
||||
config.setProperty(OPT + p, "" + _booleanOptions.contains(p));
|
||||
if (_proxyList != null)
|
||||
config.setProperty("proxyList", _proxyList);
|
||||
config.setProperty(TunnelController.PROP_PROXIES, _proxyList);
|
||||
}
|
||||
|
||||
// Proxy auth including migration to MD5
|
||||
if ("httpclient".equals(_type) || "connectclient".equals(_type)) {
|
||||
if (TunnelController.TYPE_HTTP_CLIENT.equals(_type) || TunnelController.TYPE_CONNECT.equals(_type)) {
|
||||
// Migrate even if auth is disabled
|
||||
// go get the old from custom options that updateConfigGeneric() put in there
|
||||
String puser = "option." + I2PTunnelHTTPClientBase.PROP_USER;
|
||||
String puser = OPT + I2PTunnelHTTPClientBase.PROP_USER;
|
||||
String user = config.getProperty(puser);
|
||||
String ppw = "option." + I2PTunnelHTTPClientBase.PROP_PW;
|
||||
String ppw = OPT + I2PTunnelHTTPClientBase.PROP_PW;
|
||||
String pw = config.getProperty(ppw);
|
||||
if (user != null && pw != null && user.length() > 0 && pw.length() > 0) {
|
||||
String pmd5 = "option." + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_PREFIX +
|
||||
String pmd5 = OPT + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_PREFIX +
|
||||
user + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_SUFFIX;
|
||||
if (config.getProperty(pmd5) == null) {
|
||||
// not in there, migrate
|
||||
String realm = _type.equals("httpclient") ? I2PTunnelHTTPClient.AUTH_REALM
|
||||
String realm = _type.equals(TunnelController.TYPE_HTTP_CLIENT) ? I2PTunnelHTTPClient.AUTH_REALM
|
||||
: I2PTunnelConnectClient.AUTH_REALM;
|
||||
String hex = PasswordManager.md5Hex(realm, user, pw);
|
||||
if (hex != null) {
|
||||
@@ -1230,9 +1233,9 @@ public class IndexBean {
|
||||
if (auth != null && !auth.equals("false")) {
|
||||
if (_newProxyUser != null && _newProxyPW != null &&
|
||||
_newProxyUser.length() > 0 && _newProxyPW.length() > 0) {
|
||||
String pmd5 = "option." + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_PREFIX +
|
||||
String pmd5 = OPT + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_PREFIX +
|
||||
_newProxyUser + I2PTunnelHTTPClientBase.PROP_PROXY_DIGEST_SUFFIX;
|
||||
String realm = _type.equals("httpclient") ? I2PTunnelHTTPClient.AUTH_REALM
|
||||
String realm = _type.equals(TunnelController.TYPE_HTTP_CLIENT) ? I2PTunnelHTTPClient.AUTH_REALM
|
||||
: I2PTunnelConnectClient.AUTH_REALM;
|
||||
String hex = PasswordManager.md5Hex(realm, _newProxyUser, _newProxyPW);
|
||||
if (hex != null)
|
||||
@@ -1241,37 +1244,40 @@ public class IndexBean {
|
||||
}
|
||||
}
|
||||
|
||||
if ("ircclient".equals(_type) || "client".equals(_type) || "streamrclient".equals(_type)) {
|
||||
if (TunnelController.TYPE_IRC_CLIENT.equals(_type) ||
|
||||
TunnelController.TYPE_STD_CLIENT.equals(_type) ||
|
||||
TunnelController.TYPE_STREAMR_CLIENT.equals(_type)) {
|
||||
if (_targetDestination != null)
|
||||
config.setProperty("targetDestination", _targetDestination);
|
||||
} else if ("httpserver".equals(_type) || "httpbidirserver".equals(_type)) {
|
||||
config.setProperty(TunnelController.PROP_DEST, _targetDestination);
|
||||
} else if (TunnelController.TYPE_HTTP_SERVER.equals(_type) ||
|
||||
TunnelController.TYPE_HTTP_BIDIR_SERVER.equals(_type)) {
|
||||
if (_spoofedHost != null)
|
||||
config.setProperty("spoofedHost", _spoofedHost);
|
||||
config.setProperty(TunnelController.PROP_SPOOFED_HOST, _spoofedHost);
|
||||
for (String p : _httpServerOpts)
|
||||
if (_otherOptions.containsKey(p))
|
||||
config.setProperty("option." + p, _otherOptions.get(p));
|
||||
config.setProperty(OPT + p, _otherOptions.get(p));
|
||||
}
|
||||
if ("httpbidirserver".equals(_type)) {
|
||||
if (TunnelController.TYPE_HTTP_BIDIR_SERVER.equals(_type)) {
|
||||
if (_port != null)
|
||||
config.setProperty("listenPort", _port);
|
||||
config.setProperty(TunnelController.PROP_LISTEN_PORT, _port);
|
||||
if (_reachableBy != null)
|
||||
config.setProperty("interface", _reachableBy);
|
||||
config.setProperty(TunnelController.PROP_INTFC, _reachableBy);
|
||||
else if (_targetHost != null)
|
||||
config.setProperty("interface", _targetHost);
|
||||
config.setProperty(TunnelController.PROP_INTFC, _targetHost);
|
||||
else
|
||||
config.setProperty("interface", "");
|
||||
config.setProperty(TunnelController.PROP_INTFC, "");
|
||||
}
|
||||
|
||||
if ("ircclient".equals(_type)) {
|
||||
if (TunnelController.TYPE_IRC_CLIENT.equals(_type)) {
|
||||
boolean dcc = _booleanOptions.contains(I2PTunnelIRCClient.PROP_DCC);
|
||||
config.setProperty("option." + I2PTunnelIRCClient.PROP_DCC,
|
||||
config.setProperty(OPT + I2PTunnelIRCClient.PROP_DCC,
|
||||
"" + dcc);
|
||||
// add some sane server options since they aren't in the GUI (yet)
|
||||
if (dcc) {
|
||||
config.setProperty("option." + PROP_MAX_CONNS_MIN, "3");
|
||||
config.setProperty("option." + PROP_MAX_CONNS_HOUR, "10");
|
||||
config.setProperty("option." + PROP_MAX_TOTAL_CONNS_MIN, "5");
|
||||
config.setProperty("option." + PROP_MAX_TOTAL_CONNS_HOUR, "25");
|
||||
config.setProperty(OPT + PROP_MAX_CONNS_MIN, "3");
|
||||
config.setProperty(OPT + PROP_MAX_CONNS_HOUR, "10");
|
||||
config.setProperty(OPT + PROP_MAX_TOTAL_CONNS_MIN, "5");
|
||||
config.setProperty(OPT + PROP_MAX_TOTAL_CONNS_HOUR, "25");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1346,22 +1352,22 @@ public class IndexBean {
|
||||
}
|
||||
|
||||
private void updateConfigGeneric(Properties config) {
|
||||
config.setProperty("type", _type);
|
||||
config.setProperty(TunnelController.PROP_TYPE, _type);
|
||||
if (_name != null)
|
||||
config.setProperty("name", _name);
|
||||
config.setProperty(TunnelController.PROP_NAME, _name);
|
||||
if (_description != null)
|
||||
config.setProperty("description", _description);
|
||||
config.setProperty(TunnelController.PROP_DESCR, _description);
|
||||
if (!_context.isRouterContext()) {
|
||||
if (_i2cpHost != null)
|
||||
config.setProperty("i2cpHost", _i2cpHost);
|
||||
config.setProperty(TunnelController.PROP_I2CP_HOST, _i2cpHost);
|
||||
if ( (_i2cpPort != null) && (_i2cpPort.trim().length() > 0) ) {
|
||||
config.setProperty("i2cpPort", _i2cpPort);
|
||||
config.setProperty(TunnelController.PROP_I2CP_PORT, _i2cpPort);
|
||||
} else {
|
||||
config.setProperty("i2cpPort", "7654");
|
||||
config.setProperty(TunnelController.PROP_I2CP_PORT, "7654");
|
||||
}
|
||||
}
|
||||
if (_privKeyFile != null)
|
||||
config.setProperty("privKeyFile", _privKeyFile);
|
||||
config.setProperty(TunnelController.PROP_FILE, _privKeyFile);
|
||||
|
||||
if (_customOptions != null) {
|
||||
StringTokenizer tok = new StringTokenizer(_customOptions);
|
||||
@@ -1375,16 +1381,16 @@ public class IndexBean {
|
||||
continue;
|
||||
// leave in for HTTP and Connect so it can get migrated to MD5
|
||||
// hide for SOCKS until migrated to MD5
|
||||
if ((!"httpclient".equals(_type)) &&
|
||||
(! "connectclient".equals(_type)) &&
|
||||
if ((!TunnelController.TYPE_HTTP_CLIENT.equals(_type)) &&
|
||||
(!TunnelController.TYPE_CONNECT.equals(_type)) &&
|
||||
_nonProxyNoShowSet.contains(key))
|
||||
continue;
|
||||
String val = pair.substring(eq+1);
|
||||
config.setProperty("option." + key, val);
|
||||
config.setProperty(OPT + key, val);
|
||||
}
|
||||
}
|
||||
|
||||
config.setProperty("startOnLoad", _startOnLoad + "");
|
||||
config.setProperty(TunnelController.PROP_START, _startOnLoad + "");
|
||||
|
||||
if (_tunnelQuantity != null) {
|
||||
config.setProperty("option.inbound.quantity", _tunnelQuantity);
|
||||
|
Reference in New Issue
Block a user