@whyour/qinglong 2.21.0-1 → 2.21.0-10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/back/protos/api.proto +3 -0
- package/deploy/kubernetes/README.md +81 -0
- package/deploy/kubernetes/base/kustomization.yaml +5 -0
- package/deploy/kubernetes/base/qinglong.yaml +95 -0
- package/deploy/kubernetes/overlays/example/kustomization.yaml +10 -0
- package/package.json +2 -4
- package/sample/config.sample.sh +7 -2
- package/sample/notify.js +64 -0
- package/sample/notify.py +56 -0
- package/shell/api.sh +7 -1
- package/shell/share.sh +1 -1
- package/static/build/api/cron.js +3 -3
- package/static/build/api/dashboard.js +13 -6
- package/static/build/api/env.js +2 -2
- package/static/build/api/log.js +10 -1
- package/static/build/api/system.js +6 -7
- package/static/build/app.js +19 -19
- package/static/build/config/const.js +1 -0
- package/static/build/config/grpcCerts.js +4 -4
- package/static/build/config/index.js +0 -4
- package/static/build/config/util.js +3 -3
- package/static/build/data/notify.js +8 -1
- package/static/build/data/sock.js +1 -0
- package/static/build/loaders/app.js +6 -6
- package/static/build/loaders/db.js +2 -2
- package/static/build/loaders/express.js +17 -14
- package/static/build/loaders/initData.js +8 -7
- package/static/build/loaders/initFile.js +1 -1
- package/static/build/loaders/initTask.js +3 -2
- package/static/build/loaders/server.js +1 -1
- package/static/build/protos/api.js +23 -1
- package/static/build/schedule/addCron.js +67 -10
- package/static/build/schedule/delCron.js +11 -1
- package/static/build/services/cron.js +103 -53
- package/static/build/services/dependence.js +19 -18
- package/static/build/services/grpc.js +1 -1
- package/static/build/services/http.js +1 -1
- package/static/build/services/notify.js +47 -5
- package/static/build/services/subscription.js +6 -4
- package/static/build/services/system.js +12 -2
- package/static/build/services/user.js +31 -6
- package/static/build/shared/auth.js +7 -1
- package/static/build/shared/i18n.js +59 -4
- package/static/build/shared/pLimit.js +3 -2
- package/static/build/shared/store.js +7 -0
- package/static/build/validation/schedule.js +9 -0
- package/static/dist/1147.62793604.async.js +1 -0
- package/static/dist/2208.85285476.async.js +1 -0
- package/static/dist/2286.f371c743.async.js +1 -0
- package/static/dist/3191.545ab873.async.js +1 -0
- package/static/dist/8826.db34ad8d.async.js +1 -0
- package/static/dist/index.html +2 -2
- package/static/dist/{preload_helper.0431c0f3.js → preload_helper.3048fe5b.js} +1 -1
- package/static/dist/src__pages__crontab__detail.b98f0084.async.js +1 -0
- package/static/dist/src__pages__crontab__index.68e78a33.async.js +1 -0
- package/static/dist/{src__pages__crontab__logModal.0b8cce8c.async.js → src__pages__crontab__logModal.831d5e4b.async.js} +1 -1
- package/static/dist/src__pages__dashboard__index.58177357.async.js +1 -0
- package/static/dist/src__pages__dependence__index.b7bbc795.async.js +1 -0
- package/static/dist/src__pages__dependence__modal.f7bb47ba.async.js +1 -0
- package/static/dist/src__pages__env__editNameModal.48715576.async.js +1 -0
- package/static/dist/src__pages__env__index.452cdc47.async.js +1 -0
- package/static/dist/src__pages__env__modal.e1234834.async.js +1 -0
- package/static/dist/src__pages__error__index.dedb2b90.async.js +1 -0
- package/static/dist/src__pages__initialization__index.22620a77.async.js +1 -0
- package/static/dist/src__pages__log__index.9c66639f.async.js +1 -0
- package/static/dist/src__pages__script__editNameModal.532a3044.async.js +1 -0
- package/static/dist/src__pages__script__index.1fc20f22.async.js +1 -0
- package/static/dist/src__pages__script__renameModal.5cdde919.async.js +1 -0
- package/static/dist/src__pages__script__saveModal.5ffed35f.async.js +1 -0
- package/static/dist/src__pages__script__setting.1a82c6d7.async.js +1 -0
- package/static/dist/src__pages__setting__appModal.43b7758a.async.js +1 -0
- package/static/dist/src__pages__setting__checkUpdate.34d773f2.async.js +1 -0
- package/static/dist/src__pages__setting__dependence.9c04c79a.async.js +1 -0
- package/static/dist/src__pages__setting__index.7e070838.async.js +1 -0
- package/static/dist/src__pages__setting__notification.bac481c2.async.js +1 -0
- package/static/dist/src__pages__setting__other.707cfafe.async.js +1 -0
- package/static/dist/src__pages__setting__security.b7235753.async.js +1 -0
- package/static/dist/src__pages__setting__systemLog.b81a8c1d.async.js +1 -0
- package/static/dist/src__pages__subscription__modal.562448e2.async.js +1 -0
- package/static/dist/{umi.ca04a019.js → umi.a54a59f6.js} +1 -1
- package/CLAUDE.md +0 -43
- package/static/dist/1147.c420132e.async.js +0 -1
- package/static/dist/2208.f7ba3dfa.async.js +0 -1
- package/static/dist/2286.164bb089.async.js +0 -1
- package/static/dist/3191.63263871.async.js +0 -1
- package/static/dist/8826.2447a104.async.js +0 -1
- package/static/dist/src__pages__crontab__detail.b9c36808.async.js +0 -1
- package/static/dist/src__pages__crontab__index.fed99fd0.async.js +0 -1
- package/static/dist/src__pages__dashboard__index.b30f2f47.async.js +0 -1
- package/static/dist/src__pages__dependence__index.3d87ceac.async.js +0 -1
- package/static/dist/src__pages__dependence__modal.11124896.async.js +0 -1
- package/static/dist/src__pages__env__editNameModal.5d264b25.async.js +0 -1
- package/static/dist/src__pages__env__index.baa27d4e.async.js +0 -1
- package/static/dist/src__pages__env__modal.7f2ef1bc.async.js +0 -1
- package/static/dist/src__pages__error__index.f156b45e.async.js +0 -1
- package/static/dist/src__pages__initialization__index.e96d4ba8.async.js +0 -1
- package/static/dist/src__pages__log__index.e0978bae.async.js +0 -1
- package/static/dist/src__pages__script__editNameModal.3e7e100d.async.js +0 -1
- package/static/dist/src__pages__script__index.2765d1b8.async.js +0 -1
- package/static/dist/src__pages__script__renameModal.5e987ef5.async.js +0 -1
- package/static/dist/src__pages__script__saveModal.3f9d23d6.async.js +0 -1
- package/static/dist/src__pages__script__setting.a535793a.async.js +0 -1
- package/static/dist/src__pages__setting__appModal.251cd14f.async.js +0 -1
- package/static/dist/src__pages__setting__checkUpdate.46efe057.async.js +0 -1
- package/static/dist/src__pages__setting__dependence.8a7a9529.async.js +0 -1
- package/static/dist/src__pages__setting__index.cc85fdfb.async.js +0 -1
- package/static/dist/src__pages__setting__notification.390fc905.async.js +0 -1
- package/static/dist/src__pages__setting__other.b22d2165.async.js +0 -1
- package/static/dist/src__pages__setting__security.598720a8.async.js +0 -1
- package/static/dist/src__pages__setting__systemLog.67406721.async.js +0 -1
- package/static/dist/src__pages__subscription__modal.3562c670.async.js +0 -1
|
@@ -49,7 +49,7 @@ let UserService = class UserService {
|
|
|
49
49
|
const waitTime = Math.ceil((retriesTime - (timestamp - lastlogon)) / 1000);
|
|
50
50
|
return {
|
|
51
51
|
code: 410,
|
|
52
|
-
message:
|
|
52
|
+
message: (0, i18n_1.tf)('失败次数过多,请%s秒后重试', waitTime),
|
|
53
53
|
data: waitTime,
|
|
54
54
|
};
|
|
55
55
|
}
|
|
@@ -98,7 +98,18 @@ let UserService = class UserService {
|
|
|
98
98
|
platform: req.platform,
|
|
99
99
|
isTwoFactorChecking: false,
|
|
100
100
|
});
|
|
101
|
-
this.notificationService.notify('登录通知',
|
|
101
|
+
this.notificationService.notify((0, i18n_1.t)('登录通知'), (0, i18n_1.t)('你于') +
|
|
102
|
+
(0, dayjs_1.default)(timestamp).format('YYYY-MM-DD HH:mm:ss') +
|
|
103
|
+
(0, i18n_1.t)('在') +
|
|
104
|
+
address +
|
|
105
|
+
' ' +
|
|
106
|
+
req.platform +
|
|
107
|
+
(0, i18n_1.t)('端') +
|
|
108
|
+
' ' +
|
|
109
|
+
(0, i18n_1.t)('登录成功') +
|
|
110
|
+
(0, i18n_1.t)(',ip地址') +
|
|
111
|
+
' ' +
|
|
112
|
+
ip);
|
|
102
113
|
await this.insertDb({
|
|
103
114
|
type: system_1.AuthDataType.loginLog,
|
|
104
115
|
info: {
|
|
@@ -130,7 +141,18 @@ let UserService = class UserService {
|
|
|
130
141
|
lastaddr: address,
|
|
131
142
|
platform: req.platform,
|
|
132
143
|
});
|
|
133
|
-
this.notificationService.notify('登录通知',
|
|
144
|
+
this.notificationService.notify((0, i18n_1.t)('登录通知'), (0, i18n_1.t)('你于') +
|
|
145
|
+
(0, dayjs_1.default)(timestamp).format('YYYY-MM-DD HH:mm:ss') +
|
|
146
|
+
(0, i18n_1.t)('在') +
|
|
147
|
+
address +
|
|
148
|
+
' ' +
|
|
149
|
+
req.platform +
|
|
150
|
+
(0, i18n_1.t)('端') +
|
|
151
|
+
' ' +
|
|
152
|
+
(0, i18n_1.t)('登录失败') +
|
|
153
|
+
(0, i18n_1.t)(',ip地址') +
|
|
154
|
+
' ' +
|
|
155
|
+
ip);
|
|
134
156
|
await this.insertDb({
|
|
135
157
|
type: system_1.AuthDataType.loginLog,
|
|
136
158
|
info: {
|
|
@@ -146,12 +168,12 @@ let UserService = class UserService {
|
|
|
146
168
|
const waitTime = Math.round(Math.pow(3, retries + 1));
|
|
147
169
|
return {
|
|
148
170
|
code: 410,
|
|
149
|
-
message:
|
|
171
|
+
message: (0, i18n_1.tf)('失败次数过多,请%s秒后重试', waitTime),
|
|
150
172
|
data: waitTime,
|
|
151
173
|
};
|
|
152
174
|
}
|
|
153
175
|
else {
|
|
154
|
-
return { code: 400, message:
|
|
176
|
+
return { code: 400, message: (0, i18n_1.t)('错误的用户名密码,请重试') };
|
|
155
177
|
}
|
|
156
178
|
}
|
|
157
179
|
}
|
|
@@ -308,7 +330,7 @@ let UserService = class UserService {
|
|
|
308
330
|
}
|
|
309
331
|
async updateNotificationMode(notificationInfo) {
|
|
310
332
|
const code = Math.random().toString().slice(-6);
|
|
311
|
-
const isSuccess = await this.notificationService.testNotify(notificationInfo, '青龙',
|
|
333
|
+
const isSuccess = await this.notificationService.testNotify(notificationInfo, (0, i18n_1.t)('青龙'), (0, i18n_1.t)('【蛟龙】测试通知 https://t.me/jiao_long'));
|
|
312
334
|
if (isSuccess) {
|
|
313
335
|
const result = await this.updateAuthDb({
|
|
314
336
|
type: system_1.AuthDataType.notification,
|
|
@@ -381,6 +403,9 @@ let UserService = class UserService {
|
|
|
381
403
|
}
|
|
382
404
|
async resetAuthInfo(info) {
|
|
383
405
|
const { retries, twoFactorActivated, password, username } = info;
|
|
406
|
+
if (password === 'admin') {
|
|
407
|
+
return { code: 400, message: (0, i18n_1.t)('密码不能设置为admin') };
|
|
408
|
+
}
|
|
384
409
|
const authInfo = await this.getAuthInfo();
|
|
385
410
|
const payload = (0, pickBy_1.default)({
|
|
386
411
|
retries,
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isValidToken = void 0;
|
|
3
|
+
exports.isValidToken = exports.isDefaultAuthInfo = void 0;
|
|
4
|
+
function isDefaultAuthInfo(authInfo) {
|
|
5
|
+
return (Object.keys(authInfo).length === 2 &&
|
|
6
|
+
authInfo.username === 'admin' &&
|
|
7
|
+
authInfo.password === 'admin');
|
|
8
|
+
}
|
|
9
|
+
exports.isDefaultAuthInfo = isDefaultAuthInfo;
|
|
4
10
|
/**
|
|
5
11
|
* Validates if a token exists in the authentication info.
|
|
6
12
|
* Supports both legacy string tokens and new TokenInfo array format.
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.t = exports.
|
|
3
|
+
exports.tf = exports.t = exports.systemLang = exports.setLang = void 0;
|
|
4
|
+
const store_1 = require("./store");
|
|
4
5
|
const messages = {
|
|
5
6
|
zh: {},
|
|
6
7
|
en: {
|
|
@@ -82,18 +83,68 @@ const messages = {
|
|
|
82
83
|
'client_id 或 client_seret 有误': 'Invalid client_id or client_secret',
|
|
83
84
|
'订阅执行完成': 'Subscription completed',
|
|
84
85
|
'wxPusher 服务的 TopicIds 和 Uids 至少配置一个才行': 'wxPusher requires at least one of TopicIds or Uids',
|
|
86
|
+
'wxPusher SPT 不能为空': 'wxPusher SPT cannot be empty',
|
|
87
|
+
'wxPusher SPT 最多支持 10 个': 'wxPusher SPT supports at most 10 tokens',
|
|
85
88
|
'Url 或者 Body 中必须包含 $title': 'Url or Body must contain $title',
|
|
89
|
+
'绝对路径必须在日志目录内或使用 /dev/null': 'Absolute path must be within log directory or use /dev/null',
|
|
90
|
+
'请先登录': 'Please login first',
|
|
91
|
+
'运行中...': 'Running...',
|
|
92
|
+
'日志不存在...': 'Log does not exist...',
|
|
93
|
+
'未分类': 'Uncategorized',
|
|
94
|
+
'任务重复运行': 'Duplicate task execution',
|
|
95
|
+
'日志设置为忽略': 'Log set to ignore',
|
|
96
|
+
'定时规则不能为空': 'Schedule rule cannot be empty',
|
|
97
|
+
'无效的定时规则': 'Invalid schedule rule',
|
|
98
|
+
'日志名称只能包含字母、数字、下划线和连字符': 'Log name can only contain letters, numbers, underscores, and hyphens',
|
|
99
|
+
'日志名称不能超过100个字符': 'Log name cannot exceed 100 characters',
|
|
100
|
+
'错误的用户名密码,请重试': 'Incorrect username or password, please try again',
|
|
101
|
+
'青龙快讯': 'QingLong',
|
|
102
|
+
'登录通知': 'Login Notification',
|
|
103
|
+
'你于': 'You at ',
|
|
104
|
+
'在': ' in ',
|
|
105
|
+
端: '',
|
|
106
|
+
登录失败: 'login failed',
|
|
107
|
+
',ip地址': ', IP: ',
|
|
108
|
+
'任务#%s': 'Task#%s',
|
|
109
|
+
安装: 'Install',
|
|
110
|
+
删除: 'Uninstall',
|
|
111
|
+
成功: 'Succeeded',
|
|
112
|
+
失败: 'Failed',
|
|
113
|
+
'失败次数过多,请%s秒后重试': 'Too many failed attempts, please retry in %s seconds',
|
|
114
|
+
智能助手: 'Smart Assistant',
|
|
115
|
+
更多: 'More',
|
|
116
|
+
'开始%s依赖 %s,开始时间 %s\n\n当前系统不支持\n\n依赖%s失败,结束时间 %s,耗时 %s 秒': 'Start %s dependency %s, start time %s\n\nCurrent system not supported\n\nDependency %s failed, end time %s, elapsed %s seconds',
|
|
117
|
+
'检测到已经安装 %s\n\n%s\n\n跳过安装\n\n依赖%s成功,结束时间 %s,耗时 %s 秒': 'Already installed %s\n\n%s\n\nSkipping install\n\nDependency %s succeeded, end time %s, elapsed %s seconds',
|
|
118
|
+
'开始%s依赖 %s,开始时间 %s\n\n': 'Start %s dependency %s, start time %s\n\n',
|
|
119
|
+
'依赖%s%s,结束时间 %s,耗时 %s 秒': 'Dependency %s%s, end time %s, elapsed %s seconds',
|
|
120
|
+
'任务:%s,命令:%s,定时:%s,处于运行中的超过 %d 个,请检查定时设置': 'Task: %s, command: %s, schedule: %s, more than %d instances running, please check schedule settings',
|
|
121
|
+
青龙: 'QingLong',
|
|
122
|
+
'【蛟龙】测试通知 https://t.me/jiao_long': '[JiaoLong] Test notification https://t.me/jiao_long',
|
|
123
|
+
'生成token': 'Generate token',
|
|
124
|
+
'删除日志': 'Delete logs',
|
|
125
|
+
'## 开始执行... %s\n': '## Start executing... %s\n',
|
|
126
|
+
'执行before命令...': 'Execute before command...',
|
|
127
|
+
'执行after命令...': 'Execute after command...',
|
|
128
|
+
'## 执行结束... %s 耗时 %s 秒': '## Execution finished... %s elapsed %s seconds',
|
|
129
|
+
'调度器注册失败,任务创建已回滚': 'Scheduler registration failed, task creation rolled back',
|
|
130
|
+
'调度器注册失败,任务更新已回滚': 'Scheduler registration failed, task update rolled back',
|
|
131
|
+
'调度器注册失败,任务启用已回滚': 'Scheduler registration failed, task enable rolled back',
|
|
132
|
+
'任务ID %s: 无效的 cron 表达式 "%s"(不支持裸 /N 步长和 ? 字符)': 'Task ID %s: invalid cron expression "%s" (bare /N steps and ? character not supported)',
|
|
133
|
+
'任务ID %s (extra_schedule): 无效的 cron 表达式 "%s"(不支持裸 /N 步长和 ? 字符)': 'Task ID %s (extra_schedule): invalid cron expression "%s" (bare /N steps and ? character not supported)',
|
|
86
134
|
},
|
|
87
135
|
};
|
|
88
136
|
let currentLang = 'zh';
|
|
89
137
|
function setLang(lang) {
|
|
90
138
|
currentLang = lang || 'zh';
|
|
139
|
+
store_1.shareStore.setLang(currentLang);
|
|
91
140
|
}
|
|
92
141
|
exports.setLang = setLang;
|
|
93
|
-
|
|
94
|
-
|
|
142
|
+
/** 系统默认语言:Intl 检测 → 'zh'(仅返回 zh/en) */
|
|
143
|
+
function systemLang() {
|
|
144
|
+
const prefix = Intl.DateTimeFormat().resolvedOptions().locale.split('-')[0];
|
|
145
|
+
return prefix === 'en' ? 'en' : 'zh';
|
|
95
146
|
}
|
|
96
|
-
exports.
|
|
147
|
+
exports.systemLang = systemLang;
|
|
97
148
|
function t(key, lang) {
|
|
98
149
|
const effectiveLang = lang || currentLang;
|
|
99
150
|
if (effectiveLang === 'en' && messages.en[key]) {
|
|
@@ -102,4 +153,8 @@ function t(key, lang) {
|
|
|
102
153
|
return key;
|
|
103
154
|
}
|
|
104
155
|
exports.t = t;
|
|
156
|
+
function tf(key, ...args) {
|
|
157
|
+
return args.reduce((str, arg) => str.replace(/%s|%d/, String(arg)), t(key));
|
|
158
|
+
}
|
|
159
|
+
exports.tf = tf;
|
|
105
160
|
//# sourceMappingURL=i18n.js.map
|
|
@@ -8,6 +8,7 @@ const os_1 = __importDefault(require("os"));
|
|
|
8
8
|
const system_1 = require("../data/system");
|
|
9
9
|
const logger_1 = __importDefault(require("../loaders/logger"));
|
|
10
10
|
const notify_1 = __importDefault(require("../services/notify"));
|
|
11
|
+
const i18n_1 = require("../shared/i18n");
|
|
11
12
|
const config_1 = __importDefault(require("../config"));
|
|
12
13
|
const grpc_js_1 = require("@grpc/grpc-js");
|
|
13
14
|
const api_1 = require("../protos/api");
|
|
@@ -117,8 +118,8 @@ class TaskLimit {
|
|
|
117
118
|
if (repeatTimes < 3) {
|
|
118
119
|
this.repeatCronNotifyMap.set(cron.id, repeatTimes + 1);
|
|
119
120
|
this.client.systemNotify({
|
|
120
|
-
title: '任务重复运行',
|
|
121
|
-
content:
|
|
121
|
+
title: (0, i18n_1.t)('任务重复运行'),
|
|
122
|
+
content: (0, i18n_1.tf)('任务:%s,命令:%s,定时:%s,处于运行中的超过 %d 个,请检查定时设置', cron.name || '', cron.command || '', cron.schedule || '', 5),
|
|
122
123
|
}, (err, res) => {
|
|
123
124
|
if (err) {
|
|
124
125
|
logger_1.default.error(`[schedule][任务重复运行] 通知失败 ${JSON.stringify(err)}`);
|
|
@@ -12,6 +12,7 @@ var EKeyv;
|
|
|
12
12
|
(function (EKeyv) {
|
|
13
13
|
EKeyv["apps"] = "apps";
|
|
14
14
|
EKeyv["authInfo"] = "authInfo";
|
|
15
|
+
EKeyv["lang"] = "lang";
|
|
15
16
|
})(EKeyv || (exports.EKeyv = EKeyv = {}));
|
|
16
17
|
const keyvSqlite = new sqlite_1.default(path_1.default.join(config_1.default.dbPath, 'keyv.sqlite'));
|
|
17
18
|
exports.keyvStore = new keyv_1.default({ store: keyvSqlite });
|
|
@@ -28,5 +29,11 @@ exports.shareStore = {
|
|
|
28
29
|
updateApps(apps) {
|
|
29
30
|
return exports.keyvStore.set(EKeyv.apps, apps);
|
|
30
31
|
},
|
|
32
|
+
getLang() {
|
|
33
|
+
return exports.keyvStore.get(EKeyv.lang);
|
|
34
|
+
},
|
|
35
|
+
setLang(value) {
|
|
36
|
+
return exports.keyvStore.set(EKeyv.lang, value);
|
|
37
|
+
},
|
|
31
38
|
};
|
|
32
39
|
//# sourceMappingURL=store.js.map
|
|
@@ -14,6 +14,15 @@ const validateSchedule = (value, helpers) => {
|
|
|
14
14
|
value.startsWith(schedule_1.ScheduleType.BOOT)) {
|
|
15
15
|
return value;
|
|
16
16
|
}
|
|
17
|
+
// 检测裸 /N 模式:cron-parser 会接受,但 node-schedule 会返回 null
|
|
18
|
+
// 提前拦截,避免任务入库后调度器注册失败
|
|
19
|
+
if (/\s\/\d/.test(value) || /^\/\d/.test(value)) {
|
|
20
|
+
return helpers.error('any.invalid');
|
|
21
|
+
}
|
|
22
|
+
// 检测 ? 字符:Quartz cron 语法,node-schedule 在大多数字段上返回 null
|
|
23
|
+
if (/\?/.test(value)) {
|
|
24
|
+
return helpers.error('any.invalid');
|
|
25
|
+
}
|
|
17
26
|
try {
|
|
18
27
|
if (cron_parser_1.default.parse(value).hasNext()) {
|
|
19
28
|
return value;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[1147],{3475:function(e,a,i){"use strict";var r=i(72317),t=window.__ENV__QlBaseUrl||"/";a.Z={siteName:r.ZP.get("青龙"),baseUrl:t,apiPrefix:"".concat(t,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],scopes:[{name:r.ZP.get("定时任务"),value:"crons"},{name:r.ZP.get("环境变量"),value:"envs"},{name:r.ZP.get("订阅管理"),value:"subscriptions"},{name:r.ZP.get("配置文件"),value:"configs"},{name:r.ZP.get("脚本管理"),value:"scripts"},{name:r.ZP.get("日志管理"),value:"logs"},{name:r.ZP.get("依赖管理"),value:"dependencies"},{name:r.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:r.ZP.get("定时任务"),envs:r.ZP.get("环境变量"),subscriptions:r.ZP.get("订阅管理"),configs:r.ZP.get("配置文件"),scripts:r.ZP.get("脚本管理"),logs:r.ZP.get("日志管理"),dependencies:r.ZP.get("依赖管理"),system:r.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"ntfy",label:"Ntfy"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:r.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:r.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:r.ZP.get("钉钉机器人")},{value:"weWorkBot",label:r.ZP.get("企业微信机器人")},{value:"weWorkApp",label:r.ZP.get("企业微信应用")},{value:"aibotk",label:r.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"wePlusBot",label:r.ZP.get("微加机器人")},{value:"wxPusherBot",label:"wxPusher"},{value:"wxPusherSpt",label:"WxPusher(极简推送SPT-推荐)"},{value:"openiLink",label:"OpeniLink"},{value:"chat",label:r.ZP.get("群晖chat")},{value:"email",label:r.ZP.get("邮箱")},{value:"lark",label:r.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:r.ZP.get("自定义通知")},{value:"closed",label:r.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:r.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:r.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:r.ZP.get("推送消息的优先级")}],ntfy:[{label:"ntfyUrl",tip:r.ZP.get("ntfy的url地址,例如 https://ntfy.sh"),required:!0},{label:"ntfyTopic",tip:r.ZP.get("ntfy应用topic"),required:!0},{label:"ntfyPriority",tip:r.ZP.get("推送消息的优先级")},{label:"ntfyToken",tip:r.ZP.get("ntfy应用token")},{label:"ntfyUsername",tip:r.ZP.get("ntfy应用用户名")},{label:"ntfyPassword",tip:r.ZP.get("ntfy应用密码")},{label:"ntfyActions",tip:r.ZP.get("ntfy用户动作")}],chat:[{label:"synologyChatUrl",tip:r.ZP.get("synologyChat的url地址"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:r.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:r.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:r.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:r.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:r.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:r.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:r.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:r.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:r.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:r.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:r.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:r.ZP.get("BARK推送消息的跳转URL")},{label:"barkArchive",tip:r.ZP.get("BARK是否保存推送消息")}],telegramBot:[{label:"telegramBotToken",tip:r.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:r.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:r.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:r.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:r.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:r.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:r.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:r.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:r.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:r.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:r.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:r.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:r.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:r.ZP.get("请输入要发送的目标"),items:[{value:"room",label:r.ZP.get("群聊")},{value:"contact",label:r.ZP.get("好友")}]},{label:"aibotkName",tip:r.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:r.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:r.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:r.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")},{label:"pushplusTemplate",tip:r.ZP.get("发送模板")},{label:"pushplusChannel",tip:r.ZP.get("发送渠道")},{label:"pushplusWebhook",tip:r.ZP.get("webhook编码")},{label:"pushplusCallbackUrl",tip:r.ZP.get("发送结果回调地址")},{label:"pushplusTo",tip:r.ZP.get("好友令牌")}],wePlusBot:[{label:"wePlusBotToken",tip:r.ZP.get("用户令牌,扫描登录后 我的—>设置->令牌 中获取,参考 https://www.weplusbot.com/"),required:!0},{label:"wePlusBotReceiver",tip:r.ZP.get("消息接收人")},{label:"wePlusBotVersion",tip:r.ZP.get("调用版本;专业版填写pro,个人版填写personal,为空默认使用专业版")}],wxPusherBot:[{label:"wxPusherBotAppToken",tip:r.ZP.get("wxPusherBot的appToken"),required:!0},{label:"wxPusherBotTopicIds",tip:r.ZP.get("wxPusherBot的topicIds"),required:!1},{label:"wxPusherBotUids",tip:r.ZP.get("wxPusherBot的uids"),required:!1}],wxPusherSpt:[{label:"wxPusherSptList",tip:r.ZP.get("wxPusherSpt的SPT"),required:!0}],openiLink:[{label:"openiLinkAppToken",tip:r.ZP.get("OpeniLink的app_token,在OpeniLink Hub后台安装App后获取,参考 https://openilink.com/docs/hub/apps"),required:!0},{label:"openiLinkHubUrl",tip:r.ZP.get("OpeniLink Hub地址,默认为 https://hub.openilink.com,自建Hub时填写自己的地址")},{label:"openiLinkContextToken",tip:r.ZP.get("OpeniLink的context_token,用于标识消息会话上下文,可从消息事件中获取")}],lark:[{label:"larkKey",tip:r.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0},{label:"larkSecret",tip:r.ZP.get("飞书群组机器人加签密钥,安全设置中开启签名校验后获得")}],email:[{label:"emailService",tip:r.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:r.ZP.get("邮箱认证地址"),required:!0},{label:"emailPass",tip:r.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0},{label:"emailTo",tip:r.ZP.get("收件邮箱地址,多个分号分隔,默认发送给发件邮箱地址")}],pushMe:[{label:"pushMeKey",tip:r.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0},{label:"pushMeUrl",tip:r.ZP.get("自建的PushMeServer消息接口地址,例如:http://127.0.0.1:3010,不填则使用官方消息接口"),required:!1}],chronocat:[{label:"chronocatURL",tip:r.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:r.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:r.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:r.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:r.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:r.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:r.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:r.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":r.ZP.get("登录"),"/initialization":r.ZP.get("初始化"),"/crontab":r.ZP.get("定时任务"),"/env":r.ZP.get("环境变量"),"/subscription":r.ZP.get("订阅管理"),"/config":r.ZP.get("配置文件"),"/script":r.ZP.get("脚本管理"),"/diff":r.ZP.get("对比工具"),"/log":r.ZP.get("日志管理"),"/setting":r.ZP.get("系统设置"),"/error":r.ZP.get("错误日志"),"/dependence":r.ZP.get("依赖管理"),"/dashboard":r.ZP.get("仪表盘")},dependenceTypes:["nodejs","python3","linux"]}},97302:function(e,a,i){"use strict";i.d(a,{eY:function(){return r},um:function(){return t},z:function(){return o}});var r=" ",t={".py":"python",".js":"javascript",".mjs":"javascript",".sh":"shell",".ts":"typescript",".ini":"ini",".json":"json"},o=["UTC","Africa/Abidjan","Africa/Accra","Africa/Addis Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar es Salaam","Africa/Djibouti","Africa/Douala","Africa/El Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La Rioja","America/Argentina/Mendoza","America/Argentina/Rio Gallegos","America/Argentina/Salta","America/Argentina/San Juan","America/Argentina/San Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa Vista","America/Bogota","America/Boise","America/Cambridge Bay","America/Campo Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad Juarez","America/Costa Rica","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El Salvador","America/Fort Nelson","America/Fortaleza","America/Glace Bay","America/Goose Bay","America/Grand Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La Paz","America/Lima","America/Los Angeles","America/Lower Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New York","America/Nome","America/Noronha","America/North Dakota/Beulah","America/North Dakota/Center","America/North Dakota/New Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port of Spain","America/Port-au-Prince","America/Porto Velho","America/Puerto Rico","America/Punta Arenas","America/Rankin Inlet","America/Recife","America/Regina","America/Resolute","America/Rio Branco","America/Santarem","America/Santiago","America/Santo Domingo","America/Sao Paulo","America/Scoresbysund","America/Sitka","America/St Barthelemy","America/St Johns","America/St Kitts","America/St Lucia","America/St Thomas","America/St Vincent","America/Swift Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Choibalsan","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho Chi Minh","Asia/Hong Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South Georgia","Atlantic/St Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Etc/GMT","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle of Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis"]},16314:function(e,a,i){"use strict";i.d(a,{W:function(){return P}});var r=i(90228),t=i.n(r),o=i(87999),n=i.n(o),c=i(72317),l=i(61508),s=i(33839),u=i(3475),p=i(98783),A=i(69313),g=i(52676);l.ZP.config({duration:2});var d=Date.now(),m=A.Z.create({timeout:6e4,params:{t:d}}),h=["".concat(u.Z.baseUrl,"api/user/login"),"".concat(u.Z.baseUrl,"open/auth/token"),"".concat(u.Z.baseUrl,"api/user/two-factor/login"),"".concat(u.Z.baseUrl,"api/system"),"".concat(u.Z.baseUrl,"api/user/init"),"".concat(u.Z.baseUrl,"api/user/notification/init")];m.interceptors.request.use((function(e){var a=localStorage.getItem(u.Z.authKey);return a&&!h.includes(e.url)?(e.headers.Authorization="Bearer ".concat(a),e):e})),m.interceptors.response.use(function(){var e=n()(t()().mark((function e(a){var i,r,o;return t()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=a.status,![502,504].includes(i)){e.next=5;break}p.history.push("/error"),e.next=18;break;case 5:if(401!==i){e.next=9;break}"/login"!==p.history.location.pathname&&(localStorage.removeItem(u.Z.authKey),p.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(r=a.data).code&&(o=r.message||r.data)&&s.Z.error({message:o,description:null!=r&&r.errors?(0,g.jsx)(g.Fragment,{children:null==r?void 0:r.errors.map((function(e){return(0,g.jsx)("div",{children:e.message})}))}):void 0}),e.abrupt("return",r);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",a);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(a){return e.apply(this,arguments)}}(),(function(e){if(e.response){var a=e.response.data?e.response.data.message||e.message:e.response.statusText,i=e.response.status;if([502,504].includes(i))p.history.push("/error");else if(401===i)"/login"!==p.history.location.pathname&&(l.ZP.error(c.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(u.Z.authKey),p.history.push("/login"));else{var r,t,o,n;if("function"==typeof(null===(r=e.config)||void 0===r?void 0:r.onError))return null===(n=e.config)||void 0===n?void 0:n.onError(e.response);a&&s.Z.error({message:a,description:null!==(t=e.response)&&void 0!==t&&null!==(t=t.data)&&void 0!==t&&t.errors?(0,g.jsx)(g.Fragment,{children:null===(o=e.response)||void 0===o||null===(o=o.data)||void 0===o||null===(o=o.errors)||void 0===o?void 0:o.map((function(e){return(0,g.jsxs)("div",{children:[e.message," (",e.value,")"]})}))}):void 0})}}else console.log(e.message);return Promise.reject(e)}));var P=m},48916:function(e,a,i){"use strict";i.d(a,{DY:function(){return g},FA:function(){return m},H$:function(){return b},I1:function(){return A},W9:function(){return u},ZP:function(){return s},o4:function(){return f},rS:function(){return P},w7:function(){return p},x$:function(){return d}});var r=i(15558),t=i.n(r),o=i(72317),n=i(97302),c=i(91379),l=i.n(c);function s(){var e=navigator.userAgent.toLowerCase(),a=function(a){return a.test(e)},i=function(a){return(e.match(a)||[]).toString().replace(/[^0-9|_.]/g,"").replace(/_/g,".")},r="unknow";a(/windows|win32|win64|wow32|wow64/g)?r="windows":a(/macintosh|macintel/g)?r="macos":a(/x11/g)?r="linux":a(/android|adr/g)?r="android":a(/ios|iphone|ipad|ipod|iwatch/g)&&(r="ios");var t="unknow";"windows"===r?a(/windows nt 5.0|windows 2000/g)?t="2000":a(/windows nt 5.1|windows xp/g)?t="xp":a(/windows nt 5.2|windows 2003/g)?t="2003":a(/windows nt 6.0|windows vista/g)?t="vista":a(/windows nt 6.1|windows 7/g)?t="7":a(/windows nt 6.2|windows 8/g)?t="8":a(/windows nt 6.3|windows 8.1/g)?t="8.1":a(/windows nt 10.0|windows 10/g)&&(t="10"):"macos"===r?t=i(/os x [\d._]+/g):"android"===r?t=i(/android [\d._]+/g):"ios"===r&&(t=i(/os [\d._]+/g));var o="unknow";"windows"===r||"macos"===r||"linux"===r?o="desktop":("android"===r||"ios"===r||a(/mobile/g))&&(o="mobile");var n="unknow",c="unknow";a(/applewebkit/g)?(n="webkit",a(/edge/g)?c="edge":a(/opr/g)?c="opera":a(/chrome/g)?c="chrome":a(/safari/g)&&(c="safari")):a(/gecko/g)&&a(/firefox/g)?(n="gecko",c="firefox"):a(/presto/g)?(n="presto",c="opera"):a(/trident|compatible|msie/g)&&(n="trident",c="iexplore");var l="unknow";"webkit"===n?l=i(/applewebkit\/[\d._]+/g):"gecko"===n?l=i(/gecko\/[\d._]+/g):"presto"===n?l=i(/presto\/[\d._]+/g):"trident"===n&&(l=i(/trident\/[\d._]+/g));var s="unknow";"chrome"===c?s=i(/chrome\/[\d._]+/g):"safari"===c?s=i(/version\/[\d._]+/g):"firefox"===c?s=i(/firefox\/[\d._]+/g):"opera"===c?s=i(/opr\/[\d._]+/g):"iexplore"===c?s=i(/(msie [\d._]+)|(rv:[\d._]+)/g):"edge"===c&&(s=i(/edge\/[\d._]+/g));var u="none",p="unknow";a(/micromessenger/g)?(u="wechat",p=i(/micromessenger\/[\d._]+/g)):a(/qqbrowser/g)?(u="qq",p=i(/qqbrowser\/[\d._]+/g)):a(/ucbrowser/g)?(u="uc",p=i(/ucbrowser\/[\d._]+/g)):a(/qihu 360se/g)?u="360":a(/2345explorer/g)?(u="2345",p=i(/2345explorer\/[\d._]+/g)):a(/metasr/g)?u="sougou":a(/lbbrowser/g)?u="liebao":a(/maxthon/g)&&(u="maxthon",p=i(/maxthon\/[\d._]+/g));var A=Object.assign({engine:n,engineVs:l,platform:o,supporter:c,supporterVs:s,system:r,systemVs:t},"none"===u?{}:{shell:u,shellVs:p});return console.log("%c\n .d88b. d888888b d8b db d888b db .d88b. d8b db d888b \n.8P Y8. `88' 888o 88 88' Y8b 88 .8P Y8. 888o 88 88' Y8b \n88 88 88 88V8o 88 88 88 88 88 88V8o 88 88 \n88 88 88 88 V8o88 88 ooo 88 88 88 88 V8o88 88 ooo \n`8P d8' .88. 88 V888 88. ~8~ 88booo. `8b d8' 88 V888 88. ~8~ \n `Y88'Y8 Y888888P VP V8P Y888P Y88888P `Y88P' VP V8P Y888P \n \n \n","color: blue;font-size: 14px;"),console.log("%c忘形雨笠烟蓑,知心牧唱樵歌。明月清风共我,闲人三个,从他今古消磨。\n","color: yellow;font-size: 18px;"),console.log("%c青龙运行环境:\n\n系统:".concat(A.system,"/").concat(A.systemVs,"\n浏览器:").concat(A.supporter,"/").concat(A.supporterVs,"\n内核:").concat(A.engine,"/").concat(A.engineVs),"color: green;font-size: 14px;font-weight: bold;"),A}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=e.extraHeight,i=e.target;void 0===a&&(a=99);var r=null,t=0;(r=i||document.querySelector(".ant-table-wrapper"))&&(t=r.getBoundingClientRect().top);var o=document.body.clientHeight-t-a;return o}function p(e,a){var i,r,t=window.URL||window.webkitURL||window,o=new Blob([a]),n=document.createElementNS("http://www.w3.org/1999/xhtml","a");n.href=t.createObjectURL(o),n.download=e,i=n,(r=document.createEvent("MouseEvents")).initMouseEvent("click",!0,!1,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}function A(e,a,i){var r=t()(e),o=[];return function e(r){if(r)for(var t=0;t<(null==r?void 0:r.length);t++){if(a(r[t]))return i?void(r[t].children?r[t].children.unshift(i):r[t].children=[i]):void r.splice(t,1);r[t].children&&(o.push(r[t].key),e(r[t].children))}}(r),r}function g(e,a){var i;return function e(r){if(r)for(var t=0;t<(null==r?void 0:r.length);t++)a(r[t])?i=r[t]:r[t].children&&e(r[t].children)}(t()(e)),i}function d(e){return[n.eY,o.ZP.get("执行结束")].some((function(a){return e.includes(a)}))}function m(e){var a=e.split(" ");if("repo"===a[1]||"raw"===a[1])return a[2];var i=a.find((function(e){return[".js",".ts",".sh",".py"].some((function(a){return e.endsWith(a)}))}));if(i){var r,t,o="".concat(window.__ENV__QL_DIR,"/data/scripts");i.startsWith(o)&&(i=i.replace(o,""));var n=i.lastIndexOf("/");return n>=0?(t=i.slice(n+1),r=i.slice(0,n)):(t=i,r=""),[t,r]}}function h(e){try{var a=l().parse(e);if(a)return a.next().toDate()}catch(e){}return null}function P(e,a){var i=h(e);return null!=a&&a.length&&a.forEach((function(e){var a=h(e.schedule);a&&(!i||a<i)&&(i=a)})),i}function b(e){var a=function(e){if(!e)return"";var a=e.split(".");return".".concat(a[a.length-1])}(e);return n.um[a]}function f(){var e=document.createElement("div");e.style.position="fixed",e.style.top="0px",e.style.left="0px",e.style.width="100%",e.style.height="100%",e.style.backgroundColor="transparent",e.style.zIndex="9999",document.body.appendChild(e),e.addEventListener("click",(function(e){e.stopPropagation(),e.preventDefault()})),document.body.style.overflow="hidden"}},16130:function(){},6057:function(){}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[2208,5812],{44224:function(e,t,r){var a=(0,r(19919).Z)({scriptUrl:["//at.alicdn.com/t/c/font_3354854_lc939gab1iq.js"]});t.Z=a},44860:function(e,t,r){r.r(t),r.d(t,{CrontabStatus:function(){return a},OperationName:function(){return l},OperationPath:function(){return n},ScheduleType:function(){return i}});var a=function(e){return e[e.running=0]="running",e[e.idle=1]="idle",e[e.disabled=2]="disabled",e[e.queued=3]="queued",e}({}),l=function(e){return e[e["启用"]=0]="启用",e[e["禁用"]=1]="禁用",e[e["运行"]=2]="运行",e[e["停止"]=3]="停止",e[e["置顶"]=4]="置顶",e[e["取消置顶"]=5]="取消置顶",e}({}),n=function(e){return e[e.enable=0]="enable",e[e.disable=1]="disable",e[e.run=2]="run",e[e.stop=3]="stop",e[e.pin=4]="pin",e[e.unpin=5]="unpin",e}({}),i=function(e){return e.Normal="normal",e.Once="once",e.Boot="boot",e}({})},42208:function(e,t,r){r.r(t);var a=r(67825),l=r.n(a),n=r(90228),i=r.n(n),o=r(26068),s=r.n(o),u=r(87999),p=r.n(u),c=r(48305),d=r.n(c),g=r(72317),h=r(75271),P=r(72338),Z=r(35181),b=r(45520),m=r(17082),v=r(93481),f=r(63505),x=r(16314),y=r(3475),k=r(37559),w=r(21288),q=r(44224),j=r(44860),B=r(31352),C=r(52676),S=["name"],T=["key","name"],_=["key","name"],U=[{name:g.ZP.get("命令"),value:"command"},{name:g.ZP.get("名称"),value:"name"},{name:g.ZP.get("定时规则"),value:"schedule"},{name:g.ZP.get("状态"),value:"status",onlySelect:!0},{name:g.ZP.get("标签"),value:"labels"},{name:g.ZP.get("订阅"),value:"sub_id",onlySelect:!0}],R={Reg:"",NotReg:"",In:"select",Nin:"select"},I=[{name:g.ZP.get("包含"),value:"Reg"},{name:g.ZP.get("不包含"),value:"NotReg"},{name:g.ZP.get("属于"),value:"In",type:"select"},{name:g.ZP.get("不属于"),value:"Nin",type:"select"}],A=[{name:g.ZP.get("顺序"),value:"ASC"},{name:g.ZP.get("倒序"),value:"DESC"}],K=function(e){return e.and="且",e.or="或",e}(K||{});t.default=function(e){var t=e.view,r=e.handleCancel,a=P.Z.useForm(),n=d()(a,1)[0],o=(0,h.useState)(!1),u=d()(o,2),c=u[0],L=u[1],H=(0,h.useState)("and"),O=d()(H,2),N=O[0],Q=O[1],X=P.Z.useWatch("filters",n),M=(0,B.Z)((function(){return x.W.get("".concat(y.Z.apiPrefix,"subscriptions"))}),{cacheKey:"subscriptions"}).data,W={status:[{name:g.ZP.get("运行中"),value:j.CrontabStatus.running},{name:g.ZP.get("空闲中"),value:j.CrontabStatus.idle},{name:g.ZP.get("已禁用"),value:j.CrontabStatus.disabled},{name:g.ZP.get("排队中"),value:j.CrontabStatus.queued}],sub_id:null==M?void 0:M.data.map((function(e){return{name:e.name,value:e.id}}))},E=function(){var e=p()(i()().mark((function e(a){var l,n,o,u;return i()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return L(!0),a.filterRelation=N,l=t?"put":"post",e.prev=3,e.next=6,x.W[l]("".concat(y.Z.apiPrefix,"crons/views"),t?s()(s()({},a),{},{id:t.id}):a);case 6:n=e.sent,o=n.code,u=n.data,200===o&&r(u),L(!1),e.next=16;break;case 13:e.prev=13,e.t0=e.catch(3),L(!1);case 16:case"end":return e.stop()}}),e,null,[[3,13]])})));return function(t){return e.apply(this,arguments)}}(),G=function(e){var t=e.name,r=l()(e,S),a=n.getFieldValue(["filters",t,"property"]);return(0,C.jsx)(Z.Z,s()(s()({style:{width:120},placeholder:g.ZP.get("请选择操作符")},r),{},{children:I.filter((function(e){return W[a]?"select"===e.type:e})).map((function(e){return(0,C.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))}))},D=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return(0,C.jsx)(Z.Z,{style:t,children:e.map((function(e){return(0,C.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))})},F=(0,C.jsx)(Z.Z,{style:{width:80},children:A.map((function(e){return(0,C.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))});return(0,C.jsx)(b.Z,{title:t?g.ZP.get("编辑视图"):g.ZP.get("创建视图"),open:!0,forceRender:!0,width:580,centered:!0,maskClosable:!1,onOk:function(){n.validateFields().then((function(e){E(e)})).catch((function(e){console.log("Validate Failed:",e)}))},onCancel:function(){return r()},confirmLoading:c,children:(0,C.jsxs)(P.Z,{form:n,layout:"vertical",initialValues:t||{filters:[{property:"command"}]},name:"env_modal",children:[(0,C.jsx)(P.Z.Item,{name:"name",label:g.ZP.get("视图名称"),rules:[{required:!0,message:g.ZP.get("请输入视图名称")}],children:(0,C.jsx)(m.Z,{placeholder:g.ZP.get("请输入视图名称")})}),(0,C.jsx)(P.Z.List,{name:"filters",children:function(e,t,r){var a=t.add,n=t.remove,i=r.errors;return(0,C.jsxs)("div",{style:{position:"relative"},className:"view-filters-container ".concat(e.length>1?"active":""),children:[e.length>1&&(0,C.jsx)("div",{style:{position:"absolute",width:50,borderRadius:10,border:"1px solid rgb(190, 220, 255)",borderRight:"none",height:56*(e.length-1),top:46,left:15},children:(0,C.jsx)(v.Z,{type:"primary",size:"small",style:{position:"absolute",top:"50%",translate:"-50% -50%",padding:"0 3px",cursor:"pointer"},onClick:function(){Q("and"===N?"or":"and")},children:(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)("span",{children:K[N]}),(0,C.jsx)(q.Z,{type:"ql-icon-d-caret"})]})})}),(0,C.jsxs)("div",{children:[e.map((function(e){var t,r,a=e.key,i=e.name,o=l()(e,T);return(0,C.jsx)(P.Z.Item,{label:0===i?g.ZP.get("筛选条件"):"",style:{marginBottom:0},required:!0,className:"filter-item",children:(0,C.jsxs)(f.Z,{className:"view-create-modal-filters",align:"baseline",children:[(0,C.jsx)(P.Z.Item,s()(s()({},o),{},{name:[i,"property"],rules:[{required:!0}],children:D(U,{width:120})})),(0,C.jsx)(P.Z.Item,s()(s()({},o),{},{name:[i,"operation"],rules:[{required:!0,message:g.ZP.get("请选择操作符")}],children:(0,C.jsx)(G,{name:i})})),(0,C.jsx)(P.Z.Item,s()(s()({},o),{},{name:[i,"value"],rules:[{required:!0,message:g.ZP.get("请输入内容")}],children:"select"===R[null==X?void 0:X[i].operation]?(t=null==X?void 0:X[i].property,(0,C.jsx)(Z.Z,{mode:"tags",allowClear:!0,placeholder:g.ZP.get("输入后回车增加自定义选项"),children:null===(r=W[t])||void 0===r?void 0:r.map((function(e){return(0,C.jsx)(Z.Z.Option,{value:e.value,children:e.name},e.name)}))})):(0,C.jsx)(m.Z,{placeholder:g.ZP.get("请输入内容")})})),0!==i&&(0,C.jsx)(k.Z,{onClick:function(){return n(i)}})]})},a)})),(0,C.jsx)(P.Z.Item,{children:(0,C.jsxs)("a",{onClick:function(){return a({property:"command",operation:"Reg"})},children:[(0,C.jsx)(w.Z,{}),g.ZP.get("新增筛选条件")]})}),(0,C.jsx)(P.Z.ErrorList,{errors:i})]})]})}}),(0,C.jsx)(P.Z.List,{name:"sorts",children:function(e,t,r){var a=t.add,n=t.remove,i=r.errors;return(0,C.jsxs)("div",{style:{position:"relative"},className:"view-filters-container ".concat(e.length>1?"active":""),children:[e.length>1&&(0,C.jsx)("div",{style:{position:"absolute",width:50,borderRadius:10,border:"1px solid rgb(190, 220, 255)",borderRight:"none",height:56*(e.length-1),top:46,left:15},children:(0,C.jsx)(v.Z,{type:"primary",size:"small",style:{position:"absolute",top:"50%",translate:"-50% -50%",padding:"0 3px",cursor:"pointer"},children:(0,C.jsx)(C.Fragment,{children:(0,C.jsx)("span",{children:K[N]})})})}),(0,C.jsxs)("div",{children:[e.map((function(e){var t=e.key,r=e.name,a=l()(e,_);return(0,C.jsx)(P.Z.Item,{label:0===r?g.ZP.get("排序方式"):"",style:{marginBottom:0},className:"filter-item",children:(0,C.jsxs)(f.Z,{className:"view-create-modal-sorts",align:"baseline",children:[(0,C.jsx)(P.Z.Item,s()(s()({},a),{},{name:[r,"property"],rules:[{required:!0}],children:D(U)})),(0,C.jsx)(P.Z.Item,s()(s()({},a),{},{name:[r,"type"],rules:[{required:!0}],children:F})),(0,C.jsx)(k.Z,{onClick:function(){return n(r)}})]})},t)})),(0,C.jsx)(P.Z.Item,{children:(0,C.jsxs)("a",{onClick:function(){return a({property:"command",type:"ASC"})},children:[(0,C.jsx)(w.Z,{}),g.ZP.get("新增排序方式")]})}),(0,C.jsx)(P.Z.ErrorList,{errors:i})]})]})}})]})})}},3475:function(e,t,r){var a=r(72317),l=window.__ENV__QlBaseUrl||"/";t.Z={siteName:a.ZP.get("青龙"),baseUrl:l,apiPrefix:"".concat(l,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],scopes:[{name:a.ZP.get("定时任务"),value:"crons"},{name:a.ZP.get("环境变量"),value:"envs"},{name:a.ZP.get("订阅管理"),value:"subscriptions"},{name:a.ZP.get("配置文件"),value:"configs"},{name:a.ZP.get("脚本管理"),value:"scripts"},{name:a.ZP.get("日志管理"),value:"logs"},{name:a.ZP.get("依赖管理"),value:"dependencies"},{name:a.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:a.ZP.get("定时任务"),envs:a.ZP.get("环境变量"),subscriptions:a.ZP.get("订阅管理"),configs:a.ZP.get("配置文件"),scripts:a.ZP.get("脚本管理"),logs:a.ZP.get("日志管理"),dependencies:a.ZP.get("依赖管理"),system:a.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"ntfy",label:"Ntfy"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:a.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:a.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:a.ZP.get("钉钉机器人")},{value:"weWorkBot",label:a.ZP.get("企业微信机器人")},{value:"weWorkApp",label:a.ZP.get("企业微信应用")},{value:"aibotk",label:a.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"wePlusBot",label:a.ZP.get("微加机器人")},{value:"wxPusherBot",label:"wxPusher"},{value:"wxPusherSpt",label:"WxPusher(极简推送SPT-推荐)"},{value:"openiLink",label:"OpeniLink"},{value:"chat",label:a.ZP.get("群晖chat")},{value:"email",label:a.ZP.get("邮箱")},{value:"lark",label:a.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:a.ZP.get("自定义通知")},{value:"closed",label:a.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:a.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:a.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:a.ZP.get("推送消息的优先级")}],ntfy:[{label:"ntfyUrl",tip:a.ZP.get("ntfy的url地址,例如 https://ntfy.sh"),required:!0},{label:"ntfyTopic",tip:a.ZP.get("ntfy应用topic"),required:!0},{label:"ntfyPriority",tip:a.ZP.get("推送消息的优先级")},{label:"ntfyToken",tip:a.ZP.get("ntfy应用token")},{label:"ntfyUsername",tip:a.ZP.get("ntfy应用用户名")},{label:"ntfyPassword",tip:a.ZP.get("ntfy应用密码")},{label:"ntfyActions",tip:a.ZP.get("ntfy用户动作")}],chat:[{label:"synologyChatUrl",tip:a.ZP.get("synologyChat的url地址"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:a.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:a.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:a.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:a.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:a.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:a.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:a.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:a.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:a.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:a.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:a.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:a.ZP.get("BARK推送消息的跳转URL")},{label:"barkArchive",tip:a.ZP.get("BARK是否保存推送消息")}],telegramBot:[{label:"telegramBotToken",tip:a.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:a.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:a.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:a.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:a.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:a.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:a.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:a.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:a.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:a.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:a.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:a.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:a.ZP.get("请输入要发送的目标"),items:[{value:"room",label:a.ZP.get("群聊")},{value:"contact",label:a.ZP.get("好友")}]},{label:"aibotkName",tip:a.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:a.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:a.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:a.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")},{label:"pushplusTemplate",tip:a.ZP.get("发送模板")},{label:"pushplusChannel",tip:a.ZP.get("发送渠道")},{label:"pushplusWebhook",tip:a.ZP.get("webhook编码")},{label:"pushplusCallbackUrl",tip:a.ZP.get("发送结果回调地址")},{label:"pushplusTo",tip:a.ZP.get("好友令牌")}],wePlusBot:[{label:"wePlusBotToken",tip:a.ZP.get("用户令牌,扫描登录后 我的—>设置->令牌 中获取,参考 https://www.weplusbot.com/"),required:!0},{label:"wePlusBotReceiver",tip:a.ZP.get("消息接收人")},{label:"wePlusBotVersion",tip:a.ZP.get("调用版本;专业版填写pro,个人版填写personal,为空默认使用专业版")}],wxPusherBot:[{label:"wxPusherBotAppToken",tip:a.ZP.get("wxPusherBot的appToken"),required:!0},{label:"wxPusherBotTopicIds",tip:a.ZP.get("wxPusherBot的topicIds"),required:!1},{label:"wxPusherBotUids",tip:a.ZP.get("wxPusherBot的uids"),required:!1}],wxPusherSpt:[{label:"wxPusherSptList",tip:a.ZP.get("wxPusherSpt的SPT"),required:!0}],openiLink:[{label:"openiLinkAppToken",tip:a.ZP.get("OpeniLink的app_token,在OpeniLink Hub后台安装App后获取,参考 https://openilink.com/docs/hub/apps"),required:!0},{label:"openiLinkHubUrl",tip:a.ZP.get("OpeniLink Hub地址,默认为 https://hub.openilink.com,自建Hub时填写自己的地址")},{label:"openiLinkContextToken",tip:a.ZP.get("OpeniLink的context_token,用于标识消息会话上下文,可从消息事件中获取")}],lark:[{label:"larkKey",tip:a.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0},{label:"larkSecret",tip:a.ZP.get("飞书群组机器人加签密钥,安全设置中开启签名校验后获得")}],email:[{label:"emailService",tip:a.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:a.ZP.get("邮箱认证地址"),required:!0},{label:"emailPass",tip:a.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0},{label:"emailTo",tip:a.ZP.get("收件邮箱地址,多个分号分隔,默认发送给发件邮箱地址")}],pushMe:[{label:"pushMeKey",tip:a.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0},{label:"pushMeUrl",tip:a.ZP.get("自建的PushMeServer消息接口地址,例如:http://127.0.0.1:3010,不填则使用官方消息接口"),required:!1}],chronocat:[{label:"chronocatURL",tip:a.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:a.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:a.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:a.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:a.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:a.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:a.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:a.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":a.ZP.get("登录"),"/initialization":a.ZP.get("初始化"),"/crontab":a.ZP.get("定时任务"),"/env":a.ZP.get("环境变量"),"/subscription":a.ZP.get("订阅管理"),"/config":a.ZP.get("配置文件"),"/script":a.ZP.get("脚本管理"),"/diff":a.ZP.get("对比工具"),"/log":a.ZP.get("日志管理"),"/setting":a.ZP.get("系统设置"),"/error":a.ZP.get("错误日志"),"/dependence":a.ZP.get("依赖管理"),"/dashboard":a.ZP.get("仪表盘")},dependenceTypes:["nodejs","python3","linux"]}},16314:function(e,t,r){r.d(t,{W:function(){return b}});var a=r(90228),l=r.n(a),n=r(87999),i=r.n(n),o=r(72317),s=r(61508),u=r(33839),p=r(3475),c=r(98783),d=r(69313),g=r(52676);s.ZP.config({duration:2});var h=Date.now(),P=d.Z.create({timeout:6e4,params:{t:h}}),Z=["".concat(p.Z.baseUrl,"api/user/login"),"".concat(p.Z.baseUrl,"open/auth/token"),"".concat(p.Z.baseUrl,"api/user/two-factor/login"),"".concat(p.Z.baseUrl,"api/system"),"".concat(p.Z.baseUrl,"api/user/init"),"".concat(p.Z.baseUrl,"api/user/notification/init")];P.interceptors.request.use((function(e){var t=localStorage.getItem(p.Z.authKey);return t&&!Z.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),P.interceptors.response.use(function(){var e=i()(l()().mark((function e(t){var r,a,n;return l()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.status,![502,504].includes(r)){e.next=5;break}c.history.push("/error"),e.next=18;break;case 5:if(401!==r){e.next=9;break}"/login"!==c.history.location.pathname&&(localStorage.removeItem(p.Z.authKey),c.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(a=t.data).code&&(n=a.message||a.data)&&u.Z.error({message:n,description:null!=a&&a.errors?(0,g.jsx)(g.Fragment,{children:null==a?void 0:a.errors.map((function(e){return(0,g.jsx)("div",{children:e.message})}))}):void 0}),e.abrupt("return",a);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message:e.response.statusText,r=e.response.status;if([502,504].includes(r))c.history.push("/error");else if(401===r)"/login"!==c.history.location.pathname&&(s.ZP.error(o.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(p.Z.authKey),c.history.push("/login"));else{var a,l,n,i;if("function"==typeof(null===(a=e.config)||void 0===a?void 0:a.onError))return null===(i=e.config)||void 0===i?void 0:i.onError(e.response);t&&u.Z.error({message:t,description:null!==(l=e.response)&&void 0!==l&&null!==(l=l.data)&&void 0!==l&&l.errors?(0,g.jsx)(g.Fragment,{children:null===(n=e.response)||void 0===n||null===(n=n.data)||void 0===n||null===(n=n.errors)||void 0===n?void 0:n.map((function(e){return(0,g.jsxs)("div",{children:[e.message," (",e.value,")"]})}))}):void 0})}}else console.log(e.message);return Promise.reject(e)}));var b=P}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[2286],{9169:function(e,t,l){var a=l(15558),r=l.n(a),i=l(48305),o=l.n(i),n=l(72317),s=l(47667),u=l(17082),p=l(78646),g=l(21288),c=l(75271),P=l(52676);t.Z=function(e){var t=e.value,l=e.onChange,a=(0,c.useState)(""),i=o()(a,2),d=i[0],b=i[1],h=(0,c.useState)(!1),Z=o()(h,2),k=Z[0],v=Z[1],m=(0,c.useState)([]),f=o()(m,2),y=f[0],x=f[1],w=(0,c.useRef)(),q=function(){d&&!y.includes(d)&&(x([].concat(r()(y),[d])),null==l||l([].concat(r()(y),[d]))),v(!1),b("")},B=y.map((function(e){var t=(0,P.jsx)(s.Z,{closable:!0,onClose:function(t){var a,r;t.preventDefault(),a=e,r=y.filter((function(e){return e!==a})),x(r),null==l||l(r)},children:e});return(0,P.jsx)("span",{style:{display:"inline-block",marginBottom:8},children:t},e)}));return(0,c.useEffect)((function(){k&&w&&w.current.focus()}),[k]),(0,c.useEffect)((function(){x(t||[])}),[t]),(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(p.Z,{enter:{scale:.8,opacity:0,type:"from",duration:100},leave:{opacity:0,width:0,scale:0,duration:200},appear:!1,children:B}),k&&(0,P.jsx)(u.Z,{ref:w,type:"text",size:"small",style:{width:78},value:d,onChange:function(e){b(e.target.value)},onBlur:q,onPressEnter:q}),!k&&(0,P.jsxs)(s.Z,{onClick:function(){v(!0)},style:{borderStyle:"dashed",cursor:"pointer"},children:[(0,P.jsx)(g.Z,{})," ",n.ZP.get("新建")]})]})}},3475:function(e,t,l){var a=l(72317),r=window.__ENV__QlBaseUrl||"/";t.Z={siteName:a.ZP.get("青龙"),baseUrl:r,apiPrefix:"".concat(r,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],scopes:[{name:a.ZP.get("定时任务"),value:"crons"},{name:a.ZP.get("环境变量"),value:"envs"},{name:a.ZP.get("订阅管理"),value:"subscriptions"},{name:a.ZP.get("配置文件"),value:"configs"},{name:a.ZP.get("脚本管理"),value:"scripts"},{name:a.ZP.get("日志管理"),value:"logs"},{name:a.ZP.get("依赖管理"),value:"dependencies"},{name:a.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:a.ZP.get("定时任务"),envs:a.ZP.get("环境变量"),subscriptions:a.ZP.get("订阅管理"),configs:a.ZP.get("配置文件"),scripts:a.ZP.get("脚本管理"),logs:a.ZP.get("日志管理"),dependencies:a.ZP.get("依赖管理"),system:a.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"ntfy",label:"Ntfy"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:a.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:a.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:a.ZP.get("钉钉机器人")},{value:"weWorkBot",label:a.ZP.get("企业微信机器人")},{value:"weWorkApp",label:a.ZP.get("企业微信应用")},{value:"aibotk",label:a.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"wePlusBot",label:a.ZP.get("微加机器人")},{value:"wxPusherBot",label:"wxPusher"},{value:"wxPusherSpt",label:"WxPusher(极简推送SPT-推荐)"},{value:"openiLink",label:"OpeniLink"},{value:"chat",label:a.ZP.get("群晖chat")},{value:"email",label:a.ZP.get("邮箱")},{value:"lark",label:a.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:a.ZP.get("自定义通知")},{value:"closed",label:a.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:a.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:a.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:a.ZP.get("推送消息的优先级")}],ntfy:[{label:"ntfyUrl",tip:a.ZP.get("ntfy的url地址,例如 https://ntfy.sh"),required:!0},{label:"ntfyTopic",tip:a.ZP.get("ntfy应用topic"),required:!0},{label:"ntfyPriority",tip:a.ZP.get("推送消息的优先级")},{label:"ntfyToken",tip:a.ZP.get("ntfy应用token")},{label:"ntfyUsername",tip:a.ZP.get("ntfy应用用户名")},{label:"ntfyPassword",tip:a.ZP.get("ntfy应用密码")},{label:"ntfyActions",tip:a.ZP.get("ntfy用户动作")}],chat:[{label:"synologyChatUrl",tip:a.ZP.get("synologyChat的url地址"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:a.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:a.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:a.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:a.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:a.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:a.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:a.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:a.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:a.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:a.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:a.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:a.ZP.get("BARK推送消息的跳转URL")},{label:"barkArchive",tip:a.ZP.get("BARK是否保存推送消息")}],telegramBot:[{label:"telegramBotToken",tip:a.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:a.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:a.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:a.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:a.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:a.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:a.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:a.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:a.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:a.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:a.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:a.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:a.ZP.get("请输入要发送的目标"),items:[{value:"room",label:a.ZP.get("群聊")},{value:"contact",label:a.ZP.get("好友")}]},{label:"aibotkName",tip:a.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:a.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:a.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:a.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")},{label:"pushplusTemplate",tip:a.ZP.get("发送模板")},{label:"pushplusChannel",tip:a.ZP.get("发送渠道")},{label:"pushplusWebhook",tip:a.ZP.get("webhook编码")},{label:"pushplusCallbackUrl",tip:a.ZP.get("发送结果回调地址")},{label:"pushplusTo",tip:a.ZP.get("好友令牌")}],wePlusBot:[{label:"wePlusBotToken",tip:a.ZP.get("用户令牌,扫描登录后 我的—>设置->令牌 中获取,参考 https://www.weplusbot.com/"),required:!0},{label:"wePlusBotReceiver",tip:a.ZP.get("消息接收人")},{label:"wePlusBotVersion",tip:a.ZP.get("调用版本;专业版填写pro,个人版填写personal,为空默认使用专业版")}],wxPusherBot:[{label:"wxPusherBotAppToken",tip:a.ZP.get("wxPusherBot的appToken"),required:!0},{label:"wxPusherBotTopicIds",tip:a.ZP.get("wxPusherBot的topicIds"),required:!1},{label:"wxPusherBotUids",tip:a.ZP.get("wxPusherBot的uids"),required:!1}],wxPusherSpt:[{label:"wxPusherSptList",tip:a.ZP.get("wxPusherSpt的SPT"),required:!0}],openiLink:[{label:"openiLinkAppToken",tip:a.ZP.get("OpeniLink的app_token,在OpeniLink Hub后台安装App后获取,参考 https://openilink.com/docs/hub/apps"),required:!0},{label:"openiLinkHubUrl",tip:a.ZP.get("OpeniLink Hub地址,默认为 https://hub.openilink.com,自建Hub时填写自己的地址")},{label:"openiLinkContextToken",tip:a.ZP.get("OpeniLink的context_token,用于标识消息会话上下文,可从消息事件中获取")}],lark:[{label:"larkKey",tip:a.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0},{label:"larkSecret",tip:a.ZP.get("飞书群组机器人加签密钥,安全设置中开启签名校验后获得")}],email:[{label:"emailService",tip:a.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:a.ZP.get("邮箱认证地址"),required:!0},{label:"emailPass",tip:a.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0},{label:"emailTo",tip:a.ZP.get("收件邮箱地址,多个分号分隔,默认发送给发件邮箱地址")}],pushMe:[{label:"pushMeKey",tip:a.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0},{label:"pushMeUrl",tip:a.ZP.get("自建的PushMeServer消息接口地址,例如:http://127.0.0.1:3010,不填则使用官方消息接口"),required:!1}],chronocat:[{label:"chronocatURL",tip:a.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:a.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:a.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:a.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:a.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:a.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:a.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:a.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":a.ZP.get("登录"),"/initialization":a.ZP.get("初始化"),"/crontab":a.ZP.get("定时任务"),"/env":a.ZP.get("环境变量"),"/subscription":a.ZP.get("订阅管理"),"/config":a.ZP.get("配置文件"),"/script":a.ZP.get("脚本管理"),"/diff":a.ZP.get("对比工具"),"/log":a.ZP.get("日志管理"),"/setting":a.ZP.get("系统设置"),"/error":a.ZP.get("错误日志"),"/dependence":a.ZP.get("依赖管理"),"/dashboard":a.ZP.get("仪表盘")},dependenceTypes:["nodejs","python3","linux"]}},16314:function(e,t,l){l.d(t,{W:function(){return Z}});var a=l(90228),r=l.n(a),i=l(87999),o=l.n(i),n=l(72317),s=l(61508),u=l(33839),p=l(3475),g=l(98783),c=l(69313),P=l(52676);s.ZP.config({duration:2});var d=Date.now(),b=c.Z.create({timeout:6e4,params:{t:d}}),h=["".concat(p.Z.baseUrl,"api/user/login"),"".concat(p.Z.baseUrl,"open/auth/token"),"".concat(p.Z.baseUrl,"api/user/two-factor/login"),"".concat(p.Z.baseUrl,"api/system"),"".concat(p.Z.baseUrl,"api/user/init"),"".concat(p.Z.baseUrl,"api/user/notification/init")];b.interceptors.request.use((function(e){var t=localStorage.getItem(p.Z.authKey);return t&&!h.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),b.interceptors.response.use(function(){var e=o()(r()().mark((function e(t){var l,a,i;return r()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l=t.status,![502,504].includes(l)){e.next=5;break}g.history.push("/error"),e.next=18;break;case 5:if(401!==l){e.next=9;break}"/login"!==g.history.location.pathname&&(localStorage.removeItem(p.Z.authKey),g.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(a=t.data).code&&(i=a.message||a.data)&&u.Z.error({message:i,description:null!=a&&a.errors?(0,P.jsx)(P.Fragment,{children:null==a?void 0:a.errors.map((function(e){return(0,P.jsx)("div",{children:e.message})}))}):void 0}),e.abrupt("return",a);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message:e.response.statusText,l=e.response.status;if([502,504].includes(l))g.history.push("/error");else if(401===l)"/login"!==g.history.location.pathname&&(s.ZP.error(n.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(p.Z.authKey),g.history.push("/login"));else{var a,r,i,o;if("function"==typeof(null===(a=e.config)||void 0===a?void 0:a.onError))return null===(o=e.config)||void 0===o?void 0:o.onError(e.response);t&&u.Z.error({message:t,description:null!==(r=e.response)&&void 0!==r&&null!==(r=r.data)&&void 0!==r&&r.errors?(0,P.jsx)(P.Fragment,{children:null===(i=e.response)||void 0===i||null===(i=i.data)||void 0===i||null===(i=i.errors)||void 0===i?void 0:i.map((function(e){return(0,P.jsxs)("div",{children:[e.message," (",e.value,")"]})}))}):void 0})}}else console.log(e.message);return Promise.reject(e)}));var Z=b}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[3191],{23191:function(e,t,n){"use strict";n.r(t);var l=n(335),a=n.n(l),r=n(90228),o=n.n(r),i=n(26068),s=n.n(i),c=n(87999),u=n.n(c),d=n(48305),h=n.n(d),p=n(72317),Z=n(75271),x=n(35181),g=n(72338),m=n(61508),P=n(17082),f=n(56646),v=n(45520),j=n(94747),b=n(9171),C=n(16314),w=n(3475),y=n(91379),k=n.n(y),I=n(46207),_=n.n(I),S=n(52676),R=x.Z.Option,T=/([^\/\:]+\/[^\/]+)(?=\.git)/,F=/([^\/\:]+\/[^\/\.]+)\.[a-z]+(\?[^\s]*)?(#.*)?$/;t.default=function(e){var t,n=e.subscription,l=e.handleCancel,r=g.Z.useForm(),i=h()(r,1)[0],c=(0,Z.useState)(!1),d=h()(c,2),y=d[0],I=d[1],O=(0,Z.useState)((null==n?void 0:n.type)||"public-repo"),V=h()(O,2),q=V[0],A=V[1],N=(0,Z.useState)((null==n?void 0:n.schedule_type)||"crontab"),E=h()(N,2),D=E[0],z=E[1],K=(0,Z.useState)((null==n?void 0:n.pull_type)||"ssh-key"),B=h()(K,2),G=B[0],H=B[1],L=function(){var e=u()(o()().mark((function e(t){var a,r,i,c,u;return o()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return I(!0),a=n?"put":"post",r=s()(s()({},t),{},{autoAddCron:Boolean(t.autoAddCron),autoDelCron:Boolean(t.autoDelCron)}),n&&(r.id=n.id),e.prev=4,e.next=7,C.W[a]("".concat(w.Z.apiPrefix,"subscriptions"),r);case 7:i=e.sent,c=i.code,u=i.data,200===c&&(m.ZP.success(n?p.ZP.get("更新订阅成功"):p.ZP.get("创建订阅成功")),l(u)),I(!1),e.next=17;break;case 14:e.prev=14,e.t0=e.catch(4),I(!1);case 17:case"end":return e.stop()}}),e,null,[[4,14]])})));return function(t){return e.apply(this,arguments)}}(),W=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:q,l="",a="file"===n?F:T;return a.test(e)&&(l=e.match(a)[1].replaceAll("/","_").replaceAll(".","_")),t&&(l=l+"_"+t),l},$=function(e){var t=e.value,n=e.onChange,l=(0,Z.useState)("days"),a=h()(l,2),r=a[0],o=a[1],i=(0,Z.useState)(),s=h()(i,2),c=s[0],u=s[1];return(0,Z.useEffect)((function(){t&&(o(t.type),u(t.value))}),[t]),(0,S.jsxs)(P.Z.Group,{compact:!0,children:[(0,S.jsx)(f.Z,{addonBefore:p.ZP.get("每"),precision:0,min:1,value:c,style:{width:"calc(100% - 58px)"},onChange:function(e){u(e||1),e?null==n||n({type:r,value:e}):null==n||n(null)}}),(0,S.jsxs)(x.Z,{value:r,onChange:function(e){o(e),c&&c>0&&(null==n||n({type:e,value:c}))},children:[(0,S.jsx)(R,{value:"days",children:p.ZP.get("天")}),(0,S.jsx)(R,{value:"hours",children:p.ZP.get("时")}),(0,S.jsx)(R,{value:"minutes",children:p.ZP.get("分")}),(0,S.jsx)(R,{value:"seconds",children:p.ZP.get("秒")})]})]})},J=function(e){e.value,e.onChange;return"ssh-key"===e.type?(0,S.jsx)(g.Z.Item,{name:["pull_option","private_key"],label:p.ZP.get("私钥"),rules:[{required:!0}],children:(0,S.jsx)(P.Z.TextArea,{rows:4,autoSize:{minRows:1,maxRows:6},placeholder:p.ZP.get("请输入私钥")})}):(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(g.Z.Item,{name:["pull_option","username"],label:p.ZP.get("用户名"),rules:[{required:!0}],children:(0,S.jsx)(P.Z,{placeholder:p.ZP.get("请输入认证用户名")})}),(0,S.jsx)(g.Z.Item,{name:["pull_option","password"],tooltip:p.ZP.get("Github已不支持密码认证,请使用Token方式"),label:p.ZP.get("密码/Token"),rules:[{required:!0}],children:(0,S.jsx)(P.Z,{placeholder:p.ZP.get("请输入密码或者Token")})})]})},M=(0,Z.useCallback)((function(e){var t=e.clipboardData.getData("text");if(t.startsWith("ql ")){var n=function(e){var t,n=[],l="",r=!1,o=!1,i=!1,s=a()(e);try{for(s.s();!(t=s.n()).done;){var c=t.value;if(r){if('"'===c){r=!1,i=!0;continue}l+=c}else if(o){if("'"===c){o=!1,i=!0;continue}l+=c}else'"'===c?(r=!0,i=!1):"'"===c?(o=!0,i=!1):" "===c||"\t"===c?(l||i)&&(n.push(l),l="",i=!1):(l+=c,i=!1)}}catch(e){s.e(e)}finally{s.f()}return(l||i)&&n.push(l),n}(t),l=n[1],r=n[2]||"",o=n[3]||"",s=n[4]||"",c=n[5]||"",u=n[6]||"",d=n[7]||"",h="raw"===l?"file":r.startsWith("http")?"public-repo":"private-repo";i.setFieldsValue({type:h,url:r,whitelist:o,blacklist:s,dependences:c,branch:u,extensions:d,alias:W(r,u,h)}),A(h)}}),[]),Q=(0,Z.useCallback)((function(e){var t=e.clipboardData.getData("text");(t.includes("ql repo")||t.includes("ql raw"))&&e.preventDefault()}),[]);return(0,Z.useEffect)((function(){return window.addEventListener("paste",M),function(){window.removeEventListener("paste",M)}}),[]),(0,S.jsx)(v.Z,{title:n?p.ZP.get("编辑订阅"):p.ZP.get("创建订阅"),open:!0,forceRender:!0,centered:!0,maskClosable:!1,onOk:function(){i.validateFields().then((function(e){L(e)})).catch((function(e){console.log("Validate Failed:",e)}))},onCancel:function(){return l()},confirmLoading:y,children:(0,S.jsxs)(g.Z,{form:i,name:"form_in_modal",layout:"vertical",initialValues:s()(s()({},n),(t=n,s()(s()({},t),{},{autoAddCron:!!_()(null==t?void 0:t.autoAddCron)||Boolean(null==t?void 0:t.autoAddCron),autoDelCron:!!_()(null==t?void 0:t.autoDelCron)||Boolean(null==t?void 0:t.autoDelCron)}))),children:[(0,S.jsx)(g.Z.Item,{name:"name",label:p.ZP.get("名称"),rules:[{required:!0}],children:(0,S.jsx)(P.Z,{placeholder:p.ZP.get("支持拷贝 ql repo/raw 命令,粘贴导入"),onPaste:Q})}),(0,S.jsx)(g.Z.Item,{name:"type",label:p.ZP.get("类型"),rules:[{required:!0}],initialValue:"public-repo",children:(0,S.jsxs)(j.ZP.Group,{onChange:function(e){A(e.target.value);var t=i.getFieldValue("url"),n=i.getFieldValue("branch");i.setFieldsValue({alias:W(t,n,e.target.value)}),t&&i.validateFields(["url"])},children:[(0,S.jsx)(j.ZP,{value:"public-repo",children:p.ZP.get("公开仓库")}),(0,S.jsx)(j.ZP,{value:"private-repo",children:p.ZP.get("私有仓库")}),(0,S.jsx)(j.ZP,{value:"file",children:p.ZP.get("单文件")})]})}),(0,S.jsx)(g.Z.Item,{name:"url",label:p.ZP.get("链接"),rules:[{required:!0},{pattern:"file"===q?F:T}],children:(0,S.jsx)(P.Z.TextArea,{autoSize:{minRows:1,maxRows:5},placeholder:p.ZP.get("请输入订阅链接"),onPaste:Q,onChange:function(e){var t=i.getFieldValue("branch");i.setFieldsValue({alias:W(e.target.value,t)})}})}),"file"!==q&&(0,S.jsx)(g.Z.Item,{name:"branch",label:p.ZP.get("分支"),children:(0,S.jsx)(P.Z,{placeholder:p.ZP.get("请输入分支"),onPaste:Q,onChange:function(e){var t=i.getFieldValue("url");i.setFieldsValue({alias:W(t,e.target.value)})}})}),(0,S.jsx)(g.Z.Item,{name:"alias",label:p.ZP.get("唯一值"),rules:[{required:!0,message:""}],tooltip:p.ZP.get("唯一值用于日志目录和私钥别名"),children:(0,S.jsx)(P.Z,{placeholder:p.ZP.get("自动生成"),disabled:!0})}),"private-repo"===q&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(g.Z.Item,{name:"pull_type",label:p.ZP.get("拉取方式"),initialValue:"ssh-key",rules:[{required:!0}],children:(0,S.jsxs)(j.ZP.Group,{onChange:function(e){H(e.target.value)},children:[(0,S.jsx)(j.ZP,{value:"ssh-key",children:p.ZP.get("私钥")}),(0,S.jsx)(j.ZP,{value:"user-pwd",children:p.ZP.get("用户名密码/Token")})]})}),(0,S.jsx)(J,{type:G})]}),(0,S.jsx)(g.Z.Item,{name:"schedule_type",label:p.ZP.get("定时类型"),initialValue:"crontab",rules:[{required:!0}],children:(0,S.jsxs)(j.ZP.Group,{onChange:function(e){z(e.target.value),i.setFieldsValue({schedule:""})},children:[(0,S.jsx)(j.ZP,{value:"crontab",children:"crontab"}),(0,S.jsx)(j.ZP,{value:"interval",children:"interval"})]})}),(0,S.jsx)(g.Z.Item,{name:"crontab"===D?"schedule":"interval_schedule",label:p.ZP.get("定时规则"),rules:[{required:!0},{validator:function(e,t){try{return"interval"===D||!t||k().parse(t).hasNext()?Promise.resolve():Promise.reject(p.ZP.get("Subscription表达式格式有误"))}catch(e){return Promise.reject(p.ZP.get("Subscription表达式格式有误"))}}}],children:"interval"===D?(0,S.jsx)($,{}):(0,S.jsx)(P.Z,{onPaste:Q,placeholder:p.ZP.get("秒(可选) 分 时 天 月 周")})}),"file"!==q&&(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(g.Z.Item,{name:"whitelist",label:p.ZP.get("白名单"),tooltip:p.ZP.get("多个关键词竖线分割,支持正则表达式"),children:(0,S.jsx)(P.Z.TextArea,{rows:4,autoSize:{minRows:1,maxRows:5},placeholder:p.ZP.get("请输入脚本筛选白名单关键词,多个关键词竖线分割"),onPaste:Q})}),(0,S.jsx)(g.Z.Item,{name:"blacklist",label:p.ZP.get("黑名单"),tooltip:p.ZP.get("多个关键词竖线分割,支持正则表达式"),children:(0,S.jsx)(P.Z.TextArea,{rows:4,autoSize:{minRows:1,maxRows:5},placeholder:p.ZP.get("请输入脚本筛选黑名单关键词,多个关键词竖线分割"),onPaste:Q})}),(0,S.jsx)(g.Z.Item,{name:"dependences",label:p.ZP.get("依赖文件"),tooltip:p.ZP.get("多个关键词竖线分割,支持正则表达式"),children:(0,S.jsx)(P.Z.TextArea,{rows:4,autoSize:{minRows:1,maxRows:5},placeholder:p.ZP.get("请输入脚本依赖文件关键词,多个关键词竖线分割"),onPaste:Q})}),(0,S.jsx)(g.Z.Item,{name:"extensions",label:p.ZP.get("文件后缀"),tooltip:p.ZP.get("仓库需要拉取的文件后缀,多个后缀空格分隔,默认使用配置文件中的RepoFileExtensions"),children:(0,S.jsx)(P.Z,{onPaste:Q,placeholder:p.ZP.get("请输入文件后缀")})}),(0,S.jsx)(g.Z.Item,{name:"sub_before",label:p.ZP.get("执行前"),tooltip:p.ZP.get("运行订阅前执行的命令,比如 cp/mv/python3 xxx.py/node xxx.js"),children:(0,S.jsx)(P.Z.TextArea,{onPaste:Q,rows:4,autoSize:{minRows:1,maxRows:5},placeholder:p.ZP.get("请输入运行订阅前要执行的命令")})}),(0,S.jsx)(g.Z.Item,{name:"sub_after",label:p.ZP.get("执行后"),tooltip:p.ZP.get("运行订阅后执行的命令,比如 cp/mv/python3 xxx.py/node xxx.js"),children:(0,S.jsx)(P.Z.TextArea,{onPaste:Q,rows:4,autoSize:{minRows:1,maxRows:5},placeholder:p.ZP.get("请输入运行订阅后要执行的命令")})})]}),(0,S.jsx)(g.Z.Item,{name:"proxy",label:p.ZP.get("代理"),tooltip:p.ZP.get("公开仓库支持HTTP/SOCK5代理,私有仓库支持SOCK5代理"),children:(0,S.jsx)(P.Z,{onPaste:Q,placeholder:"private-repo"===q?"SOCK5代理,例如 IP:PORT":"HTTP/SOCK5代理,例如 http://127.0.0.1:1080"})}),(0,S.jsxs)(g.Z.Item,{style:{marginBottom:0},className:"inline-form-item",children:[(0,S.jsx)(g.Z.Item,{name:"autoAddCron",label:p.ZP.get("自动添加任务"),valuePropName:"checked",initialValue:!0,children:(0,S.jsx)(b.Z,{})}),(0,S.jsx)(g.Z.Item,{name:"autoDelCron",label:p.ZP.get("自动删除任务"),valuePropName:"checked",initialValue:!0,children:(0,S.jsx)(b.Z,{})})]})]})})}},9171:function(e,t,n){"use strict";n.d(t,{Z:function(){return j}});var l=n(2053),a=n(57904),r=n(24727),o=n(82187),i=n.n(o),s=n(99459),c=n(58006),u=n(75271),d=n(6522),h=n(1260),p=u.forwardRef((function(e,t){var n,l=e.prefixCls,r=void 0===l?"rc-switch":l,o=e.className,p=e.checked,Z=e.defaultChecked,x=e.disabled,g=e.loadingIcon,m=e.checkedChildren,P=e.unCheckedChildren,f=e.onClick,v=e.onChange,j=e.onKeyDown,b=(0,c.Z)(e,["prefixCls","className","checked","defaultChecked","disabled","loadingIcon","checkedChildren","unCheckedChildren","onClick","onChange","onKeyDown"]),C=(0,d.Z)(!1,{value:p,defaultValue:Z}),w=(0,s.Z)(C,2),y=w[0],k=w[1];function I(e,t){var n=y;return x||(k(n=e),null==v||v(n,t)),n}var _=i()(r,o,(n={},(0,a.Z)(n,"".concat(r,"-checked"),y),(0,a.Z)(n,"".concat(r,"-disabled"),x),n));return u.createElement("button",Object.assign({},b,{type:"button",role:"switch","aria-checked":y,disabled:x,className:_,ref:t,onKeyDown:function(e){e.which===h.Z.LEFT?I(!1,e):e.which===h.Z.RIGHT&&I(!0,e),null==j||j(e)},onClick:function(e){var t=I(!y,e);null==f||f(t,e)}}),g,u.createElement("span",{className:"".concat(r,"-inner")},y?m:P))}));p.displayName="Switch";var Z=p,x=n(96820),g=n(30107),m=n(38470),P=n(74244),f=function(e,t){var n={};for(var l in e)Object.prototype.hasOwnProperty.call(e,l)&&t.indexOf(l)<0&&(n[l]=e[l]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(l=Object.getOwnPropertySymbols(e);a<l.length;a++)t.indexOf(l[a])<0&&Object.prototype.propertyIsEnumerable.call(e,l[a])&&(n[l[a]]=e[l[a]])}return n},v=u.forwardRef((function(e,t){var n=e.prefixCls,o=e.size,s=e.disabled,c=e.loading,d=e.className,h=void 0===d?"":d,p=f(e,["prefixCls","size","disabled","loading","className"]),v=u.useContext(x.E_),j=v.getPrefixCls,b=v.direction,C=u.useContext(m.Z),w=u.useContext(g.Z),y=(null!=s?s:w)||c,k=j("switch",n),I=u.createElement("div",{className:"".concat(k,"-handle")},c&&u.createElement(r.Z,{className:"".concat(k,"-loading-icon")})),_=i()((0,a.Z)((0,a.Z)((0,a.Z)({},"".concat(k,"-small"),"small"===(o||C)),"".concat(k,"-loading"),c),"".concat(k,"-rtl"),"rtl"===b),h);return u.createElement(P.Z,{insertExtraNode:!0},u.createElement(Z,(0,l.Z)({},p,{prefixCls:k,className:_,disabled:y,ref:t,loadingIcon:I})))}));v.__ANT_SWITCH=!0;var j=v},46207:function(e){e.exports=function(e){return null==e}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_whyour_qinglong=self.webpackChunk_whyour_qinglong||[]).push([[8826,7243],{8826:function(e,t,n){n.r(t);var a=n(48305),i=n.n(a),r=n(72317),o=n(75271),l=n(45520),s=n(93481),u=n(16314),c=n(3475),p=n(56958),g=n(44084),d=n(34014),h=n(78060),b=n.n(h),P=n(65814),v=n(57113),f=n(52676);t.default=function(e){var t=e.dependence,n=e.handleCancel,a=(0,o.useState)(""),h=i()(a,2),Z=h[0],m=h[1],k=(0,o.useState)(!0),y=i()(k,2),x=y[0],w=y[1],q=(0,o.useState)(!1),S=i()(q,2),B=S[0],T=S[1],C=(0,o.useState)(!0),U=i()(C,2),_=U[0],A=U[1],H=(0,o.useState)(!1),I=i()(H,2),E=I[0],K=I[1],j=(0,o.useState)(!1),L=i()(j,2),O=L[0],D=L[1],M=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];localStorage.removeItem("logDependence"),n(e)};(0,o.useEffect)((function(){t&&(A(!0),u.W.get("".concat(c.Z.apiPrefix,"dependencies/").concat(t.id)).then((function(e){var n=e.code,a=e.data;if(200===n&&localStorage.getItem("logDependence")===String(t.id)){var i=((null==a?void 0:a.log)||[]).join("");m(i);var r=null==a?void 0:a.status;w(r===v.Status.安装中||r===v.Status.删除中),K(r===v.Status.删除失败)}})).finally((function(){A(!1)})))}),[t]);var R=function(e){var n=e.message,a=e.references,i=e.status;null!=a&&a.length&&a.includes(t.id)&&("number"==typeof i&&(w(i===v.Status.安装中||i===v.Status.删除中),K(i===v.Status.删除失败)),n&&m((function(e){return"".concat(e).concat(n)})))};return(0,o.useEffect)((function(){var e=P.Z.getInstance();return e.subscribe("installDependence",R),e.subscribe("uninstallDependence",R),function(){e.unsubscribe("installDependence",R),e.unsubscribe("uninstallDependence",R)}}),[t]),(0,o.useEffect)((function(){T(document.body.clientWidth<768)}),[]),(0,f.jsx)(l.Z,{title:(0,f.jsxs)(f.Fragment,{children:[x&&(0,f.jsx)(p.Z,{spin:!0}),!x&&(0,f.jsx)(g.Z,{}),(0,f.jsxs)("span",{style:{marginLeft:5},children:[r.ZP.get("日志 -")," ",t&&t.name]})," "]}),open:!0,centered:!0,className:"log-modal",forceRender:!0,onOk:function(){return M()},onCancel:function(){return M()},footer:[(0,f.jsx)(s.Z,{type:"primary",onClick:function(){E?(D(!0),u.W.delete("".concat(c.Z.apiPrefix,"dependencies/force"),{data:[t.id]}).then((function(e){var t=e.code;e.data,200===t&&M(!0)})).finally((function(){D(!1)}))):M()},loading:O,children:E?r.ZP.get("强制删除"):r.ZP.get("知道了")})],children:(0,f.jsx)("div",{className:"log-container",children:_?(0,f.jsx)(d.Z,{}):(0,f.jsx)("pre",{style:B?{fontFamily:"Source Code Pro",zoom:.83}:{},children:(0,f.jsx)(b(),{children:Z})})})})}},57113:function(e,t,n){n.r(t),n.d(t,{DependenceStatus:function(){return a},Status:function(){return i}});var a=function(e){return e[e.installing=0]="installing",e[e.installed=1]="installed",e[e.installFailed=2]="installFailed",e[e.removing=3]="removing",e[e.removed=4]="removed",e[e.removeFailed=5]="removeFailed",e[e.queued=6]="queued",e[e.cancelled=7]="cancelled",e}({}),i=function(e){return e[e["安装中"]=0]="安装中",e[e["已安装"]=1]="已安装",e[e["安装失败"]=2]="安装失败",e[e["删除中"]=3]="删除中",e[e["已删除"]=4]="已删除",e[e["删除失败"]=5]="删除失败",e[e["队列中"]=6]="队列中",e[e["已取消"]=7]="已取消",e}({})},3475:function(e,t,n){var a=n(72317),i=window.__ENV__QlBaseUrl||"/";t.Z={siteName:a.ZP.get("青龙"),baseUrl:i,apiPrefix:"".concat(i,"api/"),authKey:"token",layouts:[{name:"primary",include:[/.*/],exclude:[/(\/(en|zh))*\/login/]}],scopes:[{name:a.ZP.get("定时任务"),value:"crons"},{name:a.ZP.get("环境变量"),value:"envs"},{name:a.ZP.get("订阅管理"),value:"subscriptions"},{name:a.ZP.get("配置文件"),value:"configs"},{name:a.ZP.get("脚本管理"),value:"scripts"},{name:a.ZP.get("日志管理"),value:"logs"},{name:a.ZP.get("依赖管理"),value:"dependencies"},{name:a.ZP.get("系统信息"),value:"system"}],scopesMap:{crons:a.ZP.get("定时任务"),envs:a.ZP.get("环境变量"),subscriptions:a.ZP.get("订阅管理"),configs:a.ZP.get("配置文件"),scripts:a.ZP.get("脚本管理"),logs:a.ZP.get("日志管理"),dependencies:a.ZP.get("依赖管理"),system:a.ZP.get("系统信息")},notificationModes:[{value:"gotify",label:"Gotify"},{value:"ntfy",label:"Ntfy"},{value:"goCqHttpBot",label:"GoCqHttpBot"},{value:"serverChan",label:a.ZP.get("Server酱")},{value:"pushDeer",label:"PushDeer"},{value:"bark",label:"Bark"},{value:"telegramBot",label:a.ZP.get("Telegram机器人")},{value:"dingtalkBot",label:a.ZP.get("钉钉机器人")},{value:"weWorkBot",label:a.ZP.get("企业微信机器人")},{value:"weWorkApp",label:a.ZP.get("企业微信应用")},{value:"aibotk",label:a.ZP.get("智能微秘书")},{value:"iGot",label:"IGot"},{value:"pushPlus",label:"PushPlus"},{value:"wePlusBot",label:a.ZP.get("微加机器人")},{value:"wxPusherBot",label:"wxPusher"},{value:"wxPusherSpt",label:"WxPusher(极简推送SPT-推荐)"},{value:"openiLink",label:"OpeniLink"},{value:"chat",label:a.ZP.get("群晖chat")},{value:"email",label:a.ZP.get("邮箱")},{value:"lark",label:a.ZP.get("飞书机器人")},{value:"pushMe",label:"PushMe"},{value:"chronocat",label:"Chronocat"},{value:"webhook",label:a.ZP.get("自定义通知")},{value:"closed",label:a.ZP.get("已关闭")}],notificationModeMap:{gotify:[{label:"gotifyUrl",tip:a.ZP.get("gotify的url地址,例如 https://push.example.de:8080"),required:!0},{label:"gotifyToken",tip:a.ZP.get("gotify的消息应用token码"),required:!0},{label:"gotifyPriority",tip:a.ZP.get("推送消息的优先级")}],ntfy:[{label:"ntfyUrl",tip:a.ZP.get("ntfy的url地址,例如 https://ntfy.sh"),required:!0},{label:"ntfyTopic",tip:a.ZP.get("ntfy应用topic"),required:!0},{label:"ntfyPriority",tip:a.ZP.get("推送消息的优先级")},{label:"ntfyToken",tip:a.ZP.get("ntfy应用token")},{label:"ntfyUsername",tip:a.ZP.get("ntfy应用用户名")},{label:"ntfyPassword",tip:a.ZP.get("ntfy应用密码")},{label:"ntfyActions",tip:a.ZP.get("ntfy用户动作")}],chat:[{label:"synologyChatUrl",tip:a.ZP.get("synologyChat的url地址"),required:!0}],goCqHttpBot:[{label:"goCqHttpBotUrl",tip:a.ZP.get("推送到个人QQ: http://127.0.0.1/send_private_msg,群:http://127.0.0.1/send_group_msg"),required:!0},{label:"goCqHttpBotToken",tip:a.ZP.get("访问密钥"),required:!0},{label:"goCqHttpBotQq",tip:a.ZP.get("如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群"),required:!0}],serverChan:[{label:"serverChanKey",tip:a.ZP.get("Server酱SENDKEY"),required:!0}],pushDeer:[{label:"pushDeerKey",tip:a.ZP.get("PushDeer的Key,https://github.com/easychen/pushdeer"),required:!0},{label:"pushDeerUrl",tip:a.ZP.get("PushDeer的自架API endpoint,默认是 https://api2.pushdeer.com/message/push")}],bark:[{label:"barkPush",tip:a.ZP.get("Bark的信息IP/设备码,例如:https://api.day.app/XXXXXXXX"),required:!0},{label:"barkIcon",tip:a.ZP.get("BARK推送图标,自定义推送图标 (需iOS15或以上才能显示)")},{label:"barkSound",tip:a.ZP.get("BARK推送铃声,铃声列表去APP查看复制填写")},{label:"barkGroup",tip:a.ZP.get("BARK推送消息的分组,默认为qinglong")},{label:"barkLevel",tip:a.ZP.get("BARK推送消息的时效性,默认为active")},{label:"barkUrl",tip:a.ZP.get("BARK推送消息的跳转URL")},{label:"barkArchive",tip:a.ZP.get("BARK是否保存推送消息")}],telegramBot:[{label:"telegramBotToken",tip:a.ZP.get("telegram机器人的token,例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw"),required:!0},{label:"telegramBotUserId",tip:a.ZP.get("telegram用户的id,例如:129xxx206"),required:!0},{label:"telegramBotProxyHost",tip:a.ZP.get("代理IP")},{label:"telegramBotProxyPort",tip:a.ZP.get("代理端口")},{label:"telegramBotProxyAuth",tip:a.ZP.get("telegram代理配置认证参数,用户名与密码用英文冒号连接 user:password")},{label:"telegramBotApiHost",tip:a.ZP.get("telegram api自建的反向代理地址,默认tg官方api")}],dingtalkBot:[{label:"dingtalkBotToken",tip:a.ZP.get("钉钉机器人webhook token,例如:5a544165465465645d0f31dca676e7bd07415asdasd"),required:!0},{label:"dingtalkBotSecret",tip:a.ZP.get("密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串")}],weWorkBot:[{label:"weWorkBotKey",tip:a.ZP.get("企业微信机器人的webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],weWorkApp:[{label:"weWorkAppKey",tip:a.ZP.get("corpid、corpsecret、touser(注:多个成员ID使用|隔开)、agentid、消息类型(选填,不填默认文本消息类型) 注意用,号隔开(英文输入法的逗号),例如:wwcfrs,B-76WERQ,qinglong,1000001,2COat"),required:!0},{label:"weWorkOrigin",tip:a.ZP.get("企业微信代理地址")}],aibotk:[{label:"aibotkKey",tip:a.ZP.get("密钥key,智能微秘书个人中心获取apikey,申请地址:https://wechat.aibotk.com/signup?from=ql"),required:!0},{label:"aibotkType",tip:a.ZP.get("发送的目标,群组或者好友"),required:!0,placeholder:a.ZP.get("请输入要发送的目标"),items:[{value:"room",label:a.ZP.get("群聊")},{value:"contact",label:a.ZP.get("好友")}]},{label:"aibotkName",tip:a.ZP.get("要发送的用户昵称或群名,如果目标是群,需要填群名,如果目标是好友,需要填好友昵称"),required:!0}],iGot:[{label:"iGotPushKey",tip:a.ZP.get("iGot的信息推送key,例如:https://push.hellyw.com/XXXXXXXX"),required:!0}],pushPlus:[{label:"pushPlusToken",tip:a.ZP.get("微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送,参考 https://www.pushplus.plus/"),required:!0},{label:"pushPlusUser",tip:a.ZP.get("一对多推送的“群组编码”(一对多推送下面->您的群组(如无则创建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)")},{label:"pushplusTemplate",tip:a.ZP.get("发送模板")},{label:"pushplusChannel",tip:a.ZP.get("发送渠道")},{label:"pushplusWebhook",tip:a.ZP.get("webhook编码")},{label:"pushplusCallbackUrl",tip:a.ZP.get("发送结果回调地址")},{label:"pushplusTo",tip:a.ZP.get("好友令牌")}],wePlusBot:[{label:"wePlusBotToken",tip:a.ZP.get("用户令牌,扫描登录后 我的—>设置->令牌 中获取,参考 https://www.weplusbot.com/"),required:!0},{label:"wePlusBotReceiver",tip:a.ZP.get("消息接收人")},{label:"wePlusBotVersion",tip:a.ZP.get("调用版本;专业版填写pro,个人版填写personal,为空默认使用专业版")}],wxPusherBot:[{label:"wxPusherBotAppToken",tip:a.ZP.get("wxPusherBot的appToken"),required:!0},{label:"wxPusherBotTopicIds",tip:a.ZP.get("wxPusherBot的topicIds"),required:!1},{label:"wxPusherBotUids",tip:a.ZP.get("wxPusherBot的uids"),required:!1}],wxPusherSpt:[{label:"wxPusherSptList",tip:a.ZP.get("wxPusherSpt的SPT"),required:!0}],openiLink:[{label:"openiLinkAppToken",tip:a.ZP.get("OpeniLink的app_token,在OpeniLink Hub后台安装App后获取,参考 https://openilink.com/docs/hub/apps"),required:!0},{label:"openiLinkHubUrl",tip:a.ZP.get("OpeniLink Hub地址,默认为 https://hub.openilink.com,自建Hub时填写自己的地址")},{label:"openiLinkContextToken",tip:a.ZP.get("OpeniLink的context_token,用于标识消息会话上下文,可从消息事件中获取")}],lark:[{label:"larkKey",tip:a.ZP.get("飞书群组机器人:https://www.feishu.cn/hc/zh-CN/articles/360024984973"),required:!0},{label:"larkSecret",tip:a.ZP.get("飞书群组机器人加签密钥,安全设置中开启签名校验后获得")}],email:[{label:"emailService",tip:a.ZP.get("邮箱服务名称,比如126、163、Gmail、QQ等,支持列表https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json"),required:!0},{label:"emailUser",tip:a.ZP.get("邮箱认证地址"),required:!0},{label:"emailPass",tip:a.ZP.get("SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定"),required:!0},{label:"emailTo",tip:a.ZP.get("收件邮箱地址,多个分号分隔,默认发送给发件邮箱地址")}],pushMe:[{label:"pushMeKey",tip:a.ZP.get("PushMe的Key,https://push.i-i.me/"),required:!0},{label:"pushMeUrl",tip:a.ZP.get("自建的PushMeServer消息接口地址,例如:http://127.0.0.1:3010,不填则使用官方消息接口"),required:!1}],chronocat:[{label:"chronocatURL",tip:a.ZP.get("Chronocat Red 服务的连接地址 https://chronocat.vercel.app/install/docker/official/"),required:!0},{label:"chronocatQQ",tip:a.ZP.get("个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx"),required:!0},{label:"chronocatToken",tip:a.ZP.get("docker安装在持久化config目录下的chronocat.yml文件可找到"),required:!0}],webhook:[{label:"webhookMethod",tip:a.ZP.get("请求方法"),required:!0,items:[{value:"GET"},{value:"POST"},{value:"PUT"}]},{label:"webhookContentType",tip:a.ZP.get("请求头Content-Type"),required:!0,items:[{value:"text/plain"},{value:"application/json"},{value:"multipart/form-data"},{value:"application/x-www-form-urlencoded"}]},{label:"webhookUrl",tip:a.ZP.get("请求链接以http或者https开头。url或者body中必须包含$title,$content可选,对应api内容的位置"),required:!0,placeholder:"https://xxx.cn/api?content=$title\n"},{label:"webhookHeaders",tip:a.ZP.get("请求头格式Custom-Header1: Header1,多个换行分割"),placeholder:"Custom-Header1: Header1\nCustom-Header2: Header2"},{label:"webhookBody",tip:a.ZP.get("请求体格式key1: value1,多个换行分割。url或者body中必须包含$title,$content可选,对应api内容的位置"),placeholder:"key1: $title\nkey2: $content"}]},documentTitleMap:{"/login":a.ZP.get("登录"),"/initialization":a.ZP.get("初始化"),"/crontab":a.ZP.get("定时任务"),"/env":a.ZP.get("环境变量"),"/subscription":a.ZP.get("订阅管理"),"/config":a.ZP.get("配置文件"),"/script":a.ZP.get("脚本管理"),"/diff":a.ZP.get("对比工具"),"/log":a.ZP.get("日志管理"),"/setting":a.ZP.get("系统设置"),"/error":a.ZP.get("错误日志"),"/dependence":a.ZP.get("依赖管理"),"/dashboard":a.ZP.get("仪表盘")},dependenceTypes:["nodejs","python3","linux"]}},16314:function(e,t,n){n.d(t,{W:function(){return v}});var a=n(90228),i=n.n(a),r=n(87999),o=n.n(r),l=n(72317),s=n(61508),u=n(33839),c=n(3475),p=n(98783),g=n(69313),d=n(52676);s.ZP.config({duration:2});var h=Date.now(),b=g.Z.create({timeout:6e4,params:{t:h}}),P=["".concat(c.Z.baseUrl,"api/user/login"),"".concat(c.Z.baseUrl,"open/auth/token"),"".concat(c.Z.baseUrl,"api/user/two-factor/login"),"".concat(c.Z.baseUrl,"api/system"),"".concat(c.Z.baseUrl,"api/user/init"),"".concat(c.Z.baseUrl,"api/user/notification/init")];b.interceptors.request.use((function(e){var t=localStorage.getItem(c.Z.authKey);return t&&!P.includes(e.url)?(e.headers.Authorization="Bearer ".concat(t),e):e})),b.interceptors.response.use(function(){var e=o()(i()().mark((function e(t){var n,a,r;return i()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.status,![502,504].includes(n)){e.next=5;break}p.history.push("/error"),e.next=18;break;case 5:if(401!==n){e.next=9;break}"/login"!==p.history.location.pathname&&(localStorage.removeItem(c.Z.authKey),p.history.push("/login")),e.next=18;break;case 9:return e.prev=9,200!==(a=t.data).code&&(r=a.message||a.data)&&u.Z.error({message:r,description:null!=a&&a.errors?(0,d.jsx)(d.Fragment,{children:null==a?void 0:a.errors.map((function(e){return(0,d.jsx)("div",{children:e.message})}))}):void 0}),e.abrupt("return",a);case 15:e.prev=15,e.t0=e.catch(9);case 17:case 18:return e.abrupt("return",t);case 19:case"end":return e.stop()}}),e,null,[[9,15]])})));return function(t){return e.apply(this,arguments)}}(),(function(e){if(e.response){var t=e.response.data?e.response.data.message||e.message:e.response.statusText,n=e.response.status;if([502,504].includes(n))p.history.push("/error");else if(401===n)"/login"!==p.history.location.pathname&&(s.ZP.error(l.ZP.get("登录已过期,请重新登录")),localStorage.removeItem(c.Z.authKey),p.history.push("/login"));else{var a,i,r,o;if("function"==typeof(null===(a=e.config)||void 0===a?void 0:a.onError))return null===(o=e.config)||void 0===o?void 0:o.onError(e.response);t&&u.Z.error({message:t,description:null!==(i=e.response)&&void 0!==i&&null!==(i=i.data)&&void 0!==i&&i.errors?(0,d.jsx)(d.Fragment,{children:null===(r=e.response)||void 0===r||null===(r=r.data)||void 0===r||null===(r=r.errors)||void 0===r?void 0:r.map((function(e){return(0,d.jsxs)("div",{children:[e.message," (",e.value,")"]})}))}):void 0})}}else console.log(e.message);return Promise.reject(e)}));var v=b},65814:function(e,t,n){var a=n(15558),i=n.n(a),r=n(67825),o=n.n(r),l=n(90228),s=n.n(l),u=n(87999),c=n.n(u),p=n(25298),g=n.n(p),d=n(17069),h=n.n(d),b=n(82092),P=n.n(b),v=n(78078),f=n.n(v),Z=["type"],m=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};g()(this,e),P()(this,"url",void 0),P()(this,"socket",null),P()(this,"subscriptions",new Map),P()(this,"options",void 0),P()(this,"reconnectAttempts",0),P()(this,"heartbeatTimeout",null),P()(this,"state","closed"),this.url=t,this.options={maxReconnectAttempts:n.maxReconnectAttempts||5,reconnectInterval:n.reconnectInterval||3e3,heartbeatInterval:n.heartbeatInterval||3e4},this.init()}var t,n;return h()(e,[{key:"init",value:(n=c()(s()().mark((function e(){var t=this;return s()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:e.prev=0,this.state="connecting",this.emit("connecting");case 3:if(!(this.reconnectAttempts<this.options.maxReconnectAttempts)){e.next=16;break}return this.socket=new(f())(this.url),this.setupEventListeners(),this.startHeartbeat(),e.next=9,this.waitForClose();case 9:return this.stopHeartbeat(),this.socket=null,this.reconnectAttempts++,e.next=14,new Promise((function(e){return setTimeout(e,t.options.reconnectInterval)}));case 14:e.next=3;break;case 16:e.next=21;break;case 18:e.prev=18,e.t0=e.catch(0),this.handleError(e.t0);case 21:case"end":return e.stop()}}),e,this,[[0,18]])}))),function(){return n.apply(this,arguments)})},{key:"setupEventListeners",value:function(){var e=this;this.socket&&(this.socket.onopen=function(){e.state="open",e.emit("open")},this.socket.onmessage=function(t){var n=JSON.parse(t.data);e.dispatchMessage(n)},this.socket.onclose=function(){e.state="closed",e.emit("close")})}},{key:"waitForClose",value:(t=c()(s()().mark((function e(){var t;return s()().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if((null===(t=this.socket)||void 0===t?void 0:t.readyState)===f().CLOSED){e.next=5;break}return e.next=3,new Promise((function(e){return setTimeout(e,100)}));case 3:e.next=0;break;case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"subscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(!n.has(t)){n.add(t),this.subscriptions.set(e,n);var a={action:"subscribe",topic:e};this.send(a)}}},{key:"unsubscribe",value:function(e,t){var n=this.subscriptions.get(e)||new Set;if(n.has(t)){n.delete(t);var a={action:"unsubscribe",topic:e};this.send(a)}}},{key:"send",value:function(e){var t;(null===(t=this.socket)||void 0===t?void 0:t.readyState)===f().OPEN&&this.socket.send(JSON.stringify(e))}},{key:"dispatchMessage",value:function(e){var t=e.type,n=o()(e,Z),a=this.subscriptions.get(t)||new Set;i()(a).forEach((function(e){return e(n)}))}},{key:"startHeartbeat",value:function(){var e=this;this.heartbeatTimeout=setInterval((function(){var t;(null===(t=e.socket)||void 0===t?void 0:t.readyState)===f().OPEN&&e.socket.send(JSON.stringify({type:"heartbeat"}))}),this.options.heartbeatInterval)}},{key:"stopHeartbeat",value:function(){this.heartbeatTimeout&&clearInterval(this.heartbeatTimeout)}},{key:"close",value:function(){this.socket&&(this.state="closed",this.stopHeartbeat(),this.socket.close(),this.emit("close"))}},{key:"handleError",value:function(e){console.error("WebSocket错误:",e),this.emit("error",e)}},{key:"on",value:function(e,t){}},{key:"emit",value:function(e,t){}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;return e.instance||(e.instance=new e(t,n)),e.instance}}]),e}();P()(m,"instance",null),t.Z=m}}]);
|
package/static/dist/index.html
CHANGED
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
<link rel="shortcut icon" href="https://qn.whyour.cn/favicon.svg">
|
|
8
8
|
<link rel="stylesheet" href="./umi.a4d14b92.css">
|
|
9
9
|
<script src="./api/env.js"></script>
|
|
10
|
-
<script src="./preload_helper.
|
|
10
|
+
<script src="./preload_helper.3048fe5b.js"></script>
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
|
13
13
|
<div id="root"></div>
|
|
14
|
-
<script src="./umi.
|
|
14
|
+
<script src="./umi.a54a59f6.js"></script>
|
|
15
15
|
</body>
|
|
16
16
|
</html>
|