From 35814d34368b97cd2a8d477ff06eb71c59b7bd37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwanyongkang=E2=80=9D?= <“937888580@qq.com”> Date: Fri, 29 Apr 2022 16:44:02 +0800 Subject: [PATCH] yunniu --- Host/Controllers/ProductController.cs | 10 +- Host/Controllers/UserController.cs | 2 +- Host/Views.Mobile/LineList/Index.cshtml | 14 +- Host/Views.Mobile/Product/Index.cshtml | 54 ++- Host/Views.Mobile/Product/Soft.cshtml | 3 +- Host/Views/LineList/Index.cshtml | 6 + Host/Views/Product/Index.cshtml | 17 +- Host/Views/Product/Soft.cshtml | 8 + Host/Views/Product/buy.cshtml | 4 +- .../Service/AgentClient16Service.cs | 2 +- .../Service/AgentClient18Service.cs | 427 ++++++++++++++++++ .../Hncore.Pass.Vpn/Service/AgentService.cs | 2 + 12 files changed, 509 insertions(+), 40 deletions(-) create mode 100644 Services/Hncore.Pass.Vpn/Service/AgentClient18Service.cs diff --git a/Host/Controllers/ProductController.cs b/Host/Controllers/ProductController.cs index 8bdafc6..25c82ba 100644 --- a/Host/Controllers/ProductController.cs +++ b/Host/Controllers/ProductController.cs @@ -114,7 +114,7 @@ namespace Home.Controllers if (m.ProductId == 18){ m.Title = "8"; } - if (m.ProductId == 6||m.ProductId == 5){ + if (m.ProductId == 6||m.ProductId == 5||m.ProductId == 23){ m.Title = "9"; } } @@ -140,7 +140,7 @@ namespace Home.Controllers if (m.ProductId == 18){ m.Title = "8"; } - if (m.ProductId == 6||m.ProductId == 5){ + if (m.ProductId == 6||m.ProductId == 5||m.ProductId == 23){ m.Title = "9"; } @@ -166,7 +166,7 @@ namespace Home.Controllers if (m.ProductId == 18){ m.Title = "8"; } - if (m.ProductId == 6||m.ProductId == 5){ + if (m.ProductId == 6||m.ProductId == 5||m.ProductId == 23){ m.Title = "9"; } if ((m.DayCount == 1||m.DayCount == 2) && m.Id != 1034&&m.Id != 1040 ){ @@ -925,7 +925,7 @@ namespace Home.Controllers if (m.ProductId == 18){ m.Title = "8"; } - if (m.ProductId == 6||m.ProductId == 5){ + if (m.ProductId == 6||m.ProductId == 5||m.ProductId == 23){ m.Title = "9"; } } @@ -963,7 +963,7 @@ namespace Home.Controllers if (m.ProductId == 18){ m.Title = "8"; } - if (m.ProductId == 6||m.ProductId == 5){ + if (m.ProductId == 6||m.ProductId == 5||m.ProductId == 23){ m.Title = "9"; } var userPrice = userPrices.FirstOrDefault(p => p.PackageId == m.Id); diff --git a/Host/Controllers/UserController.cs b/Host/Controllers/UserController.cs index 9e93373..9f09ed5 100644 --- a/Host/Controllers/UserController.cs +++ b/Host/Controllers/UserController.cs @@ -609,7 +609,7 @@ namespace Home.Controllers { var notifyOrder = data.FromJsonTo(); LogHelper.Info("TaoBao process"); - if(notifyOrder.Payment == "10.00" && (notifyOrder.SellerNick == "聚ip商城动态ip代理" || notifyOrder.SellerNick == "老鹰动态pptp")){ + if(notifyOrder.Payment == "10.00" && (notifyOrder.SellerNick == "聚ip商城动态ip代理" || notifyOrder.SellerNick == "老鹰动态pptp")||notifyOrder.SellerNick == "老鹰动态pptp"){ return "您好,"+notifyOrder.Payment+"元已充值到充值到您的会员中"; } if (notifyOrder == null || notifyOrder.Tid.NotHas()) diff --git a/Host/Views.Mobile/LineList/Index.cshtml b/Host/Views.Mobile/LineList/Index.cshtml index ae15f76..5dcbc94 100644 --- a/Host/Views.Mobile/LineList/Index.cshtml +++ b/Host/Views.Mobile/LineList/Index.cshtml @@ -238,10 +238,16 @@ this.search_field = '蘑菇IP'; this.sstp = '4430'; break; - case 19: - this.l2tp = '123'; - this.search_field = '火狐独享IP'; - this.sstp = '1500'; + case 22: + this.l2tp = '888888'; + this.search_field = '火狐IP'; + this.sstp = '5908'; + break; + + case 23: + this.l2tp = '888888'; + this.search_field = '云牛IP'; + this.sstp = '5908'; break; } $.ajax({ diff --git a/Host/Views.Mobile/Product/Index.cshtml b/Host/Views.Mobile/Product/Index.cshtml index b5437b5..7f405c7 100644 --- a/Host/Views.Mobile/Product/Index.cshtml +++ b/Host/Views.Mobile/Product/Index.cshtml @@ -48,7 +48,7 @@
diff --git a/Host/Views/LineList/Index.cshtml b/Host/Views/LineList/Index.cshtml index 5d85a26..93832fe 100644 --- a/Host/Views/LineList/Index.cshtml +++ b/Host/Views/LineList/Index.cshtml @@ -237,6 +237,12 @@ this.search_field = '火狐IP'; this.sstp = '5908'; break; + + case 23: + this.l2tp = '888888'; + this.search_field = '云牛IP'; + this.sstp = '5908'; + break; } $.ajax({ type: 'GET', diff --git a/Host/Views/Product/Index.cshtml b/Host/Views/Product/Index.cshtml index 6d7d9c4..471762d 100644 --- a/Host/Views/Product/Index.cshtml +++ b/Host/Views/Product/Index.cshtml @@ -360,11 +360,11 @@
diff --git a/Host/Views/Product/buy.cshtml b/Host/Views/Product/buy.cshtml index ec98b30..461a5ef 100644 --- a/Host/Views/Product/buy.cshtml +++ b/Host/Views/Product/buy.cshtml @@ -682,7 +682,7 @@ } }, checkOneAccount() { - if (productId == 20) { + if (productId == 20||productId == 21) { if (this.OneBuyModel.Account.length > 10 || this.OneBuyModel.Account.length < 7 || !this.hasNumAndChar(this.OneBuyModel.Account)) { alert("此产品账号必须大于6位"); this.OneChecker.AccountOk = false; @@ -708,7 +708,7 @@ return true; }, checkMoreAccount() { - if (productId == 20) { + if (productId == 20||productId == 21) { if (this.MoreBuyModel.Account.length < 6 || this.MoreBuyModel.Account.length > 8 || !this.hasNumAndChar(this.MoreBuyModel.Account)) { alert("此产品账号必须大于6位"); this.MoreChecker.AccountOk = false; diff --git a/Services/Hncore.Pass.Vpn/Service/AgentClient16Service.cs b/Services/Hncore.Pass.Vpn/Service/AgentClient16Service.cs index 57f89c6..77ceacf 100644 --- a/Services/Hncore.Pass.Vpn/Service/AgentClient16Service.cs +++ b/Services/Hncore.Pass.Vpn/Service/AgentClient16Service.cs @@ -101,7 +101,7 @@ namespace Hncore.Pass.Vpn.Service {"userpass",pwd}, {"qq","123456789"}, {"time",time}, - {"num","1"}, + {"num",connCount.ToString()}, {"type",type}, {"ip",speed}, {"remark","api开通"}, diff --git a/Services/Hncore.Pass.Vpn/Service/AgentClient18Service.cs b/Services/Hncore.Pass.Vpn/Service/AgentClient18Service.cs new file mode 100644 index 0000000..a42b91b --- /dev/null +++ b/Services/Hncore.Pass.Vpn/Service/AgentClient18Service.cs @@ -0,0 +1,427 @@ +using AngleSharp.Html.Parser; +using Hncore.Infrastructure.Common; +using Hncore.Infrastructure.Extension; +using Hncore.Infrastructure.Serializer; +using Hncore.Infrastructure.WebApi; +using Hncore.Pass.Vpn.Model; +using Hncore.Pass.Vpn.Request.Product; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Text; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Net; +using System.Net.Http; +using System.IO; +using System.Threading.Tasks; +namespace Hncore.Pass.Vpn.Service +{ + public class AgentClient18Service:AgentClientBaseService + { + 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 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 searchTestAccountUrl = "api/numberSingle/"; + string DeleteUrl { get; set; } = "api/number/refund";//1160862.html"; + IHttpClientFactory m_HttpClientFactory; + public AgentClient18Service(IHttpClientFactory httpClientFactory):base(httpClientFactory) + { + m_HttpClientFactory = httpClientFactory; + } + + public override async Task RefrushStatus() + { + return 1; + } + public override async Task<(byte[], string)> GetCode() + { + var client = CreateHttpClient(false); + if (this.LoginUrl.NotHas()) return (null, ""); + var getResp = await client.GetAsync(this.LoginUrl); + var cookie = this.GetCookie(getResp, "PHPSESSID"); + if (cookie.Has()) + { + client.DefaultRequestHeaders.Add("Cookie", cookie); + var ret = await client.GetByteArrayAsync(this.LoginCodeUrl + "?t=" + DateTime.Now.Millisecond); + return (ret, cookie); + } + return (null, ""); + } + public override async Task Login(AgentLoginRequest request) + { + return new ApiResult(request.Key); + } + public override bool CheckAccount(int productId,List accounts) + { + return false; + } + + public override async Task NewAccount(string packageKey, string account, string pwd, int connCount = 1, int accountType = 1, int payCount = 1) + { + + var url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=adduser&user="+account+"&pass="+pwd+"&serverid="+packageKey+"&logincount="+connCount.ToString()+"&idname=万勇强&idcard=410325199407079912"; + + if (packageKey == "test") { + url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=addtestuser&user="+account+"&password="+pwd+"&idname=万勇强&idcard=410325199407079912"; + } + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = ""; + using (var sr = new StreamReader(resp.Content.ReadAsStreamAsync().Result, Encoding.GetEncoding("iso-8859-1"))) + { + content = sr.ReadToEnd(); + } + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + + if (status =="1") + { + return new ApiResult(ResultCode.C_SUCCESS); + } + else + { + return new ApiResult(ResultCode.C_INVALID_ERROR, "开户失败"); + } + } + + /// + /// 新开 + /// + /// + /// + /// + /// + public override async Task NewMuiltAccount(string packageKey, string account, string pwd, int connCount = 1, int accountType = 1,int startNum=0, int endNum=1 ) + { + var client = CreateHttpClient(); + var map = new Dictionary(){ + {"group","single" }, + {"number",account }, + {"password",pwd }, + {"connect",connCount.ToString()}, + {"interval","1"}, + {"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, "开户失败"); + } + } + + /// + /// 续费 + /// + /// + /// + /// + /// + public override async Task NewReAccount(string packageKey, string account, int connCount, int payCount = 1) + { + + var url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=buy&user="+account+"&serverid="+packageKey; + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = ""; + using (var sr = new StreamReader(resp.Content.ReadAsStreamAsync().Result, Encoding.GetEncoding("iso-8859-1"))) + { + content = sr.ReadToEnd(); + } + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + + if (status =="1") + { + return new ApiResult(1); + } + else + { + return new ApiResult(ResultCode.C_INVALID_ERROR, "续费失败"); + } + } + /// + /// 删除账号 + /// + /// + /// + /// + public override async Task DeleteAccount(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 = "a478ad5aa3079bbbef3cd45e2d55d61e"; + var sign = MD5(time_s+nonce+apikey); + + + + var url = "/api/raduserRefund?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(); + Console.WriteLine("=============================================================="); + Console.WriteLine(content); + Console.WriteLine("=============================================================="); + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["errcode"].ToString(); + + if (status =="0") + { + return true; + } + else + { + return false; + } + + } + /// + /// 得到账号信息 + /// + /// + /// + /// + public override async Task> GetAccountInfo(string account,bool isTest=false) + { + + var url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=getuserinfo&user="+account; + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = ""; + using (var sr = new StreamReader(resp.Content.ReadAsStreamAsync().Result, Encoding.GetEncoding("iso-8859-1"))) + { + content = sr.ReadToEnd(); + } + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + + if (status =="1") + { + var trData = new OriginAccountModel + { + Id = "", + Account = account, + Pwd = jo["password"].ToString(), + AccountType = jo["pause"].ToString(), + Package = "", + ConnectCount = jo["logincount"].ToString(), + RegistTime = "", + EndTime = jo["expiretime"].ToString(), + RestTime = "", + Amount = "", + Remark = "", + }; + return new ApiResult(trData); + } + else + { + return new ApiResult(ResultCode.C_INVALID_ERROR, "没有查询到信息"); + } + + + + } + /// + /// 修改账号密码 + /// + /// + /// + /// + /// + public override async Task UpdateAccountPwd(string account, string pwd) + { + + var url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=setuser&user="+account+"&new_pwd="+pwd; + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = ""; + using (var sr = new StreamReader(resp.Content.ReadAsStreamAsync().Result, Encoding.GetEncoding("iso-8859-1"))) + { + content = sr.ReadToEnd(); + } + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + if (status =="1") + { + return true; + } + else + { + return false; + } + + } + /// + /// 退款 + /// + /// + /// + /// + public override async Task Refund(string account, string packageKey, int days) + { + + + return new ApiResult(ResultCode.C_INVALID_ERROR, "退款失败"); + + } + /// + /// 是否在线 + /// + /// + /// + /// + public override async Task>> OnLine(string account) + { + + var url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=get_user_onlinelog&user="+account; + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = ""; + using (var sr = new StreamReader(resp.Content.ReadAsStreamAsync().Result, Encoding.GetEncoding("iso-8859-1"))) + { + content = sr.ReadToEnd(); + } + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + + var retData = new List(); + if (status =="1") + { + if(jo.ContainsKey("data")){ + foreach (var tr in jo["data"]) + { + JObject jsondata = (JObject)JsonConvert.DeserializeObject(tr.ToJson()); + + var trData = new OriginAccountOnlineModel + { + Account = account, + ServerIP = jsondata["server_ip"].ToString(), + LoginTime = "", + OnlineTime = jsondata["online_time"].ToString(), + LoginIP = jsondata["client_ip"].ToString(), + UpStream = "", + DownStream = "", + Id= "{user:\""+account+"\",address:\""+jsondata["address"].ToString()+"\",server_ip:\""+jsondata["server_ip"].ToString()+"\"}", + + }; + + retData.Add(trData); + } + } + return new ApiResult>(retData); + } + else + { + return new ApiResult>(retData); + } + + } + /// + /// 踢号 + /// + /// + /// + /// + public override async Task KillOut( string id) + { + + JObject info = (JObject)JsonConvert.DeserializeObject(id); + + var url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=user_online_offline&user="+info["user"].ToString()+"&address="+info["address"].ToString()+"&server_ip="+info["server_ip"].ToString(); + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + var content = ""; + using (var sr = new StreamReader(resp.Content.ReadAsStreamAsync().Result, Encoding.GetEncoding("iso-8859-1"))) + { + content = sr.ReadToEnd(); + } + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["code"].ToString(); + + + if (status =="1") + { + return true; + } + return false; + } + + /// + /// 是否存在 + /// + /// + /// + public override async Task Exist(string account) + { + var url = "?secretId=108006113&secretKey=87085a351a64c116df09ebc07d5781sf&type=getuserlenNum&user="+account; + + + var client = CreateHttpClient(); + + var resp = await client.GetAsync(url); + + var content = ""; + using (var sr = new StreamReader(resp.Content.ReadAsStreamAsync().Result, Encoding.GetEncoding("iso-8859-1"))) + { + content = sr.ReadToEnd(); + } + + JObject jo = (JObject)JsonConvert.DeserializeObject(content); + var status = jo["status"].ToString(); + + if (status =="success") + { + return false; + } + return true; + } + } +} diff --git a/Services/Hncore.Pass.Vpn/Service/AgentService.cs b/Services/Hncore.Pass.Vpn/Service/AgentService.cs index 0e19b3d..7fb874e 100644 --- a/Services/Hncore.Pass.Vpn/Service/AgentService.cs +++ b/Services/Hncore.Pass.Vpn/Service/AgentService.cs @@ -77,6 +77,8 @@ namespace Hncore.Pass.Vpn.Service agent = new AgentClient16Service(m_HttpClientFactory) { ClientName = product.GroupNO }; if (product.GroupNO == "g17") agent = new AgentClient17Service(m_HttpClientFactory) { ClientName = product.GroupNO }; + if (product.GroupNO == "g18") + agent = new AgentClient18Service(m_HttpClientFactory) { ClientName = product.GroupNO }; agent.Product = product; return agent; }