1
0
mirror of https://github.com/Oreomeow/VIP.git synced 2026-02-02 18:19:33 +08:00

Update with help_group 20220321

This commit is contained in:
Oreomeow
2022-03-21 16:29:28 +08:00
parent b1229c5e9b
commit ec48c795a1
6 changed files with 1518 additions and 609 deletions

View File

@@ -1,6 +1,6 @@
## Version: v2.8.0
## Date: 2021-06-20
## Mod: Build 20220302-002-test
## Mod: Build 20220313-001-test
## Update Content: 可持续发展纲要\n1. session管理破坏性修改\n2. 配置管理可编辑config下文件\n3. 自定义脚本改为查看脚本\n4. 移除互助相关
## 上面版本号中如果第2位数字有变化那么代表增加了新的参数如果只有第3位数字有变化仅代表更新了注释没有增加新的参数可更新可不更新
@@ -303,18 +303,24 @@ ZDJR_SCR="smiek_jd_zdjr.js"
## 13 Shell 版 Cookie 检测工具 ckck2 环境变量
## 13.1 推送失效账号、有效账号
### 赋值要求:填 1 表示只推送失效账号;
### 填 2 表示推送失效账号、有效账号;
### 空值或填其他内容表示不启用该功能。
### 填 2 表示推送失效账号、有效账号;
### 空值或填其他内容表示不启用该功能。
NOTIFY_VALID_CK_TYPE=""
## 13.2 如果本次检测的失效、有效账号与上次结果一致,则不通知
### 赋值要求:填 1 表示如果失效账号未变化,则不通知。空值或填其他内容表示不启用该功能。
NOTIFY_SKIP_SAME_CONTENT=""
## 13.3 预测和通知账号剩余有效期的检测和通知类型
## 13.3 预测和通知账号剩余有效期
## 13.3.1 预测和通知账号剩余有效期的检测和通知类型
### 赋值要求:填 1 表示预测和通知账号剩余有效期;
### 填 2 表示只预测不通知账号剩余有效期;
### 空值或填其他内容表示不启用该功能。
### 填 2 表示只预测不通知账号剩余有效期;
### 空值或填其他内容表示不启用该功能。
NOTIFY_VALID_TIME=""
## 13.4 (失效)JD_WSCK(wskey)相关
## 13.3.2 临期通知
### 自定义账号有效期不足N天时发出一对一通知
### 赋值要求:正整数数字,(单位:天);
### 空值表示不启用该功能。
NOTIFY_VALID_DAY=""
## 13.4 JD_WSCK(wskey)相关
## 13.4.1 (失效)检测到失效账号后是否搜索并运行 WSKEY 转换 Cookie 的脚本(需要 /ql/scripts 或其子路径已存在 wskey 转换脚本)
### 赋值要求:填 1 表示启用 WSKEY 转换 Cookie 功能。空值或其他值表示不启用该功能。
### WSKEY_TO_CK=""
@@ -332,9 +338,14 @@ NOTIFY_VALID_TIME=""
### CHECK_UPDATE_WSKEY_SCR=""
## 13.4.6 JD_WSCK(wskey) 未录入情况的检测和通知类型
### 赋值要求:填 1 表示检测和通知 JD_WSCK(wskey) 未录入情况;
### 填 2 表示只检测不通知 JD_WSCK(wskey) 未录入情况;
### 空值或填其他内容表示不启用该功能。
### 填 2 表示只检测不通知 JD_WSCK(wskey) 未录入情况;
### 空值或填其他内容表示不启用该功能。
NOTIFY_WSKEY_NO_EXIST=""
## 13.4.7 JD_WSCK(wskey) 提前转换 JD_COOKIE
### 当 JD_COOKIE 剩余有效期不足 N 小时,强制 JD_WSCK(wskey) 转换 JD_COOKIE
### 赋值要求:正整数数字,(单位:小时);
### 空值表示检测到 JD_COOKIE 过期失效后才启动转换。
WSKEY_UPDATE_VALIDITY_HOUR=""
### 13.5 是否自动重启生效 Cookie/是否自动禁用失效 Cookie
### 13.5.1 是否禁用失效 Cookie
### 赋值要求:任意赋值表示不自动禁用,空值表示自动禁用
@@ -344,32 +355,46 @@ export WSKEY_AUTO_DISABLE=""
export WSKEY_AUTO_ENABLE=""
## 13.6 将 JD_COOKIE 的 pt_pin 值的备注名同步 至 JD_WSCK(wskey) 的同 pin 值的备注名
### 赋值要求:填 1 表示同步;
### 空值或填其他内容表示不启用该功能。
### 空值或填其他内容表示不启用该功能。
WSKEY_REMARK_SYNC=""
## 13.7 WxPusher相关
## 说明:默认在 /ql/scripts/ 生成、更新 CK_WxPusherUid.json 文件,如果账号存在 UID ,可配合 ccwav 的 sendNotify.js 实现一对一推送
### 13.7.1 未录入 WxPusher UID 的账号。
### 赋值要求:填 1 表示检测并通知未录入 WxPusher UID 的账号;
### 填 2 表示只预测不通知未录入 WxPusher UID 的账号;
### 空值或填其他内容表示不启用该功能。
CK_WxPusherUid=""
### 填 2 表示只预测不通知未录入 WxPusher UID 的账号;
### 空值或填其他内容表示不启用该功能。
CK_WxPusherUid="2"
### 13.7.2 自动补全备注中的时间戳和UID
## 说明:当 CK_WxPusherUid.json 文件,中存在账号的 UID 且面板环境变量备注中缺少时间戳或 UID 时生效
### 赋值要求:填 1 表示补全;
### 空值或填其他内容表示不启用该功能。
### 空值或填其他内容表示不启用该功能。
SCANF_WXPusher_Remarks=""
### 13.7.3 WxPusher App Token用于一对一推送账号失效通知(同 ccwav 一对一通知环境变量,只可保留一个)。
### 格式为 AT_xxxx查看地址https://wxpusher.zjiecode.com/admin/main/app/appToken
#WP_APP_TOKEN_ONE=""
export WP_APP_TOKEN_ONE=""
### 13.7.4 WxPusher 主 UID主 UID 账号可以接收失效的第三者账号及其是否录入JD_WSCK(wskey)的信息。
### 格式为 UID_xxxx查看地址https://wxpusher.zjiecode.com/admin/main/wxuser/list
MainWP_UID=""
### 13.7.5 禁止通知 MainWP_UID 的模式
### 赋值要求:填 0 表示状态变化及有效期临期均不通知 MainWP_UID
### 填 1 表示状态变化通知 MainWP_UID有效期临期不通知 MainWP_UID
### 填 2 表示有效期临期通知 MainWP_UID状态变化不通知 MainWP_UID
### 空值或填其他内容表示状态变化及有效期临期均通知 MainWP_UID。
NOTIFY_DISABLE_MainWP_UID=""
### 13.7.6 指定时间段推送失效账号信息
### 当账号失效后,每天在指定的时间段运行脚本,一次或多次推送 WxPusher 一对一通知;
### 赋值要求:填 0 至 23 的单个正整数。例如NOTIFY_WxPusher_TIME="10"
### 填 0 至 23 的多个正整数。例如NOTIFY_WxPusher_TIME="10 15 20"
### 填 0 至 23 的数段。例如NOTIFY_WxPusher_TIME="8~10"或NOTIFY_WxPusher_TIME="8_10"或NOTIFY_WxPusher_TIME="8-10"
### 填以上模式的混合内容。例如NOTIFY_WxPusher_TIME="6 8~10 12-14 16_18"
### 空值或填其他内容表示不启用该功能。
NOTIFY_WxPusher_TIME=""
## 13.8 扩展通知
### 通知内容出现在正文顶部或末尾。支持 HTML 语言代码,仅支持 pushplus 、WxPusher 这些 HTML 代码通知的渠道
### 例如ExNotify_Top_Content='<iframe allowtransparency="true" frameborder="0" width="100%" height="auto" scrolling="yes" src="//tianqi.2345.com/plugin/widget/index.htm?s=2&z=1&t=0&v=0&d=5&bd=0&k=&f=&ltf=009944&htf=cc0000&q=1&e=1&a=1&c=54511&w=100%&h=auto&align=center"></iframe>'
### ExNotify_Bot_Content='NoLan服务器<a href="http://服务器地址:端口?key=HeaderKey">点击访问</a>'
ExNotify_Top_Content=''
ExNotify_Bot_Content=''
ExNotify_Bot_Content='<iframe allowtransparency="true" frameborder="0" width="100%" height="auto" scrolling="yes" src="//tianqi.2345.com/plugin/widget/index.htm?s=2&z=1&t=0&v=0&d=5&bd=0&k=&f=&ltf=009944&htf=cc0000&q=1&e=1&a=1&c=54511&w=100%&h=auto&align=center"></iframe>'
## 14 Shell 版公告 notify2 环境变量(WxPusher、企业微信应用、pushplus、hxtrip pushplus)
## 14.1 读取 WxPusher UID 的方式
@@ -753,7 +778,7 @@ export PUSH_PLUS_USER_hxtrip=""
### 手动建立CK_WxPusherUid.json,可以参考CKName_cache.json,只是nickName改成Uid
### 每个用户的uid可在管理台查看: https://wxpusher.zjiecode.com/admin/main/wxuser/list
### 另外: export WP_APP_ONE_TEXTSHOWREMARK="true",启用一对一推送标题显示备注信息,默认不启用.
export WP_APP_TOKEN_ONE=""
#export WP_APP_TOKEN_ONE=""
export WP_APP_ONE_TEXTSHOWREMARK=""
### CK_WxPusherUid.json 内容(pt_pin 如果是汉字需要填写转码后的!):
### [

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
## Version: v2.8.0
## Date: 2021-06-20
## Mod: Build 20220302-002-test
## Mod: Build 20220313-001-test
## Update Content: 可持续发展纲要\n1. session管理破坏性修改\n2. 配置管理可编辑config下文件\n3. 自定义脚本改为查看脚本\n4. 移除互助相关
## 上面版本号中如果第2位数字有变化那么代表增加了新的参数如果只有第3位数字有变化仅代表更新了注释没有增加新的参数可更新可不更新
@@ -303,18 +303,24 @@ ZDJR_SCR="smiek_jd_zdjr.js"
## 13 Shell 版 Cookie 检测工具 ckck2 环境变量
## 13.1 推送失效账号、有效账号
### 赋值要求:填 1 表示只推送失效账号;
### 填 2 表示推送失效账号、有效账号;
### 空值或填其他内容表示不启用该功能。
### 填 2 表示推送失效账号、有效账号;
### 空值或填其他内容表示不启用该功能。
NOTIFY_VALID_CK_TYPE=""
## 13.2 如果本次检测的失效、有效账号与上次结果一致,则不通知
### 赋值要求:填 1 表示如果失效账号未变化,则不通知。空值或填其他内容表示不启用该功能。
NOTIFY_SKIP_SAME_CONTENT=""
## 13.3 预测和通知账号剩余有效期的检测和通知类型
## 13.3 预测和通知账号剩余有效期
## 13.3.1 预测和通知账号剩余有效期的检测和通知类型
### 赋值要求:填 1 表示预测和通知账号剩余有效期;
### 填 2 表示只预测不通知账号剩余有效期;
### 空值或填其他内容表示不启用该功能。
### 填 2 表示只预测不通知账号剩余有效期;
### 空值或填其他内容表示不启用该功能。
NOTIFY_VALID_TIME=""
## 13.4 (失效)JD_WSCK(wskey)相关
## 13.3.2 临期通知
### 自定义账号有效期不足N天时发出一对一通知
### 赋值要求:正整数数字,(单位:天);
### 空值表示不启用该功能。
NOTIFY_VALID_DAY=""
## 13.4 JD_WSCK(wskey)相关
## 13.4.1 (失效)检测到失效账号后是否搜索并运行 WSKEY 转换 Cookie 的脚本(需要 /ql/scripts 或其子路径已存在 wskey 转换脚本)
### 赋值要求:填 1 表示启用 WSKEY 转换 Cookie 功能。空值或其他值表示不启用该功能。
### WSKEY_TO_CK=""
@@ -332,9 +338,14 @@ NOTIFY_VALID_TIME=""
### CHECK_UPDATE_WSKEY_SCR=""
## 13.4.6 JD_WSCK(wskey) 未录入情况的检测和通知类型
### 赋值要求:填 1 表示检测和通知 JD_WSCK(wskey) 未录入情况;
### 填 2 表示只检测不通知 JD_WSCK(wskey) 未录入情况;
### 空值或填其他内容表示不启用该功能。
### 填 2 表示只检测不通知 JD_WSCK(wskey) 未录入情况;
### 空值或填其他内容表示不启用该功能。
NOTIFY_WSKEY_NO_EXIST=""
## 13.4.7 JD_WSCK(wskey) 提前转换 JD_COOKIE
### 当 JD_COOKIE 剩余有效期不足 N 小时,强制 JD_WSCK(wskey) 转换 JD_COOKIE
### 赋值要求:正整数数字,(单位:小时);
### 空值表示检测到 JD_COOKIE 过期失效后才启动转换。
WSKEY_UPDATE_VALIDITY_HOUR=""
### 13.5 是否自动重启生效 Cookie/是否自动禁用失效 Cookie
### 13.5.1 是否禁用失效 Cookie
### 赋值要求:任意赋值表示不自动禁用,空值表示自动禁用
@@ -344,32 +355,46 @@ export WSKEY_AUTO_DISABLE=""
export WSKEY_AUTO_ENABLE=""
## 13.6 将 JD_COOKIE 的 pt_pin 值的备注名同步 至 JD_WSCK(wskey) 的同 pin 值的备注名
### 赋值要求:填 1 表示同步;
### 空值或填其他内容表示不启用该功能。
### 空值或填其他内容表示不启用该功能。
WSKEY_REMARK_SYNC=""
## 13.7 WxPusher相关
## 说明:默认在 /ql/scripts/ 生成、更新 CK_WxPusherUid.json 文件,如果账号存在 UID ,可配合 ccwav 的 sendNotify.js 实现一对一推送
### 13.7.1 未录入 WxPusher UID 的账号。
### 赋值要求:填 1 表示检测并通知未录入 WxPusher UID 的账号;
### 填 2 表示只预测不通知未录入 WxPusher UID 的账号;
### 空值或填其他内容表示不启用该功能。
CK_WxPusherUid=""
### 填 2 表示只预测不通知未录入 WxPusher UID 的账号;
### 空值或填其他内容表示不启用该功能。
CK_WxPusherUid="2"
### 13.7.2 自动补全备注中的时间戳和UID
## 说明:当 CK_WxPusherUid.json 文件,中存在账号的 UID 且面板环境变量备注中缺少时间戳或 UID 时生效
### 赋值要求:填 1 表示补全;
### 空值或填其他内容表示不启用该功能。
### 空值或填其他内容表示不启用该功能。
SCANF_WXPusher_Remarks=""
### 13.7.3 WxPusher App Token用于一对一推送账号失效通知(同 ccwav 一对一通知环境变量,只可保留一个)。
### 格式为 AT_xxxx查看地址https://wxpusher.zjiecode.com/admin/main/app/appToken
#WP_APP_TOKEN_ONE=""
export WP_APP_TOKEN_ONE=""
### 13.7.4 WxPusher 主 UID主 UID 账号可以接收失效的第三者账号及其是否录入JD_WSCK(wskey)的信息。
### 格式为 UID_xxxx查看地址https://wxpusher.zjiecode.com/admin/main/wxuser/list
MainWP_UID=""
### 13.7.5 禁止通知 MainWP_UID 的模式
### 赋值要求:填 0 表示状态变化及有效期临期均不通知 MainWP_UID
### 填 1 表示状态变化通知 MainWP_UID有效期临期不通知 MainWP_UID
### 填 2 表示有效期临期通知 MainWP_UID状态变化不通知 MainWP_UID
### 空值或填其他内容表示状态变化及有效期临期均通知 MainWP_UID。
NOTIFY_DISABLE_MainWP_UID=""
### 13.7.6 指定时间段推送失效账号信息
### 当账号失效后,每天在指定的时间段运行脚本,一次或多次推送 WxPusher 一对一通知;
### 赋值要求:填 0 至 23 的单个正整数。例如NOTIFY_WxPusher_TIME="10"
### 填 0 至 23 的多个正整数。例如NOTIFY_WxPusher_TIME="10 15 20"
### 填 0 至 23 的数段。例如NOTIFY_WxPusher_TIME="8~10"或NOTIFY_WxPusher_TIME="8_10"或NOTIFY_WxPusher_TIME="8-10"
### 填以上模式的混合内容。例如NOTIFY_WxPusher_TIME="6 8~10 12-14 16_18"
### 空值或填其他内容表示不启用该功能。
NOTIFY_WxPusher_TIME=""
## 13.8 扩展通知
### 通知内容出现在正文顶部或末尾。支持 HTML 语言代码,仅支持 pushplus 、WxPusher 这些 HTML 代码通知的渠道
### 例如ExNotify_Top_Content='<iframe allowtransparency="true" frameborder="0" width="100%" height="auto" scrolling="yes" src="//tianqi.2345.com/plugin/widget/index.htm?s=2&z=1&t=0&v=0&d=5&bd=0&k=&f=&ltf=009944&htf=cc0000&q=1&e=1&a=1&c=54511&w=100%&h=auto&align=center"></iframe>'
### ExNotify_Bot_Content='NoLan服务器<a href="http://服务器地址:端口?key=HeaderKey">点击访问</a>'
ExNotify_Top_Content=''
ExNotify_Bot_Content=''
ExNotify_Bot_Content='<iframe allowtransparency="true" frameborder="0" width="100%" height="auto" scrolling="yes" src="//tianqi.2345.com/plugin/widget/index.htm?s=2&z=1&t=0&v=0&d=5&bd=0&k=&f=&ltf=009944&htf=cc0000&q=1&e=1&a=1&c=54511&w=100%&h=auto&align=center"></iframe>'
## 14 Shell 版公告 notify2 环境变量(WxPusher、企业微信应用、pushplus、hxtrip pushplus)
## 14.1 读取 WxPusher UID 的方式
@@ -753,7 +778,7 @@ export PUSH_PLUS_USER_hxtrip=""
### 手动建立CK_WxPusherUid.json,可以参考CKName_cache.json,只是nickName改成Uid
### 每个用户的uid可在管理台查看: https://wxpusher.zjiecode.com/admin/main/wxuser/list
### 另外: export WP_APP_ONE_TEXTSHOWREMARK="true",启用一对一推送标题显示备注信息,默认不启用.
export WP_APP_TOKEN_ONE=""
#export WP_APP_TOKEN_ONE=""
export WP_APP_ONE_TEXTSHOWREMARK=""
### CK_WxPusherUid.json 内容(pt_pin 如果是汉字需要填写转码后的!):
### [

