@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.
Files changed (212) hide show
  1. package/README-en.md +13 -15
  2. package/README.md +14 -17
  3. package/docker/Dockerfile +6 -8
  4. package/docker/docker-entrypoint.sh +2 -16
  5. package/docker/front.conf +12 -0
  6. package/ecosystem.config.js +8 -0
  7. package/package.json +13 -8
  8. package/sample/config.sample.sh +10 -20
  9. package/sample/notify.js +115 -136
  10. package/sample/notify.py +7 -7
  11. package/shell/api.sh +4 -4
  12. package/shell/bot.sh +0 -3
  13. package/shell/check.sh +1 -13
  14. package/shell/env.sh +0 -0
  15. package/shell/share.sh +2 -4
  16. package/shell/start.sh +1 -11
  17. package/shell/update.sh +6 -17
  18. package/static/build/api/config.js +23 -6
  19. package/static/build/api/log.js +3 -32
  20. package/static/build/api/script.js +31 -21
  21. package/static/build/api/system.js +76 -8
  22. package/static/build/config/const.js +18 -1
  23. package/static/build/config/index.js +3 -0
  24. package/static/build/config/util.js +98 -95
  25. package/static/build/data/notify.js +2 -2
  26. package/static/build/data/{auth.js → system.js} +3 -3
  27. package/static/build/loaders/db.js +4 -4
  28. package/static/build/loaders/deps.js +11 -14
  29. package/static/build/loaders/express.js +4 -6
  30. package/static/build/loaders/initFile.js +16 -16
  31. package/static/build/loaders/sentry.js +2 -3
  32. package/static/build/loaders/sock.js +3 -3
  33. package/static/build/public.js +1 -1
  34. package/static/build/schedule/client.js +1 -1
  35. package/static/build/schedule/health.js +1 -1
  36. package/static/build/schedule/index.js +1 -1
  37. package/static/build/services/cron.js +32 -25
  38. package/static/build/services/dependence.js +15 -5
  39. package/static/build/services/env.js +2 -2
  40. package/static/build/services/notify.js +8 -7
  41. package/static/build/services/script.js +2 -6
  42. package/static/build/services/sshKey.js +27 -52
  43. package/static/build/services/subscription.js +19 -21
  44. package/static/build/services/system.js +112 -21
  45. package/static/build/services/user.js +52 -41
  46. package/static/build/shared/pLimit.js +4 -4
  47. package/static/dist/{6644.1f11b8fa.async.js → 1431.36b64dc5.async.js} +1 -1
  48. package/static/dist/3752.56c3fba2.async.js +1 -0
  49. package/static/dist/{419.e21ea0bd.async.js → 419.d9597044.async.js} +1 -1
  50. package/static/dist/{8008.cf4ff203.async.js → 8008.fbdcf863.async.js} +1 -1
  51. package/static/dist/833.7348bf8c.async.js +1 -0
  52. package/static/dist/8722.408e3112.async.js +1 -0
  53. package/static/dist/{8171.e2986b87.async.js → 9847.d72d4b37.async.js} +1 -1
  54. package/static/dist/index.html +1 -1
  55. package/static/dist/layouts__index.2c89a418.async.js +1 -0
  56. package/static/dist/monaco-editor/min/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  57. package/static/dist/monaco-editor/min/vs/base/worker/workerMain.js +22 -0
  58. package/static/dist/monaco-editor/min/vs/basic-languages/abap/abap.js +10 -0
  59. package/static/dist/monaco-editor/min/vs/basic-languages/apex/apex.js +10 -0
  60. package/static/dist/monaco-editor/min/vs/basic-languages/azcli/azcli.js +10 -0
  61. package/static/dist/monaco-editor/min/vs/basic-languages/bat/bat.js +10 -0
  62. package/static/dist/monaco-editor/min/vs/basic-languages/bicep/bicep.js +11 -0
  63. package/static/dist/monaco-editor/min/vs/basic-languages/cameligo/cameligo.js +10 -0
  64. package/static/dist/monaco-editor/min/vs/basic-languages/clojure/clojure.js +10 -0
  65. package/static/dist/monaco-editor/min/vs/basic-languages/coffee/coffee.js +10 -0
  66. package/static/dist/monaco-editor/min/vs/basic-languages/cpp/cpp.js +10 -0
  67. package/static/dist/monaco-editor/min/vs/basic-languages/csharp/csharp.js +10 -0
  68. package/static/dist/monaco-editor/min/vs/basic-languages/csp/csp.js +10 -0
  69. package/static/dist/monaco-editor/min/vs/basic-languages/css/css.js +12 -0
  70. package/static/dist/monaco-editor/min/vs/basic-languages/dart/dart.js +10 -0
  71. package/static/dist/monaco-editor/min/vs/basic-languages/dockerfile/dockerfile.js +10 -0
  72. package/static/dist/monaco-editor/min/vs/basic-languages/ecl/ecl.js +10 -0
  73. package/static/dist/monaco-editor/min/vs/basic-languages/elixir/elixir.js +10 -0
  74. package/static/dist/monaco-editor/min/vs/basic-languages/flow9/flow9.js +10 -0
  75. package/static/dist/monaco-editor/min/vs/basic-languages/freemarker2/freemarker2.js +12 -0
  76. package/static/dist/monaco-editor/min/vs/basic-languages/fsharp/fsharp.js +10 -0
  77. package/static/dist/monaco-editor/min/vs/basic-languages/go/go.js +10 -0
  78. package/static/dist/monaco-editor/min/vs/basic-languages/graphql/graphql.js +10 -0
  79. package/static/dist/monaco-editor/min/vs/basic-languages/handlebars/handlebars.js +10 -0
  80. package/static/dist/monaco-editor/min/vs/basic-languages/hcl/hcl.js +10 -0
  81. package/static/dist/monaco-editor/min/vs/basic-languages/html/html.js +10 -0
  82. package/static/dist/monaco-editor/min/vs/basic-languages/ini/ini.js +10 -0
  83. package/static/dist/monaco-editor/min/vs/basic-languages/java/java.js +10 -0
  84. package/static/dist/monaco-editor/min/vs/basic-languages/javascript/javascript.js +10 -0
  85. package/static/dist/monaco-editor/min/vs/basic-languages/julia/julia.js +10 -0
  86. package/static/dist/monaco-editor/min/vs/basic-languages/kotlin/kotlin.js +10 -0
  87. package/static/dist/monaco-editor/min/vs/basic-languages/less/less.js +11 -0
  88. package/static/dist/monaco-editor/min/vs/basic-languages/lexon/lexon.js +10 -0
  89. package/static/dist/monaco-editor/min/vs/basic-languages/liquid/liquid.js +10 -0
  90. package/static/dist/monaco-editor/min/vs/basic-languages/lua/lua.js +10 -0
  91. package/static/dist/monaco-editor/min/vs/basic-languages/m3/m3.js +10 -0
  92. package/static/dist/monaco-editor/min/vs/basic-languages/markdown/markdown.js +10 -0
  93. package/static/dist/monaco-editor/min/vs/basic-languages/mips/mips.js +10 -0
  94. package/static/dist/monaco-editor/min/vs/basic-languages/msdax/msdax.js +10 -0
  95. package/static/dist/monaco-editor/min/vs/basic-languages/mysql/mysql.js +10 -0
  96. package/static/dist/monaco-editor/min/vs/basic-languages/objective-c/objective-c.js +10 -0
  97. package/static/dist/monaco-editor/min/vs/basic-languages/pascal/pascal.js +10 -0
  98. package/static/dist/monaco-editor/min/vs/basic-languages/pascaligo/pascaligo.js +10 -0
  99. package/static/dist/monaco-editor/min/vs/basic-languages/perl/perl.js +10 -0
  100. package/static/dist/monaco-editor/min/vs/basic-languages/pgsql/pgsql.js +10 -0
  101. package/static/dist/monaco-editor/min/vs/basic-languages/php/php.js +10 -0
  102. package/static/dist/monaco-editor/min/vs/basic-languages/pla/pla.js +10 -0
  103. package/static/dist/monaco-editor/min/vs/basic-languages/postiats/postiats.js +10 -0
  104. package/static/dist/monaco-editor/min/vs/basic-languages/powerquery/powerquery.js +10 -0
  105. package/static/dist/monaco-editor/min/vs/basic-languages/powershell/powershell.js +10 -0
  106. package/static/dist/monaco-editor/min/vs/basic-languages/protobuf/protobuf.js +11 -0
  107. package/static/dist/monaco-editor/min/vs/basic-languages/pug/pug.js +10 -0
  108. package/static/dist/monaco-editor/min/vs/basic-languages/python/python.js +10 -0
  109. package/static/dist/monaco-editor/min/vs/basic-languages/qsharp/qsharp.js +10 -0
  110. package/static/dist/monaco-editor/min/vs/basic-languages/r/r.js +10 -0
  111. package/static/dist/monaco-editor/min/vs/basic-languages/razor/razor.js +10 -0
  112. package/static/dist/monaco-editor/min/vs/basic-languages/redis/redis.js +10 -0
  113. package/static/dist/monaco-editor/min/vs/basic-languages/redshift/redshift.js +10 -0
  114. package/static/dist/monaco-editor/min/vs/basic-languages/restructuredtext/restructuredtext.js +10 -0
  115. package/static/dist/monaco-editor/min/vs/basic-languages/ruby/ruby.js +10 -0
  116. package/static/dist/monaco-editor/min/vs/basic-languages/rust/rust.js +10 -0
  117. package/static/dist/monaco-editor/min/vs/basic-languages/sb/sb.js +10 -0
  118. package/static/dist/monaco-editor/min/vs/basic-languages/scala/scala.js +10 -0
  119. package/static/dist/monaco-editor/min/vs/basic-languages/scheme/scheme.js +10 -0
  120. package/static/dist/monaco-editor/min/vs/basic-languages/scss/scss.js +12 -0
  121. package/static/dist/monaco-editor/min/vs/basic-languages/shell/shell.js +10 -0
  122. package/static/dist/monaco-editor/min/vs/basic-languages/solidity/solidity.js +10 -0
  123. package/static/dist/monaco-editor/min/vs/basic-languages/sophia/sophia.js +10 -0
  124. package/static/dist/monaco-editor/min/vs/basic-languages/sparql/sparql.js +10 -0
  125. package/static/dist/monaco-editor/min/vs/basic-languages/sql/sql.js +10 -0
  126. package/static/dist/monaco-editor/min/vs/basic-languages/st/st.js +10 -0
  127. package/static/dist/monaco-editor/min/vs/basic-languages/swift/swift.js +13 -0
  128. package/static/dist/monaco-editor/min/vs/basic-languages/systemverilog/systemverilog.js +10 -0
  129. package/static/dist/monaco-editor/min/vs/basic-languages/tcl/tcl.js +10 -0
  130. package/static/dist/monaco-editor/min/vs/basic-languages/twig/twig.js +10 -0
  131. package/static/dist/monaco-editor/min/vs/basic-languages/typescript/typescript.js +10 -0
  132. package/static/dist/monaco-editor/min/vs/basic-languages/vb/vb.js +10 -0
  133. package/static/dist/monaco-editor/min/vs/basic-languages/xml/xml.js +10 -0
  134. package/static/dist/monaco-editor/min/vs/basic-languages/yaml/yaml.js +10 -0
  135. package/static/dist/monaco-editor/min/vs/editor/editor.main.css +6 -0
  136. package/static/dist/monaco-editor/min/vs/editor/editor.main.js +805 -0
  137. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.de.js +29 -0
  138. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.es.js +29 -0
  139. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.fr.js +27 -0
  140. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.it.js +27 -0
  141. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.ja.js +29 -0
  142. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.js +27 -0
  143. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.ko.js +27 -0
  144. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.ru.js +29 -0
  145. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.zh-cn.js +29 -0
  146. package/static/dist/monaco-editor/min/vs/editor/editor.main.nls.zh-tw.js +27 -0
  147. package/static/dist/monaco-editor/min/vs/language/css/cssMode.js +13 -0
  148. package/static/dist/monaco-editor/min/vs/language/css/cssWorker.js +63 -0
  149. package/static/dist/monaco-editor/min/vs/language/html/htmlMode.js +13 -0
  150. package/static/dist/monaco-editor/min/vs/language/html/htmlWorker.js +453 -0
  151. package/static/dist/monaco-editor/min/vs/language/json/jsonMode.js +15 -0
  152. package/static/dist/monaco-editor/min/vs/language/json/jsonWorker.js +36 -0
  153. package/static/dist/monaco-editor/min/vs/language/typescript/tsMode.js +20 -0
  154. package/static/dist/monaco-editor/min/vs/language/typescript/tsWorker.js +33970 -0
  155. package/static/dist/monaco-editor/min/vs/loader.js +11 -0
  156. package/static/dist/src__pages__config__index.e809a5d0.async.js +1 -0
  157. package/static/dist/src__pages__crontab__detail.5b509309.async.js +1 -0
  158. package/static/dist/src__pages__crontab__index.73fc56e9.chunk.css +1 -0
  159. package/static/dist/src__pages__crontab__index.da430aa9.async.js +1 -0
  160. package/static/dist/{src__pages__crontab__modal.3fa8f075.async.js → src__pages__crontab__modal.13de83de.async.js} +1 -1
  161. package/static/dist/src__pages__dependence__index.27d29203.async.js +1 -0
  162. package/static/dist/src__pages__dependence__logModal.b55dacc8.async.js +1 -0
  163. package/static/dist/src__pages__dependence__modal.3cc1a9be.async.js +1 -0
  164. package/static/dist/src__pages__diff__index.218dfd1a.async.js +1 -0
  165. package/static/dist/{src__pages__env__editNameModal.25c21e59.async.js → src__pages__env__editNameModal.08af0049.async.js} +1 -1
  166. package/static/dist/src__pages__env__modal.4c039f3d.async.js +1 -0
  167. package/static/dist/src__pages__error__index.1748dfaa.async.js +1 -0
  168. package/static/dist/src__pages__initialization__index.8f114cca.async.js +1 -0
  169. package/static/dist/src__pages__log__index.84556deb.async.js +1 -0
  170. package/static/dist/src__pages__script__editModal.17bcb1c2.async.js +1 -0
  171. package/static/dist/{src__pages__script__editNameModal.ca76e055.async.js → src__pages__script__editNameModal.61262353.async.js} +1 -1
  172. package/static/dist/src__pages__script__index.27582916.async.js +1 -0
  173. package/static/dist/{src__pages__script__renameModal.c166915b.async.js → src__pages__script__renameModal.3e39fdf4.async.js} +1 -1
  174. package/static/dist/src__pages__script__saveModal.449e50d8.async.js +1 -0
  175. package/static/dist/{src__pages__script__setting.020a7629.async.js → src__pages__script__setting.7944fdd6.async.js} +1 -1
  176. package/static/dist/{src__pages__setting__about.e3293e77.chunk.css → src__pages__setting__about.f6325812.chunk.css} +1 -1
  177. package/static/dist/{src__pages__setting__appModal.efa5bb29.async.js → src__pages__setting__appModal.a419e539.async.js} +1 -1
  178. package/static/dist/{src__pages__setting__other.b4adcffe.chunk.css → src__pages__setting__dependence.55c598d0.chunk.css} +1 -1
  179. package/static/dist/src__pages__setting__dependence.7bcddc85.async.js +1 -0
  180. package/static/dist/src__pages__setting__index.d2fc96f6.async.js +1 -0
  181. package/static/dist/{src__pages__setting__index.d57cc3fc.chunk.css → src__pages__setting__index.d666f8ec.chunk.css} +1 -1
  182. package/static/dist/src__pages__setting__notification.552e6815.async.js +1 -0
  183. package/static/dist/src__pages__setting__other.55c598d0.chunk.css +1 -0
  184. package/static/dist/src__pages__setting__other.a029d99a.async.js +1 -0
  185. package/static/dist/{src__pages__setting__security.d14993c7.async.js → src__pages__setting__security.c667d9e8.async.js} +1 -1
  186. package/static/dist/src__pages__subscription__modal.07629f02.async.js +1 -0
  187. package/static/dist/{umi.decd4ae2.js → umi.c864c23a.js} +1 -1
  188. package/version.yaml +27 -5
  189. package/sample/package.json +0 -12
  190. package/static/dist/5619.db04f386.async.js +0 -1
  191. package/static/dist/6747.36513965.async.js +0 -1
  192. package/static/dist/833.5add31bf.async.js +0 -1
  193. package/static/dist/layouts__index.931ce4c3.async.js +0 -1
  194. package/static/dist/src__pages__config__index.9d83dfb7.async.js +0 -1
  195. package/static/dist/src__pages__crontab__detail.7bceef05.async.js +0 -1
  196. package/static/dist/src__pages__crontab__index.55c93601.async.js +0 -1
  197. package/static/dist/src__pages__crontab__index.9fb90359.chunk.css +0 -1
  198. package/static/dist/src__pages__dependence__index.21153c24.async.js +0 -1
  199. package/static/dist/src__pages__dependence__logModal.5aada63c.async.js +0 -1
  200. package/static/dist/src__pages__dependence__modal.96353c88.async.js +0 -1
  201. package/static/dist/src__pages__diff__index.e644b15f.async.js +0 -1
  202. package/static/dist/src__pages__env__modal.4fd6abc2.async.js +0 -1
  203. package/static/dist/src__pages__error__index.f3ca5563.async.js +0 -1
  204. package/static/dist/src__pages__initialization__index.727e0f70.async.js +0 -1
  205. package/static/dist/src__pages__log__index.ba2c1721.async.js +0 -1
  206. package/static/dist/src__pages__script__editModal.8d7bac2a.async.js +0 -1
  207. package/static/dist/src__pages__script__index.da31e2c2.async.js +0 -1
  208. package/static/dist/src__pages__script__saveModal.7ee07566.async.js +0 -1
  209. package/static/dist/src__pages__setting__index.540c33a4.async.js +0 -1
  210. package/static/dist/src__pages__setting__notification.b99a4c64.async.js +0 -1
  211. package/static/dist/src__pages__setting__other.d20be1c1.async.js +0 -1
  212. 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
