diff --git a/Services/Hncore.Pass.Vpn/Service/AgentClient10Service.cs b/Services/Hncore.Pass.Vpn/Service/AgentClient10Service.cs index 213dba1..2a6e40d 100644 --- a/Services/Hncore.Pass.Vpn/Service/AgentClient10Service.cs +++ b/Services/Hncore.Pass.Vpn/Service/AgentClient10Service.cs @@ -76,12 +76,20 @@ 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) { + Random rd = new Random(Guid.NewGuid().GetHashCode()); + int i = rd.Next(); + var time_s = DateTime.Now.GetUnixTimeStamp(); - var agentid = ""; - var nonce = ""; - var apikey = ""; + var agentid = "admin1"; + var nonce = MD5(time_s.ToString()) + i.ToString(); + var apikey = "45de79a6720756f3b2db463fe09ba029"; var sign = MD5(time_s+nonce+apikey); - var url = "/api/raduserCreate?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+account+"&password="+pwd+"&prdi=**&maxonline="+connCount+"&day=**"; + + + + var userid = "zhanghao"; + + var url = "/api/raduserCreate?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&userid="+userid+"&username="+account+"&password="+pwd+"&prdid=8&maxonline="+connCount+"&day="+packageKey; var client = CreateHttpClient(); @@ -89,6 +97,7 @@ namespace Hncore.Pass.Vpn.Service var content = await resp.Content.ReadAsStringAsync(); JObject jo = (JObject)JsonConvert.DeserializeObject(content); var status = jo["errcode"].ToString(); + if (status =="0") { return new ApiResult(ResultCode.C_SUCCESS); @@ -97,50 +106,6 @@ namespace Hncore.Pass.Vpn.Service { return new ApiResult(ResultCode.C_INVALID_ERROR, "开户失败"); } - - - // 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(){ - // {"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 content = await resp.Content.ReadAsStringAsync(); - // JObject jo = (JObject)JsonConvert.DeserializeObject(content); - // var status = jo["status"].ToString(); - // if (status =="400") - // { - // 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, "开户失败"); - // } } /// @@ -198,19 +163,29 @@ namespace Hncore.Pass.Vpn.Service public override async Task NewReAccount(string packageKey, string account, int connCount, int payCount = 1) { + Random rd = new Random(Guid.NewGuid().GetHashCode()); + int i = rd.Next(); + var time_s = DateTime.Now.GetUnixTimeStamp(); - var agentid = ""; - var nonce = ""; - var apikey = ""; + var agentid = "admin1"; + var nonce = MD5(time_s.ToString()) + i.ToString(); + var apikey = "45de79a6720756f3b2db463fe09ba029"; var sign = MD5(time_s+nonce+apikey); - var url = "/api/raduserRenew?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+account+"&day=**"; + + + + var url = "/api/raduserRenew?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+account+"&day="+packageKey; var client = CreateHttpClient(); var resp = await client.GetAsync(url); var content = await resp.Content.ReadAsStringAsync(); + Console.WriteLine("=============================================================="); + Console.WriteLine(content); + Console.WriteLine("=============================================================="); JObject jo = (JObject)JsonConvert.DeserializeObject(content); var status = jo["errcode"].ToString(); + if (status =="0") { return new ApiResult(1); @@ -219,43 +194,6 @@ namespace Hncore.Pass.Vpn.Service { return new ApiResult(ResultCode.C_INVALID_ERROR, "续费失败"); } - - - - - // var client = CreateHttpClient(); - - // var infoRet = await this.GetAccountInfo(account); - // var id = infoRet.Data.Id; - - // var map = new Dictionary(){ - // {"type",packageKey }, - // {"ids[]",id }, - // {"interval","1" }, - // }; - // var title = GetOpTitle("NewReAccount", account); - // LogHelper.Info(title, map.ToJson()); - // try - // { - // var resp = await client.PostAsForm(this.SingleReAddUrl, map); - // var content = await resp.Content.ReadAsStringAsync(); - // 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, "续费失败"); - // } } /// /// 删除账号 @@ -301,46 +239,49 @@ 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 + Random rd = new Random(Guid.NewGuid().GetHashCode()); + int i = rd.Next(); + + var time_s = DateTime.Now.GetUnixTimeStamp(); + var agentid = "admin1"; + var nonce = MD5(time_s.ToString()) + i.ToString(); + var apikey = "45de79a6720756f3b2db463fe09ba029"; + var sign = MD5(time_s+nonce+apikey); + + var url = "/api/raduserInfo?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+account; + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = await resp.Content.ReadAsStringAsync(); + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["errcode"].ToString(); + var data = jo["data"]; + if (status =="0") { - 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); + Id = "", + Account = data["username"].ToString(), + Pwd = data["password"].ToString(), + AccountType = "", + Package = "", + ConnectCount = "", + RegistTime = data["createtime"].ToString(), + EndTime = data["expiretime"].ToString(), + RestTime = "", + Amount = "", + Remark = "", + }; + return new ApiResult(trData); } - catch (Exception ex) + else { - LogHelper.Error(title, ex.Message+"-->info:"+ info); - return new ApiResult(ResultCode.C_INVALID_ERROR, "查询失败"); + return new ApiResult(ResultCode.C_INVALID_ERROR, "没有查询到信息"); } - return new ApiResult(ResultCode.C_INVALID_ERROR, "没有查询到信息"); + } /// @@ -353,12 +294,15 @@ namespace Hncore.Pass.Vpn.Service public override async Task UpdateAccountPwd(string account, string pwd) { + Random rd = new Random(Guid.NewGuid().GetHashCode()); + int i = rd.Next(); var time_s = DateTime.Now.GetUnixTimeStamp(); - var agentid = ""; - var nonce = ""; - var apikey = ""; + var agentid = "admin1"; + var nonce = MD5(time_s.ToString()) + i.ToString(); + var apikey = "45de79a6720756f3b2db463fe09ba029"; var sign = MD5(time_s+nonce+apikey); + var url = "/api/raduserChpw?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+account+"&newpass="+pwd; var client = CreateHttpClient(); @@ -376,45 +320,6 @@ namespace Hncore.Pass.Vpn.Service return false; } - - // 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, map); - // var content = await resp.Content.ReadAsStringAsync(); - - // JObject jo = (JObject)JsonConvert.DeserializeObject(content); - // var status = jo["status"].ToString(); - // if (status =="400") - // { - // return true; - // } - // else - // { - // LogHelper.Error(GetOpTitle("UpdateAccountPwd", account), content); - // } - // } - // catch (Exception ex) - // { - // LogHelper.Error(GetOpTitle("UpdateAccountPwd", account), ex); - // } - // return false; } /// /// 退款 @@ -425,98 +330,10 @@ 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, "退款失败"); - // } } /// /// 是否在线 @@ -527,47 +344,52 @@ namespace Hncore.Pass.Vpn.Service public override async Task>> OnLine(string account) { + Random rd = new Random(Guid.NewGuid().GetHashCode()); + int i = rd.Next(); + + var time_s = DateTime.Now.GetUnixTimeStamp(); + var agentid = "admin1"; + var nonce = MD5(time_s.ToString()) + i.ToString(); + var apikey = "45de79a6720756f3b2db463fe09ba029"; + var sign = MD5(time_s+nonce+apikey); + + var url = "/api/raduserAcct?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+account; + var client = CreateHttpClient(); - var title = GetOpTitle("OnLine", account); - var info = ""; - try + var resp = await client.GetAsync(url); + var content = await resp.Content.ReadAsStringAsync(); + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["errcode"].ToString(); + var retData = new List(); + if (status =="0") { - var url = this.OnlineUrl + account; - var resp = await client.GetAsync(url); - var content = await resp.Content.ReadAsStringAsync(); - content = content.Replace("[",""); - content = content.Replace("]",""); - - - - JObject jo = (JObject)JsonConvert.DeserializeObject(content); - - var retData = new List(); - var jsondata = jo; - + foreach (var tr in jo["data"]) + { + JObject jsondata = (JObject)JsonConvert.DeserializeObject(tr.ToJson()); var trData = new OriginAccountOnlineModel { Account = account, - ServerIP = jsondata["area"].ToString(), - LoginTime = jsondata["time"].ToString(), - OnlineTime = jsondata["time"].ToString(), - LoginIP = "", + ServerIP = jsondata["serverip"].ToString(), + LoginTime = jsondata["starttime"].ToString(), + OnlineTime = "", + LoginIP = jsondata["framedip"].ToString(), UpStream = "", DownStream = "", - Id= "{number:\""+account+"\",session:\""+jsondata["session"].ToString()+"\"}", + Id= "{account:\""+account+"\",radacctid:\""+jsondata["radacctid"].ToString()+"\"}", + }; - retData.Add(trData); + } return new ApiResult>(retData); } - catch (Exception ex) + else { - LogHelper.Error(title, ex.Message + "-->info:" + info); - return new ApiResult>(ResultCode.C_INVALID_ERROR, "查询失败"); + return new ApiResult>(ResultCode.C_INVALID_ERROR, "查询失败"); } + } /// /// 踢号 @@ -577,27 +399,33 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task KillOut( string id) { + + Random rd = new Random(Guid.NewGuid().GetHashCode()); + int i = rd.Next(); + + var time_s = DateTime.Now.GetUnixTimeStamp(); + var agentid = "admin1"; + var nonce = MD5(time_s.ToString()) + i.ToString(); + var apikey = "45de79a6720756f3b2db463fe09ba029"; + var sign = MD5(time_s+nonce+apikey); + + JObject userinfo = (JObject)JsonConvert.DeserializeObject(id); + + var url = "/api/raduserDisconnect?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+userinfo["account"]+"&radacctid="+userinfo["radacctid"]; + 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(this.RefundUrl, map); + 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["errcode"].ToString(); + if (status =="0") { return true; } @@ -616,11 +444,29 @@ namespace Hncore.Pass.Vpn.Service /// public override async Task Exist(string account) { - var ret = await this.GetAccountInfo(account); - if (ret.Code != ResultCode.C_SUCCESS) + Random rd = new Random(Guid.NewGuid().GetHashCode()); + int i = rd.Next(); + + var time_s = DateTime.Now.GetUnixTimeStamp(); + var agentid = "admin1"; + var nonce = MD5(time_s.ToString()) + i.ToString(); + + var apikey = "45de79a6720756f3b2db463fe09ba029"; + var sign = MD5(time_s+nonce+apikey); + + var url = "/api/raduserExist?agentid="+agentid+"&ti="+time_s+"&nonce="+nonce+"&sign="+sign+"&username="+account; + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = await resp.Content.ReadAsStringAsync(); + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["errcode"].ToString(); + + if (status =="0") { return false; - } + } return true; } } diff --git a/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs b/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs index 9a9f270..6ac4e7f 100644 --- a/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs +++ b/Services/Hncore.Pass.Vpn/Service/AgentClient9Service.cs @@ -178,10 +178,19 @@ namespace Hncore.Pass.Vpn.Service 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","1" }, + {"interval",interval }, }; var title = GetOpTitle("NewReAccount", account); LogHelper.Info(title, map.ToJson());