diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 473d4cfb..d05ef027 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -1,12 +1,13 @@ name: PublishDockerImage on: - workflow_run: - workflows: - - BuildStatic - branches: - - master - types: - - completed + workflow_dispatch: + # workflow_run: + # workflows: + # - BuildStatic + # branches: + # - master + # types: + # - completed jobs: build: diff --git a/back/loaders/express.ts b/back/loaders/express.ts index 92714249..3ef5cf83 100644 --- a/back/loaders/express.ts +++ b/back/loaders/express.ts @@ -15,7 +15,7 @@ export default ({ app }: { app: Application }) => { app.use(bodyParser.urlencoded({ limit: '50mb', extended: true })); app.use( jwt({ secret: config.secret as string, algorithms: ['HS384'] }).unless({ - path: ['/api/login'], + path: ['/api/login', '/api/crons/status'], }), ); app.use((req, res, next) => { diff --git a/docker/Dockerfile b/docker/Dockerfile index 951ca658..80315c16 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -37,8 +37,10 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && cp -f .env.example .env \ && chmod 777 ${QL_DIR}/shell/*.sh \ && chmod 777 ${QL_DIR}/docker/*.sh \ - && npm install -g pm2 \ && npm install -g pnpm \ + && pnpm install -g pm2 \ + && pnpm install -g ts-node \ + && pnpm i -g typescript \ && rm -rf /root/.npm \ && pnpm install --prod \ && rm -rf /root/.pnpm-store \ diff --git a/shell/task.sh b/shell/task.sh index ee922618..a4dbfb95 100755 --- a/shell/task.sh +++ b/shell/task.sh @@ -14,6 +14,8 @@ define_program() { which_program="python3" elif [[ $p1 == *.sh ]]; then which_program="bash" + elif [[ $p1 == *.ts ]]; then + which_program="ts-node" else which_program="" fi @@ -91,11 +93,19 @@ run_normal() { local begin_time=$(date '+%Y-%m-%d %H:%M:%S') echo -e "## 开始执行... $begin_time\n" | tee -a $log_path [[ $id ]] && update_cron "\"$id\"" "0" "$$" "$log_path" - . $file_task_before + if [[ $(. $file_task_before) ]]; then + . $file_task_before + else + echo -e "## task_before执行失败,自行检查\n" | tee -a $log_path + fi timeout $command_timeout_time $which_program $p1 2>&1 | tee -a $log_path - . $file_task_after + if [[ $(. $file_task_after) ]]; then + . $file_task_after + else + echo -e "## task_after执行失败,自行检查\n" | tee -a $log_path + fi [[ $id ]] && update_cron "\"$id\"" "1" "" "$log_path" local end_time=$(date '+%Y-%m-%d %H:%M:%S') local diff_time=$(($(date +%s -d "$end_time") - $(date +%s -d "$begin_time"))) @@ -125,7 +135,11 @@ run_concurrent() { local begin_time=$(date '+%Y-%m-%d %H:%M:%S') echo -e "## 开始执行... $begin_time\n" | tee -a $log_path [[ $id ]] && update_cron "\"$id\"" "0" "$$" "$log_path" - . $file_task_before + if [[ $(. $file_task_before) ]]; then + . $file_task_before + else + echo -e "## task_before执行失败,自行检查\n" | tee -a $log_path + fi echo -e "\n各账号间已经在后台开始并发执行,前台不输入日志,日志直接写入文件中。\n" | tee -a $log_path single_log_time=$(date "+%Y-%m-%d-%H-%M-%S.%N") @@ -135,7 +149,11 @@ run_concurrent() { timeout $command_timeout_time $which_program $p1 &>$single_log_path & done - . $file_task_after + if [[ $(. $file_task_after) ]]; then + . $file_task_after + else + echo -e "## task_after执行失败,自行检查\n" | tee -a $log_path + fi [[ $id ]] && update_cron "\"$id\"" "1" "" "$log_path" local end_time=$(date '+%Y-%m-%d %H:%M:%S') local diff_time=$(($(date +%s -d "$end_time") - $(date +%s -d "$begin_time"))) @@ -154,11 +172,19 @@ run_else() { local begin_time=$(date '+%Y-%m-%d %H:%M:%S') echo -e "## 开始执行... $begin_time\n" | tee -a $log_path [[ $id ]] && update_cron "\"$id\"" "0" "$$" "$log_path" - . $file_task_before + if [[ $(. $file_task_before) ]]; then + . $file_task_before + else + echo -e "## task_before执行失败,自行检查\n" | tee -a $log_path + fi timeout $command_timeout_time "$@" 2>&1 | tee -a $log_path - . $file_task_after + if [[ $(. $file_task_after) ]]; then + . $file_task_after + else + echo -e "## task_after执行失败,自行检查\n" | tee -a $log_path + fi [[ $id ]] && update_cron "\"$id\"" "1" "" "$log_path" local end_time=$(date '+%Y-%m-%d %H:%M:%S') local diff_time=$(($(date +%s -d "$end_time") - $(date +%s -d "$begin_time"))) diff --git a/shell/update.sh b/shell/update.sh index e1003f2f..423fa46e 100755 --- a/shell/update.sh +++ b/shell/update.sh @@ -234,15 +234,9 @@ usage() { ## 更新qinglong update_qinglong() { - local no_restart="$1" - echo -e "--------------------------------------------------------------\n" - if [ -f /ql/db/cookie.db ]; then - echo -e "检测到旧的db文件,拷贝为新db...\n" - mv /ql/db/cookie.db /ql/db/env.db - rm /ql/db/cookie.db - echo - fi + patch_version + local no_restart="$1" [ -f $dir_root/package.json ] && ql_depend_old=$(cat $dir_root/package.json) reset_romote_url ${dir_root} "${github_proxy_url}https://github.com/whyour/qinglong.git" git_pull_scripts $dir_root @@ -272,9 +266,8 @@ update_qinglong() { fi if [[ $exit_status -eq 0 ]]; then echo -e "\n更新$ql_static_repo成功...\n" - cd $ql_static_repo - commit_id=$(git rev-parse --short HEAD) - echo -e "\n当前静态资源版本 $commit_id...\n" + local static_version=$(cat /ql/src/version.ts | perl -pe "s|.*\'(.*)\';\.*|\1|" | head -1) + echo -e "\n当前版本 $static_version...\n" cd $dir_root rm -rf $dir_root/build && rm -rf $dir_root/dist cp -rf $ql_static_repo/* $dir_root @@ -290,6 +283,20 @@ update_qinglong() { } +patch_version() { + if [ -f /ql/db/cookie.db ]; then + echo -e "检测到旧的db文件,拷贝为新db...\n" + mv /ql/db/cookie.db /ql/db/env.db + rm /ql/db/cookie.db + echo + fi + + if ! type ts-node >/dev/null 2>&1; then + pnpm i -g ts-node + pnpm i -g typescript + fi +} + reload_pm2() { pm2 l >/dev/null 2>&1