@whyour/qinglong 0.13.2 → 0.14.0
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/README-en.md +13 -15
- package/README.md +14 -17
- package/docker/Dockerfile +6 -8
- package/docker/docker-entrypoint.sh +2 -16
- package/docker/front.conf +12 -0
- package/ecosystem.config.js +8 -0
- package/package.json +13 -8
- package/sample/config.sample.sh +10 -20
- package/sample/notify.js +115 -136
- package/sample/notify.py +7 -7
- package/shell/api.sh +4 -4
- package/shell/bot.sh +0 -3
- package/shell/check.sh +1 -13
- package/shell/env.sh +0 -0
- package/shell/share.sh +2 -4
- package/shell/start.sh +1 -11
- package/shell/update.sh +6 -17
- package/static/build/api/config.js +23 -6
- package/static/build/api/log.js +3 -32
- package/static/build/api/script.js +31 -21
- package/static/build/api/system.js +76 -8
- package/static/build/config/const.js +18 -1
- package/static/build/config/index.js +3 -0
- package/static/build/config/util.js +98 -95
- package/static/build/data/notify.js +2 -2
- package/static/build/data/{auth.js → system.js} +3 -3
- package/static/build/loaders/db.js +4 -4
- package/static/build/loaders/deps.js +11 -14
- package/static/build/loaders/express.js +4 -6
- package/static/build/loaders/initFile.js +16 -16
- package/static/build/loaders/sentry.js +2 -3
- package/static/build/loaders/sock.js +3 -3
- package/static/build/public.js +1 -1
- package/static/build/schedule/client.js +1 -1
- package/static/build/schedule/health.js +1 -1
- package/static/build/schedule/index.js +1 -1
- package/static/build/services/cron.js +32 -25
- package/static/build/services/dependence.js +15 -5
- package/static/build/services/env.js +2 -2
- package/static/build/services/notify.js +8 -7
- package/static/build/services/script.js +2 -6
- package/static/build/services/sshKey.js +27 -52
- package/static/build/services/subscription.js +19 -21
- package/static/build/services/system.js +112 -21
- package/static/build/services/user.js +52 -41
- package/static/build/shared/pLimit.js +4 -4
- package/static/dist/{6644.1f11b8fa.async.js → 1431.36b64dc5.async.js} +1 -1
- package/static/dist/3752.56c3fba2.async.js +1 -0
- package/static/dist/{419.e21ea0bd.async.js → 419.d9597044.async.js} +1 -1
- package/static/dist/{8008.cf4ff203.async.js → 8008.fbdcf863.async.js} +1 -1
- package/static/dist/833.7348bf8c.async.js +1 -0
- package/static/dist/8722.408e3112.async.js +1 -0
- package/static/dist/{8171.e2986b87.async.js → 9847.d72d4b37.async.js} +1 -1
- package/static/dist/index.html +1 -1
- package/static/dist/layouts__index.2c89a418.async.js +1 -0
- package/static/dist/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
- package/static/dist/monaco-editor/min/vs/base/worker/workerMain.js +22 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/abap/abap.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/apex/apex.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/azcli/azcli.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/bat/bat.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/bicep/bicep.js +11 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/cameligo/cameligo.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/clojure/clojure.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/coffee/coffee.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/cpp/cpp.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/csharp/csharp.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/csp/csp.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/css/css.js +12 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/dart/dart.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/dockerfile/dockerfile.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/ecl/ecl.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/elixir/elixir.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/flow9/flow9.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/freemarker2/freemarker2.js +12 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/fsharp/fsharp.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/go/go.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/graphql/graphql.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/handlebars/handlebars.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/hcl/hcl.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/html/html.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/ini/ini.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/java/java.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/javascript/javascript.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/julia/julia.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/kotlin/kotlin.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/less/less.js +11 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/lexon/lexon.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/liquid/liquid.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/lua/lua.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/m3/m3.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/markdown/markdown.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/mips/mips.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/msdax/msdax.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/mysql/mysql.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/objective-c/objective-c.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/pascal/pascal.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/pascaligo/pascaligo.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/perl/perl.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/pgsql/pgsql.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/php/php.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/pla/pla.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/postiats/postiats.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/powerquery/powerquery.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/powershell/powershell.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/protobuf/protobuf.js +11 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/pug/pug.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/python/python.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/qsharp/qsharp.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/r/r.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/razor/razor.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/redis/redis.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/redshift/redshift.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/restructuredtext/restructuredtext.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/ruby/ruby.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/rust/rust.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/sb/sb.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/scala/scala.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/scheme/scheme.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/scss/scss.js +12 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/shell/shell.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/solidity/solidity.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/sophia/sophia.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/sparql/sparql.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/sql/sql.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/st/st.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/swift/swift.js +13 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/systemverilog/systemverilog.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/tcl/tcl.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/twig/twig.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/typescript/typescript.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/vb/vb.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/xml/xml.js +10 -0
- package/static/dist/monaco-editor/min/vs/basic-languages/yaml/yaml.js +10 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.css +6 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.js +805 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.de.js +29 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.es.js +29 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.fr.js +27 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.it.js +27 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.ja.js +29 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.js +27 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.ko.js +27 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.ru.js +29 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.zh-cn.js +29 -0
- package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.zh-tw.js +27 -0
- package/static/dist/monaco-editor/min/vs/language/css/cssMode.js +13 -0
- package/static/dist/monaco-editor/min/vs/language/css/cssWorker.js +63 -0
- package/static/dist/monaco-editor/min/vs/language/html/htmlMode.js +13 -0
- package/static/dist/monaco-editor/min/vs/language/html/htmlWorker.js +453 -0
- package/static/dist/monaco-editor/min/vs/language/json/jsonMode.js +15 -0
- package/static/dist/monaco-editor/min/vs/language/json/jsonWorker.js +36 -0
- package/static/dist/monaco-editor/min/vs/language/typescript/tsMode.js +20 -0
- package/static/dist/monaco-editor/min/vs/language/typescript/tsWorker.js +33970 -0
- package/static/dist/monaco-editor/min/vs/loader.js +11 -0
- package/static/dist/src__pages__config__index.e809a5d0.async.js +1 -0
- package/static/dist/src__pages__crontab__detail.5b509309.async.js +1 -0
- package/static/dist/src__pages__crontab__index.73fc56e9.chunk.css +1 -0
- package/static/dist/src__pages__crontab__index.da430aa9.async.js +1 -0
- package/static/dist/{src__pages__crontab__modal.3fa8f075.async.js → src__pages__crontab__modal.13de83de.async.js} +1 -1
- package/static/dist/src__pages__dependence__index.27d29203.async.js +1 -0
- package/static/dist/src__pages__dependence__logModal.b55dacc8.async.js +1 -0
- package/static/dist/src__pages__dependence__modal.3cc1a9be.async.js +1 -0
- package/static/dist/src__pages__diff__index.218dfd1a.async.js +1 -0
- package/static/dist/{src__pages__env__editNameModal.25c21e59.async.js → src__pages__env__editNameModal.08af0049.async.js} +1 -1
- package/static/dist/src__pages__env__modal.4c039f3d.async.js +1 -0
- package/static/dist/src__pages__error__index.1748dfaa.async.js +1 -0
- package/static/dist/src__pages__initialization__index.8f114cca.async.js +1 -0
- package/static/dist/src__pages__log__index.84556deb.async.js +1 -0
- package/static/dist/src__pages__script__editModal.17bcb1c2.async.js +1 -0
- package/static/dist/{src__pages__script__editNameModal.ca76e055.async.js → src__pages__script__editNameModal.61262353.async.js} +1 -1
- package/static/dist/src__pages__script__index.27582916.async.js +1 -0
- package/static/dist/{src__pages__script__renameModal.c166915b.async.js → src__pages__script__renameModal.3e39fdf4.async.js} +1 -1
- package/static/dist/src__pages__script__saveModal.449e50d8.async.js +1 -0
- package/static/dist/{src__pages__script__setting.020a7629.async.js → src__pages__script__setting.7944fdd6.async.js} +1 -1
- package/static/dist/{src__pages__setting__about.e3293e77.chunk.css → src__pages__setting__about.f6325812.chunk.css} +1 -1
- package/static/dist/{src__pages__setting__appModal.efa5bb29.async.js → src__pages__setting__appModal.a419e539.async.js} +1 -1
- package/static/dist/{src__pages__setting__other.b4adcffe.chunk.css → src__pages__setting__dependence.55c598d0.chunk.css} +1 -1
- package/static/dist/src__pages__setting__dependence.7bcddc85.async.js +1 -0
- package/static/dist/src__pages__setting__index.d2fc96f6.async.js +1 -0
- package/static/dist/{src__pages__setting__index.d57cc3fc.chunk.css → src__pages__setting__index.d666f8ec.chunk.css} +1 -1
- package/static/dist/src__pages__setting__notification.552e6815.async.js +1 -0
- package/static/dist/src__pages__setting__other.55c598d0.chunk.css +1 -0
- package/static/dist/src__pages__setting__other.a029d99a.async.js +1 -0
- package/static/dist/{src__pages__setting__security.d14993c7.async.js → src__pages__setting__security.c667d9e8.async.js} +1 -1
- package/static/dist/src__pages__subscription__modal.07629f02.async.js +1 -0
- package/static/dist/{umi.decd4ae2.js → umi.c864c23a.js} +1 -1
- package/version.yaml +27 -5
- package/sample/package.json +0 -12
- package/static/dist/5619.db04f386.async.js +0 -1
- package/static/dist/6747.36513965.async.js +0 -1
- package/static/dist/833.5add31bf.async.js +0 -1
- package/static/dist/layouts__index.931ce4c3.async.js +0 -1
- package/static/dist/src__pages__config__index.9d83dfb7.async.js +0 -1
- package/static/dist/src__pages__crontab__detail.7bceef05.async.js +0 -1
- package/static/dist/src__pages__crontab__index.55c93601.async.js +0 -1
- package/static/dist/src__pages__crontab__index.9fb90359.chunk.css +0 -1
- package/static/dist/src__pages__dependence__index.21153c24.async.js +0 -1
- package/static/dist/src__pages__dependence__logModal.5aada63c.async.js +0 -1
- package/static/dist/src__pages__dependence__modal.96353c88.async.js +0 -1
- package/static/dist/src__pages__diff__index.e644b15f.async.js +0 -1
- package/static/dist/src__pages__env__modal.4fd6abc2.async.js +0 -1
- package/static/dist/src__pages__error__index.f3ca5563.async.js +0 -1
- package/static/dist/src__pages__initialization__index.727e0f70.async.js +0 -1
- package/static/dist/src__pages__log__index.ba2c1721.async.js +0 -1
- package/static/dist/src__pages__script__editModal.8d7bac2a.async.js +0 -1
- package/static/dist/src__pages__script__index.da31e2c2.async.js +0 -1
- package/static/dist/src__pages__script__saveModal.7ee07566.async.js +0 -1
- package/static/dist/src__pages__setting__index.540c33a4.async.js +0 -1
- package/static/dist/src__pages__setting__notification.b99a4c64.async.js +0 -1
- package/static/dist/src__pages__setting__other.d20be1c1.async.js +0 -1
- package/static/dist/src__pages__subscription__modal.61e787ce.async.js +0 -1
package/sample/notify.js
CHANGED
|
@@ -13,81 +13,81 @@
|
|
|
13
13
|
const querystring = require('querystring');
|
|
14
14
|
const got = require('got');
|
|
15
15
|
const $ = new Env();
|
|
16
|
-
const timeout = 15000;
|
|
16
|
+
const timeout = 15000; // 超时时间(单位毫秒)
|
|
17
17
|
// =======================================gotify通知设置区域==============================================
|
|
18
|
-
//gotify_url 填写gotify地址,如https://push.example.de:8080
|
|
19
|
-
//gotify_token 填写gotify的消息应用token
|
|
20
|
-
//gotify_priority 填写推送消息优先级,默认为0
|
|
18
|
+
// gotify_url 填写gotify地址,如https://push.example.de:8080
|
|
19
|
+
// gotify_token 填写gotify的消息应用token
|
|
20
|
+
// gotify_priority 填写推送消息优先级,默认为0
|
|
21
21
|
let GOTIFY_URL = '';
|
|
22
22
|
let GOTIFY_TOKEN = '';
|
|
23
23
|
let GOTIFY_PRIORITY = 0;
|
|
24
24
|
// =======================================go-cqhttp通知设置区域===========================================
|
|
25
|
-
//gobot_url 填写请求地址http://127.0.0.1/send_private_msg
|
|
26
|
-
//gobot_token 填写在go-cqhttp文件设置的访问密钥
|
|
27
|
-
//gobot_qq 填写推送到个人QQ或者QQ群号
|
|
28
|
-
//go-cqhttp相关API https://docs.go-cqhttp.org/api
|
|
25
|
+
// gobot_url 填写请求地址http://127.0.0.1/send_private_msg
|
|
26
|
+
// gobot_token 填写在go-cqhttp文件设置的访问密钥
|
|
27
|
+
// gobot_qq 填写推送到个人QQ或者QQ群号
|
|
28
|
+
// go-cqhttp相关API https://docs.go-cqhttp.org/api
|
|
29
29
|
let GOBOT_URL = ''; // 推送到个人QQ: http://127.0.0.1/send_private_msg 群:http://127.0.0.1/send_group_msg
|
|
30
|
-
let GOBOT_TOKEN = '';
|
|
30
|
+
let GOBOT_TOKEN = ''; // 访问密钥
|
|
31
31
|
let GOBOT_QQ = ''; // 如果GOBOT_URL设置 /send_private_msg 则需要填入 user_id=个人QQ 相反如果是 /send_group_msg 则需要填入 group_id=QQ群
|
|
32
32
|
|
|
33
33
|
// =======================================微信server酱通知设置区域===========================================
|
|
34
|
-
|
|
35
|
-
//(环境变量名 PUSH_KEY)
|
|
34
|
+
// 此处填你申请的SCKEY.
|
|
35
|
+
// (环境变量名 PUSH_KEY)
|
|
36
36
|
let SCKEY = '';
|
|
37
37
|
|
|
38
38
|
// =======================================PushDeer通知设置区域===========================================
|
|
39
|
-
|
|
40
|
-
//(环境变量名 DEER_KEY)
|
|
39
|
+
// 此处填你申请的PushDeer KEY.
|
|
40
|
+
// (环境变量名 DEER_KEY)
|
|
41
41
|
let PUSHDEER_KEY = '';
|
|
42
42
|
let PUSHDEER_URL = '';
|
|
43
43
|
|
|
44
44
|
// =======================================Synology Chat通知设置区域===========================================
|
|
45
|
-
|
|
46
|
-
//(环境变量名 CHAT_URL CHAT_TOKEN)
|
|
45
|
+
// 此处填你申请的CHAT_URL与CHAT_TOKEN
|
|
46
|
+
// (环境变量名 CHAT_URL CHAT_TOKEN)
|
|
47
47
|
let CHAT_URL = '';
|
|
48
48
|
let CHAT_TOKEN = '';
|
|
49
49
|
|
|
50
50
|
// =======================================Bark App通知设置区域===========================================
|
|
51
|
-
|
|
51
|
+
// 此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX)
|
|
52
52
|
let BARK_PUSH = '';
|
|
53
|
-
//BARK app推送图标,自定义推送图标(需iOS15或以上)
|
|
53
|
+
// BARK app推送图标,自定义推送图标(需iOS15或以上)
|
|
54
54
|
let BARK_ICON = 'https://qn.whyour.cn/logo.png';
|
|
55
|
-
//BARK app推送铃声,铃声列表去APP查看复制填写
|
|
55
|
+
// BARK app推送铃声,铃声列表去APP查看复制填写
|
|
56
56
|
let BARK_SOUND = '';
|
|
57
|
-
//BARK app推送消息的分组, 默认为"QingLong"
|
|
57
|
+
// BARK app推送消息的分组, 默认为"QingLong"
|
|
58
58
|
let BARK_GROUP = 'QingLong';
|
|
59
|
-
//BARK app推送消息的时效性, 默认为"active"
|
|
59
|
+
// BARK app推送消息的时效性, 默认为"active"
|
|
60
60
|
let BARK_LEVEL = 'active';
|
|
61
|
-
//BARK app推送消息的跳转URL
|
|
61
|
+
// BARK app推送消息的跳转URL
|
|
62
62
|
let BARK_URL = '';
|
|
63
63
|
|
|
64
64
|
// =======================================telegram机器人通知设置区域===========================================
|
|
65
|
-
|
|
66
|
-
//(环境变量名 TG_BOT_TOKEN)
|
|
65
|
+
// 此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw
|
|
66
|
+
// (环境变量名 TG_BOT_TOKEN)
|
|
67
67
|
let TG_BOT_TOKEN = '';
|
|
68
|
-
|
|
69
|
-
//(环境变量名 TG_USER_ID)
|
|
68
|
+
// 此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206
|
|
69
|
+
// (环境变量名 TG_USER_ID)
|
|
70
70
|
let TG_USER_ID = '';
|
|
71
|
-
//tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填)
|
|
72
|
-
let TG_PROXY_HOST = '';
|
|
73
|
-
let TG_PROXY_PORT = '';
|
|
74
|
-
let TG_PROXY_AUTH = ''; //tg代理配置认证参数
|
|
75
|
-
//Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST)
|
|
76
|
-
let TG_API_HOST = 'api.telegram.org';
|
|
71
|
+
// tg推送HTTP代理设置(不懂可忽略,telegram机器人通知推送功能中非必填)
|
|
72
|
+
let TG_PROXY_HOST = ''; // 例如:127.0.0.1(环境变量名:TG_PROXY_HOST)
|
|
73
|
+
let TG_PROXY_PORT = ''; // 例如:1080(环境变量名:TG_PROXY_PORT)
|
|
74
|
+
let TG_PROXY_AUTH = ''; // tg代理配置认证参数
|
|
75
|
+
// Telegram api自建的反向代理地址(不懂可忽略,telegram机器人通知推送功能中非必填),默认tg官方api(环境变量名:TG_API_HOST)
|
|
76
|
+
let TG_API_HOST = 'https://api.telegram.org';
|
|
77
77
|
// =======================================钉钉机器人通知设置区域===========================================
|
|
78
|
-
|
|
79
|
-
//(环境变量名 DD_BOT_TOKEN)
|
|
78
|
+
// 此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd
|
|
79
|
+
// (环境变量名 DD_BOT_TOKEN)
|
|
80
80
|
let DD_BOT_TOKEN = '';
|
|
81
|
-
|
|
81
|
+
// 密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串
|
|
82
82
|
let DD_BOT_SECRET = '';
|
|
83
83
|
|
|
84
84
|
// =======================================企业微信基础设置===========================================
|
|
85
85
|
// 企业微信反向代理地址
|
|
86
|
-
//(环境变量名 QYWX_ORIGIN)
|
|
86
|
+
// (环境变量名 QYWX_ORIGIN)
|
|
87
87
|
let QYWX_ORIGIN = '';
|
|
88
88
|
// =======================================企业微信机器人通知设置区域===========================================
|
|
89
|
-
|
|
90
|
-
//(环境变量名 QYWX_KEY)
|
|
89
|
+
// 此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa
|
|
90
|
+
// (环境变量名 QYWX_KEY)
|
|
91
91
|
let QYWX_KEY = '';
|
|
92
92
|
|
|
93
93
|
// =======================================企业微信应用消息通知设置区域===========================================
|
|
@@ -103,52 +103,43 @@ let QYWX_KEY = '';
|
|
|
103
103
|
let QYWX_AM = '';
|
|
104
104
|
|
|
105
105
|
// =======================================iGot聚合推送通知设置区域===========================================
|
|
106
|
-
|
|
106
|
+
// 此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX)
|
|
107
107
|
let IGOT_PUSH_KEY = '';
|
|
108
108
|
|
|
109
109
|
// =======================================push+设置区域=======================================
|
|
110
|
-
|
|
111
|
-
//PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送
|
|
112
|
-
//PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)
|
|
110
|
+
// 官方文档:http://www.pushplus.plus/
|
|
111
|
+
// PUSH_PLUS_TOKEN:微信扫码登录后一对一推送或一对多推送下面的token(您的Token),不提供PUSH_PLUS_USER则默认为一对一推送
|
|
112
|
+
// PUSH_PLUS_USER: 一对多推送的“群组编码”(一对多推送下面->您的群组(如无则新建)->群组编码,如果您是创建群组人。也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送)
|
|
113
113
|
let PUSH_PLUS_TOKEN = '';
|
|
114
114
|
let PUSH_PLUS_USER = '';
|
|
115
115
|
|
|
116
|
-
// =======================================Cool Push设置区域=======================================
|
|
117
|
-
//官方文档:https://cp.xuthus.cc/docs
|
|
118
|
-
//QQ_SKEY: Cool Push登录授权后推送消息的调用代码Skey
|
|
119
|
-
//QQ_MODE: 推送模式详情请登录获取QQ_SKEY后见https://cp.xuthus.cc/feat
|
|
120
|
-
let QQ_SKEY = '';
|
|
121
|
-
let QQ_MODE = '';
|
|
122
|
-
|
|
123
116
|
// =======================================智能微秘书设置区域=======================================
|
|
124
|
-
|
|
125
|
-
//AIBOTK_KEY: 填写智能微秘书个人中心的apikey
|
|
126
|
-
//AIBOTK_TYPE:填写发送的目标 room 或 contact, 填其他的不生效
|
|
127
|
-
//AIBOTK_NAME: 填写群名或用户昵称,和上面的type类型要对应
|
|
117
|
+
// 官方文档:http://wechat.aibotk.com/docs/about
|
|
118
|
+
// AIBOTK_KEY: 填写智能微秘书个人中心的apikey
|
|
119
|
+
// AIBOTK_TYPE:填写发送的目标 room 或 contact, 填其他的不生效
|
|
120
|
+
// AIBOTK_NAME: 填写群名或用户昵称,和上面的type类型要对应
|
|
128
121
|
let AIBOTK_KEY = '';
|
|
129
122
|
let AIBOTK_TYPE = '';
|
|
130
123
|
let AIBOTK_NAME = '';
|
|
131
124
|
|
|
132
125
|
// =======================================飞书机器人设置区域=======================================
|
|
133
|
-
|
|
134
|
-
//FSKEY 飞书机器人的 FSKEY
|
|
126
|
+
// 官方文档:https://www.feishu.cn/hc/zh-CN/articles/360024984973
|
|
127
|
+
// FSKEY 飞书机器人的 FSKEY
|
|
135
128
|
let FSKEY = '';
|
|
136
129
|
|
|
137
130
|
// =======================================SMTP 邮件设置区域=======================================
|
|
138
|
-
//
|
|
139
|
-
// SMTP_SSL: 填写 SMTP 发送邮件服务器是否使用 SSL,内容应为 true 或 false
|
|
131
|
+
// SMTP_SERVICE: 邮箱服务名称,比如126、163、Gmail、QQ等,支持列表 https://github.com/nodemailer/nodemailer/blob/master/lib/well-known/services.json
|
|
140
132
|
// SMTP_EMAIL: 填写 SMTP 收发件邮箱,通知将会由自己发给自己
|
|
141
133
|
// SMTP_PASSWORD: 填写 SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定
|
|
142
134
|
// SMTP_NAME: 填写 SMTP 收发件人姓名,可随意填写
|
|
143
|
-
let
|
|
144
|
-
let SMTP_SSL = 'false';
|
|
135
|
+
let SMTP_SERVICE = '';
|
|
145
136
|
let SMTP_EMAIL = '';
|
|
146
137
|
let SMTP_PASSWORD = '';
|
|
147
138
|
let SMTP_NAME = '';
|
|
148
139
|
|
|
149
140
|
// =======================================PushMe通知设置区域===========================================
|
|
150
|
-
|
|
151
|
-
|
|
141
|
+
// 官方文档:https://push.i-i.me/
|
|
142
|
+
// 此处填你的PushMe KEY.
|
|
152
143
|
let PUSHME_KEY = '';
|
|
153
144
|
|
|
154
145
|
// =======================================CHRONOCAT通知设置区域===========================================
|
|
@@ -157,7 +148,7 @@ let PUSHME_KEY = '';
|
|
|
157
148
|
// CHRONOCAT_QQ 个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群
|
|
158
149
|
// CHRONOCAT相关API https://chronocat.vercel.app/install/docker/official/
|
|
159
150
|
let CHRONOCAT_URL = ''; // CHRONOCAT Red协议连接地址
|
|
160
|
-
let CHRONOCAT_TOKEN = ''; //CHRONOCAT 生成的访问密钥
|
|
151
|
+
let CHRONOCAT_TOKEN = ''; // CHRONOCAT 生成的访问密钥
|
|
161
152
|
let CHRONOCAT_QQ = ''; // 个人:user_id=个人QQ 群则填入group_id=QQ群 多个用英文;隔开同时支持个人和群 如:user_id=xxx;group_id=xxxx;group_id=xxxxx
|
|
162
153
|
|
|
163
154
|
// =======================================自定义通知设置区域=======================================
|
|
@@ -168,7 +159,7 @@ let WEBHOOK_HEADERS = '';
|
|
|
168
159
|
let WEBHOOK_METHOD = '';
|
|
169
160
|
let WEBHOOK_CONTENT_TYPE = '';
|
|
170
161
|
|
|
171
|
-
|
|
162
|
+
// ==========================云端环境变量的判断与接收=========================
|
|
172
163
|
if (process.env.GOTIFY_URL) {
|
|
173
164
|
GOTIFY_URL = process.env.GOTIFY_URL;
|
|
174
165
|
}
|
|
@@ -219,7 +210,7 @@ if (process.env.BARK_PUSH) {
|
|
|
219
210
|
process.env.BARK_PUSH.indexOf('https') > -1 ||
|
|
220
211
|
process.env.BARK_PUSH.indexOf('http') > -1
|
|
221
212
|
) {
|
|
222
|
-
|
|
213
|
+
// 兼容BARK自建用户
|
|
223
214
|
BARK_PUSH = process.env.BARK_PUSH;
|
|
224
215
|
} else {
|
|
225
216
|
BARK_PUSH = `https://api.day.app/${process.env.BARK_PUSH}`;
|
|
@@ -245,7 +236,7 @@ if (process.env.BARK_PUSH) {
|
|
|
245
236
|
BARK_PUSH.indexOf('https') === -1 &&
|
|
246
237
|
BARK_PUSH.indexOf('http') === -1
|
|
247
238
|
) {
|
|
248
|
-
|
|
239
|
+
// 兼容BARK本地用户只填写设备码的情况
|
|
249
240
|
BARK_PUSH = `https://api.day.app/${BARK_PUSH}`;
|
|
250
241
|
}
|
|
251
242
|
}
|
|
@@ -306,11 +297,8 @@ if (process.env.FSKEY) {
|
|
|
306
297
|
FSKEY = process.env.FSKEY;
|
|
307
298
|
}
|
|
308
299
|
|
|
309
|
-
if (process.env.
|
|
310
|
-
|
|
311
|
-
}
|
|
312
|
-
if (process.env.SMTP_SSL) {
|
|
313
|
-
SMTP_SSL = process.env.SMTP_SSL;
|
|
300
|
+
if (process.env.SMTP_SERVICE) {
|
|
301
|
+
SMTP_SERVICE = process.env.SMTP_SERVICE;
|
|
314
302
|
}
|
|
315
303
|
if (process.env.SMTP_EMAIL) {
|
|
316
304
|
SMTP_EMAIL = process.env.SMTP_EMAIL;
|
|
@@ -350,7 +338,7 @@ if (process.env.WEBHOOK_METHOD) {
|
|
|
350
338
|
if (process.env.WEBHOOK_CONTENT_TYPE) {
|
|
351
339
|
WEBHOOK_CONTENT_TYPE = process.env.WEBHOOK_CONTENT_TYPE;
|
|
352
340
|
}
|
|
353
|
-
|
|
341
|
+
// ==========================云端环境变量的判断与接收=========================
|
|
354
342
|
|
|
355
343
|
/**
|
|
356
344
|
* sendNotify 推送通知功能
|
|
@@ -366,8 +354,8 @@ async function sendNotify(
|
|
|
366
354
|
params = {},
|
|
367
355
|
author = '\n\n本通知 By:https://github.com/whyour/qinglong',
|
|
368
356
|
) {
|
|
369
|
-
|
|
370
|
-
desp += author;
|
|
357
|
+
// 提供6种通知
|
|
358
|
+
desp += author; // 增加作者信息,防止被贩卖等
|
|
371
359
|
|
|
372
360
|
// 根据标题跳过一些消息推送,环境变量:SKIP_PUSH_TITLE 用回车分隔
|
|
373
361
|
let skipTitle = process.env.SKIP_PUSH_TITLE;
|
|
@@ -379,28 +367,28 @@ async function sendNotify(
|
|
|
379
367
|
}
|
|
380
368
|
|
|
381
369
|
await Promise.all([
|
|
382
|
-
serverNotify(text, desp),
|
|
383
|
-
pushPlusNotify(text, desp), //pushplus(推送加)
|
|
370
|
+
serverNotify(text, desp), // 微信server酱
|
|
371
|
+
pushPlusNotify(text, desp), // pushplus(推送加)
|
|
384
372
|
]);
|
|
385
|
-
|
|
373
|
+
// 由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动
|
|
386
374
|
text = text.match(/.*?(?=\s?-)/g) ? text.match(/.*?(?=\s?-)/g)[0] : text;
|
|
387
375
|
await Promise.all([
|
|
388
|
-
BarkNotify(text, desp, params), //iOS Bark APP
|
|
389
|
-
tgBotNotify(text, desp), //telegram 机器人
|
|
390
|
-
ddBotNotify(text, desp),
|
|
391
|
-
qywxBotNotify(text, desp),
|
|
392
|
-
qywxamNotify(text, desp),
|
|
393
|
-
iGotNotify(text, desp, params), //iGot
|
|
394
|
-
gobotNotify(text, desp), //go-cqhttp
|
|
395
|
-
gotifyNotify(text, desp), //gotify
|
|
396
|
-
ChatNotify(text, desp), //synolog chat
|
|
397
|
-
PushDeerNotify(text, desp), //PushDeer
|
|
398
|
-
aibotkNotify(text, desp),
|
|
399
|
-
fsBotNotify(text, desp),
|
|
400
|
-
smtpNotify(text, desp), //SMTP 邮件
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
webhookNotify(text, desp),
|
|
376
|
+
BarkNotify(text, desp, params), // iOS Bark APP
|
|
377
|
+
tgBotNotify(text, desp), // telegram 机器人
|
|
378
|
+
ddBotNotify(text, desp), // 钉钉机器人
|
|
379
|
+
qywxBotNotify(text, desp), // 企业微信机器人
|
|
380
|
+
qywxamNotify(text, desp), // 企业微信应用消息推送
|
|
381
|
+
iGotNotify(text, desp, params), // iGot
|
|
382
|
+
gobotNotify(text, desp), // go-cqhttp
|
|
383
|
+
gotifyNotify(text, desp), // gotify
|
|
384
|
+
ChatNotify(text, desp), // synolog chat
|
|
385
|
+
PushDeerNotify(text, desp), // PushDeer
|
|
386
|
+
aibotkNotify(text, desp), // 智能微秘书
|
|
387
|
+
fsBotNotify(text, desp), // 飞书机器人
|
|
388
|
+
smtpNotify(text, desp), // SMTP 邮件
|
|
389
|
+
pushMeNotify(text, desp, params), // PushMe
|
|
390
|
+
chronocatNotify(text, desp), // Chronocat
|
|
391
|
+
webhookNotify(text, desp), // 自定义通知
|
|
404
392
|
]);
|
|
405
393
|
}
|
|
406
394
|
|
|
@@ -482,7 +470,7 @@ function gobotNotify(text, desp) {
|
|
|
482
470
|
function serverNotify(text, desp) {
|
|
483
471
|
return new Promise((resolve) => {
|
|
484
472
|
if (SCKEY) {
|
|
485
|
-
|
|
473
|
+
// 微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换
|
|
486
474
|
desp = desp.replace(/[\n\r]/g, '\n\n');
|
|
487
475
|
const options = {
|
|
488
476
|
url: SCKEY.includes('SCT')
|
|
@@ -501,7 +489,7 @@ function serverNotify(text, desp) {
|
|
|
501
489
|
console.log(err);
|
|
502
490
|
} else {
|
|
503
491
|
data = JSON.parse(data);
|
|
504
|
-
//server酱和Server酱·Turbo版的返回json格式不太一样
|
|
492
|
+
// server酱和Server酱·Turbo版的返回json格式不太一样
|
|
505
493
|
if (data.errno === 0 || data.data.errno === 0) {
|
|
506
494
|
console.log('server酱发送通知消息成功🎉\n');
|
|
507
495
|
} else if (data.errno === 1024) {
|
|
@@ -645,7 +633,7 @@ function tgBotNotify(text, desp) {
|
|
|
645
633
|
return new Promise((resolve) => {
|
|
646
634
|
if (TG_BOT_TOKEN && TG_USER_ID) {
|
|
647
635
|
const options = {
|
|
648
|
-
url:
|
|
636
|
+
url: `${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`,
|
|
649
637
|
json: {
|
|
650
638
|
chat_id: `${TG_USER_ID}`,
|
|
651
639
|
text: `${text}\n\n${desp}`,
|
|
@@ -657,15 +645,19 @@ function tgBotNotify(text, desp) {
|
|
|
657
645
|
timeout,
|
|
658
646
|
};
|
|
659
647
|
if (TG_PROXY_HOST && TG_PROXY_PORT) {
|
|
660
|
-
const
|
|
648
|
+
const { HttpProxyAgent, HttpsProxyAgent } = require('hpagent');
|
|
649
|
+
const options = {
|
|
650
|
+
keepAlive: true,
|
|
651
|
+
keepAliveMsecs: 1000,
|
|
652
|
+
maxSockets: 256,
|
|
653
|
+
maxFreeSockets: 256,
|
|
654
|
+
proxy: `http://${TG_PROXY_AUTH}${TG_PROXY_HOST}:${TG_PROXY_PORT}`,
|
|
655
|
+
};
|
|
656
|
+
const httpAgent = new HttpProxyAgent(options);
|
|
657
|
+
const httpsAgent = new HttpsProxyAgent(options);
|
|
661
658
|
const agent = {
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
host: TG_PROXY_HOST,
|
|
665
|
-
port: TG_PROXY_PORT * 1,
|
|
666
|
-
proxyAuth: TG_PROXY_AUTH,
|
|
667
|
-
},
|
|
668
|
-
}),
|
|
659
|
+
http: httpAgent,
|
|
660
|
+
https: httpsAgent,
|
|
669
661
|
};
|
|
670
662
|
Object.assign(options, { agent });
|
|
671
663
|
}
|
|
@@ -885,7 +877,7 @@ function qywxamNotify(text, desp) {
|
|
|
885
877
|
};
|
|
886
878
|
}
|
|
887
879
|
if (!QYWX_AM_AY[4]) {
|
|
888
|
-
|
|
880
|
+
// 如不提供第四个参数,则默认进行文本消息类型推送
|
|
889
881
|
options = {
|
|
890
882
|
msgtype: 'text',
|
|
891
883
|
text: {
|
|
@@ -1137,31 +1129,31 @@ function fsBotNotify(text, desp) {
|
|
|
1137
1129
|
}
|
|
1138
1130
|
|
|
1139
1131
|
async function smtpNotify(text, desp) {
|
|
1140
|
-
if (![
|
|
1132
|
+
if (![SMTP_EMAIL, SMTP_PASSWORD].every(Boolean) || !SMTP_SERVICE) {
|
|
1141
1133
|
return;
|
|
1142
1134
|
}
|
|
1143
1135
|
|
|
1144
1136
|
try {
|
|
1145
1137
|
const nodemailer = require('nodemailer');
|
|
1146
|
-
const transporter = nodemailer.createTransport(
|
|
1147
|
-
|
|
1148
|
-
{
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
pass: SMTP_PASSWORD,
|
|
1152
|
-
},
|
|
1138
|
+
const transporter = nodemailer.createTransport({
|
|
1139
|
+
service: SMTP_SERVICE,
|
|
1140
|
+
auth: {
|
|
1141
|
+
user: SMTP_EMAIL,
|
|
1142
|
+
pass: SMTP_PASSWORD,
|
|
1153
1143
|
},
|
|
1154
|
-
);
|
|
1144
|
+
});
|
|
1155
1145
|
|
|
1156
1146
|
const addr = SMTP_NAME ? `"${SMTP_NAME}" <${SMTP_EMAIL}>` : SMTP_EMAIL;
|
|
1157
1147
|
const info = await transporter.sendMail({
|
|
1158
1148
|
from: addr,
|
|
1159
1149
|
to: addr,
|
|
1160
1150
|
subject: text,
|
|
1161
|
-
|
|
1151
|
+
html: `${desp.replace(/\n/g, '<br/>')}`,
|
|
1162
1152
|
});
|
|
1163
1153
|
|
|
1164
|
-
|
|
1154
|
+
transporter.close();
|
|
1155
|
+
|
|
1156
|
+
if (info.messageId) {
|
|
1165
1157
|
console.log('SMTP发送通知消息成功🎉\n');
|
|
1166
1158
|
return true;
|
|
1167
1159
|
}
|
|
@@ -1172,17 +1164,7 @@ async function smtpNotify(text, desp) {
|
|
|
1172
1164
|
}
|
|
1173
1165
|
}
|
|
1174
1166
|
|
|
1175
|
-
function
|
|
1176
|
-
return new Promise((resolve) => {
|
|
1177
|
-
if (SMTP_SERVER && SMTP_SSL && SMTP_EMAIL && SMTP_PASSWORD && SMTP_NAME) {
|
|
1178
|
-
// todo: Node.js并没有内置的 smtp 实现,需要调用外部库,因为不清楚这个文件的模块依赖情况,所以留给有缘人实现
|
|
1179
|
-
} else {
|
|
1180
|
-
resolve();
|
|
1181
|
-
}
|
|
1182
|
-
});
|
|
1183
|
-
}
|
|
1184
|
-
|
|
1185
|
-
function PushMeNotify(text, desp, params = {}) {
|
|
1167
|
+
function pushMeNotify(text, desp, params = {}) {
|
|
1186
1168
|
return new Promise((resolve) => {
|
|
1187
1169
|
if (PUSHME_KEY) {
|
|
1188
1170
|
const options = {
|
|
@@ -1217,16 +1199,13 @@ function PushMeNotify(text, desp, params = {}) {
|
|
|
1217
1199
|
});
|
|
1218
1200
|
}
|
|
1219
1201
|
|
|
1220
|
-
function
|
|
1202
|
+
function chronocatNotify(title, desp) {
|
|
1221
1203
|
return new Promise((resolve) => {
|
|
1222
1204
|
if (!CHRONOCAT_TOKEN || !CHRONOCAT_QQ || !CHRONOCAT_URL) {
|
|
1223
|
-
|
|
1224
|
-
'CHRONOCAT 服务的 CHRONOCAT_URL 或 CHRONOCAT_QQ 未设置!!\n取消推送',
|
|
1225
|
-
);
|
|
1205
|
+
resolve();
|
|
1226
1206
|
return;
|
|
1227
1207
|
}
|
|
1228
1208
|
|
|
1229
|
-
console.log('CHRONOCAT 服务启动');
|
|
1230
1209
|
const user_ids = CHRONOCAT_QQ.match(/user_id=(\d+)/g)?.map(
|
|
1231
1210
|
(match) => match.split('=')[1],
|
|
1232
1211
|
);
|
|
@@ -1320,11 +1299,9 @@ function webhookNotify(text, desp) {
|
|
|
1320
1299
|
got(formatUrl, options).then((resp) => {
|
|
1321
1300
|
try {
|
|
1322
1301
|
if (resp.statusCode !== 200) {
|
|
1323
|
-
console.log(
|
|
1324
|
-
console.log(resp.body);
|
|
1302
|
+
console.log(`自定义发送通知消息失败!!\n${resp.body}`);
|
|
1325
1303
|
} else {
|
|
1326
|
-
console.log(
|
|
1327
|
-
console.log(resp.body);
|
|
1304
|
+
console.log(`自定义发送通知消息成功🎉。\n${resp.body}`);
|
|
1328
1305
|
}
|
|
1329
1306
|
} catch (e) {
|
|
1330
1307
|
$.logErr(e, resp);
|
|
@@ -1363,7 +1340,9 @@ function parseHeaders(headers) {
|
|
|
1363
1340
|
}
|
|
1364
1341
|
|
|
1365
1342
|
function parseBody(body, contentType) {
|
|
1366
|
-
if (!body)
|
|
1343
|
+
if (contentType === 'text/plain' || !body) {
|
|
1344
|
+
return body;
|
|
1345
|
+
}
|
|
1367
1346
|
|
|
1368
1347
|
const parsed = {};
|
|
1369
1348
|
let key;
|
|
@@ -1373,7 +1352,7 @@ function parseBody(body, contentType) {
|
|
|
1373
1352
|
body &&
|
|
1374
1353
|
body.split('\n').forEach(function parser(line) {
|
|
1375
1354
|
i = line.indexOf(':');
|
|
1376
|
-
key = line.substring(0, i).trim()
|
|
1355
|
+
key = line.substring(0, i).trim();
|
|
1377
1356
|
val = line.substring(i + 1).trim();
|
|
1378
1357
|
|
|
1379
1358
|
if (!key || parsed[key]) {
|
package/sample/notify.py
CHANGED
|
@@ -79,7 +79,7 @@ push_config = {
|
|
|
79
79
|
'QMSG_TYPE': '', # qmsg 酱的 QMSG_TYPE
|
|
80
80
|
|
|
81
81
|
'QYWX_ORIGIN': '', # 企业微信代理地址
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
'QYWX_AM': '', # 企业微信应用
|
|
84
84
|
|
|
85
85
|
'QYWX_KEY': '', # 企业微信机器人
|
|
@@ -102,11 +102,11 @@ push_config = {
|
|
|
102
102
|
'SMTP_NAME': '', # SMTP 收发件人姓名,可随意填写
|
|
103
103
|
|
|
104
104
|
'PUSHME_KEY': '', # PushMe 酱的 PUSHME_KEY
|
|
105
|
-
|
|
105
|
+
|
|
106
106
|
'CHRONOCAT_QQ': '', # qq号
|
|
107
107
|
'CHRONOCAT_TOKEN': '', # CHRONOCAT 的token
|
|
108
108
|
'CHRONOCAT_URL': '', # CHRONOCAT的url地址
|
|
109
|
-
|
|
109
|
+
|
|
110
110
|
'WEBHOOK_URL': '', # 自定义通知 请求地址
|
|
111
111
|
'WEBHOOK_BODY': '', # 自定义通知 请求体
|
|
112
112
|
'WEBHOOK_HEADERS': '', # 自定义通知 请求头
|
|
@@ -534,7 +534,7 @@ def telegram_bot(title: str, content: str) -> None:
|
|
|
534
534
|
print("tg 服务启动")
|
|
535
535
|
|
|
536
536
|
if push_config.get("TG_API_HOST"):
|
|
537
|
-
url = f"
|
|
537
|
+
url = f"{push_config.get('TG_API_HOST')}/bot{push_config.get('TG_BOT_TOKEN')}/sendMessage"
|
|
538
538
|
else:
|
|
539
539
|
url = (
|
|
540
540
|
f"https://api.telegram.org/bot{push_config.get('TG_BOT_TOKEN')}/sendMessage"
|
|
@@ -749,8 +749,8 @@ def parse_headers(headers):
|
|
|
749
749
|
|
|
750
750
|
|
|
751
751
|
def parse_body(body, content_type):
|
|
752
|
-
if not body:
|
|
753
|
-
return
|
|
752
|
+
if not body or content_type == "text/plain":
|
|
753
|
+
return body
|
|
754
754
|
|
|
755
755
|
parsed = {}
|
|
756
756
|
lines = body.split("\n")
|
|
@@ -760,7 +760,7 @@ def parse_body(body, content_type):
|
|
|
760
760
|
if i == -1:
|
|
761
761
|
continue
|
|
762
762
|
|
|
763
|
-
key = line[:i].strip()
|
|
763
|
+
key = line[:i].strip()
|
|
764
764
|
val = line[i + 1 :].strip()
|
|
765
765
|
|
|
766
766
|
if not key or key in parsed:
|
package/shell/api.sh
CHANGED
|
@@ -49,7 +49,7 @@ add_cron_api() {
|
|
|
49
49
|
-H "Origin: http://0.0.0.0:5700" \
|
|
50
50
|
-H "Referer: http://0.0.0.0:5700/crontab" \
|
|
51
51
|
-H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \
|
|
52
|
-
--data-raw "{\"name\":\"$name\",\"command\":\"$command\",\"schedule\":\"$schedule\",\"sub_id\":$sub_id}" \
|
|
52
|
+
--data-raw "{\"name\":\"${name//\"/\\\"}\",\"command\":\"${command//\"/\\\"}\",\"schedule\":\"$schedule\",\"sub_id\":$sub_id}" \
|
|
53
53
|
--compressed
|
|
54
54
|
)
|
|
55
55
|
code=$(echo "$api" | jq -r .code)
|
|
@@ -85,7 +85,7 @@ update_cron_api() {
|
|
|
85
85
|
-H "Origin: http://0.0.0.0:5700" \
|
|
86
86
|
-H "Referer: http://0.0.0.0:5700/crontab" \
|
|
87
87
|
-H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \
|
|
88
|
-
--data-raw "{\"name\":\"$name\",\"command\":\"$command\",\"schedule\":\"$schedule\",\"id\":\"$id\"}" \
|
|
88
|
+
--data-raw "{\"name\":\"${name//\"/\\\"}\",\"command\":\"${command//\"/\\\"}\",\"schedule\":\"$schedule\",\"id\":\"$id\"}" \
|
|
89
89
|
--compressed
|
|
90
90
|
)
|
|
91
91
|
code=$(echo "$api" | jq -r .code)
|
|
@@ -117,7 +117,7 @@ update_cron_command_api() {
|
|
|
117
117
|
-H "Origin: http://0.0.0.0:5700" \
|
|
118
118
|
-H "Referer: http://0.0.0.0:5700/crontab" \
|
|
119
119
|
-H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \
|
|
120
|
-
--data-raw "{\"command\":\"$command\",\"id\":\"$id\"}" \
|
|
120
|
+
--data-raw "{\"command\":\"${command//\"/\\\"}\",\"id\":\"$id\"}" \
|
|
121
121
|
--compressed
|
|
122
122
|
)
|
|
123
123
|
code=$(echo "$api" | jq -r .code)
|
|
@@ -196,7 +196,7 @@ notify_api() {
|
|
|
196
196
|
-H "Origin: http://0.0.0.0:5700" \
|
|
197
197
|
-H "Referer: http://0.0.0.0:5700/crontab" \
|
|
198
198
|
-H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \
|
|
199
|
-
--data-raw "{\"title\":\"$title\",\"content\":\"$content\"}" \
|
|
199
|
+
--data-raw "{\"title\":\"${title//\"/\\\"}\",\"content\":\"${content//\"/\\\"}\"}" \
|
|
200
200
|
--compressed
|
|
201
201
|
)
|
|
202
202
|
code=$(echo "$api" | jq -r .code)
|
package/shell/bot.sh
CHANGED
package/shell/check.sh
CHANGED
|
@@ -9,9 +9,6 @@ reset_env() {
|
|
|
9
9
|
npm_install_2 $dir_root
|
|
10
10
|
echo -e "---> 青龙依赖安装完成\n"
|
|
11
11
|
|
|
12
|
-
echo -e "---> 3. 开始安装脚本依赖\n"
|
|
13
|
-
cp -f $dir_sample/package.json $dir_scripts/package.json
|
|
14
|
-
npm_install_2 $dir_scripts
|
|
15
12
|
echo -e "---> 脚本依赖安装完成\n"
|
|
16
13
|
}
|
|
17
14
|
|
|
@@ -76,18 +73,9 @@ check_pm2() {
|
|
|
76
73
|
|
|
77
74
|
main() {
|
|
78
75
|
echo -e "=====> 开始检测"
|
|
79
|
-
npm i -g pnpm@8.3.1
|
|
76
|
+
npm i -g pnpm@8.3.1 pm2 tsx
|
|
80
77
|
patch_version
|
|
81
78
|
|
|
82
|
-
if [[ $PipMirror ]]; then
|
|
83
|
-
pip3 config set global.index-url $PipMirror
|
|
84
|
-
fi
|
|
85
|
-
if [[ $NpmMirror ]]; then
|
|
86
|
-
cd && pnpm config set registry $NpmMirror
|
|
87
|
-
pnpm install -g
|
|
88
|
-
fi
|
|
89
|
-
|
|
90
|
-
pnpm add -g pm2 tsx
|
|
91
79
|
reset_env
|
|
92
80
|
copy_dep
|
|
93
81
|
check_ql
|
package/shell/env.sh
CHANGED
|
File without changes
|
package/shell/share.sh
CHANGED
|
@@ -75,8 +75,8 @@ import_config() {
|
|
|
75
75
|
ql_base_url=${QlBaseUrl:-"/"}
|
|
76
76
|
ql_port=${QlPort:-"5700"}
|
|
77
77
|
command_timeout_time=${CommandTimeoutTime:-""}
|
|
78
|
-
proxy_url=${ProxyUrl:-""}
|
|
79
78
|
file_extensions=${RepoFileExtensions:-"js py"}
|
|
79
|
+
proxy_url=${ProxyUrl:-""}
|
|
80
80
|
current_branch=${QL_BRANCH}
|
|
81
81
|
|
|
82
82
|
if [[ -n "${DefaultCronRule}" ]]; then
|
|
@@ -298,7 +298,7 @@ git_clone_scripts() {
|
|
|
298
298
|
|
|
299
299
|
set_proxy "$proxy"
|
|
300
300
|
|
|
301
|
-
git clone --depth=1 $part_cmd $url $dir
|
|
301
|
+
git clone --depth=1 $part_cmd $url $dir
|
|
302
302
|
exit_status=$?
|
|
303
303
|
|
|
304
304
|
unset_proxy
|
|
@@ -366,8 +366,6 @@ format_timestamp() {
|
|
|
366
366
|
patch_version() {
|
|
367
367
|
git config --global pull.rebase false
|
|
368
368
|
|
|
369
|
-
cp -f $dir_root/.env.example $dir_root/.env
|
|
370
|
-
|
|
371
369
|
if [[ -f "$dir_root/db/cookie.db" ]]; then
|
|
372
370
|
echo -e "检测到旧的db文件,拷贝为新db...\n"
|
|
373
371
|
mv $dir_root/db/cookie.db $dir_root/db/env.db
|