You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
hk/SrcJuMethod2.js

189 lines
6.0 KiB

//子页面读接口临时缓存
function readData(fileid,datatype){
let cachefile = `hiker://files/_cache/${fileid}.json`;
let jkdata = {};
try{
let cachefiledata = fetch(cachefile);
if(cachefiledata){
eval("jkdata=" + cachefiledata);
}else{
let sourcefile = "hiker://files/rules/Src/Ju/jiekou.json";
let sourcedata = fetch(sourcefile);
if(sourcedata != ""){
try{
eval("var datalist=" + sourcedata+ ";");
}catch(e){
var datalist = [];
}
}else{
var datalist = [];
}
let jklist = datalist.filter(it=>{
return (it.type+'_'+it.name) == fileid;
});
if(jklist.length==1){
jkdata = jklist[0];
writeFile(cachefile,JSON.stringify(jkdata));
}
}
}catch(e){
xlog("接口数据加载失败>"+fileid+">"+e.message);
}
try{
let parse;
let source;
if(datatype==1){
eval("source = " + jkdata.parse);
if (source && source.ext && /^http/.test(source.ext)) {
requireCache(source.ext, 48);
parse = yidata;
} else {
parse = source;
}
}else if(datatype==2){
eval("source = " + jkdata.erparse);
if (source && source.ext && /^http/.test(source.ext)) {
requireCache(source.ext, 48);
parse = erdata;
} else {
parse = source;
}
}else if(datatype==3){
eval("source = " + jkdata.public);
if (source && source.ext && /^http/.test(source.ext)) {
requireCache(source.ext, 48);
parse = ggdata;
} else {
parse = source;
}
}
return parse;
}catch(e){
xlog("读取接口本地缓存文件失败>"+e.message);
return "";
}
}
let 一级 = function(fileid) {
let info = storage0.getMyVar('一级源接口信息') || {};
let 标识 = info.type + "_" + info.name;
fileid = fileid || 标识;
return readData(fileid, 1)
}
let 二级 = function(fileid) {
let info = storage0.getMyVar('二级源接口信息') || {};
let 标识 = info.type + "_" + info.name;
fileid = fileid || 标识;
return readData(fileid, 2)
}
let 公共 = function(fileid) {
let info = storage0.getMyVar('二级源接口信息') || storage0.getMyVar('一级源接口信息') || {};
let 标识 = info.type + "_" + info.name;
fileid = fileid || 标识;
return readData(fileid, 3)
}
let 属性 = function(fileid, parse, attribut) {
let 接口;
eval("接口 = " + parse);
return 接口(fileid)[attribut];
};
/*
let 图片解密 = function(key,iv,kiType,mode) {
function hexStringToBytes(cipherText) {
cipherText = String(cipherText);
let str = cipherText.toLowerCase();
let length = str.length;
let bArr = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, length / 2);
for (let i = 0, o = 0; i < length; i += 2, o++) {
let a = str[i + 1],
b = str[i];
if (b != "0") {
a = b + a;
}
let hexInt = java.lang.Integer.parseInt(new java.lang.String(a), 16);
let inty = hexInt > 127 ? hexInt - 255 - 1 : hexInt;
bArr[o] = inty;
}
return bArr;
}
let javaImport = new JavaImporter();
javaImport.importPackage(
Packages.com.example.hikerview.utils,
Packages.java.lang,
Packages.java.security,
Packages.javax.crypto,
Packages.javax.crypto.spec
);
with(javaImport) {
function getBytes(str) {
let bytes;
if (kiType === "Base64") {
bytes = _base64.decode(str, _base64.NO_WRAP);
} else if (kiType === "Hex") {
bytes = hexStringToBytes(str);
} else {
bytes = String(str).getBytes("UTF-8");
}
return bytes;
}
kiType = kiType || "String";
mode = mode || 'AES/CBC/PKCS5Padding';
key = getBytes(key);
iv = getBytes(iv);
function decryptData(cipherText) {
let secretKeySpec = new SecretKeySpec(key, "AES");
let ivParameterSpec = new IvParameterSpec(iv);
let cipher = Cipher.getInstance(mode);
cipher.init(2, secretKeySpec, ivParameterSpec);
return cipher.doFinal(cipherText);
}
let bytes = FileUtil.toBytes(input);
bytes = decryptData(bytes);
return FileUtil.toInputStream(bytes);
}
}
*/
function 图片解密(key, iv, kiType, mode) {
const CryptoUtil = $.require("http://hiker.nokia.press/hikerule/rulelist.json?id=6805&auth=5e44e1a1-51f6-5825-97ae-4d381341bc00");
let getData = (str, type) => {
switch (type) {
case "Hex":
return CryptoUtil.Data.parseHex(str);
case "Base64":
return CryptoUtil.Data.parseBase64(str);
case "UTF8":
default:
return CryptoUtil.Data.parseUTF8(str);
}
}
let keyData = getData(key, kiType),
ivData = getData(iv, kiType),
textData = CryptoUtil.Data.parseInputStream(input);
let encrypted = CryptoUtil.AES.decrypt(textData, keyData, {
mode: mode,
iv: ivData
});
return encrypted.toInputStream();
}
let exports = {
"一级": 一级,
"二级": 二级,
"公共": 公共,
"属性": 属性,
"imageDecrypt": 图片解密
}
try{
let exportskeys = Object.keys(exports);
let getexp = 公共() || {};
let arr = getexp.exports || [];
arr.forEach(it => {
if(!exportskeys.includes(it.key)){
let parse = eval('('+it.type+'())');
exports[it.key] = parse[it.key];
}
})
}catch(e){}
$.exports = exports