/// <summary> /// /// </summary> /// <param name="host"></param> /// <param name="port"></param> /// <param name="appkey"></param> /// <param name="_listenCount"></param> /// <param name="grouppolicy"></param> /// <param name="oServer"></param> /// <param name="_mapType">0:端口转发,1:http的appkey转发</param> /// <param name="fromEureka"></param> public mapPortGroup(string host, string port, string appkey, int _listenCount, outPortSelectPolicy grouppolicy, proxyNettyServer oServer, int _mapType, bool fromEureka = false) : this(host, port, appkey, _listenCount, grouppolicy, null, oServer, listenHttpsEnum.onlyHttpsPort, _mapType, fromEureka) { }
public mapPortGroup(string host, string port, string appkey, int _listenCount, outPortSelectPolicy grouppolicy, string httpsPort, proxyNettyServer oServer, listenHttpsEnum usehttps = listenHttpsEnum.onlyListenport, int _mapType = 0, bool fromEureka = false) : this() { this.ownServer = oServer; IPAddress ip = IPAddress.Any; if (!IPAddress.TryParse(host, out ip)) { } ushort uport; if (ushort.TryParse(port, out uport)) { _point_in = new IPEndPoint(ip, uport); } else { _point_in = null; } this.host = host; this.port = port; this.appkey = appkey; this.mapType = _mapType; this.groupPolicy = grouppolicy; this._maxInCount = _listenCount; this.httpsPort = httpsPort; this.useHttps = usehttps; this.isfromEureka = fromEureka; }
/// <summary> /// /// </summary> public void loadPortProxyCfg() { string filename = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, localRunServer.portProxyFileName); if (!File.Exists(filename)) { return; } XmlDocument tmpxmldoc = Static_xmltools.GetXmlDocument(filename); if (tmpxmldoc == null) { return; } XmlNodeList groupList = null; string xpathstr = "//application/group"; groupList = Static_xmltools.SelectXmlNodes(tmpxmldoc, xpathstr); foreach (XmlNode obj in groupList) { //todo string appkey = Static_xmltools.GetXmlAttr(obj, "Appkey"); string listenport = Static_xmltools.GetXmlAttr(obj, "listenPort"); string str = Static_xmltools.GetXmlAttr(obj, "Policy"); int policy = 0; int.TryParse(str, out policy); int mapType = 0; str = Static_xmltools.GetXmlAttr(obj, "mapType"); int.TryParse(str, out mapType); if (mapType == 1) { listenport = this.port; } string _httpsPort = Static_xmltools.GetXmlAttr(obj, "listenHttpsPort"); outPortSelectPolicy selectpolicy = (outPortSelectPolicy)policy; str = Static_xmltools.GetXmlAttr(obj, "MaxWaitQueue"); int maxQueueCount = -1; int.TryParse(str, out maxQueueCount); string host = Static_xmltools.GetXmlAttr(obj, "Host"); int usehttps = 0; str = Static_xmltools.GetXmlAttr(obj, "useHttps"); int.TryParse(str, out usehttps); mapPortGroup mpg = new mapPortGroup(host, listenport, appkey, maxQueueCount, selectpolicy , _httpsPort, this, (listenHttpsEnum)(usehttps), mapType); xpathstr = ".//portMap"; XmlNodeList maplist = Static_xmltools.SelectXmlNodes(obj, xpathstr); foreach (XmlNode onenode in maplist) { string outHost = Static_xmltools.GetXmlAttr(onenode, "host"); string outPort = Static_xmltools.GetXmlAttr(onenode, "port"); string _outhttpsPort = Static_xmltools.GetXmlAttr(onenode, "httpsPort"); str = Static_xmltools.GetXmlAttr(onenode, "maxConnect"); int maxcount = int.Parse(str); str = Static_xmltools.GetXmlAttr(onenode, "minConnect"); int mincount = int.Parse(str); bool needcheck = true; string needcl = Static_xmltools.GetXmlAttr(onenode, "needCheckLive"); bool.TryParse(needcl, out needcheck); mpg.addOutPort(outHost, outPort, _outhttpsPort, maxcount, needcheck); } if (mapType == 0) { if (mapPortGroup_dic.ContainsKey(listenport)) { continue; } mapPortGroup_dic.Add(listenport, mpg); } else { if (maphttpGroup_dic.ContainsKey(appkey)) { continue; } maphttpGroup_dic.Add(appkey, mpg); } } }