- //此处填你申请的SCKEY.
35
- //(环境变量名 PUSH_KEY)
34
+ // 此处填你申请的SCKEY.
35
+ // (环境变量名 PUSH_KEY)
36
36
  let SCKEY = '';
37
37
 
38
38
  // =======================================PushDeer通知设置区域===========================================
39
- //此处填你申请的PushDeer KEY.
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
- //此处填你申请的CHAT_URL与CHAT_TOKEN
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
- //此处填你BarkAPP的信息(IP/设备码,例如:https://api.day.app/XXXXXXXX)
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
- //此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw
66
- //(环境变量名 TG_BOT_TOKEN)
65
+ // 此处填你telegram bot 的Token,telegram机器人通知推送必填项.例如:1077xxx4424:AAFjv0FcqxxxxxxgEMGfi22B4yh15R5uw
66
+ // (环境变量名 TG_BOT_TOKEN)
67
67
  let TG_BOT_TOKEN = '';
68
- //此处填你接收通知消息的telegram用户的id,telegram机器人通知推送必填项.例如:129xxx206
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 = ''; //例如: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 = '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
- //此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd
79
- //(环境变量名 DD_BOT_TOKEN)
78
+ // 此处填你钉钉 bot 的webhook,例如:5a544165465465645d0f31dca676e7bd07415asdasd
79
+ // (环境变量名 DD_BOT_TOKEN)
80
80
  let DD_BOT_TOKEN = '';
