mirror of
https://github.com/tnb-labs/panel.git
synced 2026-10-30 18:21:30 +08:00
依赖注入:
- 移除 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>
104 lines
7.0 KiB
Go
104 lines
7.0 KiB
Go
package route
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/samber/do/v2"
|
|
|
|
"github.com/acepanel/panel/v3/internal/request"
|
|
"github.com/acepanel/panel/v3/internal/service"
|
|
)
|
|
|
|
// EnvironmentRoutes 运行环境路由
|
|
func EnvironmentRoutes(i do.Injector) (Endpoints, error) {
|
|
environment := do.MustInvoke[*service.EnvironmentService](i)
|
|
environmentGo := do.MustInvoke[*service.EnvironmentGoService](i)
|
|
environmentJava := do.MustInvoke[*service.EnvironmentJavaService](i)
|
|
environmentNodejs := do.MustInvoke[*service.EnvironmentNodejsService](i)
|
|
environmentPHP := do.MustInvoke[*service.EnvironmentPHPService](i)
|
|
environmentPython := do.MustInvoke[*service.EnvironmentPythonService](i)
|
|
environmentDotnet := do.MustInvoke[*service.EnvironmentDotnetService](i)
|
|
|
|
tags := []string{"运行环境"}
|
|
|
|
return Endpoints{
|
|
// 顶层
|
|
{Method: http.MethodGet, Path: "/api/environment/types", Handler: environment.Types,
|
|
Summary: "运行环境类型", Tags: tags},
|
|
{Method: http.MethodGet, Path: "/api/environment/list", Handler: environment.List,
|
|
Summary: "运行环境列表", Tags: tags},
|
|
{Method: http.MethodPost, Path: "/api/environment/install", Handler: environment.Install,
|
|
Summary: "安装运行环境", Tags: tags, Request: request.EnvironmentAction{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/uninstall", Handler: environment.Uninstall,
|
|
Summary: "卸载运行环境", Tags: tags, Request: request.EnvironmentAction{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/update", Handler: environment.Update,
|
|
Summary: "更新运行环境", Tags: tags, Request: request.EnvironmentAction{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/is_installed", Handler: environment.IsInstalled,
|
|
Summary: "检查运行环境是否已安装", Tags: tags, Request: request.EnvironmentAction{}},
|
|
|
|
// Go
|
|
{Method: http.MethodPost, Path: "/api/environment/go/{slug}/set_cli", Handler: environmentGo.SetCli,
|
|
Summary: "设置 Go 命令行", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/go/{slug}/proxy", Handler: environmentGo.GetProxy,
|
|
Summary: "获取 Go 代理", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/go/{slug}/proxy", Handler: environmentGo.SetProxy,
|
|
Summary: "设置 Go 代理", Tags: tags, Request: request.EnvironmentProxy{}},
|
|
|
|
// Java
|
|
{Method: http.MethodPost, Path: "/api/environment/java/{slug}/set_cli", Handler: environmentJava.SetCli,
|
|
Summary: "设置 Java 命令行", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
|
|
// Node.js
|
|
{Method: http.MethodPost, Path: "/api/environment/nodejs/{slug}/set_cli", Handler: environmentNodejs.SetCli,
|
|
Summary: "设置 Node.js 命令行", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/nodejs/{slug}/registry", Handler: environmentNodejs.GetRegistry,
|
|
Summary: "获取 Node.js 镜像源", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/nodejs/{slug}/registry", Handler: environmentNodejs.SetRegistry,
|
|
Summary: "设置 Node.js 镜像源", Tags: tags, Request: request.EnvironmentRegistry{}},
|
|
|
|
// PHP
|
|
{Method: http.MethodPost, Path: "/api/environment/php/{version}/set_cli", Handler: environmentPHP.SetCli,
|
|
Summary: "设置 PHP 命令行", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/phpinfo", Handler: environmentPHP.PHPInfo,
|
|
Summary: "获取 phpinfo", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/config", Handler: environmentPHP.GetConfig,
|
|
Summary: "获取 PHP 配置", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/php/{version}/config", Handler: environmentPHP.UpdateConfig,
|
|
Summary: "更新 PHP 配置", Tags: tags, Request: request.EnvironmentPHPUpdateConfig{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/fpm_config", Handler: environmentPHP.GetFPMConfig,
|
|
Summary: "获取 PHP-FPM 配置", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/php/{version}/fpm_config", Handler: environmentPHP.UpdateFPMConfig,
|
|
Summary: "更新 PHP-FPM 配置", Tags: tags, Request: request.EnvironmentPHPUpdateConfig{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/load", Handler: environmentPHP.Load,
|
|
Summary: "获取 PHP-FPM 负载", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/log", Handler: environmentPHP.Log,
|
|
Summary: "获取 PHP 日志路径", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/slow_log", Handler: environmentPHP.SlowLog,
|
|
Summary: "获取 PHP 慢日志路径", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/modules", Handler: environmentPHP.ModuleList,
|
|
Summary: "PHP 扩展列表", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/php/{version}/modules", Handler: environmentPHP.InstallModule,
|
|
Summary: "安装 PHP 扩展", Tags: tags, Request: request.EnvironmentPHPModule{}},
|
|
{Method: http.MethodDelete, Path: "/api/environment/php/{version}/modules", Handler: environmentPHP.UninstallModule,
|
|
Summary: "卸载 PHP 扩展", Tags: tags, Request: request.EnvironmentPHPModule{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/php/{version}/config_tune", Handler: environmentPHP.GetConfigTune,
|
|
Summary: "获取 PHP 配置调优", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/php/{version}/config_tune", Handler: environmentPHP.UpdateConfigTune,
|
|
Summary: "更新 PHP 配置调优", Tags: tags, Request: request.EnvironmentPHPConfigTune{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/php/{version}/clean_session", Handler: environmentPHP.CleanSession,
|
|
Summary: "清理 PHP Session", Tags: tags, Request: request.EnvironmentPHPVersion{}},
|
|
|
|
// Python
|
|
{Method: http.MethodPost, Path: "/api/environment/python/{slug}/set_cli", Handler: environmentPython.SetCli,
|
|
Summary: "设置 Python 命令行", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
{Method: http.MethodGet, Path: "/api/environment/python/{slug}/mirror", Handler: environmentPython.GetMirror,
|
|
Summary: "获取 Python 镜像源", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
{Method: http.MethodPost, Path: "/api/environment/python/{slug}/mirror", Handler: environmentPython.SetMirror,
|
|
Summary: "设置 Python 镜像源", Tags: tags, Request: request.EnvironmentMirror{}},
|
|
|
|
// .NET
|
|
{Method: http.MethodPost, Path: "/api/environment/dotnet/{slug}/set_cli", Handler: environmentDotnet.SetCli,
|
|
Summary: "设置 .NET 命令行", Tags: tags, Request: request.EnvironmentSlug{}},
|
|
}, nil
|
|
}
|