91 Commits

Author SHA1 Message Date
耗子 be938a4814 chore: 移除 unroll-variadic 采用 mockery v3 默认的可变参数整体匹配
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 17:41:19 +08:00
耗子 3ce353e8e4 chore: 升级 Go 1.27 并迁移 mockery v3 修复 CI
mockery v2 已 EOL,其内嵌的旧版 x/tools 无法解析 Go 1.27 的 export data,
导致 Mockery workflow 在 stable 切到 1.27.0 后持续失败。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 17:37:38 +08:00
h2zi 19372d68ce chore: update mocks 2026-08-15 12:55:50 +00:00
耗子 e8f7811aba feat: 重构 CLI 命令并补全缺失功能
website create 未传网站类型导致必然失败,补全类型、代理地址、
数据库、备注等参数,并在进入 biz 层前统一走验证器校验。

新增命令:
- firewall status/on/off/list/port
- cert list/renew
- restore panel
- website cert/list,user create/delete
- backup list,app list,cron list/run/status
- database list-server

调整:
- 密码取值改为参数 > ACEPANEL_PASSWORD > 交互输入(不回显)
- 补 bind-domain/bind-ip/bind-ua 的 on 子命令
- 新增全局 --json,接入全部 list 命令
- port 支持 flag 写法,info 支持 -u 指定用户
- 位置参数命令补 ArgsUsage

修复:
- cutoff clear 清理远程日志时目录与上传路径不一致,导致远程切割
  日志从未被清理,ClearStorageExpired 改为接收目标目录
- restore 缺少 panel 分支,从 FixPanel 抽出 restorePanel 复用

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-15 19:30:11 +08:00
h2zi 882103bb14 chore: update mocks 2026-08-14 23:03:22 +00:00
耗子 2a63a022e0 refactor: 重写宝塔与 1Panel 迁移
对照宝塔 11.0 与 1Panel v2 源码核实全部接口与字段,删除凭空猜测的兼容分支:
status 别名表、key/Key/k 环境变量、msg/message 双兼容、字符串二次解析、
下载重试 180 次、归档 magic 校验、残留资源清单。

按分层重新组织:service 只处理 HTTP,编排与导入下沉到 biz,两个适配器共享
HTTP 客户端,助手函数与正则收进各自结构体。容器与 Compose 迁移不再支持。

顺带修复宝塔 GetSSL 在未开启 SSL 时被误判为接口失败,以及备份完成后才恢复
来源导致停机时间过长。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 21:26:16 +08:00
h2zi 69072ac60f chore: update mocks 2026-08-14 10:58:30 +00:00
h2zi faf3648a78 chore: update mocks 2026-08-12 17:17:57 +00:00
h2zi ddabbc2fee chore: update mocks 2026-08-12 17:12:20 +00:00
耗子 2fed89539a feat: 网站支持按设置监听 IPv6 2026-08-12 19:45:49 +08:00
h2zi 49125becf3 chore: update mocks 2026-08-12 07:58:47 +00:00
耗子 4e28fc60a3 feat: 添加通知与告警模块
- 通知渠道支持配置多个 SMTP 账号,配置整体加密落库,删除时清理规则与事件设置中的引用
- 告警规则支持 18 种指标:CPU/内存/Swap/负载/磁盘用量与 inode/磁盘与网卡速率/网站 5xx 与错误率、
  服务与项目与容器与应用与数据库运行状态、证书与网站剩余天数,可配连续命中次数与静默期
- 系统事件通知覆盖证书续签失败、备份失败、后台任务失败、计划任务失败、网站到期、防篡改拦截、
  面板健康问题、面板登录与爆破、SSH 登录与爆破
- 计划任务统一经 wrapper 执行以捕获退出码,flock 抢锁失败不计为失败
- 监控页改造为系统/告警/设置三 Tab
- 数据库驱动建连打通 context 并补齐连接超时,探测不再阻塞告警评估

close #1041

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-25 22:45:51 +08:00
h2zi f5eea8b4a9 chore: update mocks 2026-07-21 10:55:55 +00:00
耗子 a2e46faab9 feat(task): 任务队列支持取消运行中与等待中的任务
任务执行接入 context 并放入独立进程组,取消时整组杀死;
新增可选 CancelShell 清理钩子,远程下载、压缩、备份任务
取消后自动清理残留文件,备份改用独享临时目录避免误伤并发备份;
防重改为按语言无关的任务标识 Key 匹配

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 23:16:49 +08:00
耗子 8fa5c6d881 feat(file): 文件分享下载支持面板间互传
生成免登录的临时下载链接,强制设置有效期并支持下载次数限制,
过期分享由定时任务每小时清理,链接可直接用于其他面板的远程下载。

