mirror of
https://github.com/Sliverkiss/QuantumultX.git
synced 2025-12-19 00:04:47 +08:00
tools
This commit is contained in:
BIN
icon/Zsm.png
Normal file
BIN
icon/Zsm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 21 KiB |
0
tools/base64.js
Normal file
0
tools/base64.js
Normal file
141
tools/ql_api.js
Normal file
141
tools/ql_api.js
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
$.ql = {
|
||||||
|
type: 'api',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': `application/json;charset=UTF-8`,
|
||||||
|
Authorization: '',
|
||||||
|
},
|
||||||
|
disabled(ids) {
|
||||||
|
if (!this.headers.Authorization) return;
|
||||||
|
const opt = {
|
||||||
|
url: `${$.ql_url}/${this.type}/envs/disable`,
|
||||||
|
headers: this.headers,
|
||||||
|
body: JSON.stringify(ids),
|
||||||
|
};
|
||||||
|
return $.http.put(opt).then((response) => JSON.parse(response.body));
|
||||||
|
},
|
||||||
|
enabled(ids) {
|
||||||
|
if (!this.headers.Authorization) return;
|
||||||
|
const opt = {
|
||||||
|
url: `${$.ql_url}/${this.type}/envs/enable`,
|
||||||
|
headers: this.headers,
|
||||||
|
body: JSON.stringify(ids),
|
||||||
|
};
|
||||||
|
return $.http.put(opt).then((response) => JSON.parse(response.body));
|
||||||
|
},
|
||||||
|
delete(ids) {
|
||||||
|
if (!this.headers.Authorization) return;
|
||||||
|
const opt = {
|
||||||
|
url: `${$.ql_url}/${this.type}/envs`,
|
||||||
|
headers: this.headers,
|
||||||
|
body: JSON.stringify(ids),
|
||||||
|
};
|
||||||
|
return $.http.delete(opt).then((response) => JSON.parse(response.body));
|
||||||
|
},
|
||||||
|
add(records) {
|
||||||
|
if (!this.headers.Authorization) return;
|
||||||
|
const opt = {
|
||||||
|
url: `${$.ql_url}/${this.type}/envs`,
|
||||||
|
headers: this.headers,
|
||||||
|
body: JSON.stringify(records),
|
||||||
|
};
|
||||||
|
return $.http.post(opt).then((response) => JSON.parse(response.body));
|
||||||
|
},
|
||||||
|
edit(records) {
|
||||||
|
if (!this.headers.Authorization) return;
|
||||||
|
const opt = {
|
||||||
|
url: `${$.ql_url}/${this.type}/envs`,
|
||||||
|
headers: this.headers,
|
||||||
|
body: JSON.stringify(records),
|
||||||
|
};
|
||||||
|
return $.http.put(opt).then((response) => JSON.parse(response.body));
|
||||||
|
},
|
||||||
|
select(searchValue = 'JD_COOKIE') {
|
||||||
|
if (!this.headers.Authorization) return;
|
||||||
|
const opt = {
|
||||||
|
url: `${$.ql_url}/${this.type}/envs?searchValue=${searchValue}`,
|
||||||
|
headers: this.headers,
|
||||||
|
};
|
||||||
|
return $.http.get(opt).then((response) => JSON.parse(response.body));
|
||||||
|
},
|
||||||
|
initial: () => {
|
||||||
|
$.ql_url = $.ql_config.ip;
|
||||||
|
if ($.ql_url && !$.ql_url.match(/^(http|https)/))
|
||||||
|
$.ql_url = `http://${$.ql_url}`;
|
||||||
|
|
||||||
|
$.application = {
|
||||||
|
client_id: $.ql_config.client_id,
|
||||||
|
client_secret: $.ql_config.client_secret,
|
||||||
|
};
|
||||||
|
|
||||||
|
$.ql_account = {
|
||||||
|
username: $.ql_config.username,
|
||||||
|
password: $.ql_config.password,
|
||||||
|
};
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
$.ql_config = JSON.parse($.read('#ql'));
|
||||||
|
} catch (e) {
|
||||||
|
$.ql_config = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
$.ql.initial();
|
||||||
|
|
||||||
|
$.log(`地址:${$.ql_url}`);
|
||||||
|
|
||||||
|
function noReady() {
|
||||||
|
$.ql = false;
|
||||||
|
$.log('请配置好相关信息');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($.ql_config.is_pwd === 'true') {
|
||||||
|
if ($.ql_account.username && $.ql_account.password) {
|
||||||
|
$.ql.login = async () => {
|
||||||
|
const options = {
|
||||||
|
url: `${$.ql_url}/api/user/login`,
|
||||||
|
body: JSON.stringify($.ql_account),
|
||||||
|
headers: {
|
||||||
|
'Content-Type': `application/json;charset=UTF-8`,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
let response = await $.http.post(options);
|
||||||
|
response = JSON.parse(response.body);
|
||||||
|
if (response.code === 200) {
|
||||||
|
$.ql.type = 'api';
|
||||||
|
$.ql.headers.Authorization = `Bearer ${response.data.token}`;
|
||||||
|
$.log(`登陆成功:${response.data.lastaddr}`);
|
||||||
|
$.log(`ip:${response.data.lastip}`);
|
||||||
|
} else {
|
||||||
|
$.log(response);
|
||||||
|
$.log(`登陆失败:${response.message}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
noReady();
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if ($.application.client_id && $.application.client_secret) {
|
||||||
|
$.ql.login = async () => {
|
||||||
|
const options = {
|
||||||
|
url: `${$.ql_url}/open/auth/token?client_id=${$.application.client_id}&client_secret=${$.application.client_secret}`,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': `application/json;charset=UTF-8`,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
let response = await $.http.get(options);
|
||||||
|
response = JSON.parse(response.body);
|
||||||
|
if (response.code === 200) {
|
||||||
|
$.ql.type = 'open';
|
||||||
|
$.ql.headers.Authorization = `Bearer ${response.data.token}`;
|
||||||
|
$.log(`登陆成功`);
|
||||||
|
} else {
|
||||||
|
$.log(response);
|
||||||
|
$.log(`登陆失败:${response.message}`);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
noReady();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user