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 "网络不稳定请重试";
}
}
}
}