@whyour/qinglong 2.17.12-rc.2 → 2.18.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 +1 -1
- package/README.md +2 -2
- package/docker/docker-compose.yml +3 -8
- package/package.json +45 -41
- package/sample/config.sample.sh +21 -2
- package/sample/notify.js +114 -15
- package/sample/notify.py +99 -45
- package/shell/api.sh +26 -0
- package/shell/preload/sitecustomize.js +7 -1
- package/shell/preload/sitecustomize.py +9 -1
- package/shell/share.sh +3 -7
- package/shell/start.sh +6 -1
- package/shell/task.sh +1 -1
- package/shell/update.sh +2 -6
- package/static/build/api/config.js +2 -1
- package/static/build/api/script.js +4 -3
- package/static/build/api/system.js +16 -1
- package/static/build/api/user.js +1 -1
- package/static/build/config/util.js +13 -3
- package/static/build/data/notify.js +16 -1
- package/static/build/data/system.js +1 -0
- package/static/build/loaders/express.js +11 -14
- package/static/build/loaders/initData.js +41 -5
- package/static/build/loaders/initFile.js +74 -76
- package/static/build/loaders/sock.js +4 -5
- package/static/build/loaders/update.js +2 -2
- package/static/build/schedule/index.js +0 -1
- package/static/build/services/cron.js +2 -1
- package/static/build/services/dependence.js +16 -7
- package/static/build/services/env.js +4 -27
- package/static/build/services/notify.js +50 -4
- package/static/build/services/open.js +16 -14
- package/static/build/services/schedule.js +1 -1
- package/static/build/services/sshKey.js +5 -6
- package/static/build/services/system.js +17 -5
- package/static/build/services/user.js +116 -161
- package/static/build/shared/store.js +32 -0
- package/static/build/shared/utils.js +27 -0
- package/static/build/token.js +2 -6
- package/static/dist/{827.efeeec44.async.js → 105.85a5c47a.async.js} +1 -1
- package/static/dist/{4588.46a3a31e.async.js → 1083.f86ce804.async.js} +1 -1
- package/static/dist/1149.33cb7e7a.async.js +1 -0
- package/static/dist/119.89e2d610.async.js +1 -0
- package/static/dist/{9631.042017c3.async.js → 1352.ab6da08e.async.js} +1 -1
- package/static/dist/1690.f0290540.async.js +1 -0
- package/static/dist/1742.6cbe5aca.async.js +1 -0
- package/static/dist/1765.d8e002d7.async.js +1 -0
- package/static/dist/1885.e0d00d2d.async.js +1 -0
- package/static/dist/2081.d0d781b1.async.js +1 -0
- package/static/dist/2096.383c1047.async.js +1 -0
- package/static/dist/2237.4d3def87.async.js +1 -0
- package/static/dist/2325.dfa32834.async.js +1 -0
- package/static/dist/2338.d678967d.async.js +1 -0
- package/static/dist/255.12f03ab2.async.js +1 -0
- package/static/dist/2625.675b6a18.chunk.css +1 -0
- package/static/dist/2634.a765cd37.async.js +1 -0
- package/static/dist/{8605.f56664b9.async.js → 2742.4852aac8.async.js} +1 -1
- package/static/dist/2821.be3dc88e.async.js +1 -0
- package/static/dist/2890.9e373f5b.async.js +1 -0
- package/static/dist/{4658.8a9e2830.async.js → 3034.6413c38e.async.js} +1 -1
- package/static/dist/3382.a584a111.async.js +1 -0
- package/static/dist/{2755.f6377d52.async.js → 3383.041eee73.async.js} +1 -1
- package/static/dist/3390.fb4b6851.async.js +1 -0
- package/static/dist/3481.333c2962.async.js +1 -0
- package/static/dist/3600.7637c822.async.js +1 -0
- package/static/dist/4046.7fbcfa02.async.js +1 -0
- package/static/dist/4642.9e24d86c.async.js +1 -0
- package/static/dist/4799.d5ca9f30.async.js +1 -0
- package/static/dist/4865.98e5a005.async.js +1 -0
- package/static/dist/4902.54ecbdb5.async.js +1 -0
- package/static/dist/5171.7fc6d0a2.async.js +1 -0
- package/static/dist/5312.5545b3ed.async.js +1 -0
- package/static/dist/5481.624d0e07.async.js +1 -0
- package/static/dist/5520.ff2cfd6b.async.js +1 -0
- package/static/dist/{8167.8f9d5e88.async.js → 5653.4fce7ce8.async.js} +1 -1
- package/static/dist/5970.10ac4f16.async.js +1 -0
- package/static/dist/6013.2d7bb12a.async.js +1 -0
- package/static/dist/6016.9c379049.async.js +1 -0
- package/static/dist/6035.5889ddc7.async.js +1 -0
- package/static/dist/6159.55cb068a.async.js +1 -0
- package/static/dist/{5394.de174420.async.js → 6247.b550d996.async.js} +1 -1
- package/static/dist/6341.673fb65c.async.js +1 -0
- package/static/dist/6439.7ef6c5e3.async.js +1 -0
- package/static/dist/{6141.db67ebff.async.js → 6541.a6d499de.async.js} +1 -1
- package/static/dist/6646.5fc37228.async.js +1 -0
- package/static/dist/6707.801b886b.async.js +1 -0
- package/static/dist/6872.42f939f1.async.js +1 -0
- package/static/dist/691.187a388c.async.js +1 -0
- package/static/dist/{1667.94045304.async.js → 7025.f4080d63.async.js} +1 -1
- package/static/dist/7285.d561cf26.async.js +1 -0
- package/static/dist/7355.5e5e573b.async.js +1 -0
- package/static/dist/7384.065ccae2.async.js +1 -0
- package/static/dist/739.6be5552a.async.js +1 -0
- package/static/dist/7528.d8b76d8a.async.js +1 -0
- package/static/dist/7802.6b73f16a.async.js +1 -0
- package/static/dist/{9120.ef78d517.async.js → 8060.8b699029.async.js} +1 -1
- package/static/dist/{8078.4add9375.async.js → 8078.8586c875.async.js} +1 -1
- package/static/dist/8142.e3e82eda.async.js +1 -0
- package/static/dist/852.15be2189.async.js +1 -0
- package/static/dist/8528.3dffc548.async.js +1 -0
- package/static/dist/872.10bd0974.async.js +1 -0
- package/static/dist/872.3fffed15.chunk.css +1 -0
- package/static/dist/8982.d2dba153.async.js +1 -0
- package/static/dist/9065.df8d5dcc.async.js +1 -0
- package/static/dist/9066.605168f8.async.js +1 -0
- package/static/dist/955.3c9481f7.async.js +1 -0
- package/static/dist/9730.30083c91.async.js +1 -0
- package/static/dist/9761.627ca3b5.async.js +1 -0
- package/static/dist/index.html +8 -7
- package/static/dist/layouts__index.1fce90e0.chunk.css +1 -0
- package/static/dist/layouts__index.c164d41f.async.js +1 -0
- package/static/dist/preload_helper.55b35ae0.js +1 -0
- package/static/dist/src__pages__404.6871535b.async.js +1 -0
- package/static/dist/src__pages__config__index.39b5f99f.async.js +1 -0
- package/static/dist/src__pages__crontab__detail.6f7c3205.async.js +1 -0
- package/static/dist/src__pages__crontab__index.55a8714d.async.js +1 -0
- package/static/dist/src__pages__crontab__logModal.c88ea3b7.async.js +1 -0
- package/static/dist/src__pages__crontab__modal.328fee41.async.js +1 -0
- package/static/dist/{src__pages__crontab__type.a798cac7.async.js → src__pages__crontab__type.5895ed02.async.js} +1 -1
- package/static/dist/src__pages__crontab__viewCreateModal.ffcf7a24.async.js +1 -0
- package/static/dist/src__pages__crontab__viewManageModal.c71ebc5a.async.js +1 -0
- package/static/dist/src__pages__dependence__index.edec638b.async.js +1 -0
- package/static/dist/src__pages__dependence__logModal.f123e2ac.async.js +1 -0
- package/static/dist/src__pages__dependence__modal.9fd1176b.async.js +1 -0
- package/static/dist/{src__pages__dependence__type.860703e8.async.js → src__pages__dependence__type.bdac3725.async.js} +1 -1
- package/static/dist/src__pages__diff__index.8ba53a1e.async.js +1 -0
- package/static/dist/src__pages__env__editNameModal.c35e96f9.async.js +1 -0
- package/static/dist/src__pages__env__index.c799138c.async.js +1 -0
- package/static/dist/src__pages__env__modal.3b0ca9a6.async.js +1 -0
- package/static/dist/src__pages__error__index.0221fcd9.async.js +1 -0
- package/static/dist/src__pages__initialization__index.346725d1.async.js +1 -0
- package/static/dist/src__pages__log__index.2fd615f2.async.js +1 -0
- package/static/dist/src__pages__login__index.1dd6e684.async.js +1 -0
- package/static/dist/src__pages__script__editModal.28caeb56.async.js +1 -0
- package/static/dist/src__pages__script__editNameModal.1155d34c.async.js +1 -0
- package/static/dist/src__pages__script__index.6a212c2d.async.js +1 -0
- package/static/dist/src__pages__script__renameModal.dabfccfd.async.js +1 -0
- package/static/dist/src__pages__script__saveModal.04d43882.async.js +1 -0
- package/static/dist/src__pages__script__setting.9d5ad53c.async.js +1 -0
- package/static/dist/src__pages__setting__about.3a1a6f3b.async.js +1 -0
- package/static/dist/src__pages__setting__appModal.7b3bff1e.async.js +1 -0
- package/static/dist/src__pages__setting__checkUpdate.0dfdaf7c.async.js +1 -0
- package/static/dist/src__pages__setting__dependence.a9b7ed43.async.js +1 -0
- package/static/dist/src__pages__setting__index.ffa1cdd6.async.js +1 -0
- package/static/dist/src__pages__setting__loginLog.fc87584a.async.js +1 -0
- package/static/dist/src__pages__setting__notification.97b1d997.async.js +1 -0
- package/static/dist/src__pages__setting__other.34ccb2e8.async.js +1 -0
- package/static/dist/src__pages__setting__progress.75143dca.async.js +1 -0
- package/static/dist/src__pages__setting__security.c777fb87.async.js +1 -0
- package/static/dist/src__pages__setting__systemLog.63e9c69d.async.js +1 -0
- package/static/dist/src__pages__subscription__index.69a6de02.async.js +1 -0
- package/static/dist/src__pages__subscription__logModal.b3c7c02c.async.js +1 -0
- package/static/dist/src__pages__subscription__modal.aefaf070.async.js +1 -0
- package/static/dist/umi.a4d14b92.css +1 -0
- package/static/dist/umi.fb3ed7a0.js +1 -0
- package/version.yaml +7 -10
- package/static/dist/1186.39086229.async.js +0 -1
- package/static/dist/1431.36b64dc5.async.js +0 -1
- package/static/dist/1467.6163d4ee.async.js +0 -1
- package/static/dist/2099.a46e32fc.async.js +0 -1
- package/static/dist/2182.59dcf306.chunk.css +0 -1
- package/static/dist/2260.6c4d0bd0.async.js +0 -1
- package/static/dist/2393.3d8adf53.async.js +0 -1
- package/static/dist/2618.7a71aedf.async.js +0 -1
- package/static/dist/2715.292538bc.async.js +0 -1
- package/static/dist/2796.9a52d80e.async.js +0 -1
- package/static/dist/2899.03668225.async.js +0 -1
- package/static/dist/29.32a92099.async.js +0 -1
- package/static/dist/3435.2670d41f.async.js +0 -1
- package/static/dist/3435.d2d0a2c7.chunk.css +0 -1
- package/static/dist/3669.d39d1a9d.async.js +0 -1
- package/static/dist/380.33bc8989.async.js +0 -1
- package/static/dist/3800.f0507af4.async.js +0 -1
- package/static/dist/4039.badd6267.async.js +0 -1
- package/static/dist/4124.980265f2.async.js +0 -1
- package/static/dist/4163.17026fe1.async.js +0 -1
- package/static/dist/419.908ca086.async.js +0 -1
- package/static/dist/4424.a840b858.async.js +0 -1
- package/static/dist/4645.d909733e.async.js +0 -1
- package/static/dist/4674.1b3db685.async.js +0 -1
- package/static/dist/4925.9b770864.async.js +0 -1
- package/static/dist/5310.4cd7a0c1.async.js +0 -1
- package/static/dist/5484.68655765.async.js +0 -1
- package/static/dist/573.21675f9c.async.js +0 -1
- package/static/dist/5830.9be47cbb.async.js +0 -1
- package/static/dist/6035.48d17c03.async.js +0 -1
- package/static/dist/6064.a5141a7d.async.js +0 -1
- package/static/dist/641.f0614d96.async.js +0 -1
- package/static/dist/6712.05e15d48.async.js +0 -1
- package/static/dist/6805.ae3d4019.async.js +0 -1
- package/static/dist/694.0baa21db.async.js +0 -1
- package/static/dist/6986.6a4ae181.async.js +0 -1
- package/static/dist/7346.7096e3b3.async.js +0 -1
- package/static/dist/7362.e740709d.async.js +0 -1
- package/static/dist/7393.ea2d5ba3.async.js +0 -1
- package/static/dist/745.3be9ce9f.async.js +0 -1
- package/static/dist/7742.51617038.async.js +0 -1
- package/static/dist/7787.b041d555.async.js +0 -1
- package/static/dist/7987.5bace809.async.js +0 -1
- package/static/dist/8298.978b54ae.async.js +0 -1
- package/static/dist/833.87a694db.async.js +0 -1
- package/static/dist/8430.0291dda0.async.js +0 -1
- package/static/dist/8432.d8d0ade6.async.js +0 -1
- package/static/dist/858.1a385b25.async.js +0 -1
- package/static/dist/8934.55adca8f.async.js +0 -1
- package/static/dist/9065.a1341834.async.js +0 -1
- package/static/dist/9504.22415050.async.js +0 -1
- package/static/dist/9673.ac17e45d.async.js +0 -1
- package/static/dist/9847.d72d4b37.async.js +0 -1
- package/static/dist/layouts__index.2f94d49c.async.js +0 -1
- package/static/dist/layouts__index.35164d74.chunk.css +0 -1
- package/static/dist/src__pages__404.e1ca45fd.async.js +0 -1
- package/static/dist/src__pages__config__index.c778a0e0.async.js +0 -1
- package/static/dist/src__pages__crontab__detail.34c9ca68.async.js +0 -1
- package/static/dist/src__pages__crontab__index.f196124c.async.js +0 -1
- package/static/dist/src__pages__crontab__logModal.91357c7c.async.js +0 -1
- package/static/dist/src__pages__crontab__modal.6fa9520e.async.js +0 -1
- package/static/dist/src__pages__crontab__viewCreateModal.1fe0e251.async.js +0 -1
- package/static/dist/src__pages__crontab__viewManageModal.c6dcfcf8.async.js +0 -1
- package/static/dist/src__pages__dependence__index.aca3926b.async.js +0 -1
- package/static/dist/src__pages__dependence__logModal.07786c7c.async.js +0 -1
- package/static/dist/src__pages__dependence__modal.e67d0ff6.async.js +0 -1
- package/static/dist/src__pages__diff__index.82b124a8.async.js +0 -1
- package/static/dist/src__pages__env__editNameModal.38d65f05.async.js +0 -1
- package/static/dist/src__pages__env__index.f545d035.async.js +0 -1
- package/static/dist/src__pages__env__modal.6fad122b.async.js +0 -1
- package/static/dist/src__pages__error__index.c5c8ed46.async.js +0 -1
- package/static/dist/src__pages__initialization__index.a26591c2.async.js +0 -1
- package/static/dist/src__pages__log__index.bc06b12f.async.js +0 -1
- package/static/dist/src__pages__login__index.e4257741.async.js +0 -1
- package/static/dist/src__pages__script__editModal.be12c9e5.async.js +0 -1
- package/static/dist/src__pages__script__editNameModal.e7f7fea1.async.js +0 -1
- package/static/dist/src__pages__script__index.4fdb14ad.async.js +0 -1
- package/static/dist/src__pages__script__renameModal.436dedbf.async.js +0 -1
- package/static/dist/src__pages__script__saveModal.f65940c2.async.js +0 -1
- package/static/dist/src__pages__script__setting.b4891488.async.js +0 -1
- package/static/dist/src__pages__setting__about.d7cea886.async.js +0 -1
- package/static/dist/src__pages__setting__appModal.48994718.async.js +0 -1
- package/static/dist/src__pages__setting__checkUpdate.0dd2f8d5.async.js +0 -1
- package/static/dist/src__pages__setting__dependence.b6d378b3.async.js +0 -1
- package/static/dist/src__pages__setting__index.45c54c51.async.js +0 -1
- package/static/dist/src__pages__setting__loginLog.4ba597ea.async.js +0 -1
- package/static/dist/src__pages__setting__notification.7df85f89.async.js +0 -1
- package/static/dist/src__pages__setting__other.2c4534ef.async.js +0 -1
- package/static/dist/src__pages__setting__progress.57907231.async.js +0 -1
- package/static/dist/src__pages__setting__security.e26348a7.async.js +0 -1
- package/static/dist/src__pages__setting__systemLog.a77a9995.async.js +0 -1
- package/static/dist/src__pages__subscription__index.0f0a7c0a.async.js +0 -1
- package/static/dist/src__pages__subscription__logModal.8d68bb96.async.js +0 -1
- package/static/dist/src__pages__subscription__modal.26538bfd.async.js +0 -1
- package/static/dist/umi.8a0eaca6.css +0 -1
- package/static/dist/umi.ae45a508.js +0 -1
package/README-en.md
CHANGED
|
@@ -126,7 +126,7 @@ curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
|
126
126
|
npm install -g node-pre-gyp pnpm@8.3.1
|
|
127
127
|
npm install -g @whyour/qinglong
|
|
128
128
|
qinglong
|
|
129
|
-
# Add the environment variables QL_DIR and QL_DATA_DIR when prompted
|
|
129
|
+
# Add the environment variables QL_DIR and QL_DATA_DIR when prompted, QL_DATA_DIR must end with /data.
|
|
130
130
|
export QL_DIR=""
|
|
131
131
|
export QL_DATA_DIR=""
|
|
132
132
|
# Run again
|
package/README.md
CHANGED
|
@@ -88,7 +88,7 @@ docker run -dit \
|
|
|
88
88
|
|
|
89
89
|
```bash
|
|
90
90
|
# curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
|
|
91
|
-
mkdir qinglong
|
|
91
|
+
mkdir qinglong && cd $_
|
|
92
92
|
wget https://raw.githubusercontent.com/whyour/qinglong/master/docker/docker-compose.yml
|
|
93
93
|
|
|
94
94
|
# 启动
|
|
@@ -128,7 +128,7 @@ curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
|
|
|
128
128
|
npm install -g node-pre-gyp pnpm@8.3.1
|
|
129
129
|
npm install -g @whyour/qinglong
|
|
130
130
|
qinglong
|
|
131
|
-
# 根据提示增加环境变量 QL_DIR 和 QL_DATA_DIR
|
|
131
|
+
# 根据提示增加环境变量 QL_DIR 和 QL_DATA_DIR,QL_DATA_DIR 必须以 /data 结尾
|
|
132
132
|
export QL_DIR=""
|
|
133
133
|
export QL_DATA_DIR=""
|
|
134
134
|
# 再次执行
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
version: '2'
|
|
2
1
|
services:
|
|
3
2
|
web:
|
|
4
|
-
#
|
|
5
|
-
image: whyour/qinglong:latest
|
|
6
|
-
# debian-slim 基础镜像版本
|
|
7
|
-
# image: whyour/qinglong:debian
|
|
3
|
+
image: whyour/qinglong:latest # 基于 Debian 的版本:whyour/qinglong:debian
|
|
8
4
|
volumes:
|
|
9
5
|
- ./data:/ql/data
|
|
10
6
|
ports:
|
|
11
|
-
- "
|
|
7
|
+
- "5700:5700"
|
|
12
8
|
environment:
|
|
13
|
-
# 部署路径非必须,以斜杠开头和结尾,比如 /test/
|
|
14
|
-
QlBaseUrl: '/'
|
|
9
|
+
QlBaseUrl: '/' # 部署路径非必须,以斜杠开头和结尾,比如 /test/
|
|
15
10
|
restart: unless-stopped
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@whyour/qinglong",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.18.0",
|
|
4
4
|
"description": "Timed task management platform supporting Python3, JavaScript, Shell, Typescript",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -70,64 +70,68 @@
|
|
|
70
70
|
"react-dom": "18",
|
|
71
71
|
"dva-core": "2"
|
|
72
72
|
}
|
|
73
|
+
},
|
|
74
|
+
"overrides": {
|
|
75
|
+
"sqlite3": "git+https://github.com/whyour/node-sqlite3.git#v1.0.3"
|
|
73
76
|
}
|
|
74
77
|
},
|
|
75
78
|
"dependencies": {
|
|
76
|
-
"@grpc/grpc-js": "^1.
|
|
79
|
+
"@grpc/grpc-js": "^1.12.3",
|
|
77
80
|
"@otplib/preset-default": "^12.0.1",
|
|
78
|
-
"@sentry/node": "^8.
|
|
79
|
-
"body-parser": "^1.
|
|
80
|
-
"celebrate": "^15.0.
|
|
81
|
-
"chokidar": "^
|
|
81
|
+
"@sentry/node": "^8.42.0",
|
|
82
|
+
"body-parser": "^1.20.3",
|
|
83
|
+
"celebrate": "^15.0.3",
|
|
84
|
+
"chokidar": "^4.0.1",
|
|
82
85
|
"cors": "^2.8.5",
|
|
83
|
-
"cron-parser": "^4.
|
|
84
|
-
"cross-spawn": "^7.0.
|
|
85
|
-
"dayjs": "^1.11.
|
|
86
|
-
"dotenv": "^16.
|
|
87
|
-
"express": "^4.
|
|
88
|
-
"express-jwt": "^
|
|
89
|
-
"express-rate-limit": "^7.
|
|
90
|
-
"express-urlrewrite": "^
|
|
86
|
+
"cron-parser": "^4.9.0",
|
|
87
|
+
"cross-spawn": "^7.0.6",
|
|
88
|
+
"dayjs": "^1.11.13",
|
|
89
|
+
"dotenv": "^16.4.6",
|
|
90
|
+
"express": "^4.21.1",
|
|
91
|
+
"express-jwt": "^8.4.1",
|
|
92
|
+
"express-rate-limit": "^7.4.1",
|
|
93
|
+
"express-urlrewrite": "^2.0.3",
|
|
91
94
|
"form-data": "^4.0.0",
|
|
92
95
|
"got": "^11.8.2",
|
|
93
96
|
"hpagent": "^1.2.0",
|
|
94
|
-
"http-proxy-middleware": "^
|
|
97
|
+
"http-proxy-middleware": "^3.0.3",
|
|
95
98
|
"iconv-lite": "^0.6.3",
|
|
96
99
|
"js-yaml": "^4.1.0",
|
|
97
|
-
"jsonwebtoken": "^
|
|
100
|
+
"jsonwebtoken": "^9.0.2",
|
|
98
101
|
"lodash": "^4.17.21",
|
|
99
102
|
"multer": "1.4.5-lts.1",
|
|
100
103
|
"nedb": "^1.8.0",
|
|
101
104
|
"node-schedule": "^2.1.0",
|
|
102
|
-
"nodemailer": "^6.
|
|
105
|
+
"nodemailer": "^6.9.16",
|
|
103
106
|
"p-queue-cjs": "7.3.4",
|
|
104
|
-
"protobufjs": "^7.
|
|
107
|
+
"protobufjs": "^7.4.0",
|
|
105
108
|
"pstree.remy": "^1.1.8",
|
|
106
|
-
"reflect-metadata": "^0.
|
|
107
|
-
"sequelize": "^6.
|
|
108
|
-
"serve-handler": "^6.1.
|
|
109
|
+
"reflect-metadata": "^0.2.2",
|
|
110
|
+
"sequelize": "^6.37.5",
|
|
111
|
+
"serve-handler": "^6.1.6",
|
|
109
112
|
"sockjs": "^0.3.24",
|
|
110
113
|
"sqlite3": "git+https://github.com/whyour/node-sqlite3.git#v1.0.3",
|
|
111
|
-
"toad-scheduler": "^
|
|
114
|
+
"toad-scheduler": "^3.0.1",
|
|
112
115
|
"typedi": "^0.10.0",
|
|
113
|
-
"uuid": "^
|
|
114
|
-
"winston": "^3.
|
|
115
|
-
"winston-daily-rotate-file": "^
|
|
116
|
-
"yargs": "^17.3.1",
|
|
117
|
-
"tough-cookie": "^4.0.0",
|
|
116
|
+
"uuid": "^11.0.3",
|
|
117
|
+
"winston": "^3.17.0",
|
|
118
|
+
"winston-daily-rotate-file": "^5.0.0",
|
|
118
119
|
"request-ip": "3.3.0",
|
|
119
|
-
"ip2region": "2.3.0"
|
|
120
|
+
"ip2region": "2.3.0",
|
|
121
|
+
"keyv": "^5.2.3",
|
|
122
|
+
"@keyv/sqlite": "^4.0.1",
|
|
123
|
+
"proper-lockfile": "^4.1.2"
|
|
120
124
|
},
|
|
121
125
|
"devDependencies": {
|
|
122
126
|
"moment": "2.30.1",
|
|
123
|
-
"@ant-design/icons": "^
|
|
127
|
+
"@ant-design/icons": "^5.0.1",
|
|
124
128
|
"@ant-design/pro-layout": "6.38.22",
|
|
125
129
|
"@codemirror/view": "^6.34.1",
|
|
126
130
|
"@codemirror/state": "^6.4.1",
|
|
127
131
|
"@monaco-editor/react": "4.2.1",
|
|
128
|
-
"@react-hook/resize-observer": "^
|
|
132
|
+
"@react-hook/resize-observer": "^2.0.2",
|
|
129
133
|
"react-router-dom": "6.26.1",
|
|
130
|
-
"@sentry/react": "^8.
|
|
134
|
+
"@sentry/react": "^8.42.0",
|
|
131
135
|
"@types/body-parser": "^1.19.2",
|
|
132
136
|
"@types/cors": "^2.8.12",
|
|
133
137
|
"@types/cross-spawn": "^6.0.2",
|
|
@@ -151,18 +155,19 @@
|
|
|
151
155
|
"@types/sockjs-client": "^1.5.1",
|
|
152
156
|
"@types/uuid": "^8.3.4",
|
|
153
157
|
"@types/request-ip": "0.0.41",
|
|
158
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
154
159
|
"@uiw/codemirror-extensions-langs": "^4.21.9",
|
|
155
160
|
"@uiw/react-codemirror": "^4.21.9",
|
|
156
|
-
"@umijs/max": "^4.
|
|
161
|
+
"@umijs/max": "^4.3.36",
|
|
157
162
|
"@umijs/ssr-darkreader": "^4.9.45",
|
|
158
163
|
"ahooks": "^3.7.8",
|
|
159
164
|
"ansi-to-react": "^6.1.6",
|
|
160
165
|
"antd": "^4.24.8",
|
|
161
|
-
"antd-img-crop": "^4.
|
|
166
|
+
"antd-img-crop": "^4.23.0",
|
|
162
167
|
"axios": "^1.4.0",
|
|
163
168
|
"compression-webpack-plugin": "9.2.0",
|
|
164
169
|
"concurrently": "^7.0.0",
|
|
165
|
-
"react-hotkeys-hook": "^4.
|
|
170
|
+
"react-hotkeys-hook": "^4.6.1",
|
|
166
171
|
"file-saver": "2.0.2",
|
|
167
172
|
"lint-staged": "^13.0.3",
|
|
168
173
|
"monaco-editor": "0.33.0",
|
|
@@ -173,14 +178,14 @@
|
|
|
173
178
|
"qrcode.react": "^1.0.1",
|
|
174
179
|
"query-string": "^7.1.1",
|
|
175
180
|
"rc-tween-one": "^3.0.6",
|
|
176
|
-
"rc-virtual-list": "3.
|
|
177
|
-
"react": "18.
|
|
181
|
+
"rc-virtual-list": "3.15.0",
|
|
182
|
+
"react": "18.3.1",
|
|
178
183
|
"react-copy-to-clipboard": "^5.1.0",
|
|
179
184
|
"react-diff-viewer": "^3.1.1",
|
|
180
|
-
"react-dnd": "^
|
|
181
|
-
"react-dnd-html5-backend": "^
|
|
182
|
-
"react-dom": "18.
|
|
183
|
-
"react-intl-universal": "^2.
|
|
185
|
+
"react-dnd": "^16.0.1",
|
|
186
|
+
"react-dnd-html5-backend": "^16.0.1",
|
|
187
|
+
"react-dom": "18.3.1",
|
|
188
|
+
"react-intl-universal": "^2.12.0",
|
|
184
189
|
"react-split-pane": "^0.1.92",
|
|
185
190
|
"sockjs-client": "^1.6.0",
|
|
186
191
|
"ts-node": "^10.9.2",
|
|
@@ -189,7 +194,6 @@
|
|
|
189
194
|
"typescript": "5.2.2",
|
|
190
195
|
"vh-check": "^2.0.5",
|
|
191
196
|
"virtualizedtableforantd4": "1.3.0",
|
|
192
|
-
"webpack": "^5.70.0",
|
|
193
197
|
"yorkie": "^2.0.0"
|
|
194
198
|
}
|
|
195
199
|
}
|
package/sample/config.sample.sh
CHANGED
|
@@ -117,6 +117,16 @@ export PUSH_PLUS_TOKEN=""
|
|
|
117
117
|
## 下方填写您的一对多推送的 "群组编码" ,(一对多推送下面->您的群组(如无则新建)->群组编码)
|
|
118
118
|
## 1. 需订阅者扫描二维码 2、如果您是创建群组所属人,也需点击“查看二维码”扫描绑定,否则不能接受群组消息推送
|
|
119
119
|
export PUSH_PLUS_USER=""
|
|
120
|
+
## 发送模板,支持html,txt,json,markdown,cloudMonitor,jenkins,route,pay
|
|
121
|
+
export PUSH_PLUS_TEMPLATE="html"
|
|
122
|
+
## 发送渠道,支持wechat,webhook,cp,mail,sms
|
|
123
|
+
export PUSH_PLUS_CHANNEL="wechat"
|
|
124
|
+
## webhook编码,可在pushplus公众号上扩展配置出更多渠道
|
|
125
|
+
export PUSH_PLUS_WEBHOOK=""
|
|
126
|
+
## 发送结果回调地址,会把推送最终结果通知到这个地址上
|
|
127
|
+
export PUSH_PLUS_CALLBACKURL=""
|
|
128
|
+
## 好友令牌,微信公众号渠道填写好友令牌,企业微信渠道填写企业微信用户id
|
|
129
|
+
export PUSH_PLUS_TO=""
|
|
120
130
|
|
|
121
131
|
## 9. 微加机器人
|
|
122
132
|
## 官方网站:http://www.weplusbot.com
|
|
@@ -220,8 +230,17 @@ export NTFY_URL=""
|
|
|
220
230
|
export NTFY_TOPIC=""
|
|
221
231
|
export NTFY_PRIORITY="3"
|
|
222
232
|
|
|
223
|
-
|
|
224
|
-
##
|
|
233
|
+
## 21. wxPusher
|
|
234
|
+
## 官方文档: https://wxpusher.zjiecode.com/docs/
|
|
235
|
+
## 管理后台: https://wxpusher.zjiecode.com/admin/
|
|
236
|
+
## wxPusher 的 appToken
|
|
237
|
+
export WXPUSHER_APP_TOKEN=""
|
|
238
|
+
## wxPusher 的 topicIds,多个用英文分号;分隔 topic_ids 与 uids 至少配置一个才行
|
|
239
|
+
export WXPUSHER_TOPIC_IDS=""
|
|
240
|
+
## wxPusher 的 用户ID,多个用英文分号;分隔 topic_ids 与 uids 至少配置一个才行
|
|
241
|
+
export WXPUSHER_UIDS=""
|
|
242
|
+
|
|
243
|
+
## 22. 自定义通知
|
|
225
244
|
## 自定义通知 接收回调的URL
|
|
226
245
|
export WEBHOOK_URL=""
|
|
227
246
|
## WEBHOOK_BODY 和 WEBHOOK_HEADERS 多个参数时,直接换行或者使用 $'\n' 连接多行字符串,比如 export dd="line 1"$'\n'"line 2"
|
package/sample/notify.js
CHANGED
|
@@ -40,9 +40,14 @@ const push_config = {
|
|
|
40
40
|
CHAT_URL: '', // synology chat url
|
|
41
41
|
CHAT_TOKEN: '', // synology chat token
|
|
42
42
|
|
|
43
|
-
// 官方文档:
|
|
44
|
-
PUSH_PLUS_TOKEN: '', //
|
|
45
|
-
PUSH_PLUS_USER: '', //
|
|
43
|
+
// 官方文档:https://www.pushplus.plus/
|
|
44
|
+
PUSH_PLUS_TOKEN: '', // pushplus 推送的用户令牌
|
|
45
|
+
PUSH_PLUS_USER: '', // pushplus 推送的群组编码
|
|
46
|
+
PUSH_PLUS_TEMPLATE: 'html', // pushplus 发送模板,支持html,txt,json,markdown,cloudMonitor,jenkins,route,pay
|
|
47
|
+
PUSH_PLUS_CHANNEL: 'wechat', // pushplus 发送渠道,支持wechat,webhook,cp,mail,sms
|
|
48
|
+
PUSH_PLUS_WEBHOOK: '', // pushplus webhook编码,可在pushplus公众号上扩展配置出更多渠道
|
|
49
|
+
PUSH_PLUS_CALLBACKURL: '', // pushplus 发送结果回调地址,会把推送最终结果通知到这个地址上
|
|
50
|
+
PUSH_PLUS_TO: '', // pushplus 好友令牌,微信公众号渠道填写好友令牌,企业微信渠道填写企业微信用户id
|
|
46
51
|
|
|
47
52
|
// 微加机器人,官方网站:https://www.weplusbot.com/
|
|
48
53
|
WE_PLUS_BOT_TOKEN: '', // 微加机器人的用户令牌
|
|
@@ -99,6 +104,12 @@ const push_config = {
|
|
|
99
104
|
NTFY_URL: '', // ntfy地址,如https://ntfy.sh,默认为https://ntfy.sh
|
|
100
105
|
NTFY_TOPIC: '', // ntfy的消息应用topic
|
|
101
106
|
NTFY_PRIORITY: '3', // 推送消息优先级,默认为3
|
|
107
|
+
|
|
108
|
+
// 官方文档: https://wxpusher.zjiecode.com/docs/
|
|
109
|
+
// 管理后台: https://wxpusher.zjiecode.com/admin/
|
|
110
|
+
WXPUSHER_APP_TOKEN: '', // wxpusher 的 appToken
|
|
111
|
+
WXPUSHER_TOPIC_IDS: '', // wxpusher 的 主题ID,多个用英文分号;分隔 topic_ids 与 uids 至少配置一个才行
|
|
112
|
+
WXPUSHER_UIDS: '', // wxpusher 的 用户ID,多个用英文分号;分隔 topic_ids 与 uids 至少配置一个才行
|
|
102
113
|
};
|
|
103
114
|
|
|
104
115
|
for (const key in push_config) {
|
|
@@ -231,10 +242,13 @@ function serverNotify(text, desp) {
|
|
|
231
242
|
|
|
232
243
|
const matchResult = PUSH_KEY.match(/^sctp(\d+)t/i);
|
|
233
244
|
const options = {
|
|
234
|
-
url:
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
245
|
+
url:
|
|
246
|
+
matchResult && matchResult[1]
|
|
247
|
+
? `https://${matchResult[1]}.push.ft07.com/send/${PUSH_KEY}.send`
|
|
248
|
+
: `https://sctapi.ftqq.com/${PUSH_KEY}.send`,
|
|
249
|
+
body: `text=${encodeURIComponent(text)}&desp=${encodeURIComponent(
|
|
250
|
+
desp,
|
|
251
|
+
)}`,
|
|
238
252
|
headers: {
|
|
239
253
|
'Content-Type': 'application/x-www-form-urlencoded',
|
|
240
254
|
},
|
|
@@ -765,7 +779,15 @@ function iGotNotify(text, desp, params = {}) {
|
|
|
765
779
|
|
|
766
780
|
function pushPlusNotify(text, desp) {
|
|
767
781
|
return new Promise((resolve) => {
|
|
768
|
-
const {
|
|
782
|
+
const {
|
|
783
|
+
PUSH_PLUS_TOKEN,
|
|
784
|
+
PUSH_PLUS_USER,
|
|
785
|
+
PUSH_PLUS_TEMPLATE,
|
|
786
|
+
PUSH_PLUS_CHANNEL,
|
|
787
|
+
PUSH_PLUS_WEBHOOK,
|
|
788
|
+
PUSH_PLUS_CALLBACKURL,
|
|
789
|
+
PUSH_PLUS_TO,
|
|
790
|
+
} = push_config;
|
|
769
791
|
if (PUSH_PLUS_TOKEN) {
|
|
770
792
|
desp = desp.replace(/[\n\r]/g, '<br>'); // 默认为html, 不支持plaintext
|
|
771
793
|
const body = {
|
|
@@ -773,6 +795,11 @@ function pushPlusNotify(text, desp) {
|
|
|
773
795
|
title: `${text}`,
|
|
774
796
|
content: `${desp}`,
|
|
775
797
|
topic: `${PUSH_PLUS_USER}`,
|
|
798
|
+
template: `${PUSH_PLUS_TEMPLATE}`,
|
|
799
|
+
channel: `${PUSH_PLUS_CHANNEL}`,
|
|
800
|
+
webhook: `${PUSH_PLUS_WEBHOOK}`,
|
|
801
|
+
callbackUrl: `${PUSH_PLUS_CALLBACKURL}`,
|
|
802
|
+
to: `${PUSH_PLUS_TO}`,
|
|
776
803
|
};
|
|
777
804
|
const options = {
|
|
778
805
|
url: `https://www.pushplus.plus/send`,
|
|
@@ -786,7 +813,7 @@ function pushPlusNotify(text, desp) {
|
|
|
786
813
|
try {
|
|
787
814
|
if (err) {
|
|
788
815
|
console.log(
|
|
789
|
-
`
|
|
816
|
+
`pushplus 发送${
|
|
790
817
|
PUSH_PLUS_USER ? '一对多' : '一对一'
|
|
791
818
|
}通知消息失败😞\n`,
|
|
792
819
|
err,
|
|
@@ -794,13 +821,15 @@ function pushPlusNotify(text, desp) {
|
|
|
794
821
|
} else {
|
|
795
822
|
if (data.code === 200) {
|
|
796
823
|
console.log(
|
|
797
|
-
`
|
|
824
|
+
`pushplus 发送${
|
|
798
825
|
PUSH_PLUS_USER ? '一对多' : '一对一'
|
|
799
|
-
}
|
|
826
|
+
}通知请求成功🎉,可根据流水号查询推送结果:${
|
|
827
|
+
data.data
|
|
828
|
+
}\n注意:请求成功并不代表推送成功,如未收到消息,请到pushplus官网使用流水号查询推送最终结果`,
|
|
800
829
|
);
|
|
801
830
|
} else {
|
|
802
831
|
console.log(
|
|
803
|
-
`
|
|
832
|
+
`pushplus 发送${
|
|
804
833
|
PUSH_PLUS_USER ? '一对多' : '一对一'
|
|
805
834
|
}通知消息异常 ${data.msg}\n`,
|
|
806
835
|
);
|
|
@@ -1205,10 +1234,10 @@ function ntfyNotify(text, desp) {
|
|
|
1205
1234
|
if (NTFY_TOPIC) {
|
|
1206
1235
|
const options = {
|
|
1207
1236
|
url: `${NTFY_URL || 'https://ntfy.sh'}/${NTFY_TOPIC}`,
|
|
1208
|
-
body: `${desp}`,
|
|
1237
|
+
body: `${desp}`,
|
|
1209
1238
|
headers: {
|
|
1210
|
-
|
|
1211
|
-
|
|
1239
|
+
Title: `${encodeRFC2047(text)}`,
|
|
1240
|
+
Priority: NTFY_PRIORITY || '3',
|
|
1212
1241
|
},
|
|
1213
1242
|
timeout,
|
|
1214
1243
|
};
|
|
@@ -1235,6 +1264,75 @@ function ntfyNotify(text, desp) {
|
|
|
1235
1264
|
});
|
|
1236
1265
|
}
|
|
1237
1266
|
|
|
1267
|
+
function wxPusherNotify(text, desp) {
|
|
1268
|
+
return new Promise((resolve) => {
|
|
1269
|
+
const { WXPUSHER_APP_TOKEN, WXPUSHER_TOPIC_IDS, WXPUSHER_UIDS } =
|
|
1270
|
+
push_config;
|
|
1271
|
+
if (WXPUSHER_APP_TOKEN) {
|
|
1272
|
+
// 处理topic_ids,将分号分隔的字符串转为数组
|
|
1273
|
+
const topicIds = WXPUSHER_TOPIC_IDS
|
|
1274
|
+
? WXPUSHER_TOPIC_IDS.split(';')
|
|
1275
|
+
.map((id) => id.trim())
|
|
1276
|
+
.filter((id) => id)
|
|
1277
|
+
.map((id) => parseInt(id))
|
|
1278
|
+
: [];
|
|
1279
|
+
|
|
1280
|
+
// 处理uids,将分号分隔的字符串转为数组
|
|
1281
|
+
const uids = WXPUSHER_UIDS
|
|
1282
|
+
? WXPUSHER_UIDS.split(';')
|
|
1283
|
+
.map((uid) => uid.trim())
|
|
1284
|
+
.filter((uid) => uid)
|
|
1285
|
+
: [];
|
|
1286
|
+
|
|
1287
|
+
// topic_ids uids 至少有一个
|
|
1288
|
+
if (!topicIds.length && !uids.length) {
|
|
1289
|
+
console.log(
|
|
1290
|
+
'wxpusher 服务的 WXPUSHER_TOPIC_IDS 和 WXPUSHER_UIDS 至少设置一个!!',
|
|
1291
|
+
);
|
|
1292
|
+
return resolve();
|
|
1293
|
+
}
|
|
1294
|
+
|
|
1295
|
+
const body = {
|
|
1296
|
+
appToken: WXPUSHER_APP_TOKEN,
|
|
1297
|
+
content: `<h1>${text}</h1><br/><div style='white-space: pre-wrap;'>${desp}</div>`,
|
|
1298
|
+
summary: text,
|
|
1299
|
+
contentType: 2,
|
|
1300
|
+
topicIds: topicIds,
|
|
1301
|
+
uids: uids,
|
|
1302
|
+
verifyPayType: 0,
|
|
1303
|
+
};
|
|
1304
|
+
|
|
1305
|
+
const options = {
|
|
1306
|
+
url: 'https://wxpusher.zjiecode.com/api/send/message',
|
|
1307
|
+
body: JSON.stringify(body),
|
|
1308
|
+
headers: {
|
|
1309
|
+
'Content-Type': 'application/json',
|
|
1310
|
+
},
|
|
1311
|
+
timeout,
|
|
1312
|
+
};
|
|
1313
|
+
|
|
1314
|
+
$.post(options, (err, resp, data) => {
|
|
1315
|
+
try {
|
|
1316
|
+
if (err) {
|
|
1317
|
+
console.log('wxpusher发送通知消息失败!\n', err);
|
|
1318
|
+
} else {
|
|
1319
|
+
if (data.code === 1000) {
|
|
1320
|
+
console.log('wxpusher发送通知消息完成!');
|
|
1321
|
+
} else {
|
|
1322
|
+
console.log(`wxpusher发送通知消息异常:${data.msg}`);
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
} catch (e) {
|
|
1326
|
+
$.logErr(e, resp);
|
|
1327
|
+
} finally {
|
|
1328
|
+
resolve(data);
|
|
1329
|
+
}
|
|
1330
|
+
});
|
|
1331
|
+
} else {
|
|
1332
|
+
resolve();
|
|
1333
|
+
}
|
|
1334
|
+
});
|
|
1335
|
+
}
|
|
1238
1336
|
|
|
1239
1337
|
function parseString(input, valueFormatFn) {
|
|
1240
1338
|
const regex = /(\w+):\s*((?:(?!\n\w+:).)*)/g;
|
|
@@ -1365,6 +1463,7 @@ async function sendNotify(text, desp, params = {}) {
|
|
|
1365
1463
|
webhookNotify(text, desp), // 自定义通知
|
|
1366
1464
|
qmsgNotify(text, desp), // 自定义通知
|
|
1367
1465
|
ntfyNotify(text, desp), // Ntfy
|
|
1466
|
+
wxPusherNotify(text, desp), // wxpusher
|
|
1368
1467
|
]);
|
|
1369
1468
|
}
|
|
1370
1469
|
|