View File

@@ -0,0 +1,94 @@
#!/usr/bin/env bash
## 版本号
Ver="Build 20220319-001-Alpha"
## 导入通用变量与函数
dir_shell=/ql/shell
. $dir_shell/share.sh
#. $dir_shell/api.sh
downloda_repo_file() {
# 筛选主站链接
define_url() {
for i in $@; do
local url="$i"
local api=$(
curl -sI --connect-timeout 30 --retry 3 --noproxy "*" -o /dev/null -s -w %{http_code} "$url"
)
code=$(echo $api)
[[ $code == 200 || $code == 301 ]] && repo_host="$url" && break
done
}
## 文件下载工具
download_file() {
get_remote_filesize() {
local url="$1"
curl -sI --connect-timeout 30 --retry 3 --noproxy "*" "$url" | grep -i Content-Length | awk '{print $2}'
}
get_local_filesize() {
stat -c %s $1
}
get_md5() {
md5sum $1 | cut -d ' ' -f1
}
local url="$1"
local file_path="$2"
local file="${url##*/}"
local api=$(
curl -sI --connect-timeout 30 --retry 3 --noproxy "*" -o /dev/null -s -w %{http_code} "$url"
)
code=$(echo $api)
if [[ $code == 200 || $code == 301 ]]; then
retcode=$code
curl -C - -s --connect-timeout 30 --retry 3 --noproxy "*" "$url" -o $file_path/tmp_$file
if [[ -f "$file_path/tmp_$file" ]]; then
if [[ $(get_remote_filesize $url) -eq $(get_local_filesize $file_path/tmp_$file) ]]; then
if [[ -f "$file_path/$file" ]]; then
[[ "$(get_md5 $file_path/$file)" != "$(get_md5 $file_path/tmp_$file)" ]] && mv -f $file_path/tmp_$file $file_path/$file || rm -rf $file_path/tmp_$file
else
mv -f "$file_path/tmp_$file" "$file_path/$file"
fi
fi
fi
else
retcode="1"
fi
}
local ori_link=$1
local file_path=$2
local repo_host
# 主站链接数组
repo_host_array=(
https://raw.fastgit.org/
https://raw.githubusercontent.com/
)
define_url ${repo_host_array[@]}
if [ $repo_host ]; then
for i in $ori_link; do
file_link=$(echo $i | perl -pe '{s|(https?://[^/]+/)|'$repo_host'|}')
download_file $file_link $file_path
done
fi
}
ori_link="https://raw.githubusercontent.com/chiupam/JD_Diy/main/shell/bot.sh"
downloda_repo_file "$ori_link" "$dir_root"
if [[ $retcode != 1 ]]; then
sed -i "s|repo/diybot|repo/dockerbot|g" $dir_root/bot.sh
. $dir_root/bot.sh
sed -i "s|repo/diybot|repo/dockerbot|g" $dir_repo/dockerbot/shell/bot.sh
cp -r $dir_repo/dockerbot/config/botset.json /ql/jbot/set.json
ql bot
else
echo "无法链接下载文件,请稍后再试!"
fi

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
## Build 20220222-001-test
Ver="Build 20220314-001-Alpha"
## 导入通用变量与函数
dir_shell=/ql/shell
@@ -10,256 +10,256 @@ dir_shell=/ql/shell
# 定义 json 数据查询工具
def_envs_tool() {
for i in $@; do
. $dir_shell/api.sh
curl -s --noproxy "*" "http://0.0.0.0:5600/api/envs?searchValue=$i" -H "Authorization: Bearer $token" | jq .data | perl -pe "{s|^\[\|\]$||g; s|\n||g; s|\},$|\}\n|g}"
done
}
def_envs_match() {
def_envs_tool $1 | grep "$2" | jq -r .$3
def_envs_tool $1 | grep "$2" | jq -r .$3 | grep -v "null"
}
def_json_match() {
cat "$1" | perl -pe '{s|^\[\|\]$||g; s|\n||g; s|\},$|\}\n|g}' | grep "$2" | jq -r .$3
if [[ -f $1 ]]; then
if [[ $3 && $(cat "$1" | grep "$3") ]]; then
cat "$1" | perl -pe '{s|^\[\|\]$||g; s|\n||g; s|\},$|\}\n|g}' | grep "$2" | jq -r .$3 | grep -v "null"
else
cat "$1" | perl -pe '{s|^\[\|\]$||g; s|\n||g; s|\},$|\}\n|g}' | grep "$2" | grep -v "null"
fi
fi
}
def_json_value() {
cat "$1" | perl -pe "{s|^\[\|\]$||g; s|\n||g; s|\},$|\}\n|g}" | grep "$3" | jq -r .$2
if [[ -f $1 ]]; then
if [[ $(cat "$1" | grep "$2") ]]; then
cat "$1" | perl -pe "{s|^\[\|\]$||g; s|\n||g; s|\},$|\}\n|g}" | grep "$3" | jq -r .$2 | grep -v "null"
fi
fi
}
## WxPusher 通知 API
WxPusher_notify_api() {
local appToken=$1
local content=$2
local summary=$3
local uids=$4
local frontcontent=$5
local uids=$2
local title=$3
local summary=$4
local content=$5
local frontcontent=$6
local summary=$(echo -e "$title\n\n$summary" | perl -pe '{s|(\")|'\\'\\1|g; s|\n|<br>|g}')
[[ ${#summary} -ge 100 ]] && local summary="${summary:0:90} ……"
local content=$(echo -e "$title\n\n$content" | perl -pe '{s|(\")|'\\'\\1|g; s|\n|<br>|g}')
local url="http://wxpusher.zjiecode.com/api/send/message"
[[ ${#summary} -gt 100 ]] && local summary="${summary:0:90} ……"
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"appToken\":\"$appToken\",\"content\":\"$content\",\"summary\":\"$summary\",\"contentType\":\"2\",\"uids\":[$uids]}"
--data-raw "{\"appToken\":\"${appToken}\",\"content\":\"${content}\",\"summary\":\"${summary}\",\"contentType\":\"2\",\"uids\":[$uids]}"
)
code=$(echo $api | jq -r .code)
msg=$(echo $api | jq -r .msg)
if [[ $code == 1000 ]]; then
echo -e "# WxPusher 消息发送成功(${uids})\n"
echo -e "#$frontcontent WxPusher 消息发送成功(${uids})\n"
else
[[ ! $msg ]] && msg="访问 API 超时"
echo -e "# WxPusher 消息发送处理失败(${msg})\n"
echo -e "#$frontcontent WxPusher 消息发送处理失败(${msg})\n"
fi
}
## 企业微信应用通知 API
QYWX_GetToken_api() {
local corpid="$(echo $QYWX_AM | awk -F ',' '{print $1}')"
local corpsecret="$(echo $QYWX_AM | awk -F ',' '{print $2}')"
QYWX_notify_api() {
local corpid="$(echo $1 | awk -F ',' '{print $1}')"
local corpsecret="$(echo $1 | awk -F ',' '{print $2}')"
local userId="$(echo $1 | awk -F ',' '{print $3}')"
local agentid="$(echo $1 | awk -F ',' '{print $4}')"
local thumb_media_id="$(echo $1 | awk -F ',' '{print $5}')"
local author=$2
local title=$3
local digest=$4
local content=$5
local frontcontent=$6
local ACCESS_TOKEN
local digest=$(echo -e "$digest" | perl -pe '{s|(\")|'\\'\\1|g}')
local content=$(echo -e "$content" | perl -pe '{s|(\")|'\\'\\1|g; s|\n|<br>|g}')
local url="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=${corpid}&corpsecret=${corpsecret}"
local api=$(
curl -s --noproxy "*" "$url"
)
code=$(echo $api | jq -r .errcode)
msg=$(echo $api | jq -r .errmsg)
access_token=$(echo $api | jq -r .access_token)
local code=$(echo $api | jq -r .errcode)
local msg=$(echo $api | jq -r .errmsg)
if [[ $code == 0 ]]; then
ACCESS_TOKEN=${access_token}
fi
}
ACCESS_TOKEN=$(echo $api | jq -r .access_token)
local url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${ACCESS_TOKEN}"
QYWX_notify_api() {
local corpid="$(echo $QYWX_AM | awk -F ',' '{print $1}')"
local corpsecret="$(echo $QYWX_AM | awk -F ',' '{print $2}')"
local userId="$(echo $QYWX_AM | awk -F ',' '{print $3}')"
local agentid="$(echo $QYWX_AM | awk -F ',' '{print $4}')"
local thumb_media_id="$(echo $QYWX_AM | awk -F ',' '{print $5}')"
local title=$1
local content=$2
local digest=$3
local frontcontent=$4
local url="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=${ACCESS_TOKEN}"
if [[ $thumb_media_id ]]; then
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"touser\":\"$userId\",\"msgtype\":\"mpnews\",\"agentid\":\"$agentid\",\"mpnews\":{\"articles\":[{\"title\":\"$title\",\"thumb_media_id\":\"$thumb_media_id\",\"author\":\"$author\",\"content\":\"$content\",\"digest\":\"$digest\"}]}}"
)
else
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"touser\":\"$userId\",\"msgtype\":\"mpnews\",\"agentid\":\"$agentid\",\"mpnews\":{\"articles\":[{\"title\":\"$title\",\"thumb_media_id\":\"$thumb_media_id\",\"author\":\"$author\",\"content\":\"$content\",\"digest\":\"$digest\"}]}}"
)
fi
if [[ $thumb_media_id ]]; then
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"touser\":\"$userId\",\"msgtype\":\"mpnews\",\"agentid\":\"$agentid\",\"mpnews\":{\"articles\":[{\"title\":\"$title\",\"thumb_media_id\":\"$thumb_media_id\",\"author\":\"ckck2\",\"content\":\"$content\",\"digest\":\"$digest\"}]}}"
)
fi
code=$(echo $api | jq -r .errcode)
msg=$(echo $api | jq -r .errmsg)
if [[ $code == 0 ]]; then
echo -e "# 企业微信应用消息发送成功\n"
else
[[ ! $msg ]] && msg="访问 API 超时"
echo -e "# 企业微信应用消息发送处理失败(${msg})\n"
code=$(echo $api | jq -r .errcode)
msg=$(echo $api | jq -r .errmsg)
if [[ $code == 0 ]]; then
echo -e "#$frontcontent 企业微信应用消息发送成功\n"
else
[[ ! $msg ]] && msg="访问 API 超时"
echo -e "#$frontcontent 企业微信应用消息发送处理失败(${msg})\n"
fi
fi
}
## pushplus 通知 API
pushplus_notify_api() {
local token=$1
local title=$2
local content=$3
local topic=$4
local topic=$2
local title=$3
local content=$4
local frontcontent=$5
local content=$(echo -e "$content" | perl -pe '{s|(\")|'\\'\\1|g; s|\n|<br>|g}')
local url="http://www.pushplus.plus/send"
if [[ ${topic} ]]; then
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"token\":\"$token\",\"title\":\"$title\",\"content\":\"$content\",\"topic\":\"$topic\"}"
)
else
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"token\":\"$token\",\"title\":\"$title\",\"content\":\"$content\"}"
)
fi
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"token\":\"$token\",\"title\":\"$title\",\"content\":\"$content\"}"
)
code=$(echo $api | jq -r .code)
msg=$(echo $api | jq -r .msg)
if [[ $code == 200 ]]; then
echo -e "# pushplus 消息发送成功\n"
echo -e "#$frontcontent pushplus 消息发送成功\n"
else
if [[ $code == 500 ]]; then
msg="服务器宕机"
fi
[[ ! $msg ]] && msg="访问 API 超时"
echo -e "# pushplus 消息发送处理失败(${msg})\n"
echo -e "#$frontcontent pushplus 消息发送处理失败(${msg})\n"
fi
}
## hxtrip pushplus 通知 API
hxtrip_pushplus_notify_api() {
local token=$1
local title=$2
local content=$3
local topic=$4
local topic=$2
local title=$3
local content=$4
local frontcontent=$5
local content=$(echo -e "$content" | perl -pe '{s|(\")|'\\'\\1|g; s|\n|<br>|g}')
local url="http://pushplus.hxtrip.com/send"
if [[ ${topic} ]]; then
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"token\":\"$token\",\"title\":\"$title\",\"content\":\"$content\",\"topic\":\"$topic\"}"
)
else
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"token\":\"$token\",\"title\":\"$title\",\"content\":\"$content\"}"
)
fi
local api=$(
curl -s --noproxy "*" "$url" \
-X 'POST' \
-H "Content-Type: application/json" \
--data-raw "{\"token\":\"$token\",\"title\":\"$title\",\"content\":\"$content\"}"
)
code=$(echo $api | perl -pe '{s|.*<code>([\d]+)</code>.*|\1|g}')
msg=$(echo $api | perl -pe '{s|.*<msg>([\S]+)</msg>.*|\1|g}')
if [[ $code == 200 ]]; then
echo -e "# hxtrip pushplus 消息发送成功\n"
echo -e "#$frontcontent hxtrip pushplus 消息发送成功\n"
else
if [[ $code == 500 ]]; then
msg="服务器宕机"
fi
[[ ! $msg ]] && msg="访问 API 超时"
echo -e "# hxtrip pushplus 消息发送处理失败(${msg})\n"
echo -e "#$frontcontent hxtrip pushplus 消息发送处理失败(${msg})\n"
fi
}
Notify_to_Public() {
if [[ ${NOTICE_CONTENT} && ${NOTICE_SUMMARY} ]]; then
echo -e "# 公告标题:${NOTICE_TITLE}"
echo -e "# 公告摘要:${NOTICE_SUMMARY}"
echo -e "# 公告正文:${NOTICE_CONTENT}"
echo -e ""
local title summary content
title=$1
summary=$2
content=$3
local title=$(echo "$NOTICE_TITLE" | perl -pe '{s|(\")|'\\'\\1|g;}')
local content=$(echo "$NOTICE_CONTENT" | perl -pe '{s|(\")|'\\'\\1|g; s|\n|<br>|g}')
local summary=$(echo "$NOTICE_SUMMARY" | perl -pe '{s|(\")|'\\'\\1|g; s|\n|<br>|g}')
# WxPusher 公告
CK_WxPusherUid_dir="$dir_scripts"
CK_WxPusherUid_file="CK_WxPusherUid.json"
if [[ $Filter_Disabled_Variable = true ]]; then
if [[ $WxPusher_UID_src = 1 ]]; then
WxPusher_UID_Array=($(def_envs_match JD_COOKIE '"status": 0' remarks | grep -Eo 'UID_\w{28}'))
elif [[ $WxPusher_UID_src = 2 ]]; then
WxPusher_UID_Array=($(def_json_match "$CK_WxPusherUid_dir/$CK_WxPusherUid_file" '"status": 0' Uid | grep -Eo 'UID_\w{28}'))
fi
elif [[ $Filter_Disabled_Variable = false ]]; then
if [[ $WxPusher_UID_src = 1 ]]; then
WxPusher_UID_Array=($(def_envs_tool JD_COOKIE remarks | grep -Eo 'UID_\w{28}'))
elif [[ $WxPusher_UID_src = 2 ]]; then
WxPusher_UID_Array=($(def_json_value "$CK_WxPusherUid_dir/$CK_WxPusherUid_file" Uid | grep -Eo 'UID_\w{28}'))
fi
fi
if [[ $(echo $WP_APP_TOKEN_ONE | grep -Eo 'AT_(\w{32})') && ${#WxPusher_UID_Array[@]} -gt 0 ]]; then
uid="$(echo "${WxPusher_UID_Array[*]}" | perl -pe '{s|^|\"|; s| |\",\"|g; s|$|\"|}')"
WxPusher_notify_api $WP_APP_TOKEN_ONE "$title<br><br>$content" "$title<br><br>$summary" "$uid"
else
if [[ ! $(echo $WP_APP_TOKEN_ONE | grep -Eo 'AT_(\w{32})') ]]; then
echo -e "# 未填写 WxPusher 应用的 token (WP_APP_TOKEN_ONE),请检查后重试!"
fi
if [[ ${#WxPusher_UID_Array[@]} -eq 0 ]]; then
echo -e "# 未找到 WxPusher UID请检查后重试"
fi
fi
# 企业微信公告
if [[ $QYWX_AM ]]; then
QYWX_GetToken_api
if [[ $? = 0 ]]; then
QYWX_notify_api "$title" "$content" "$summary"
else
echo -e "# 未查询到企业微信 应用 Token请检查后重试"
fi
else
echo -e "# 未填写企业微信应用的 token (QYWX_AM),请检查后重试!"
fi
# pushplus 公告
if [[ $PUSH_PLUS_TOKEN && $PUSH_PLUS_USER ]]; then
pushplus_notify_api $PUSH_PLUS_TOKEN "$NOTICE_TITLE" "$content" $PUSH_PLUS_USER
else
if [[ ! $PUSH_PLUS_TOKEN ]]; then
echo -e "# 未填写 pushplus 的 token (PUSH_PLUS_TOKEN),请检查后重试!"
fi
if [[ ! $PUSH_PLUS_USER ]]; then
echo -e "# 未填写 hxtrip pushplus 的群组编码 (PUSH_PLUS_USER),请检查后重试!"
fi
fi
# hxtrip pushplus 公告
if [[ $PUSH_PLUS_TOKEN_hxtrip && $PUSH_PLUS_USER_hxtrip ]]; then
hxtrip_pushplus_notify_api $PUSH_PLUS_TOKEN_hxtrip "$title" "$content" $PUSH_PLUS_USER_hxtrip
else
if [[ ! $PUSH_PLUS_TOKEN_hxtrip ]]; then
echo -e "# 未填写 hxtrip pushplus 的 token (PUSH_PLUS_TOKEN),请检查后重试!"
fi
if [[ ! $PUSH_PLUS_USER_hxtrip ]]; then
echo -e "# 未填写 hxtrip pushplus 的群组编码 (PUSH_PLUS_USER_hxtrip),请检查后重试!"
fi
fi
if [[ ${title} ]]; then
echo -e "# 公告标题:${title}"
else
if [[ ! ${summary} ]]; then
echo -e "# 未填写公告摘要,请检查后重试!"
echo -e "# 未填写公告标题"
fi
if [[ ${summary} ]]; then
echo -e "# 公告摘要:${summary}"
else
echo -e "# 未填写公告摘要"
fi
if [[ ${content} ]]; then
echo -e "# 公告正文:${content}"
else
echo -e "# 未填写公告正文"
fi
echo -e ""
# WxPusher 公告
if [[ $Filter_Disabled_Variable = true ]]; then
if [[ $WxPusher_UID_src = 1 ]]; then
WxPusher_UID_Array=($(def_envs_match JD_COOKIE '"status": 0' remarks | grep -Eo 'UID_\w{28}'))
elif [[ $WxPusher_UID_src = 2 ]]; then
WxPusher_UID_Array=($(def_json_match "$dir_scripts/CK_WxPusherUid.json" '"status": 0' Uid | grep -Eo 'UID_\w{28}'))
fi
if [[ ! ${content} ]]; then
echo -e "# 未填写公告正文,请检查后重试!"
elif [[ $Filter_Disabled_Variable = false ]]; then
if [[ $WxPusher_UID_src = 1 ]]; then
WxPusher_UID_Array=($(def_envs_tool JD_COOKIE remarks | grep -Eo 'UID_\w{28}'))
elif [[ $WxPusher_UID_src = 2 ]]; then
WxPusher_UID_Array=($(def_json_value "$dir_scripts/CK_WxPusherUid.json" Uid | grep -Eo 'UID_\w{28}'))
fi
fi
if [[ $(echo $WP_APP_TOKEN_ONE | grep -Eo 'AT_(\w{32})') && ${#WxPusher_UID_Array[@]} -gt 0 ]]; then
uids="$(echo "${WxPusher_UID_Array[*]}" | perl -pe '{s|^|\"|; s| |\",\"|g; s|$|\"|}')"
WxPusher_notify_api "$WP_APP_TOKEN_ONE" "$uids" "$title" "$summary" "$content"
else
if [[ ! $(echo $WP_APP_TOKEN_ONE | grep -Eo 'AT_(\w{32})') ]]; then
echo -e "# 未填写 WxPusher 应用的 token (WP_APP_TOKEN_ONE),请检查后重试!"
fi
if [[ ${#WxPusher_UID_Array[@]} -eq 0 ]]; then
echo -e "# 未找到 WxPusher UID请检查后重试"
fi
fi
# 企业微信公告
if [[ $QYWX_AM ]]; then
QYWX_notify_api "$QYWX_AM" "Shell版公告工具notify2" "$title" "$summary" "$content"
else
echo -e "# 未填写企业微信应用的 token (QYWX_AM),请检查后重试!"
fi
# pushplus 公告
if [[ $PUSH_PLUS_TOKEN && $PUSH_PLUS_USER ]]; then
pushplus_notify_api "$PUSH_PLUS_TOKEN" "$PUSH_PLUS_USER" "$title" "$content"
else
if [[ ! $PUSH_PLUS_TOKEN ]]; then
echo -e "# 未填写 pushplus 的 token (PUSH_PLUS_TOKEN),请检查后重试!"
fi
if [[ ! $PUSH_PLUS_USER ]]; then
echo -e "# 未填写 hxtrip pushplus 的群组编码 (PUSH_PLUS_USER),请检查后重试!"
fi
fi
# hxtrip pushplus 公告
if [[ $PUSH_PLUS_TOKEN_hxtrip && $PUSH_PLUS_USER_hxtrip ]]; then
hxtrip_pushplus_notify_api "$PUSH_PLUS_TOKEN_hxtrip" "$PUSH_PLUS_USER_hxtrip" "$title" "$content"
else
if [[ ! $PUSH_PLUS_TOKEN_hxtrip ]]; then
echo -e "# 未填写 hxtrip pushplus 的 token (PUSH_PLUS_TOKEN),请检查后重试!"
fi
if [[ ! $PUSH_PLUS_USER_hxtrip ]]; then
echo -e "# 未填写 hxtrip pushplus 的群组编码 (PUSH_PLUS_USER_hxtrip),请检查后重试!"
fi
fi
}
Notify_to_Public
echo -e "# 当前版本:$Ver\n"
Notify_to_Public "${NOTICE_TITLE}" "${NOTICE_SUMMARY}" "${NOTICE_CONTENT}"

View File

@@ -0,0 +1,93 @@
#!/usr/bin/env bash
## 版本号
Ver="Build 20220319-001-Alpha"
## 导入通用变量与函数
dir_shell=/ql/shell
. $dir_shell/share.sh
#. $dir_shell/api.sh
downloda_repo_file() {
# 筛选主站链接
define_url() {
for i in $@; do
local url="$i"
local api=$(
curl -sI --connect-timeout 30 --retry 3 --noproxy "*" -o /dev/null -s -w %{http_code} "$url"
)
code=$(echo $api)
[[ $code == 200 || $code == 301 ]] && repo_host="$url" && break
done
}
## 文件下载工具
download_file() {
get_remote_filesize() {
local url="$1"
curl -sI --connect-timeout 30 --retry 3 --noproxy "*" "$url" | grep -i Content-Length | awk '{print $2}'
}
get_local_filesize() {
stat -c %s $1
}
get_md5() {
md5sum $1 | cut -d ' ' -f1
}
local url="$1"
local file_path="$2"
local file="${url##*/}"
local api=$(
curl -sI --connect-timeout 30 --retry 3 --noproxy "*" -o /dev/null -s -w %{http_code} "$url"
)
code=$(echo $api)
if [[ $code == 200 || $code == 301 ]]; then
retcode=$code
curl -C - -s --connect-timeout 30 --retry 3 --noproxy "*" "$url" -o $file_path/tmp_$file
if [[ -f "$file_path/tmp_$file" ]]; then
if [[ $(get_remote_filesize $url) -eq $(get_local_filesize $file_path/tmp_$file) ]]; then
if [[ -f "$file_path/$file" ]]; then
[[ "$(get_md5 $file_path/$file)" != "$(get_md5 $file_path/tmp_$file)" ]] && mv -f $file_path/tmp_$file $file_path/$file || rm -rf $file_path/tmp_$file
else
mv -f "$file_path/tmp_$file" "$file_path/$file"
fi
fi
fi
else
retcode="1"
fi
}
local ori_link=$1
local file_path=$2
local repo_host
# 主站链接数组
repo_host_array=(
https://raw.fastgit.org/
https://raw.githubusercontent.com/
)
define_url ${repo_host_array[@]}
if [ $repo_host ]; then
for i in $ori_link; do
file_link=$(echo $i | perl -pe '{s|(https?://[^/]+/)|'$repo_host'|}')
download_file $file_link $file_path
done
fi
}
ori_link="https://raw.githubusercontent.com/whyour/qinglong/develop/shell/bot.sh"
downloda_repo_file "$ori_link" "$dir_root"
if [[ $retcode != 1 ]]; then
[ -d $dir_repo/dockerbot ] && rm -rf $dir_repo/dockerbot
. $dir_root/bot.sh
pip3 install PrettyTable
ql bot
else
echo "无法链接下载文件,请稍后再试!"
fi