diff --git a/Services/Hncore.Pass.Vpn/Service/AgentClient6Service.cs b/Services/Hncore.Pass.Vpn/Service/AgentClient6Service.cs index a32425a..6f61ad9 100644 --- a/Services/Hncore.Pass.Vpn/Service/AgentClient6Service.cs +++ b/Services/Hncore.Pass.Vpn/Service/AgentClient6Service.cs @@ -32,8 +32,10 @@ namespace Hncore.Pass.Vpn.Service string MuiltAddUrl { get; set; } = "agent/memberMuiltAdd.html"; string RefundUrl { get; set; } = "agent/memberRefundAct.html "; string UpdateUrl = "setuser"; - string OnlineUrl { get; set; } = "active_log/?user="; - string KIllUrl { get; set; } = "agent/disConnect2/radacctid/{0}.html"; + string OnlineUrl { get; set; } = "/userapi3/?secretId=20200716182518182489&secretKey=OFcEJAfzYjWT3e2s&type=get_user_onlinelog&user="; + // string KIllUrl { get; set; } = "agent/disConnect2/radacctid/{0}.html"; + string KIllUrl { get; set; } = "/userapi3/?secretId=20200716182518182489&secretKey=OFcEJAfzYjWT3e2s&type=user_online_offline&user={0}&address={1}&server_ip={2}"; + ///userapi3/?secretId=xxx&secretKey=xxxv&type=user_online_offline&user=xxx&address=10.20.0.10&server_ip=58.21.1.x string searchAccountUrl = "userList/?sum=100&page=1&search_data="; string searchTestAccountUrl = "agent/memberList/type/0.html?search=1&username="; string DeleteUrl { get; set; } = "agent/memberDel/id/";//1160862.html"; @@ -180,6 +182,7 @@ namespace Hncore.Pass.Vpn.Service LogHelper.Info(title, map.ToJson()); try { + var resp = await client.GetAsync(this.UserApiUrl + "?" + this.FormatRequest(map)); var content = await resp.Content.ReadAsStringAsync(); JObject jo = (JObject)JsonConvert.DeserializeObject(content); @@ -490,47 +493,31 @@ namespace Hncore.Pass.Vpn.Service var url = this.OnlineUrl + account; var resp = await client.GetAsync(url); var content = await resp.Content.ReadAsStringAsync(); - - var parser = new HtmlParser(); - var document = await parser.ParseDocumentAsync(content); - var trs = document.QuerySelectorAll("table.table tr").ToList(); + JObject jo = (JObject)JsonConvert.DeserializeObject(content); var retData = new List(); - if (trs.Count() > 1) + if ((int)jo["code"] == 1) { - foreach (var tr in trs.Skip(1)) + foreach (var tr in jo["data"]) { - var tds = tr.QuerySelectorAll("td").ToList(); - var tdAccount = tds[1].FirstChild.TextContent; - if (tdAccount != account) - continue; - info = string.Join("", tds.Select(m => m.OuterHtml)); - //序号 会员账号 服务器IP 登录时间 在线时长 会员IP 上行流量 下行流量 操作 + JObject jsondata = (JObject)JsonConvert.DeserializeObject(tr.ToJson()); var trData = new OriginAccountOnlineModel { Account = account, - ServerIP = tds[6].TextContent, - LoginTime = tds[1].TextContent, - OnlineTime = tds[3].TextContent, - LoginIP = tds[5].TextContent, - UpStream = tds[4].TextContent, - DownStream = tds[4].TextContent, - Id= account, + ServerIP = jsondata["server_ip"].ToString(), + LoginTime = jsondata["online_time"].ToString(), + OnlineTime = jsondata["online_time"].ToString(), + LoginIP = jsondata["client_ip"].ToString(), + UpStream = "", + DownStream = "", + Id= "{user:\""+account+"\",address:\""+jsondata["address"]+"\",server_ip:\""+jsondata["server_ip"]+"\"}", }; - var href = tr.LastElementChild.QuerySelector("a")?.Attributes["href"]?.Value; - if (href.Has()) - { - var start = href.LastIndexOf('/'); - var end = href.IndexOf(".html"); - if (start != -1 && end != -1) - { - trData.Id = href.Substring(start + 1, end - start).TrimEnd('.'); - } - } + retData.Add(trData); } } return new ApiResult>(retData); + // return new ApiResult>(ResultCode.C_INVALID_ERROR, "查询失败"); } catch (Exception ex) { @@ -548,13 +535,18 @@ namespace Hncore.Pass.Vpn.Service { var client = CreateHttpClient(); var title = GetOpTitle("KillOut", id); + JObject userinfo = (JObject)JsonConvert.DeserializeObject(id); + + + var info = ""; try { - var url = string.Format(this.KIllUrl, id); + var url = string.Format(this.KIllUrl, userinfo["user"],userinfo["address"],userinfo["server_ip"]); var resp = await client.GetAsync(url); var content = await resp.Content.ReadAsStringAsync(); - if(content.Has()&&content.IndexOf("断开成功")!=-1) + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + if((int)jo["code"] == 1) { return true; }