using Newtonsoft.Json; using Newtonsoft.Json.Linq; using PDF_Master.Properties; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Management; using System.Net; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; namespace PDF_Master.Helper { /// /// 注册登陆相关的工具类 /// /// public static class ServiceHelper { public static bool IsLogin=false; public static string ALLPassword = ""; public static string access_token = ""; public static string outemail = ""; public static string outcode = ""; public static string outregister = ""; public static string outlogin = ""; public static string code = ""; public static string okcode = ""; public static string remsg = ""; public static string state = ""; public static string AppCode = "com.brother.pdfreaderprofree.windows"; public static string RequestHost = "http://139.196.160.101:8081"; //验证邮箱 public static string OKemailUrl = "/pdf-office-sso/auth/validUser"; //验证验证码 public static string OKcodeUrl = "/pdf-office-sso/auth/isEmailCodeValid"; //发送验证码 public static string GetcodeUrl = "/pdf-office-sso/auth/getVerifyCode"; //注册邮箱 public static string registerUrl = "/pdf-office-sso/auth/emailRegister"; //登录 public static string LoginUrl = "/pdf-office-sso/auth/emailLogin"; //登出 public static string LogoutUrl = "/pdf-office-sso/user/logout"; //注销 public static string UseroutUrl = "/pdf-office-sso/user/logOffForUser"; //重置密码 public static string RebirthUrl = "/pdf-office-sso/auth/resetPassword"; //获取用户信息 public static string GetUserUrl = "/pdf-office-sso/user/me"; private static string computerInfo; /// /// 电脑品牌信息 /// public static string ComputerInfo { get { if (computerInfo == null) { computerInfo = GetComputerInfo(); } return computerInfo; } set { computerInfo = value; } } private static string systemInfo; /// /// 系统信息 /// public static string SystemInfo { get { if (systemInfo == null) { systemInfo = GetSystemInfo(); } return systemInfo; } set { systemInfo = value; } } private static string GetSystemInfo() { try { string s = ""; SelectQuery sq = new SelectQuery("Win32_OperatingSystem"); ManagementObjectSearcher mos = new ManagementObjectSearcher(sq); ManagementObjectCollection moc = mos.Get(); foreach (ManagementObject mo in moc) { s = mo.Properties["Version"].Value.ToString(); } moc.Dispose(); sq = null; return s; } catch { return ""; } } private static string GetComputerInfo() { try { string s = ""; System.Windows.Controls.TextBox text = new System.Windows.Controls.TextBox(); SelectQuery sq = new SelectQuery("Win32_ComputerSystem"); ManagementObjectSearcher mos = new ManagementObjectSearcher(sq); ManagementObjectCollection moc = mos.Get(); foreach (ManagementObject mo in moc) { s = mo.Properties["Manufacturer"].Value + " " + mo.Properties["Model"].Value; } moc.Dispose(); sq = null; return s; } catch { return ""; } } /// /// 操作系统生成的UUID,用于获取虚拟机用户的设备识别码 /// /// public static string GetUUID() { string systemId = null; using (ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_ComputerSystemProduct")) { foreach (var item in mos.Get()) { systemId = item["UUID"].ToString(); } } return systemId; } /// /// 主板编号 /// /// public static string GetBoardId() { var st = string.Empty; var mos = new ManagementObjectSearcher("Select * from Win32_BaseBoard"); foreach (var o in mos.Get()) { var mo = (ManagementObject)o; st = mo["SerialNumber"].ToString(); } return st; } /// /// 获取设备唯一ID /// /// public static string GetDeviceSerialNumber() { StringBuilder DeviceBuilder = new StringBuilder(); bool IsVirtual = false; string boardId = GetBoardId(); string uuid = GetUUID(); //判断是否是虚拟机用户 if (boardId.ToLower() == "" || boardId.ToLower() == "none") { if (string.IsNullOrEmpty(uuid) || uuid.ToLower() == "none") return string.Empty; else IsVirtual = true; } //真实机器用户 用主板id作为唯一识别码 if (!IsVirtual) { DeviceBuilder.Append(boardId); } else { DeviceBuilder.Append(uuid); } MD5 md5 = MD5.Create(); List charbytes = new List(); foreach (char code in DeviceBuilder.ToString().ToArray()) { charbytes.Add((byte)code); } byte[] md5Array = md5.ComputeHash(charbytes.ToArray()); DeviceBuilder = new StringBuilder(); foreach (var code in md5Array) { DeviceBuilder.Append(code.ToString("X2")); } return DeviceBuilder.ToString(); } //超时同步为20秒 public static String GetUser() { HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + GetUserUrl+""); request.Method = "Get"; request.Headers.Add("Authorization", $"Bearer {Settings.Default.AppProperties.LoginToken}"); request.ContentType = "text/html;charset=UTF-8"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; try { response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } JToken jToken; if(jobject.TryGetValue("msg" ,out jToken)==false) { App.IsLogin = true; Settings.Default.UserDate.Email= jobject["email"].ToObject().ToLower(); return "ture"; } else { return "false"; } } } catch { return "NOINT"; } } public static String Ok_email(string intemail,string validType) { HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + OKemailUrl); request.Method = "Post"; request.ContentType = "application/json"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; StringWriter sw = new StringWriter(); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.WriteStartObject(); writer.WritePropertyName("appId"); writer.WriteValue(16); writer.WritePropertyName("platformType"); writer.WriteValue(0); writer.WritePropertyName("username"); writer.WriteValue(intemail); writer.WritePropertyName("validType"); writer.WriteValue(validType); writer.WriteEndObject(); } try { string postBody = sw.ToString(); using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write(postBody); writer.Close(); } response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); //outemail = jobject["msg"].ToObject().ToLower(); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } return jobject["msg"].ToObject().ToLower(); } } catch { return "网络不稳定请重试"; } } //⑤报错 public static void Get_code(string action, string email) { string post = $"?action={action}&appId=16&receiver={email}&type=0"; HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + GetcodeUrl + post); request.Method = "Get"; request.ContentType = "text/html;charset=UTF-8"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; try { response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } } } catch { } } public static String Ok_code(string email, string code, string type) { string post = $"?account={email}&code={code}&type={type}&appId=16"; HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + OKcodeUrl + post); request.Method = "Get"; request.ContentType = "text/html;charset=UTF-8"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; try { response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } return jobject["msg"].ToObject().ToLower(); } } catch { return "网络不稳定请重试"; } } public static String Register_email(string intemail, string intpassword, string intcode, string uuid) { HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + registerUrl); request.Method = "Post"; request.ContentType = "application/json"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; StringWriter sw = new StringWriter(); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.WriteStartObject(); writer.WritePropertyName("appId"); writer.WriteValue(16); writer.WritePropertyName("deviceSign"); writer.WriteValue(uuid); writer.WritePropertyName("password"); writer.WriteValue(intpassword); writer.WritePropertyName("platformType"); writer.WriteValue(0); writer.WritePropertyName("username"); writer.WriteValue(intemail); writer.WritePropertyName("verifyCode"); writer.WriteValue(intcode); writer.WriteEndObject(); } try { string postBody = sw.ToString(); using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write(postBody); writer.Close(); } response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } if (jobject["msg"].ToObject().ToLower() == "success") { App.IsLogin =true; access_token = jobject["result"]["access_token"].ToObject().ToLower(); Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject().ToLower(); Settings.Default.Save(); } return jobject["msg"].ToObject().ToLower(); } } catch { return "网络不稳定请重试"; } } public static String Login(string intemail, string intpassword, string uuid) { string postBody = $"?appId=16&deviceSign={uuid}&email={intemail}&password={intpassword}&platformType=0"; HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + LoginUrl + postBody); request.Method = "Post"; request.ContentType = "application/x-www-form-urlencoded"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; try { response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); outlogin = jobject["msg"].ToObject().ToLower(); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } if (jobject["msg"].ToObject().ToLower() == "success") { App.IsLogin = true; access_token = jobject["result"]["access_token"].ToObject().ToLower(); Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject().ToLower(); Settings.Default.Save(); } return jobject["msg"].ToObject().ToLower(); } } catch { return "网络不稳定请重试"; } } //⑤报错 public static void Logout(string uuid) { string postBody = $"?deviceSign={uuid}&appId=16"; HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + LogoutUrl + postBody); request.Method = "Post"; request.Headers.Add("Authorization", $"Bearer {Settings.Default.AppProperties.LoginToken}"); request.ContentType = "application/x-www-form-urlencoded"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; try { response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); App.IsLogin = false; if (response != null) { response.Close(); } if (request != null) { request.Abort(); } } } catch { } } public static String Usergout(string code) { string postBody = $"?code={code}"; HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + UseroutUrl + postBody); request.Method = "Post"; request.Headers.Add("Authorization", $"Bearer {Settings.Default.AppProperties.LoginToken}"); request.ContentType = "application/x-www-form-urlencoded"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; try { response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } return jobject["msg"].ToObject().ToLower(); } } catch { return "网络不稳定请重试"; } } public static String Rebirth(string intemail, string firstpassword, string secondPassword, string intcode) { HttpWebResponse response = null; ServicePointManager.DefaultConnectionLimit = 200; HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + RebirthUrl); request.Method = "Post"; request.ContentType = "application/json"; //request.Accept = "application/vnd.api+json;version=1"; request.UserAgent = "Apifox/1.0.0 (https://www.apifox.cn)"; request.Timeout = 20000; request.ServicePoint.Expect100Continue = false; StringWriter sw = new StringWriter(); using (JsonWriter writer = new JsonTextWriter(sw)) { writer.WriteStartObject(); writer.WritePropertyName("account"); writer.WriteValue(intemail); writer.WritePropertyName("appId"); writer.WriteValue(16); writer.WritePropertyName("firstPassword"); writer.WriteValue(firstpassword); writer.WritePropertyName("platformType"); writer.WriteValue(0); writer.WritePropertyName("secondPassword"); writer.WriteValue(secondPassword); writer.WritePropertyName("verifyCode"); writer.WriteValue(intcode); writer.WriteEndObject(); } try { string postBody = sw.ToString(); using (StreamWriter writer = new StreamWriter(request.GetRequestStream())) { writer.Write(postBody); writer.Close(); } response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream())) { string responseData = reader.ReadToEnd(); Console.WriteLine(responseData); reader.Close(); JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData); if (response != null) { response.Close(); } if (request != null) { request.Abort(); } return jobject["msg"].ToObject().ToLower(); } } catch { return "网络不稳定请重试"; } } } }