UNPKG

js-dicom

Version:

this is js-dicom

133 lines (108 loc) 4.08 kB
import jsDicomCfg from '../jsDicomCfg'; import $ from 'jquery'; import CryptoJS from 'crypto-js'; import version from '../version'; function buildMachineCode(deferred) { let AESPassWord = "104955D36AE07843"; let url = jsDicomCfg.url + "/buildMachineCode"; deferred = $.Deferred(); try { $.get(url, function (rest) { console.log("machineCode:" + rest); AESPassWord += new Date().Format("yyyy-MM-dd hh:mm"); let shapass = CryptoJS.SHA1(AESPassWord); let key = new shapass.init(shapass.words, 16); let iv = key; var decrypted = CryptoJS.AES.decrypt(rest, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); //字符串格式 CPUID#SerialNumber#随机数 let machineCodeStr = CryptoJS.enc.Utf8.stringify(decrypted); let machineCodeArray = machineCodeStr.split("#"); let machineCode = { CPUID: machineCodeArray[0], SerialNumber: machineCodeArray[1] }; deferred.resolve(machineCode); }); } catch(error){ deferred.reject(error); } return deferred.promise(); } function authCode(deferred) { let AESPassWord = "85C57567355F8A6C"; let url = jsDicomCfg.url + "/authCode"; deferred = $.Deferred(); try { $.get(url, function (rest) { console.log("authCode:" + rest); let shapass = CryptoJS.SHA1(AESPassWord); let key = new shapass.init(shapass.words, 16); let iv = key; var decrypted = CryptoJS.AES.decrypt(rest, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); //orgName#orgCode#medCode#CPUID#SerialNumber#申请日期#开发商Code#授权类型#机构类型#机构等级#最大连接数#产品名称#版本号#随机数 let authCodeStr = CryptoJS.enc.Utf8.stringify(decrypted); let authCodeArray = authCodeStr.split("#"); let authCode = { OrgName: authCodeArray[0], OrgCode: authCodeArray[1], MedCode: authCodeArray[2], CPUID: authCodeArray[3], SerialNumber: authCodeArray[4], ApplyDate: authCodeArray[5], DevMerCode: authCodeArray[6], AuthorType: authCodeArray[7], OrgType: authCodeArray[8], OrgGrade: authCodeArray[9], MaxConNum: authCodeArray[10], ProductName: authCodeArray[11], Version: authCodeArray[12] }; deferred.resolve(authCode); }) } catch (error) { deferred.reject(error); } return deferred.promise(); } function verifyLicense(canvasContext,imageW,imageH) { $.when(buildMachineCode(),authCode()).done(function (machineCode,authCode) { if(machineCode.CPUID!=authCode.CPUID && machineCode.SerialNumber!=authCode.SerialNumber){ drawDemo(canvasContext,imageW,imageH); return; } if(authCode.ProductName!="js-dicom"){ drawDemo(canvasContext,imageW,imageH); return; } let Version = version; if(Version.split(".")[0]>authCode.Version.split(".")[0]){ drawDemo(canvasContext,imageW,imageH); return; } }).fail(function (error) { console.error(error); drawDemo(canvasContext,imageW,imageH); }); } function drawDemo(canvasContext,imageW,imageH) { let t ="js-dicom"; canvasContext.font="bold 48px Arial"; canvasContext.fillStyle = "#b2b2b2"; //canvasContext.fillText(t,imageW/2.0,imageH/2.0); let tw = canvasContext.measureText(t).width; //console.log(tw); let th = 48; //console.log(th); canvasContext.fillText(t,(imageW-tw)/2.0,(imageH-th)/2.0); } export default verifyLicense;