diff --git a/back/api/cron.ts b/back/api/cron.ts index 702ebbeb..ee3f6e4e 100644 --- a/back/api/cron.ts +++ b/back/api/cron.ts @@ -147,8 +147,8 @@ export default (app: Router) => { '/crons', celebrate({ body: Joi.object({ - command: Joi.string().required(), - schedule: Joi.string().required(), + command: Joi.string().optional(), + schedule: Joi.string().optional(), name: Joi.string().optional(), _id: Joi.string().required(), }), @@ -156,7 +156,10 @@ export default (app: Router) => { async (req: Request, res: Response, next: NextFunction) => { const logger: Logger = Container.get('logger'); try { - if (cron_parser.parseExpression(req.body.schedule).hasNext()) { + if ( + !req.body.schedule || + cron_parser.parseExpression(req.body.schedule).hasNext() + ) { const cronService = Container.get(CronService); const data = await cronService.update(req.body); return res.send({ code: 200, data }); diff --git a/back/services/cron.ts b/back/services/cron.ts index f9135418..85bad819 100644 --- a/back/services/cron.ts +++ b/back/services/cron.ts @@ -121,7 +121,7 @@ export default class CronService { return new Promise((resolve) => { this.cronDb .find(query) - .sort({ created: 1 }) + .sort({ created: -1 }) .exec((err, docs) => { resolve(docs); }); diff --git a/package.json b/package.json index f4c7760d..f07b5b22 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ }, "devDependencies": { "@ant-design/pro-layout": "^6.5.0", + "@ant-design/icons": "^4.6.2", "@types/cors": "^2.8.10", "@types/express": "^4.17.8", "@types/express-jwt": "^6.0.1", diff --git a/sample/config.sample.sh b/sample/config.sample.sh index dc30b081..abec652d 100644 --- a/sample/config.sample.sh +++ b/sample/config.sample.sh @@ -36,6 +36,9 @@ HelpType="" ## 是否自动启动bot,默认不启动,设置为true时自动启动 AutoStartBot="" +## 安装bot依赖时指定pip源,默认使用清华源,如不需要源,设置此参数为空 +PipMirror="https://pypi.tuna.tsinghua.edu.cn/simple" + ## 需组合的环境变量列表,env_name需要和var_name一一对应,如何有新活动按照格式添加(不懂勿动) env_name=( JD_COOKIE diff --git a/shell/api.sh b/shell/api.sh index cd3be60a..af92af55 100755 --- a/shell/api.sh +++ b/shell/api.sh @@ -73,6 +73,38 @@ update_cron_api() { fi } +update_cron_command_api() { + local currentTimeStamp=$(date +%s) + if [ $# -eq 1 ]; then + local command=$(echo "$1" | awk -F ":" '{print $1}') + local id=$(echo "$1" | awk -F ":" '{print $2}') + else + local command=$1 + local id=$2 + fi + + local api=$( + curl -s "http://localhost:5600/api/crons?t=$currentTimeStamp" \ + -X 'PUT' \ + -H "Accept: application/json" \ + -H "Authorization: Bearer $token" \ + -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36" \ + -H "Content-Type: application/json;charset=UTF-8" \ + -H "Origin: http://localhost:5700" \ + -H "Referer: http://localhost:5700/crontab" \ + -H "Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7" \ + --data-raw "{\"command\":\"$command\",\"_id\":\"$id\"}" \ + --compressed + ) + code=$(echo $api | jq -r .code) + message=$(echo $api | jq -r .message) + if [[ $code == 200 ]]; then + echo -e "$name -> 更新成功" + else + echo -e "$name -> 更新失败(${message})" + fi +} + del_cron_api() { local ids=$1 local currentTimeStamp=$(date +%s) diff --git a/shell/bot.sh b/shell/bot.sh index 3bef23de..3f40121c 100644 --- a/shell/bot.sh +++ b/shell/bot.sh @@ -25,7 +25,9 @@ fi echo -e "\nbot文件下载成功...\n" echo -e "3、安装python3依赖...\n" -pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple +if [[ $PipMirror ]]; then + pip3 config set global.index-url $PipMirror +fi cp -f "$repo_path/jbot/requirements.txt" "$dir_root" pip3 --default-timeout=100 install -r requirements.txt --no-cache-dir echo -e "\npython3依赖安装成功...\n" diff --git a/shell/update.sh b/shell/update.sh index f8f90689..bc57e6ba 100755 --- a/shell/update.sh +++ b/shell/update.sh @@ -343,10 +343,14 @@ gen_list_repo() { fi for file in ${files}; do filename=$(basename $file) - cp -f $file $dir_scripts/${author}_${filename} - echo ${author}_${filename} >>"$dir_list_tmp/${repo}_scripts.list" + cp -f $file $dir_scripts/${repo}_${filename} + echo ${repo}_${filename} >>"$dir_list_tmp/${repo}_scripts.list" + cron_id=$(grep -E "$cmd_task ${author}_${filename}" $list_crontab_user | perl -pe "s|.*ID=(.*) $cmd_task ${author}_${filename}\.*|\1|") + if [[ $cron_id ]]; then + result=$(update_cron_command_api "$cmd_task ${repo}_${filename}:$cron_id") + fi done - grep -E "$cmd_task $author" $list_crontab_user | perl -pe "s|.*ID=(.*) $cmd_task ($author_.*)\.*|\2|" | awk -F " " '{print $1}' | sort -u >"$dir_list_tmp/${repo}_user.list" + grep -E "$cmd_task $repo" $list_crontab_user | perl -pe "s|.*ID=(.*) $cmd_task ($repo_.*)\.*|\2|" | awk -F " " '{print $1}' | sort -u >"$dir_list_tmp/${repo}_user.list" cd $dir_current } diff --git a/src/pages/crontab/index.tsx b/src/pages/crontab/index.tsx index c881cb60..df841b03 100644 --- a/src/pages/crontab/index.tsx +++ b/src/pages/crontab/index.tsx @@ -620,6 +620,8 @@ const Crontab = () => { hideOnSinglePage: true, showSizeChanger: true, defaultPageSize: 20, + showTotal: (total: number, range: number[]) => + `第 ${range[0]}-${range[1]} 条/总共 ${total} 条`, }} dataSource={value} rowKey="_id" diff --git a/src/pages/crontab/logModal.tsx b/src/pages/crontab/logModal.tsx index 6d990176..8ba42d73 100644 --- a/src/pages/crontab/logModal.tsx +++ b/src/pages/crontab/logModal.tsx @@ -6,6 +6,7 @@ import { Loading3QuartersOutlined, CheckCircleOutlined, } from '@ant-design/icons'; +import { Controlled as CodeMirror } from 'react-codemirror2'; enum CrontabStatus { 'running', @@ -98,9 +99,19 @@ const CronLogModal = ({ onOk={() => cancel()} onCancel={() => cancel()} > -
- {!loading && value} -+ {!loading && value && ( +