js-dicom
Version:
this is js-dicom
133 lines (108 loc) • 4.08 kB
JavaScript
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;