81
- //密钥,机器人安全设置页面,加签一栏下面显示的SEC开头的字符串
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
- //此处填你企业微信机器人的 webhook(详见文档 https://work.weixin.qq.com/api/doc/90000/90136/91770),例如:693a91f6-7xxx-4bc4-97a0-0ec2sifa5aaa
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
- //此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX)
106
+ // 此处填您iGot的信息(推送key,例如:https://push.hellyw.com/XXXXXXXX)
107
107
  let IGOT_PUSH_KEY = '';
108
108
 
109
109
  // =======================================push+设置区域=======================================
110
- //官方文档:http://www.pushplus.plus/
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
- //官方文档:http://wechat.aibotk.com/docs/about
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
- //官方文档:https://www.feishu.cn/hc/zh-CN/articles/360024984973
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
- // SMTP_SERVER: 填写 SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:465
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 SMTP_SERVER = '';
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
- //官方文档:https://push.i-i.me/
151
- //此处填你的PushMe KEY.
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
- //兼容BARK自建用户
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
- //兼容BARK本地用户只填写设备码的情况
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.SMTP_SERVER) {
310
- SMTP_SERVER = process.env.SMTP_SERVER;
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
- //提供6种通知
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), //微信server酱
383
- pushPlusNotify(text, desp), //pushplus(推送加)
370
+ serverNotify(text, desp), // 微信server酱
371
+ pushPlusNotify(text, desp), // pushplus(推送加)
384
372
  ]);
