This commit is contained in:
Faker 2025-03-10 07:30:59 +08:00
parent 3b1e8e15e7
commit 7dea09e2d3
7 changed files with 213 additions and 274 deletions

File diff suppressed because one or more lines are too long

View File

@ -5,22 +5,28 @@ require('dotenv').config();
const { readFile } = require('fs/promises'); const { readFile } = require('fs/promises');
const path = require('path'); const path = require('path');
const fs = require('fs'); const fs = require('fs');
let Fileexists280 = fs.existsSync('/ql/data/db/keyv.sqlite'); const tokenFileList = ['/ql/data/db/keyv.sqlite', '/ql/data/config/auth.json', '/ql/config/auth.json'];
let Fileexists = fs.existsSync('/ql/data/config/auth.json'); let authFile = getLatestFile(tokenFileList);
let authFile = "";
if (Fileexists280)
authFile = "/ql/data/db/keyv.sqlite"
else if (Fileexists)
authFile = "/ql/data/config/auth.json"
else
authFile = "/ql/config/auth.json"
const api = got.extend({ const api = got.extend({
prefixUrl: 'http://127.0.0.1:5600', prefixUrl: 'http://127.0.0.1:5600',
retry: { limit: 0 }, retry: { limit: 0 },
}); });
function getLatestFile(files) {
let latestFile = null;
let latestMtime = 0;
for (const file of files) {
try {
const stats = fs.statSync(file);
const mtime = stats.mtimeMs;
if (mtime > latestMtime) {
latestMtime = mtime;
latestFile = file;
}
} catch (e) {
}
}
return latestFile;
}
async function getToken() { async function getToken() {
const authConfig = await readFile(authFile); const authConfig = await readFile(authFile);
// console.log(authConfig.toString().match(/"token":"(.*?)",/)[1]) // console.log(authConfig.toString().match(/"token":"(.*?)",/)[1])

7
jd_cjzzj.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

236
ql.js
View File

@ -1,119 +1,43 @@
'use strict'; 'use strict'
const got = require('got'); const got = require('got')
require('dotenv').config(); require('dotenv').config()
const { readFile } = require('fs/promises'); const { readFile } = require('fs/promises')
const path = require('path'); const path = require('path')
const qlDir = '/ql'; const qlDir = '/ql'
const fs = require('fs'); const fs = require('fs')
const tokenFileList = ['/ql/data/db/keyv.sqlite', '/ql/data/config/auth.json', '/ql/config/auth.json']
//const authFile = path.join(qlDir, 'config/auth.json');
let authFile = getLatestFile(tokenFileList)
const api = got.extend({ const api = got.extend({
prefixUrl: 'http://127.0.0.1:5600', prefixUrl: 'http://127.0.0.1:5600',
retry: { limit: 0 }, retry: { limit: 0 },
responseType: 'json' })
}); function getLatestFile(files) {
let latestFile = null
global.versionPromise = null; let latestMtime = 0
module.exports.getVersion = () => { for (const file of files) {
return api({
url: 'api/system',
headers: {
Accept: 'application/json',
},
}).then(response => {
return response.body.data.version;
}).catch(error => {
console.error('Error fetching version:', error.response ? error.response.body : error.message);
throw error;
});
};
let authFile = "";
(function initialize() {
global.versionPromise = module.exports.getVersion();
global.versionPromise.then(version => {
console.log('当前青龙版本:', version + "\n");
if (version) {
if (version >= '2.18.0') {
authFile = "/ql/data/db/keyv.sqlite";
} else if (version < '2.12.0') {
authFile = "/ql/config/auth.json";
} else {
authFile = "/ql/data/config/auth.json";
}
} else {
// 当检测不到版本号时,采用 version < '2.12.0' 的操作
authFile = "/ql/config/auth.json";
}
}).catch(error => {
console.error('Error after initialization:', error);
});
})();
async function getAuthFile() {
await global.versionPromise;
return authFile;
}
async function getTokenFromSqlite(dbPath) {
const sqlite3 = require('sqlite3').verbose();
return new Promise((resolve, reject) => {
const db = new sqlite3.Database(dbPath, (err) => {
if (err) {
return reject(err);
}
db.serialize(() => {
db.get('SELECT value FROM keyv WHERE key = ?', ['keyv:authInfo'], (err, row) => {
if (err) {
db.close((closeErr) => {
if (closeErr) {
console.error('Error closing database:', closeErr);
}
reject(err);
});
return;
}
let token = null;
if (row && row.value) {
try { try {
const parsedData = JSON.parse(row.value); const stats = fs.statSync(file)
token = parsedData.value.token; const mtime = stats.mtimeMs
} catch (parseErr) { if (mtime > latestMtime) {
console.error('Error parsing JSON:', parseErr); latestMtime = mtime
reject(parseErr); latestFile = file
return;
} }
} catch (e) {}
} }
return latestFile
resolve(token);
db.close((closeErr) => {
if (closeErr) {
console.error('Error closing database:', closeErr);
}
});
});
});
});
});
} }
async function getToken() { async function getToken() {
const authFilePath = await getAuthFile(); const authConfig = await readFile(authFile)
if (authFilePath.endsWith('keyv.sqlite')) { // console.log(authConfig.toString().match(/"token":"(.*?)",/)[1])
return getTokenFromSqlite(authFilePath); return authConfig.toString().match(/"token":"(.*?)",/)[1]
} else {
const authConfig = JSON.parse(await readFile(authFilePath));
return authConfig.token;
}
} }
module.exports.getEnvs = async () => { module.exports.getEnvs = async () => {
const token = await getToken(); const token = await getToken()
const body = await api({ const body = await api({
url: 'api/envs', url: 'api/envs',
searchParams: { searchParams: {
@ -124,37 +48,39 @@ module.exports.getEnvs = async () => {
Accept: 'application/json', Accept: 'application/json',
authorization: `Bearer ${token}`, authorization: `Bearer ${token}`,
}, },
}).json(); }).json()
return body.data; return body.data
}; }
module.exports.getEnvsCount = async () => { module.exports.getEnvsCount = async () => {
const data = await this.getEnvs(); const data = await this.getEnvs()
return data.length; return data.length
}; }
module.exports.addEnv = async (cookie, remarks) => { module.exports.addEnv = async (cookie, remarks) => {
const token = await getToken(); const token = await getToken()
const body = await api({ const body = await api({
method: 'post', method: 'post',
url: 'api/envs', url: 'api/envs',
params: { t: Date.now() }, params: { t: Date.now() },
json: [{ json: [
{
name: 'JD_COOKIE', name: 'JD_COOKIE',
value: cookie, value: cookie,
remarks, remarks,
}], },
],
headers: { headers: {
Accept: 'application/json', Accept: 'application/json',
authorization: `Bearer ${token}`, authorization: `Bearer ${token}`,
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}).json(); }).json()
return body; return body
}; }
module.exports.updateEnv = async (cookie, eid, remarks) => { module.exports.updateEnv = async (cookie, eid, remarks) => {
const token = await getToken(); const token = await getToken()
const body = await api({ const body = await api({
method: 'put', method: 'put',
url: 'api/envs', url: 'api/envs',
@ -170,12 +96,12 @@ module.exports.updateEnv = async (cookie, eid, remarks) => {
authorization: `Bearer ${token}`, authorization: `Bearer ${token}`,
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}).json(); }).json()
return body; return body
}; }
module.exports.updateEnv11 = async (cookie, eid, remarks) => { module.exports.updateEnv11 = async (cookie, eid, remarks) => {
const token = await getToken(); const token = await getToken()
const body = await api({ const body = await api({
method: 'put', method: 'put',
url: 'api/envs', url: 'api/envs',
@ -191,12 +117,12 @@ module.exports.updateEnv11 = async (cookie, eid, remarks) => {
authorization: `Bearer ${token}`, authorization: `Bearer ${token}`,
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}).json(); }).json()
return body; return body
}; }
module.exports.DisableCk = async (eid) => { module.exports.DisableCk = async (eid) => {
const token = await getToken(); const token = await getToken()
const body = await api({ const body = await api({
method: 'put', method: 'put',
url: 'api/envs/disable', url: 'api/envs/disable',
@ -207,12 +133,12 @@ module.exports.DisableCk = async (eid) => {
authorization: `Bearer ${token}`, authorization: `Bearer ${token}`,
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}).json(); }).json()
return body; return body
}; }
module.exports.EnableCk = async (eid) => { module.exports.EnableCk = async (eid) => {
const token = await getToken(); const token = await getToken()
const body = await api({ const body = await api({
method: 'put', method: 'put',
url: 'api/envs/enable', url: 'api/envs/enable',
@ -223,59 +149,59 @@ module.exports.EnableCk = async (eid) => {
authorization: `Bearer ${token}`, authorization: `Bearer ${token}`,
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}).json(); }).json()
return body; return body
}; }
module.exports.getstatus = async (eid) => { module.exports.getstatus = async (eid) => {
const envs = await this.getEnvs(); const envs = await this.getEnvs()
var tempid = 0; var tempid = 0
for (let i = 0; i < envs.length; i++) { for (let i = 0; i < envs.length; i++) {
tempid = 0; tempid = 0
if (envs[i]._id) { if (envs[i]._id) {
tempid = envs[i]._id; tempid = envs[i]._id
} }
if (envs[i].id) { if (envs[i].id) {
tempid = envs[i].id; tempid = envs[i].id
} }
if (tempid == eid) { if (tempid == eid) {
return envs[i].status; return envs[i].status
} }
} }
return 99; return 99
}; }
module.exports.getEnvById = async (eid) => { module.exports.getEnvById = async (eid) => {
const envs = await this.getEnvs(); const envs = await this.getEnvs()
var tempid = 0; var tempid = 0
for (let i = 0; i < envs.length; i++) { for (let i = 0; i < envs.length; i++) {
tempid = 0; tempid = 0
if (envs[i]._id) { if (envs[i]._id) {
tempid = envs[i]._id; tempid = envs[i]._id
} }
if (envs[i].id) { if (envs[i].id) {
tempid = envs[i].id; tempid = envs[i].id
} }
if (tempid == eid) { if (tempid == eid) {
return envs[i].value; return envs[i].value
} }
} }
return ""; return ''
}; }
module.exports.getEnvByPtPin = async (Ptpin) => { module.exports.getEnvByPtPin = async (Ptpin) => {
const envs = await this.getEnvs(); const envs = await this.getEnvs()
for (let i = 0; i < envs.length; i++) { for (let i = 0; i < envs.length; i++) {
var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1]); var tempptpin = decodeURIComponent(envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/) && envs[i].value.match(/pt_pin=([^; ]+)(?=;?)/)[1])
if (tempptpin == Ptpin) { if (tempptpin == Ptpin) {
return envs[i]; return envs[i]
} }
} }
return ""; return ''
}; }
module.exports.delEnv = async (eid) => { module.exports.delEnv = async (eid) => {
const token = await getToken(); const token = await getToken()
const body = await api({ const body = await api({
method: 'delete', method: 'delete',
url: 'api/envs', url: 'api/envs',
@ -286,6 +212,6 @@ module.exports.delEnv = async (eid) => {
authorization: `Bearer ${token}`, authorization: `Bearer ${token}`,
'Content-Type': 'application/json;charset=UTF-8', 'Content-Type': 'application/json;charset=UTF-8',
}, },
}).json(); }).json()
return body; return body
}; }

File diff suppressed because one or more lines are too long