using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Text; using System.Threading.Tasks; using Learun.Util; using Learun.Util.Common; using Newtonsoft.Json; namespace Quanjiang.DigitalScholl.WebLicense { public class LicenseStatus { public bool Result { get; set; } public string Message { get; set; } public string ExpirationDate { get; set; } } public class LicenseChecker { public static string GenerateMachineId() { string cpuid = ""; LicenseManager.GetCPUSerialNumber(); string hd = LicenseManager.GetHardDriverNumber(); string bios = ""; LicenseManager.GetBoisNumber(); string uid = LicenseManager.GetMachineName(); return DESEncrypt.Encrypt(cpuid + hd + bios + uid, "bjquanjiang@2020!"); } public static void WriteLicense(string licensecode) { try { string binpath = AppDomain.CurrentDomain.BaseDirectory; string fullpath = binpath + "\\bin\\license.bjqj"; System.IO.File.WriteAllText(fullpath, licensecode); } catch (Exception e) { throw e; } } public static LicenseStatus CheckLicense() { StreamReader sr = null; string machineid = string.Empty; LicenseStatus ls = new LicenseStatus(); try { TimeOutCheckTool tool = new TimeOutCheckTool(); var checkResult = tool.TimeoutCheckTwo(4000, () => GetMAManagementInfo()); //var maResult = GetMAManagementInfo(); if (!checkResult) { ls.Message = "未授权"; return ls; } machineid = GenerateMachineId(); //判断有无授权 string binpath = AppDomain.CurrentDomain.BaseDirectory; string fullpath = binpath + "\\bin\\license.bjqj"; if (System.IO.File.Exists(fullpath)) { sr = new StreamReader(fullpath, Encoding.UTF8); string u7str = sr.ReadToEnd(); if (!string.IsNullOrEmpty(u7str)) { string desstr = DESEncrypt.Decrypt(u7str, "bjquanjiang@2020!@lckey" + Md5Helper.Encrypt(machineid, 32)); if (!string.IsNullOrEmpty(desstr)) { string[] codeanddate = desstr.Split('&'); if (codeanddate[0] == Md5Helper.Encrypt(machineid, 16)) { ls.ExpirationDate = codeanddate[1]; if (!string.IsNullOrEmpty(codeanddate[1])) { ls.Result = LicenseManager.GetNowTime(codeanddate[1]); } else { ls.Result = true; ls.ExpirationDate = "永久有效"; } ls.Message = ls.Result ? "已授权" : "授权期已过"; } else { ls.Message = "未授权"; } } else { ls.Message = "未授权"; } } else { ls.Message = "未授权"; } } else { ls.Message = "未找到授权文件"; } return ls; } catch (Exception e) { ls.Result = false; ls.Message = "未授权,不正确的授权文件"; return ls; } finally { if (sr != null) { sr.Dispose(); sr.Close(); } } } /// /// 网络授权判断 /// /// public static bool GetMAManagementInfo() { try { //查找授权管理信息 var url = "http://123.57.209.16:8062/management/data"; var MachineId = LicenseChecker.GenerateMachineId(); var body = "{\"data\":'{\"code\":\"" + MachineId + "\",\"guid\":\"123\"}'}"; Encoding encoding = Encoding.UTF8; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.Accept = "text/html, application/xhtml+xml, */*"; request.ContentType = "application/json"; byte[] buffer = encoding.GetBytes(body); request.ContentLength = buffer.Length; request.GetRequestStream().Write(buffer, 0, buffer.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { dynamic res = JsonConvert.DeserializeObject(reader.ReadToEnd()); if (res.data == null) { return false; } else { bool Result = res.data; if (Result) { return true; } else { return false; } } } } catch (Exception e) { return true; } } } }