385
- //由于上述两种微信通知需点击进去才能查看到详情,故text(标题内容)携带了账号序号以及昵称信息,方便不点击也可知道是哪个京东哪个活动
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
- PushMeNotify(text, desp, params), //PushMe
402
- ChronocatNotify(text, desp), // Chronocat
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
- //微信server酱推送通知一个\n不会换行,需要两个\n才能换行,故做此替换
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: `https://${TG_API_HOST}/bot${TG_BOT_TOKEN}/sendMessage`,
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 tunnel = require('tunnel');
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
- https: tunnel.httpsOverHttp({
663
- proxy: {
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 (![SMTP_SERVER, SMTP_EMAIL, SMTP_PASSWORD].every(Boolean)) {
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
- `${SMTP_SSL === 'true' ? 'smtps:' : 'smtp:'}//${SMTP_SERVER}`,
1148
- {
1149
- auth: {
1150
- user: SMTP_EMAIL,
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
- text: desp,
1151
+ html: `${desp.replace(/\n/g, '<br/>')}`,
1162
1152
  });
1163
1153
 
1164
- if (!!info.messageId) {
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 smtpNotify(text, desp) {
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 ChronocatNotify(title, desp) {
1202
+ function chronocatNotify(title, desp) {
1221
1203
  return new Promise((resolve) => {
1222
1204
  if (!CHRONOCAT_TOKEN || !CHRONOCAT_QQ || !CHRONOCAT_URL) {
1223
- console.log(
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('自定义发送通知消息失败!!\n');
1324
- console.log(resp.body);
1302
+ console.log(`自定义发送通知消息失败!!\n${resp.body}`);
1325
1303
  } else {
1326
- console.log('自定义发送通知消息成功🎉。\n');
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) return '';
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().toLowerCase();
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"https://{push_config.get('TG_API_HOST')}/bot{push_config.get('TG_BOT_TOKEN')}/sendMessage"
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().lower()
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
@@ -25,9 +25,6 @@ fi
25
25
  echo -e "\nbot文件下载成功...\n"
26
26
 
27
27
  echo -e "3、安装python3依赖...\n"
28
- if [[ $PipMirror ]]; then
29
- pip3 config set global.index-url $PipMirror
30
- fi
31
28
  cp -f "$repo_path/jbot/requirements.txt" "$dir_data"
32
29
 
33
30
  cd $dir_data
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 2>&1
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