设备授权案例

# 设备授权案例 ```JavaScript var id_data = storages.create("本地id存储"); if(!id_data.get("设备id")){ //检查设备id是否存在,不存在则随机生成24位 var yourId = randomId(false,24); //把设备id存入本地 id_data.put("设备id",yourId); var ChooseItem = ["复制到粘贴板","不用了谢谢"] var item_i = dialogs.select("首次使用你的设备id如下:\n"+yourId,ChooseItem); if(item_i == 0){ //复制id到粘贴板 setClip(yourId); toastLog("\n已复制设备id到输入法粘贴板"); } } var 你的收藏链接id_ = "2528d58dfeb07fb4661b1e669e9352a2"; var 获取链接内容_ = http.get("https://api.uomg.com/api/get.weiyun?wid=" + 你的收藏链接id_ + "&format=json").body.json().text; var 需要检查的id = id_data.get("设备id"); var Permissions_result = CheckId(需要检查的id); if (Permissions_result.授权状态_ == "已授权") { //授权了可以执行什么 toastLog("恭喜,你的设备已授权"); } else { //未授权该怎么做,这里是结束脚本 toastLog("\n抱歉,你的设备未授权,如需授权请联系管理员\n你的设备id已复制到粘贴板"); setClip(需要检查的id); exit(); } function CheckId(id) { for (v of 获取链接内容_) { if (v.id == id && v.授权_ == "已授权") { return { "授权状态_": "已授权", "过期时间_": v.过期时间_ }; } } return { "授权状态": "未授权", "过期时间_": v.过期时间_ }; } //心跳线程检查过期时间 threads.start(function() { setInterval(() => { var nowTime = IntTime(); if (nowTime > Permissions_result.过期时间_) { toastLog("你的设备授权已过期,如需继续使用,请联系管理员\n设备id已复制到您的粘贴板"); setClip(需要检查的id); exit(); } }, 1000) }) //获取网络时间,防止本地时间被修改 function IntTime() { try { var recode_suning = http.get("http://quan.suning.com/getSysTime.do"); var suningTime = recode_suning.body.json(); return suningTime.sysTime1; } catch (e) { toastLog("网络错误,请检查") return 0; } } //随机产生设备id function randomId(randomFlag, min, max){ var str = "", range = min, arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; if(randomFlag){ range = Math.round(Math.random() * (max-min)) + min; } for(var i=0; i<range; i++){ pos = Math.round(Math.random() * (arr.length-1)); str += arr[pos]; } return str; } ``` ---- # 网络时间验证 ```JavaScript var 验证时间 = time_validation(20191212121212) if (验证时间) { for (let i = 1; i < 10; i++) { toastLog("我是主程序,已进行:" + i + "次"); sleep(1000); } } else { toastLog("时间验证失败,结束脚本"); sleep(1000); exit(); } function time_validation(ntime) { //网络时间 log("网络时间为:" + IntTime()); //本地时间 log("本地时间为:" + load_Time()); let abs_time = Math.abs(IntTime() - load_Time()); //网络和本地时间秒数差 log("时间差值为:" + abs_time + "秒"); if (abs_time < 10 && IntTime() < ntime) { log("正常"); return true; } else { log("时间差过大"); log("已过期或本地时间被修改"); return false; } } function load_Time() { return new java.text.SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); } function IntTime() { try { var recode_suning = http.get("http://quan.suning.com/getSysTime.do"); var suningTime = recode_suning.body.json(); return suningTime.sysTime1; } catch (e) { log("网络错误") return 0; } } ``` ----