mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-23 14:56:07 +08:00

* 重构shell (#17) * 更新正则 * 更新update命令 * 移除测试代码 * 重构删除日志命令 * 更新entrypoint * 更新dockerfile * 完善shell调用 * 修复share shell引用 * 修复entrypoint * 修复share shell * 修复share.sh * 修改依赖重装逻辑 * 更新docker entrypoint * curl 使用静默模式 * 更新ql raw * 修复添加单个任务 * 修复shell语法 * 添加定时任务进程 * 更新默认定时任务 * 更新定时任务重启schedule * 更新青龙重启逻辑 * 修复定时任务列表创建 * 修复schedule进程 * 修复entrypoint * 更新task命令 * pm2 restart替换成reload * 修复task命令参数引入 * 完善ql repo命令 * 修复update.sh * 更新ql repo命令 * ql repo添加登录验证,修复package.json示例 * 修复定时任务命令补全 * 修改默认cron端口 * 修复cron日志弹框异常 * 修改cron新建label * 修复ql repo命令 * 修复cron格式验证 * 修改日志目录格式 * 修改青龙remote url * 修复添加定时cron匹配 * 添加定时任务超时时间设置 * 暂时移除timeout命令 * 恢复定时任务timeout * 修复cookie.sh引用 * 修复shell变量自加 * 修复ck更新状态同步 * 增加tg bot测试,修改增删任务通知 * 修复shell函数返回值 * 修改添加任务日志打印 * 修改entrypoint日志 * 修复api日志打印 * 修改api日志打印 * 定时任务支持批量启用禁用删除运行 * 修改cron管理操作按钮响应样式 * 更新bot启动脚本 * 更新bot启动脚本 * 增加timeout默认值,修改session管理逻辑 * 更新config示例和通知日志 * 更新bot.sh * 更新启动bot命令 * 更新启动bot命令 * 修复task运行参数合并 * 增加停止定时任务功能 * 修复停止定时任务api * 更新停止定时任务日志 * 更新停止任务日志 * 修复删除cron api * 更新删除cron通知文本 * 更新命令提示 * 更新bot启动脚本
152 lines
5.8 KiB
Bash
Executable File
152 lines
5.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
|
||
## 导入通用变量与函数
|
||
dir_shell=/ql/shell
|
||
. $dir_shell/share.sh
|
||
|
||
## 生成pt_pin清单
|
||
gen_pt_pin_array() {
|
||
local tmp1 tmp2 i pt_pin_temp
|
||
for ((user_num = 1; user_num <= $user_sum; user_num++)); do
|
||
tmp1=Cookie$user_num
|
||
tmp2=${!tmp1}
|
||
i=$(($user_num - 1))
|
||
pt_pin_temp=$(echo $tmp2 | perl -pe "{s|.*pt_pin=([^; ]+)(?=;?).*|\1|; s|%|\\\x|g}")
|
||
[[ $pt_pin_temp == *\\x* ]] && pt_pin[i]=$(printf $pt_pin_temp) || pt_pin[i]=$pt_pin_temp
|
||
done
|
||
}
|
||
|
||
## 导出互助码的通用程序,$1:去掉后缀的脚本名称,$2:config.sh中的后缀,$3:活动中文名称
|
||
export_codes_sub() {
|
||
local task_name=$1
|
||
local config_name=$2
|
||
local chinese_name=$3
|
||
local config_name_my=My$config_name
|
||
local config_name_for_other=ForOther$config_name
|
||
local i j k m n pt_pin_in_log code tmp_grep tmp_my_code tmp_for_other user_num random_num_list
|
||
if cd $dir_log/$task_name &>/dev/null && [[ $(ls) ]]; then
|
||
## 寻找所有互助码以及对应的pt_pin
|
||
i=0
|
||
pt_pin_in_log=()
|
||
code=()
|
||
pt_pin_and_code=$(ls -r *.log | xargs awk -v var="的$chinese_name好友互助码" 'BEGIN{FS="[( )】]+"; OFS="&"} $3~var {print $2,$4}')
|
||
for line in $pt_pin_and_code; do
|
||
pt_pin_in_log[i]=$(echo $line | awk -F "&" '{print $1}')
|
||
code[i]=$(echo $line | awk -F "&" '{print $2}')
|
||
let i++
|
||
done
|
||
|
||
## 输出My系列变量
|
||
if [[ ${#code[*]} -gt 0 ]]; then
|
||
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||
tmp_my_code=""
|
||
j=$((m + 1))
|
||
for ((n = 0; n < ${#code[*]}; n++)); do
|
||
if [[ ${pt_pin[m]} == ${pt_pin_in_log[n]} ]]; then
|
||
tmp_my_code=${code[n]}
|
||
break
|
||
fi
|
||
done
|
||
echo "$config_name_my$j='$tmp_my_code'"
|
||
done
|
||
else
|
||
echo "## 从日志中未找到任何互助码"
|
||
fi
|
||
|
||
## 输出ForOther系列变量
|
||
if [[ ${#code[*]} -gt 0 ]]; then
|
||
echo
|
||
case $HelpType in
|
||
0) ## 全部一致
|
||
tmp_for_other=""
|
||
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||
j=$((m + 1))
|
||
tmp_for_other="$tmp_for_other@\${$config_name_my$j}"
|
||
done
|
||
echo "${config_name_for_other}1=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
|
||
for ((m = 1; m < ${#pt_pin[*]}; m++)); do
|
||
j=$((m + 1))
|
||
echo "$config_name_for_other$j=\"\${${config_name_for_other}1}\""
|
||
done
|
||
;;
|
||
|
||
1) ## 均等助力
|
||
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||
tmp_for_other=""
|
||
j=$((m + 1))
|
||
for ((n = $m; n < $(($user_sum + $m)); n++)); do
|
||
[[ $m -eq $n ]] && continue
|
||
if [[ $((n + 1)) -le $user_sum ]]; then
|
||
k=$((n + 1))
|
||
else
|
||
k=$((n + 1 - $user_sum))
|
||
fi
|
||
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||
done
|
||
echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
|
||
done
|
||
;;
|
||
|
||
2) ## 本套脚本内账号间随机顺序助力
|
||
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||
tmp_for_other=""
|
||
random_num_list=$(seq $user_sum | sort -R)
|
||
j=$((m + 1))
|
||
for n in $random_num_list; do
|
||
[[ $j -eq $n ]] && continue
|
||
tmp_for_other="$tmp_for_other@\${$config_name_my$n}"
|
||
done
|
||
echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
|
||
done
|
||
;;
|
||
|
||
*) ## 按编号优先
|
||
for ((m = 0; m < ${#pt_pin[*]}; m++)); do
|
||
tmp_for_other=""
|
||
j=$((m + 1))
|
||
for ((n = 0; n < ${#pt_pin[*]}; n++)); do
|
||
[[ $m -eq $n ]] && continue
|
||
k=$((n + 1))
|
||
tmp_for_other="$tmp_for_other@\${$config_name_my$k}"
|
||
done
|
||
echo "$config_name_for_other$j=\"$tmp_for_other\"" | perl -pe "s|($config_name_for_other\d+=\")@|\1|"
|
||
done
|
||
;;
|
||
esac
|
||
fi
|
||
else
|
||
echo "## 未运行过 $task_name.js 脚本,未产生日志"
|
||
fi
|
||
}
|
||
|
||
## 汇总输出
|
||
export_all_codes() {
|
||
gen_pt_pin_array
|
||
echo -e "\n# 从日志提取互助码,编号和配置文件中Cookie编号完全对应,如果为空就是所有日志中都没有。\n\n# 即使某个MyXxx变量未赋值,也可以将其变量名填在ForOtherXxx中,jtask脚本会自动过滤空值。\n"
|
||
echo -n "# 你选择的互助码模板为:"
|
||
case $HelpType in
|
||
0)
|
||
echo "所有账号助力码全部一致。"
|
||
;;
|
||
1)
|
||
echo "所有账号机会均等助力。"
|
||
;;
|
||
2)
|
||
echo "本套脚本内账号间随机顺序助力。"
|
||
;;
|
||
*)
|
||
echo "按账号编号优先。"
|
||
;;
|
||
esac
|
||
for ((i = 0; i < ${#name_js[*]}; i++)); do
|
||
echo -e "\n## ${name_chinese[i]}:"
|
||
export_codes_sub "${name_js[i]}" "${name_config[i]}" "${name_chinese[i]}"
|
||
done
|
||
}
|
||
|
||
## 执行并写入日志
|
||
log_time=$(date "+%Y-%m-%d-%H-%M-%S")
|
||
log_path="$dir_code/$log_time.log"
|
||
make_dir "$dir_code"
|
||
export_all_codes | perl -pe "{s|京东种豆|种豆|; s|crazyJoy任务|疯狂的JOY|}" | tee $log_path
|