Closes #1641

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 22:47:11 +08:00
耗子 874abf005d feat(app): 应用安装支持自定义编译参数
编译型应用与 PHP/Python 环境支持持久化的前置脚本与 configure 参数,
保存在 storage/customize 随安装更新自动生效,并接入面板备份与修复

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 06:27:39 +08:00
h2zi 2b28b16338 chore: update mocks 2026-07-19 20:21:37 +00:00
耗子 90b37f5e6a feat(ssh): 终端支持主机间 SFTP 文件互传
终端窗口新增文件传输标签页,双栏浏览任意主机(含面板本机)目录,
选中文件后通过面板中转互传,传输队列实时展示进度速度并支持取消

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 03:05:51 +08:00
耗子 1ca986e779 feat(container): 支持查看容器详情与编辑容器
详情弹窗双 Tab:格式化展示挂载/端口/网络/环境变量等基本信息,原始 Tab 直接展示 inspect 输出
编辑复用创建表单,由 inspect 回填配置,确认后删除旧容器按新配置重建

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-20 02:15:53 +08:00
耗子 5efb32a661 refactor(biz): 用例层承载业务编排,data 层退为数据/外部原语
将压在 data 层胖 repo 的业务逻辑上移到 biz 用例层,让三层名副其实:
- 34 个 XxxUsecase 从纯透传空壳变为承载领域规则、跨 repo 编排、操作审计的
  真正业务层;data 层 repo 退为数据访问与外部系统原语
- 24 条原压在 repo 层的跨 repo 编排上移为 usecase→usecase/repo 依赖,仅保留
  3 处嵌在外部原语内无法剥离的 repo→repo(backup→setting/website、website→setting)
- 新增 internal/biz/helper.go:operatorID / IsNotFound / containerSock
- 表现层(service/job/command/apps/middleware)零改动,用例对外签名冻结

经全部 34 域逐语句对抗审查确认行为等价,7 处漂移已修复或知情接受。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 14:16:10 +08:00
耗子 443516a2cf refactor!: 迁移至 samber/do 依赖注入与三层架构
依赖注入:
- 移除 google/wire(含 wire.go/wire_gen.go 与全部 ProviderSet),
  改用 samber/do v2 单注入器 + 双入口惰性构建
- 贡献模型替代命令式注册:路由 routes:、命令 commands:、
  任务 jobs: 前缀经 internal/registry 收集与校验
- 构造函数统一 func NewXxx(i do.Injector) (T, error)

三层架构:
- 补全用例层:每个 biz.XxxRepo 配 XxxUsecase,
  service/command/job 表现层只依赖用例,不再直接引用仓储

路由与文档:
- route/http.go 按域拆为声明式 Endpoint 贡献,
  Endpoint 承载登录白名单与端点限流语义
- 调试模式下提供 OpenAPI 3.1 文档:/openapi.json 与 /docs(Scalar),
  从 validate 标签生成

目录与依赖:
- internal/http/{middleware,request,rule} 拍平至 internal/*
- CLI 命令拆至 internal/command
- 日志轮转 timberjack 换为 libtnb/logrotate
- 升级 validator/cron/sessions/gormstore/sqlite/securecookie
- 数据库迁移保持 gormigrate 不变

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-09 21:54:22 +08:00
h2zi 79fa002bd6 chore: update mocks 2026-07-02 18:15:21 +00:00
h2zi 75c4f44262 chore: update mocks 2026-06-05 11:43:55 +00:00
h2zi b5bdcaded6 chore: update mocks 2026-05-27 15:56:25 +00:00
h2zi f1cc5bb7d6 chore: update mocks 2026-04-27 12:31:25 +00:00
h2zi 13e5771445 chore: update mocks 2026-04-21 19:07:46 +00:00
h2zi 522d78569a chore: update mocks 2026-04-06 18:20:12 +00:00
h2zi 4c6347d6c3 chore: update mocks 2026-03-27 09:00:20 +00:00
h2zi 60052aac09 chore: update mocks 2026-03-07 16:28:46 +00:00
h2zi 4ff7ce18cd chore: update mocks 2026-02-26 15:51:13 +00:00
h2zi d4c853db01 chore: update mocks 2026-02-25 10:07:42 +00:00
半岛的蒟蒻bddjr e947259b86 fix: go.mod module github.com/acepanel/panel/v3 (#1423) 2026-02-25 18:07:00 +08:00
h2zi 4130b8b314 chore: update mocks 2026-02-22 11:59:00 +00:00
h2zi cb2180fbdb chore: update mocks 2026-02-19 20:47:41 +00:00
h2zi 6fc7b34882 chore: update mocks 2026-02-19 16:31:54 +00:00
h2zi 4c468e9aca chore: update mocks 2026-02-18 11:19:40 +00:00
h2zi 1403c65d37 chore: update mocks 2026-02-18 10:18:09 +00:00
devhaozi 5407c53619 chore: update mocks 2026-02-17 20:03:22 +00:00
devhaozi da9d95284c chore: update mocks 2026-02-17 18:53:59 +00:00
devhaozi c731125534 chore: update mocks 2026-02-17 15:31:28 +00:00
devhaozi 6c703bf94d chore: update mocks 2026-02-17 12:28:53 +00:00
耗子 2f2f17b1c7 refactor: 重构任务队列 2026-02-17 17:47:25 +08:00
devhaozi 2536dfe933 chore: update mocks 2026-02-17 09:17:03 +00:00
devhaozi 205d95a591 chore: update mocks 2026-02-11 11:13:50 +00:00
devhaozi 58ddd55b7c chore: update mocks 2026-02-02 16:05:24 +00:00
devhaozi ce83fdd4db chore: update mocks 2026-01-30 09:27:20 +00:00
devhaozi a060ba136e chore: update mocks 2026-01-24 11:23:22 +00:00
devhaozi 4dd06f5812 chore: update mocks 2026-01-23 17:38:07 +00:00
devhaozi 4c6daf5028 chore: update mocks 2026-01-23 13:57:38 +00:00
devhaozi 11e56631b8 chore: update mocks 2026-01-22 21:45:06 +00:00