whyour
ca347c5854
修复非 root 用户更新时区和 linux 配置
2026-05-31 16:48:13 +08:00
whyour
4bee3fbdf4
修复 getCronById api status
2026-05-31 15:53:24 +08:00
whyour
b6537e27ef
update mirror action
2026-05-31 15:04:10 +08:00
Copilot
0e5b8bef4b
Fix HITOKOTO parameter boolean/string type handling ( #2918 )
...
* Initial plan
* Fix HITOKOTO parameter type mismatch in notify scripts
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Refactor JavaScript HITOKOTO check for consistency with Python
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-05-31 14:26:57 +08:00
Copilot
e06c3571a8
Fix undefined error in serverNotify when Server酱 returns error responses ( #2917 )
...
* Initial plan
* Fix: Replace data.data.errno with data.code to prevent undefined error
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-05-31 14:25:51 +08:00
whyour
c2eac8b8fd
移除未使用配置
2026-05-31 00:36:54 +08:00
jmclulu
3aab1233bb
fix: correct typos in source code and locales ( #3003 )
...
- Fix Countrys -> Countries in comment
- Fix Scrolldown -> ScrollDown in variable name
- Fix completeTowFactor -> completeTwoFactor (3x)
- Fix deactiveTowFactor -> deactivateTwoFactor (3x)
- Fix activeOrDeactiveTwoFactor -> activeOrDeactivateTwoFactor
- Fix API route /two-factor/deactive -> /two-factor/deactivate
- Fix elment -> element in function param
- Fix synolog -> synology in comment
- Fix Chinese comment 制定 -> 指定
- Fix swapped BARK English translations on lines 360-361
2026-05-31 00:32:04 +08:00
whyour
2fe9470ff0
fix: gRPC extra_schedules 为空时序列化报错 not iterable
2026-05-31 00:14:22 +08:00
whyour
abad29cbf9
修复非 root debian dockerfile
2026-05-30 23:55:57 +08:00
whyour
84d730d510
统一 Alpine/Debian 分支,QL_SCHEDULER 参数化调度
...
* 修改获取示例文件 api path
* 增加 debian-slim 基础镜像
* 修复 debian apt 命令,支持 qinglong 命令
* 更新 npm 版本 0.7.7
* 更新 npm v0.8.4
* 修复linux依赖检测 (#2082 )
* 修复拉取私有仓库
* 修复 shell check_server
* 修复 qinglong 命令
* 更新 npm 版本 v0.13.2
* 增加 debian 开发版本
* 修改切换 linux 镜像源
* 修复 qinglong 命令
* 移除 qinglong 命令 npm 默认镜像源
* 修复 workflow
* 更新 npm 版本 v0.14.5
* 增加 npx 命令
* 更新 workflow action 版本
* 更新 npm 版本 v0.16.0
* 修复 linux 镜像源
* 更新 npm 版本 v0.17.0
* 更新 npm 版本 v0.18.0
* 修改 npm 安装启动命令
* 更新 npm 版本 v0.19.9
* 修复 debian netcat 包名
* 更新 npm 版本 v0.20.4
* 安装 linux 依赖自动识别 alpine 和 debian
* 修改 apt 命令
* 更新 npm 版本 v0.21.2
* 修改 ts 文件执行依赖
* npm 启动增加 reload 逻辑
* 更新 npm 版本 v2.17.8
* 修复 qinglong 命令
* 更新 npm 版本 v2.17.9
* 更新 npm 版本 v2.17.10
* 更新 npm 版本 v2.17.11
* 修改 debian 版本为 12 bookworm
* 更新 npm 版本 v2.17.12
* 修改本地服务启动提示
* 更新 npm 版本 v2.17.13
* 写入文件增加文件锁
* 修复系统安装依赖提示
* 更新 npm 版本 v2.18.2-6
* 更新 nodejs 版本
* 更新 npm 版本 v2.18.3-3
* 修复 command 变量
* 移除自动清除 deb
* 修复 npm 启动脚本
* 修复发布 npm包依赖文件
* 修改 linux 启动文件逻辑
* 更新 npm 版本 v2.19.0-10
* 修复 apt 命令
* 更新 npm 版本 v2.19.1-0
* 更新 npm 版本 v2.19.2-2
* 增加 packageManager
* 增加用户 qinglong
* 更新 pipeline
* 移除 init_nginx
* 更新 npm 版本 v2.20.0
* 更新 npm 版本 2.20.1
* 更新 npm 版本 2.20.2
* fix: 修复非 root 用户启动
* chore: 合并 debian 和 alpine 逻辑
---------
Co-authored-by: dream10201 <xiuxiu10201@gmail.com>
2026-05-30 18:03:51 +08:00
whyour
57d58c871e
fix: isolate task node dependencies
2026-05-24 01:40:07 +08:00
whyour
bb6d436c19
fix: run scripts from their own directory
2026-05-24 00:15:24 +08:00
whyour
8bc0906949
feat: add environment variable labels
2026-05-23 23:21:38 +08:00
Copilot
7a8917f8e4
Fix CodeMirror "multiple instances of @codemirror/state" crash on page navigation ( #2969 )
...
* Initial plan
* Fix CodeMirror multiple instances error by pinning to single versions
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-05-23 20:48:10 +08:00
whyour
66f9457be8
ci: replace hub-mirror-action with direct git push for Gitee sync
...
Replace Yikun/hub-mirror-action with manual git push for Gitee mirrors. The action HTTPS API call to gitee.com timed out (60s). Use set +e with explicit notice/warning status. Also add .deepseek/ to .gitignore.
2026-05-18 01:05:46 +08:00
whyour
0c5e3b5d04
ci: update workflow actions
2026-05-18 00:12:22 +08:00
whyour
400e4770de
修复环境变量 position 数据类型可能异常
2026-05-17 23:53:43 +08:00
whyour
40d4de9017
增加 localhost 检测
2026-05-17 23:43:09 +08:00
whyour
3464c4da61
fix IPv6 connectivity
2026-05-06 01:29:01 +08:00
Max
1315578878
支持自定义接收邮箱地址 ( #2973 )
...
* 支持自定义接收邮箱地址
* 新增支持多个接收邮箱,同步到node和系统内置版本
2026-05-06 00:34:26 +08:00
TengDream
a1ae08da58
fix: create root .tmp directory on init for data export ( #2993 )
...
The data export feature (system backup) writes data.tgz to
`config.tmpPath` which resolves to `<rootPath>/.tmp/`. However,
`initFile.ts` only created `<dataPath>/log/.tmp/` (used for crontab
list temp files), never the root-level `.tmp/` directory.
In Docker deployments, `shell/share.sh`'s `fix_config()` creates
`$dir_root/.tmp` during shell initialization, but local/non-Docker
deployments that start the Node service directly skip the shell init,
causing a 404 ENOENT error when attempting to export/backup data.
Add `rootTmpPath` (`<rootPath>/.tmp/`) to the directories array in
`initFile.ts` so it is created during Node service startup regardless
of deployment method.
2026-05-06 00:32:29 +08:00
Copilot
66700ebe1a
Add OpeniLink notification channel ( #2988 )
...
* Initial plan
* Add OpeniLink notification channel support
Agent-Logs-Url: https://github.com/whyour/qinglong/sessions/c80b4882-1bd7-4ffe-9180-cd3220da5986
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add context_token and hub_url to OpeniLink notification channel
Agent-Logs-Url: https://github.com/whyour/qinglong/sessions/a5e66f5a-dab8-4a65-96ca-960d35fa9d50
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-04-25 16:01:36 +08:00
Copilot
07bf0c705b
fix: respect QlPort env var in Docker health check ( #2963 )
...
* Initial plan
* fix: use QlPort env variable in health check with fallback to default 5700
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2026-03-11 20:43:56 +08:00
whyour
fd516977e3
chore: upgrade nodemailer
2026-03-07 22:35:18 +08:00
whyour
c39f4ef846
chore: 更新 multer,解决 cve 漏洞
2026-03-07 21:31:24 +08:00
whyour
275d8af4e2
更新版本 v2.20.2
2026-03-01 20:35:25 +08:00
whyour
544c432f49
修复 PATH 环境变量
2026-03-01 20:35:19 +08:00
Copilot
6bec52dca1
Fix /open/user/init auth bypass allowing credential reset on initialized systems ( #2941 )
...
* Initial plan
* fix: add /open/user/init paths to init guard to prevent auth bypass
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
Co-authored-by: whyour <imwhyour@gmail.com>
2026-03-01 18:02:21 +08:00
rockymelody
ce599d306f
青龙面板鉴权绕过漏洞已修复 ( #2935 )
...
已实施的安全加固措施
第一层防御:启用Express严格路由(第17-18行)
app.set('case sensitive routing', true); // 路由大小写敏感
app.set('strict routing', true); // 严格路由匹配
第二层防御:路径标准化检查中间件(第23-37行)
app.use((req, res, next) => {
const originalPath = req.path;
const normalizedPath = originalPath.toLowerCase();
// 检测并拦截大小写混淆攻击
if (originalPath !== normalizedPath &&
(normalizedPath.startsWith('/api/') || normalizedPath.startsWith('/open/'))) {
return res.status(400).json({
code: 400,
message: 'Invalid path format'
});
}
next();
});
作用:主动检测并拒绝含有大小写变体的恶意请求
第三层防御:JWT中间件正则表达式修复(第59行)
// 修复前:
path: [...config.apiWhiteList, /^\/(?!api\/).*/],
// 修复后:添加大小写不敏感标志 'i'
path: [...config.apiWhiteList, /^(\/(?!api\/).*)$/i],
作用:防御正则匹配层面的绕过
第四层防御:自定义Token中间件路径标准化(第74-87行)
// 修复前:
if (!['/open/', '/api/'].some((x) => req.path.startsWith(x))) {
// 修复后:统一转小写比较
const pathLower = req.path.toLowerCase();
if (!['/open/', '/api/'].some((x) => pathLower.startsWith(x))) {
}
作用:确保Token验证逻辑对所有路径变体生效
第五层防御:初始化接口路径检查修复(第122-123行)
// 修复前:
if (!['/api/user/init', '/api/user/notification/init'].includes(req.path)) {
// 修复后:
const pathLower = req.path.toLowerCase();
if (!['/api/user/init', '/api/user/notification/init'].includes(pathLower)) {
2026-03-01 17:44:03 +08:00
whyour
d53437d169
更新 2.20.1
2025-12-26 21:17:30 +08:00
whyour
d526602d19
修复运行中任务停止操作
2025-12-26 01:07:08 +08:00
whyour
91b44914f6
修复环境变量排序
2025-12-26 00:41:32 +08:00
whyour
4f6c93cc1c
更新 workflow
2025-12-24 01:03:21 +08:00
whyour
e326d89571
修复 apiWhiteList 路径
2025-12-23 00:58:09 +08:00
whyour
5f0dafa010
修复 cron-parser import,websocket basepath
2025-12-23 00:28:16 +08:00
Copilot
dc0b3f2eb2
Fix QlBaseUrl: use URL rewrite for base path support ( #2876 )
...
* Initial plan
* Add QlBaseUrl support to backend routes
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Fix whitelist check to use base-URL-aware paths
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Update websocket and frontend to support base URL
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Address code review feedback: fix JWT regex and path construction
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Fix path construction: use req.path directly for whitelist check
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add clarifying comments and improve code readability
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Apply code review suggestions: improve clarity and simplify logic
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Simplify baseUrl implementation using URL rewrite
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-12-22 23:44:29 +08:00
Copilot
3db716763d
Fix cron-parser v5 bundling incompatibility causing validation failures ( #2877 )
...
* Initial plan
* Fix: Use default import for cron-parser to ensure browser compatibility
Changed from named export `{ CronExpressionParser }` to default export `cronParser` and access `CronExpressionParser` through it. This ensures compatibility with webpack/UmiJS bundling for browser environments while maintaining backend functionality.
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-12-22 23:43:54 +08:00
Copilot
fae226745e
Add missing larkSecret field to gRPC NotificationInfo proto ( #2880 )
...
* Initial plan
* Add larkSecret field to NotificationInfo proto definition
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-12-22 23:38:42 +08:00
Copilot
9330650163
Fix TG_PROXY_AUTH concatenation in notify.js - add missing @ separator ( #2882 )
...
* Initial plan
* Fix TG_PROXY_AUTH handling in notify.js to match notify.py logic
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Apply prettier formatting to notify.js
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-12-22 23:05:06 +08:00
Copilot
073de76a4a
Fix validation error when saving scripts in debug window (v2.20.0 regression) ( #2862 )
...
* 更新版本 2.20.0
* Initial plan
* Fix validation error when saving scripts by allowing unknown fields in POST /scripts
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Revert version.yaml to 2.19.2 - should not include version bump in bug fix PR
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: whyour <imwhyour@gmail.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-12-22 22:43:48 +08:00
Copilot
c61d1aa828
Fix enum value 0 causing type filter to fail for NodeJS dependencies ( #2869 )
...
* Initial plan
* Fix: Prevent Python3 dependencies from appearing in NodeJs tab
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-12-15 18:21:14 +08:00
whyour
33fa3aca99
更新版本 2.20.0
2025-12-11 01:53:17 +08:00
whyour
c772fc9527
修复脚本调试保存文件错误
2025-12-11 01:52:47 +08:00
whyour
c5d2aa3aba
更新 pipeline
2025-12-10 00:34:35 +08:00
Copilot
02a05f06bd
Add signature verification support for Feishu bot notifications ( #2856 )
...
* Initial plan
* Add signature verification support for Feishu bot notifications
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add clarifying comments about Feishu signature algorithm
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add i18n translations for larkSecret configuration field
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-11-27 01:10:04 +08:00
whyour
3b0f55caf4
修复任务实例默认值
2025-11-23 12:45:02 +08:00
Copilot
6a3dd4f83c
Fix null log_name issue by omitting it from shell command when not set ( #2849 )
...
* Initial plan
* Fix null log_name handling in runSingle method
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Update cron.log_name before makeCommand to avoid passing null to shell
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Fix: Only pass log_name to shell when it has a value
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Fix uniqPath calculation in runSingle for null log_name
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Improve comment clarity in makeCommand
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Refactor: Move no_tee and ID to initial commandVariable declaration
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Refactor: Simplify uniqPath ternary expression
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-11-22 12:06:01 +08:00
whyour
177cd3de81
更新 docker 日志
2025-11-22 01:05:28 +08:00
Copilot
d473c3ae88
Fix SSH global private key matching before subscription-specific keys ( #2845 )
...
* Initial plan
* Fix SSH global private key loading order by using zzz_ prefix
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Use tilde (~) prefix for global SSH config to ensure it loads last
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-11-21 01:53:58 +08:00
Copilot
ee2fbe5335
Add global SSH key configuration in system settings ( #2840 )
...
* Initial plan
* Add backend support for global SSH keys
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add frontend UI for global SSH keys management
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add SshKeyModel to database initialization
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add SSH config generation for global SSH keys
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Add internationalization support for SSH key management UI
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
* Simplify to single global SSH key in system settings
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: whyour <22700758+whyour@users.noreply.github.com>
2025-11-20 10:09:01 +08:00