mirror of
https://github.com/whyour/qinglong.git
synced 2025-05-23 06:46:09 +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启动脚本
73 lines
1.6 KiB
TypeScript
73 lines
1.6 KiB
TypeScript
import { Container } from 'typedi';
|
|
import { Crontab, CrontabStatus } from '../data/cron';
|
|
import CronService from '../services/cron';
|
|
|
|
const initData = [
|
|
{
|
|
name: '更新面板',
|
|
command: `sleep ${randomSchedule(60, 1)} && ql update`,
|
|
schedule: `${randomSchedule(60, 1)} ${randomSchedule(
|
|
24,
|
|
7,
|
|
).toString()} * * *`,
|
|
status: CrontabStatus.idle,
|
|
},
|
|
{
|
|
name: '重启并编译面板',
|
|
command: 'ql restart',
|
|
schedule: '30 7 */7 * *',
|
|
status: CrontabStatus.disabled,
|
|
},
|
|
{
|
|
name: '删除日志',
|
|
command: 'ql rmlog 7',
|
|
schedule: '30 7 */7 * *',
|
|
status: CrontabStatus.idle,
|
|
},
|
|
{
|
|
name: '互助码',
|
|
command: 'ql code',
|
|
schedule: '30 7 * * *',
|
|
status: CrontabStatus.idle,
|
|
},
|
|
];
|
|
|
|
export default async () => {
|
|
const cronService = Container.get(CronService);
|
|
const cronDb = cronService.getDb();
|
|
|
|
cronDb.count({}, async (err, count) => {
|
|
const data = initData.map((x) => {
|
|
const tab = new Crontab(x);
|
|
tab.created = new Date().valueOf();
|
|
tab.saved = false;
|
|
if (tab.name === '更新面板') {
|
|
tab.isSystem = 1;
|
|
} else {
|
|
tab.isSystem = 0;
|
|
}
|
|
return tab;
|
|
});
|
|
if (count === 0) {
|
|
cronDb.insert(data);
|
|
await cronService.autosave_crontab();
|
|
}
|
|
});
|
|
};
|
|
|
|
function randomSchedule(from: number, to: number) {
|
|
const result = [];
|
|
const arr = [...Array(from).keys()];
|
|
let count = arr.length;
|
|
for (let i = 0; i < to; i++) {
|
|
const index = ~~(Math.random() * count) + i;
|
|
if (result.includes(arr[index])) {
|
|
continue;
|
|
}
|
|
result[i] = arr[index];
|
|
arr[index] = arr[i];
|
|
count--;
|
|
}
|
|
return result;
|
|
}
|