From ff837cf66e6f9ee394d60a136fd0c003a7212544 Mon Sep 17 00:00:00 2001 From: zzz Date: Mon, 26 May 2014 13:36:41 +0000 Subject: [PATCH] i2ptunnel: Define standard tunnel properties and types in one place --- .../net/i2p/i2ptunnel/TunnelController.java | 125 +++++++++----- .../src/net/i2p/i2ptunnel/web/EditBean.java | 6 +- .../src/net/i2p/i2ptunnel/web/IndexBean.java | 156 +++++++++--------- 3 files changed, 166 insertions(+), 121 deletions(-) diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java index 095c4171f..8488c1e5a 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java @@ -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 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 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) { diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java index 12fded0d8..019e1faaa 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/EditBean.java @@ -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 sorted = new TreeMap(); for (Map.Entry e : opts.entrySet()) { String key = (String)e.getKey(); diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java index 0e5ff09f7..698c3cd42 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/web/IndexBean.java @@ -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);