diff --git a/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs b/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs index e44d194..5dbde28 100644 --- a/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs +++ b/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs @@ -23,16 +23,17 @@ namespace Hncore.Pass.Vpn.Service string LoginUrl { get; set; } = "api/login"; string LoginCodeUrl { get; set; } = "main/imgcode.html"; string RefrushTokenUrl { get; set; } = "agent/index.html"; - string SingleAddUrl { get; set; } = "api/number"; - string SingleReAddUrl { get; set; } = "api/number/renew"; + string SingleAddUrl { get; set; } = "api/index/AddAccount?apikey=80cf4f64e990b78a9fc5eb&"; + string SingleReAddUrl { get; set; } = "api/index/updateAccount?apikey=80cf4f64e990b78a9fc5eb&"; string MuiltAddUrl { get; set; } = "agent/memberMuiltAdd.html"; string RefundUrl { get; set; } = "api/number/refund"; - string UpdateUrl = "api/number/";//agent/memberUpdate/id/1155709.html - string OnlineUrl { get; set; } = "api/numberLine/"; - string KIllUrl { get; set; } = "api/numberOffline"; - string searchAccountUrl = "api/numberSingle/"; + string UpdateUrl = "api/index/updateAccount?apikey=80cf4f64e990b78a9fc5eb&";//agent/memberUpdate/id/1155709.html + string OnlineUrl { get; set; } = "api/index/getOnlineList?apikey=80cf4f64e990b78a9fc5eb&"; + string KIllUrl { get; set; } = "api/index/disconnect?apikey=80cf4f64e990b78a9fc5eb&"; + string searchAccountUrl = "api/index/getAccountInfo?apikey=80cf4f64e990b78a9fc5eb&"; string searchTestAccountUrl = "api/numberSingle/"; string DeleteUrl { get; set; } = "api/number/refund";//1160862.html"; + string is_exist { get; set; } = "api/index/exist?apikey=80cf4f64e990b78a9fc5eb&";//1160862.html"; IHttpClientFactory m_HttpClientFactory; public AgentClient9Service(IHttpClientFactory httpClientFactory):base(httpClientFactory) { @@ -76,58 +77,25 @@ namespace Hncore.Pass.Vpn.Service public override async Task NewAccount(string packageKey, string account, string pwd, int connCount = 1, int accountType = 1, int payCount = 1) { var client = CreateHttpClient(); - var interval = "1"; - if(packageKey == "2"){ - interval ="2"; - packageKey = "month"; - } else if(packageKey == "3") { - interval ="3"; - packageKey = "month"; - } - var map = new Dictionary(){}; - if(packageKey == "test"){ - map = new Dictionary(){ - {"group","test" }, - {"number",account }, - {"password",pwd }, - {"body","api"}, - {"mobile","13073735878"} - }; - } else { - map = new Dictionary(){ - {"group","single" }, - {"number",account }, - {"password",pwd }, - {"connect",connCount.ToString()}, - {"interval",interval}, - {"type",packageKey}, - {"body","api"}, - {"mobile","13073735878"} - }; - } - - var title = GetOpTitle("NewAccount", account); - LogHelper.Info(title, map.ToJson()); try { - var resp = await client.PostAsForm(this.SingleAddUrl, map); + var url = this.SingleAddUrl + "type=one&username="+account+"&pass="+pwd+"&taocan="+packageKey+"&connect="+connCount.ToString(); + var resp = await client.GetAsync(url); var content = await resp.Content.ReadAsStringAsync(); JObject jo = (JObject)JsonConvert.DeserializeObject(content); - var status = jo["status"].ToString(); - if (status =="400") + var status = jo["code"].ToString(); + if (status =="10000") { return new ApiResult(ResultCode.C_SUCCESS); } else { - LogHelper.Error(title, content); return new ApiResult(ResultCode.C_INVALID_ERROR, "开户失败"); } } catch (Exception ex) { - LogHelper.Error(title, ex.Message); return new ApiResult(ResultCode.C_INVALID_ERROR, "开户失败"); } } @@ -145,9 +113,6 @@ namespace Hncore.Pass.Vpn.Service var map = new Dictionary(){}; - Console.WriteLine("==============================================================================================="); - Console.WriteLine(packageKey); - Console.WriteLine("==============================================================================================="); if(packageKey == "test"){ map = new Dictionary(){ @@ -205,46 +170,27 @@ namespace Hncore.Pass.Vpn.Service { var client = CreateHttpClient(); - var infoRet = await this.GetAccountInfo(account); - var id = infoRet.Data.Id; - - var interval = "1"; - if(packageKey == "2"){ - interval ="2"; - packageKey = "month"; - } else if(packageKey == "3") { - interval ="3"; - packageKey = "month"; - } - - var map = new Dictionary(){ - {"type",packageKey }, - {"ids[]",id }, - {"interval",interval }, - }; - var title = GetOpTitle("NewReAccount", account); - LogHelper.Info(title, map.ToJson()); try { - var resp = await client.PostAsForm(this.SingleReAddUrl, map); + var url = this.SingleReAddUrl + "type=rebuy&username="+account+"&taocan="+packageKey; + var resp = await client.GetAsync(url); var content = await resp.Content.ReadAsStringAsync(); JObject jo = (JObject)JsonConvert.DeserializeObject(content); - var status = jo["status"].ToString(); - if (status =="400") + var status = jo["code"].ToString(); + if (status =="10000") { return new ApiResult(1); } else { - LogHelper.Error(title, content); return new ApiResult(ResultCode.C_INVALID_ERROR, "续费失败"); } } catch (Exception ex) { - LogHelper.Error(title, ex.Message); - return new ApiResult(ResultCode.C_INVALID_ERROR, "续费失败"); + return new ApiResult(ResultCode.C_INVALID_ERROR, "续费失败"); } + } /// /// 删除账号 @@ -254,33 +200,8 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task DeleteAccount(string account) { - var client = CreateHttpClient(); - var infoRet = await this.GetAccountInfo(account, true); - if (infoRet.Code != ResultCode.C_SUCCESS) - return false; - - var title = GetOpTitle("DeleteAccount", account); - LogHelper.Info(title, account); - try - { - var delete = this.DeleteUrl + infoRet.Data.Id + ".html"; - var resp = await client.GetAsync(delete); - var content = await resp.Content.ReadAsStringAsync(); - if (content.Has() && content.IndexOf("alert(\"删除成功\")") != -1) - { - return true; - } - else - { - LogHelper.Error(title, content); - return false; - } - } - catch (Exception ex) - { - LogHelper.Error(title, ex.Message); - return false; - } + + return false; } /// /// 得到账号信息 @@ -290,43 +211,32 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task> GetAccountInfo(string account,bool isTest=false) { - var client = CreateHttpClient(); - var title = GetOpTitle("GetAccountInfo", account); - var info = ""; - try + var client = CreateHttpClient(); + + var url = this.searchAccountUrl + "account="+account; + var resp = await client.GetAsync(url); + var content = await resp.Content.ReadAsStringAsync(); + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + var data = jo["data"]; + if (status =="10000") { - var url = this.searchAccountUrl + account; - if (isTest) + var trData = new OriginAccountModel { - url = this.searchTestAccountUrl + account; - } - var resp = await client.GetAsync(url); - var content = await resp.Content.ReadAsStringAsync(); - - JObject jo = (JObject)JsonConvert.DeserializeObject(content); - var data = jo["data"]; - - var trData = new OriginAccountModel - { - Id = data["id"].ToString(), - Account = data["number"].ToString(), - Pwd = data["password"].ToString(), - AccountType = data["status"].ToBool()?"未到期":"已到期", - Package = "", - ConnectCount = data["connect"].ToString(), - RegistTime = data["add_time"].ToString(), - EndTime = data["end_time"].ToString(), - RestTime = "", - Amount = data["balance"].ToString(), - Remark = data["body"].ToString(), - }; - return new ApiResult(trData); - } - catch (Exception ex) - { - LogHelper.Error(title, ex.Message+"-->info:"+ info); - return new ApiResult(ResultCode.C_INVALID_ERROR, "查询失败"); + Id = "", + Account = data["username"].ToString(), + Pwd = data["pass"].ToString(), + AccountType = "", + Package = "", + ConnectCount = "", + RegistTime = data["create_time"].ToString(), + EndTime = data["expire_time"].ToString(), + RestTime = "", + Amount = "", + Remark = "", + }; + return new ApiResult(trData); } return new ApiResult(ResultCode.C_INVALID_ERROR, "没有查询到信息"); @@ -341,44 +251,30 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task UpdateAccountPwd(string account, string pwd) { - var ret = await this.GetAccountInfo(account); - if (ret.Code != ResultCode.C_SUCCESS) - { - return false; - } - var accountModel = ret.Data; - if (accountModel == null) - { - return false; - } + var client = CreateHttpClient(); - var map = new Dictionary(){ - {"number",account }, - {"password",pwd }, - {"body","修改密码"+account }, - }; - LogHelper.Info(GetOpTitle("UpdateAccountPwd", account), map.ToJson()); + try { - var resp = await client.PostAsForm(this.UpdateUrl + accountModel.Id, map); + var url = this.UpdateUrl + "type=update_pass&username="+account+"&pass="+pwd; + var resp = await client.GetAsync(url); var content = await resp.Content.ReadAsStringAsync(); - JObject jo = (JObject)JsonConvert.DeserializeObject(content); - var status = jo["status"].ToString(); - if (status =="400") + var status = jo["code"].ToString(); + if (status =="10000") { return true; } else { - LogHelper.Error(GetOpTitle("UpdateAccountPwd", account), content); + return false; } } catch (Exception ex) { - LogHelper.Error(GetOpTitle("UpdateAccountPwd", account), ex); + return false; } - return false; + } /// /// 退款 @@ -388,99 +284,7 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task Refund(string account, string packageKey, int days) { - - // var infoRet = await this.GetAccountInfo(account); - // // Console.WriteLine(infoRet.ToJson()); - // // await Task.Delay(50); - // var id = infoRet.Data.Id; - - // //{"DefaultRequestHeaders":[{"Key":"hl","Value":["hl"]},{"Key":"Cookie","Value":["EtV1DHm0lJwaH9n4dhKUOIGSO8XKroVSRY7shrgFTJyzk3hANqLsVoiYAIzDR8M7"]},{"Key":"Authorization","Value":["Bearer EtV1DHm0lJwaH9n4dhKUOIGSO8XKroVSRY7shrgFTJyzk3hANqLsVoiYAIzDR8M7"]}],"BaseAddress":"http://xjip.hlapi.com/","Timeout":"00:01:40","MaxResponseContentBufferSize":2147483647} - // // var client = CreateHttpClient(); - // // var get_token = client.DefaultRequestHeaders.GetCookies()[0].Cookies[0].Name; - - // HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://xjip.hlapi.com/api/number/refund"); - - // req.Method = "DELETE"; - - // req.ContentType = "application/x-www-form-urlencoded"; - // req.Headers.Add("Authorization", "Bearer w1v9MjG58z6qEzKPUVAdyhRBM8h1vYZVAGc4YpGx525APv9YHQPKuxVMt5EpF87A"); - - // req.Timeout = 30000;//请求超时时间 - - - - // var postData = "id=" + id; - - // byte[] data = Encoding.UTF8.GetBytes(postData); - - // req.ContentLength = data.Length; - - - - // using (Stream reqStream = req.GetRequestStream()) - // { - // reqStream.Write(data, 0, data.Length); - - // reqStream.Close(); - // } - - - // Console.WriteLine(postData); - - - // HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); - - // Stream stream = resp.GetResponseStream(); - - // string result = ""; - // //获取响应内容 - // using (StreamReader reader = new StreamReader(stream, Encoding.UTF8)) - // { - // result = reader.ReadToEnd(); - // } - return new ApiResult(1); - - - - - - // var client = CreateHttpClient(); - - - // // client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); - - // var infoRet = await this.GetAccountInfo(account); - // var id = infoRet.Data.Id; - - // var map = new Dictionary(){ - // {"id",id }, - // }; - // var title = GetOpTitle("Refund", account); - // LogHelper.Info(title, map.ToJson()); - // try - // { - // var resp = await client.DeleteAsForm(this.RefundUrl, map); - // var content = await resp.Content.ReadAsStringAsync(); - // content = System.Text.RegularExpressions.Regex.Unescape(content); - - // JObject jo = (JObject)JsonConvert.DeserializeObject(content); - // var status = jo["status"].ToString(); - // if (status =="400") - // { - // return new ApiResult(1); - // } - // else - // { - // LogHelper.Error(title, content); - // return new ApiResult(ResultCode.C_INVALID_ERROR, "退款失败"); - // } - // } - // catch (Exception ex) - // { - // LogHelper.Error(title, ex.Message); - // return new ApiResult(ResultCode.C_INVALID_ERROR, "退款失败"); - // } } /// /// 是否在线 @@ -490,55 +294,42 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task>> OnLine(string account) { - var client = CreateHttpClient(); - var title = GetOpTitle("OnLine", account); + + var url = this.OnlineUrl + "account="+account; + var resp = await client.GetAsync(url); + var content = await resp.Content.ReadAsStringAsync(); + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); var retData = new List(); - - var info = ""; - try + if (status =="10000") { - var url = this.OnlineUrl + account; - var resp = await client.GetAsync(url); - var content = await resp.Content.ReadAsStringAsync(); - content = content.Replace("[",""); - content = content.Replace("]",""); - - - - if (content.Has()){ - - - JObject jo = (JObject)JsonConvert.DeserializeObject(content); - - - var jsondata = jo; - - - var trData = new OriginAccountOnlineModel + if(jo.ContainsKey("data")){ + foreach (var tr in jo["data"]) { - Account = account, - ServerIP = jsondata["area"].ToString(), - LoginTime = jsondata["time"].ToString(), - OnlineTime = jsondata["time"].ToString(), - LoginIP = "", - UpStream = "", - DownStream = "", - Id= "{number:\""+account+"\",session:\""+jsondata["session"].ToString()+"\"}", - }; - - - retData.Add(trData); + JObject jsondata = (JObject)JsonConvert.DeserializeObject(tr.ToJson()); + + var trData = new OriginAccountOnlineModel + { + Account = account, + ServerIP = jsondata["serveip"].ToString(), + LoginTime = jsondata["start_time"].ToString(), + OnlineTime = jsondata["online_time"].ToString(), + LoginIP = jsondata["userip"].ToString(), + UpStream = jsondata["upbite"].ToString(), + DownStream = jsondata["downbite"].ToString(), + Id= jsondata["id"].ToString(), + + }; + + retData.Add(trData); + } } - - return new ApiResult>(retData); } - catch (Exception ex) - { - LogHelper.Error(title, ex.Message + "-->info:" + info); - return new ApiResult>(ResultCode.C_INVALID_ERROR, "查询失败"); - } + + return new ApiResult>(ResultCode.C_INVALID_ERROR, "查询失败"); + } /// /// 踢号 @@ -549,35 +340,26 @@ namespace Hncore.Pass.Vpn.Service public override async Task KillOut( string id) { var client = CreateHttpClient(); - var title = GetOpTitle("KillOut", id); - var info = ""; - - JObject userinfo = (JObject)JsonConvert.DeserializeObject(id); - - var map = new Dictionary(){ - {"number",userinfo["number"].ToString() }, - {"session",userinfo["session"].ToString() }, - }; - try { - var url = this.KIllUrl; - - var resp = await client.PostAsForm(url, map); + var url = this.KIllUrl + "id="+id; + var resp = await client.GetAsync(url); var content = await resp.Content.ReadAsStringAsync(); - - JObject jo = (JObject)JsonConvert.DeserializeObject(content); - var status = jo["status"].ToString(); - if (status =="400") + var status = jo["code"].ToString(); + if (status =="10000") { return true; - } + } + else + { + return false; + } } catch (Exception ex) { - LogHelper.Error(title, ex.Message + "-->info:" + info); + return false; } return false; } @@ -589,12 +371,19 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task Exist(string account) { - var ret = await this.GetAccountInfo(account); - if (ret.Code != ResultCode.C_SUCCESS) + var client = CreateHttpClient(); + var url = this.is_exist + "username=" + account; + var resp = await client.GetAsync(url); + var content = await resp.Content.ReadAsStringAsync(); + + + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + if (status == "-10000") { - return false; + return true; } - return true; + return false; } } }