using Dragablz;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using PDF_Master.Model;
using PDF_Master.Properties;
using PDF_Master.ViewModels;
using PDF_Master.Views;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Management;
using System.Net;
using System.Runtime.InteropServices;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
namespace PDF_Master.Helper
{
///
/// 注册登陆相关的工具类
///
///
public static class ServiceHelper
{
public static uint WakeId;
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";
#if DEBUG
//测试环境
public static string RequestHost = "http://139.196.160.101:8081";
public static string WebHost = "http://test-pdf-pro.kdan.cn:3021";
#else
//正式环境
public static string RequestHost = "https://pdfmaster.pdfreaderpro.com";
public static string WebHost = "https://www.pdfreaderpro.com";
#endif
///
/// 验证邮箱
///
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";
///
/// 收集软件启动数据
///
public static string DeviceLogUrl = "/pdf-office-account/deviceLog/create";
///
/// 设备是否被自动登出
///
public static string CheckDeviceStatusUrl = "/pdf-office-sso/auth/checkDeviceStatus";
public static string AcceptdataUrl = "http://127.0.0.1:5544";
///
/// 用于检查网络是否可以连接互联网,true表示连接成功,false表示连接失败
///
///
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(int Description, int ReservedValue);
public static bool IsConnectInternet()
{
int Description = 0;
return InternetGetConnectedState(Description, 0);
}
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();
}
///
/// 获取设备系统版本
///
///
public static string GetSystemVersionNumber()
{
var st = string.Empty;
try
{
var mc = new ManagementClass("Win32_OperatingSystem");
var moc = mc.GetInstances();
foreach (var o in moc)
{
var mo = (ManagementObject)o;
st = mo.Properties["Version"].Value.ToString();
if (st != string.Empty)
{
break;
}
}
}
catch (Exception ex)
{
}
return st;
}
///
/// 高级功能前弹出比较表
///
/// 是否请求服务器,true为请求
public static bool IAPBeforeFunction(bool post = false)
{
if (!App.IsLogin)
{
if (Settings.Default.UserDate.Email == "")
{
App.mainWindowViewModel.OpenRegister();
return false;
}
else
{
App.mainWindowViewModel.OpenLogin();
return false;
}
}
if (post)
{
//判断本地有没有token,没有显示登录,有再判断登录状态
if (Settings.Default.AppProperties.LoginToken != "")
{
string code = ServiceHelper.GetUser();
if (code == "330"|| code == "304")
{
App.mainWindowViewModel.UserVis = Visibility.Collapsed;
App.mainWindowViewModel.LoginVis = Visibility.Visible;
App.mainWindowViewModel.RegisterVis = Visibility.Collapsed;
App.mainWindowViewModel.OphVis = Visibility.Visible;
}
}
else
{
App.mainWindowViewModel.UserVis = Visibility.Collapsed;
App.mainWindowViewModel.LoginVis = Visibility.Visible;
App.mainWindowViewModel.RegisterVis = Visibility.Collapsed;
App.mainWindowViewModel.OphVis = Visibility.Visible;
}
}
(App.mainWindowViewModel.SelectedItem.DataContext as MainContentViewModel).IsUsedVIP = true;
return true;
}
//超时同步为20秒
///
/// 用户信息获取
///
///
public static String GetUser()
{
//判断是否有网络
if (!IsConnectInternet())
{
return "300";
}
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
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
JToken jToken;
if (jobject.TryGetValue("msg", out jToken) == false)
{
//ListenerSubscription();
App.IsLogin = true;
Settings.Default.UserDate.Email = jobject["email"].ToObject().ToLower();
Settings.Default.UserDate.id = jobject["id"].ToObject().ToLower();
JArray subscriptionInfoList = (JArray)jobject["subscriptionInfoList"];
foreach (JToken info in subscriptionInfoList)
{
if ((int)info["platform"] == 2)
{
Settings.Default.UserDate.subscribeid = (string)info["id"];
Settings.Default.UserDate.subscribeuserid = (string)info["userId"];
Settings.Default.UserDate.subscribeplatform = (int)info["platform"];
Settings.Default.UserDate.subscribestatus = (int)info["status"];
if (Settings.Default.UserDate.subscribestatus > 0)
{
Settings.Default.UserDate.subscribeendDate = (string)info["endDate"];
Settings.Default.UserDate.subscribepayType = (int)info["payType"];
}
}
}
//此处为主页UPgread按钮的Visible
if (Settings.Default.UserDate.subscribestatus == 1)
{
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null && win.DataContext != null)
{
(win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).Useremailchar = Settings.Default.UserDate.Email.Substring(0, 1);
}
}
}
else
{
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null && win.DataContext != null)
{
(win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Visible;
(win.DataContext as MainWindowViewModel).Useremailchar = Settings.Default.UserDate.Email.Substring(0, 1);
}
}
}
#region 试用策略
//Settings.Default.UserDate.isInFreeUseTime= jobject["isInFreeUseTime"].ToObject();
//Settings.Default.UserDate.freeDate= jobject["freeDate"].ToObject().ToLower();
//if(DateTime.Parse(Settings.Default.UserDate.freeDate)<=DateTime.Now)
//{
// Settings.Default.UserDate.isInFreeUseTime = false;
//}
#endregion
App.mainWindowViewModel.Useremailchar = Settings.Default.UserDate.Email.Substring(0, 1);
Settings.Default.Save();
return "ture";
}
else
{
return "false";
}
}
}
}
catch (System.Net.WebException e)
{
int statusCode = 0;
if (e.Response is HttpWebResponse)
{
//从网络异常信息里解析错误,后面的逻辑根据错误码判断会更准确
statusCode = (int)((HttpWebResponse)e.Response).StatusCode;
}
//试用策略注释
//if (DateTime.Parse(Settings.Default.UserDate.freeDate) <= DateTime.Now)
//{
// Settings.Default.UserDate.isInFreeUseTime = false;
//}
Console.WriteLine(e.Message);
//无权限
if (Settings.Default.AppProperties.LoginToken == "")
return "No Token";
else if(statusCode == 401)
{
if(CheckDeviceStatusout()=="330")
{
App.IsLogin = false;
return "330";
}
else
{
return "304";
}
}
else return "300";
}
catch
{
//试用策略注释
//if (DateTime.Parse(Settings.Default.UserDate.freeDate) <= DateTime.Now)
//{
// Settings.Default.UserDate.isInFreeUseTime = false;
//}
return "300";
}
}
///
/// 验证email格式
///
///
///
///
public static String Ok_email(string intemail, string validType)
{
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();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
//outemail = jobject["msg"].ToObject().ToLower();
return jobject["code"].ToObject().ToLower();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
return "300";
}
}
///
/// 获取验证码
///
///
///
///
public static string Get_code(string action, string email)
{
string post = $"?action={action}&appId=16&receiver={email}&type=0";
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
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
return jobject["code"].ToObject().ToLower();
}
}
}
catch
{
return "300";
}
}
///
/// 验证验证码是否正确
///
///
///
///
///
public static String Ok_code(string email, string code, string type)
{
string post = $"?account={email}&code={code}&type={type}&appId=16";
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
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
return jobject["code"].ToObject().ToLower();
}
}
}
catch
{
return "300";
}
}
///
/// 注册账号
///
///
///
///
///
///
public static String Register_email(string intemail, string intpassword, string intcode, string uuid)
{
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.WritePropertyName("model");
writer.WriteValue("windows");
writer.WriteEndObject();
}
try
{
string postBody = sw.ToString();
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(postBody);
writer.Close();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
if (jobject["code"].ToObject().ToLower() == "200")
{
App.IsLogin = true;
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null && win.DataContext != null)
{
(win.DataContext as MainWindowViewModel).UserVis = Visibility.Visible;
(win.DataContext as MainWindowViewModel).LoginVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
}
}
Settings.Default.UserDate.Email = intemail;
Settings.Default.UserDate.IsLoginoff = false;
access_token = jobject["result"]["access_token"].ToObject().ToLower();
Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject().ToLower();
Settings.Default.Save();
GetUser();
}
//return jobject["code"].ToObject().ToLower();
return "200";
}
}
}
catch
{
return "300";
}
}
///
/// 登录
///
///
///
///
///
public static String Login(string intemail, string intpassword, string uuid)
{
string postBody = $"?appId=16&deviceSign={uuid}&email={intemail}&password={intpassword}&platformType=0&model=windows";
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
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
if (jobject["code"].ToObject().ToLower() == "200")
{
//ListenerSubscription();
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null && win.DataContext != null)
{
(win.DataContext as MainWindowViewModel).UserVis = Visibility.Visible;
(win.DataContext as MainWindowViewModel).LoginVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
}
}
App.IsLogin = true;
Settings.Default.UserDate.Email = intemail;
Settings.Default.UserDate.IsLoginoff = false;
access_token = jobject["result"]["access_token"].ToObject().ToLower();
Settings.Default.AppProperties.LoginToken = jobject["result"]["access_token"].ToObject().ToLower();
Settings.Default.Save();
GetUser();
}
return jobject["code"].ToObject().ToLower();
}
}
}
catch
{
return "300";
}
}
///
/// 登出
///
///
public static void Logout(string uuid)
{
string postBody = $"?deviceSign={uuid}&appId=16";
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
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
App.IsLogin = false;
Settings.Default.UserDate.subscribestatus = -1;
Settings.Default.UserDate.subscribepayType = 0;
App.mainWindowViewModel.UpgradeVis = Visibility.Visible;
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null && win.DataContext != null)
{
(win.DataContext as MainWindowViewModel).UserVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).LoginVis = Visibility.Visible;
(win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Visible;
}
}
}
}
}
catch
{
}
}
///
/// 注销
///
///
///
public static String Usergout(string code)
{
string postBody = $"?code={code}&appId=16";
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
{
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
App.IsLogin = false;
Settings.Default.UserDate.subscribestatus = -1;
Settings.Default.UserDate.subscribepayType = 0;
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null && win.DataContext != null)
{
(win.DataContext as MainWindowViewModel).UserVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).LoginVis = Visibility.Visible;
(win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Visible;
}
}
App.mainWindowViewModel.UpgradeVis = Visibility.Visible;
return jobject["code"].ToObject().ToLower();
}
}
}
catch
{
return "300";
}
}
///
/// 重置密码
///
///
///
///
///
///
public static String Rebirth(string intemail, string firstpassword, string secondPassword, string intcode)
{
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();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null)
{
(win.DataContext as MainWindowViewModel).UserVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).LoginVis = Visibility.Visible;
(win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
}
}
return jobject["code"].ToObject().ToLower();
}
}
}
catch
{
return "300";
}
}
///
/// 设备是否被自动登出
///
public static String CheckDeviceStatusout()
{
string postBody = $"?appId=16&deviceSign={GetDeviceSerialNumber()}";
ServicePointManager.DefaultConnectionLimit = 200;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + CheckDeviceStatusUrl + 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
{
using (HttpWebResponse 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;
Settings.Default.UserDate.subscribestatus = -1;
Settings.Default.UserDate.subscribepayType = 0;
App.mainWindowViewModel.UpgradeVis = Visibility.Visible;
if (App.Current.Windows != null && App.Current.Windows.Count != 0)
{
for (int i = 0; i < App.Current.Windows.Count; i++)
{
MainWindow win = App.Current.Windows[i] as MainWindow;
if (win != null && win.DataContext != null)
{
(win.DataContext as MainWindowViewModel).UserVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).LoginVis = Visibility.Visible;
(win.DataContext as MainWindowViewModel).RegisterVis = Visibility.Collapsed;
(win.DataContext as MainWindowViewModel).UpgradeVis = Visibility.Visible;
}
}
}
return jobject["code"].ToObject().ToLower();
}
}
}
catch
{
return "300";
}
}
///
///上传设备启动信息到服务端
///
public static void CreateDeviceLog()
{
string url = RequestHost + DeviceLogUrl;
try
{
ServicePointManager.DefaultConnectionLimit = 200;
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(RequestHost + DeviceLogUrl);
request.Method = "Post";
request.ContentType = "application/json";
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("appVersion");
writer.WriteValue(App.Version);
//产品ID Mac21 Windows 22
writer.WritePropertyName("productId");
writer.WriteValue(22);
writer.WritePropertyName("os");
writer.WriteValue(GetSystemVersionNumber());
writer.WritePropertyName("timeZone");
writer.WriteValue(TimeZoneInfo.Local.DisplayName);
writer.WritePropertyName("language");
writer.WriteValue(CultureInfo.CurrentCulture.Name);
//平台 Mac 0 Windows 1
writer.WritePropertyName("platform");
writer.WriteValue(1);
writer.WritePropertyName("createdAt");
writer.WriteValue(DateTime.Now.ToFileTime());
writer.WritePropertyName("appId");
writer.WriteValue(16);
writer.WritePropertyName("model");
writer.WriteValue("Windows");
writer.WritePropertyName("uniqueSn");
writer.WriteValue(GetDeviceSerialNumber());
writer.WritePropertyName("updatedAt");
writer.WriteValue(DateTime.Now.ToFileTime());
writer.WriteEndObject();
}
string postBody = sw.ToString();
using (StreamWriter writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write(postBody);
writer.Close();
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (StreamReader reader = new StreamReader(response.GetResponseStream()))
{
string responseData = reader.ReadToEnd();
Console.WriteLine(responseData);
JObject jobject = (JObject)JsonConvert.DeserializeObject(responseData);
if (jobject["code"].ToObject().ToLower() == "200")
{
Console.WriteLine("软件启动信息上传成功");
}
}
}
}
catch { }
}
//监听代码,暂时用不到,注释
//监听订阅行为
//public static HttpListener httpListener;
//public static bool isListening = false;
//public async static void ServerBoot()
//{
// if (!isListening)
// {
// httpListener = new HttpListener();
// httpListener.Prefixes.Add("http://127.0.0.1:5544/");
// // 启动监听器
// httpListener.Start();
// Console.WriteLine($"开始喽");
// isListening = true;
// // 在后台线程中等待请求并处理
// await Task.Run(() => ListenForRequests());
// }
//}
//private static async Task ListenForRequests()
//{
// WakeId = Win32Helper.RegisterWindowMessage("msgWake_PDFMaster");
// Console.WriteLine("等待请求...");
// // 持续监听请求
// while (true)
// {
// // 等待接收请求
// HttpListenerContext context = await httpListener.GetContextAsync();
// // 允许跨域请求
// context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
// context.Response.Headers.Add("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
// context.Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
// // 处理请求
// if (context.Request.HttpMethod == "GET")
// {
// //返回 true 并结束监听
// if (App.IsLogin == true)
// {
// Win32Helper.PostMessage((IntPtr)0xffff, WakeId, IntPtr.Zero, IntPtr.Zero);
// IntPtr waitPtr = Win32Helper.CreateEvent(IntPtr.Zero, true, false, "Global\\shareWaitNotify" + Guid.NewGuid());
// Win32Helper.WaitForSingleObject(waitPtr, 5000);
// Win32Helper.CloseHandle(waitPtr);
// }
// byte[] responseBytes = System.Text.Encoding.UTF8.GetBytes("true");
// context.Response.StatusCode = (int)HttpStatusCode.OK;
// context.Response.ContentLength64 = responseBytes.Length;
// context.Response.OutputStream.Write(responseBytes, 0, responseBytes.Length);
// context.Response.OutputStream.Close();
// httpListener.Stop();
// isListening = false;
// break;
// }
// }
//}
}
}