feat: 后端限速实现 + 前端i18n全面国际化 + 安全与代码质量修复

后端:
- trafficmgr: 实现 tc htb 限速(ApplyRateLimit/RemoveRateLimit),自动推导接口名
- 各协议服务: 代码质量改进与错误处理增强

前端:
- protocols.js: 170个硬编码中文字符串全部转为 i18n key,中英文双语翻译
- 提取 fmtBytes() 到 utils/format.js 公共模块(消除 4 处重复)
- router.js: 添加路由级权限守卫,非管理员无法直接 URL 访问管理页
- Tunnels.vue: SSE 日志流改用 fetch+ReadableStream,token 放 Authorization header
- VPNUsers.vue: 修复 catch 块中文硬编码 fallback
- 新增 TaskProgress 组件、taskmgr 后端任务管理
This commit is contained in:
opsx-tools committed 2026-07-23 12:57:46 +08:00
1 parent 021d012478
commit 91974fc30f
26 files changed
+1977 -377

No files matched your search

+12 -2
View File
@@ -32,14 +32,16 @@ import (
"vpn-platform/backend/internal/sshutil"
"vpn-platform/backend/internal/store"
"vpn-platform/backend/internal/trafficmgr"
"vpn-platform/backend/internal/taskmgr"
)
// Server API 服务器
type Server struct {
mgr *core.Manager
mgr *core.Manager
taskMgr *taskmgr.Manager
}
func NewServer(mgr *core.Manager) *Server { return &Server{mgr: mgr} }
func NewServer(mgr *core.Manager) *Server { return &Server{mgr: mgr, taskMgr: taskmgr.NewManager()} }
// ---- Token 会话(内存态,定期清理过期项)----
var (
@@ -260,6 +262,14 @@ func (s *Server) RegisterRoutes(r *gin.Engine) {
ops.GET("/binaries/install-hint/:name", s.binaryInstallHint)
ops.PUT("/tunnels/:id/policy", s.saveTrafficPolicy)
// 批量操作 & 任务管理
ops.POST("/tunnels/batch/start", s.batchTunnels(taskmgr.ActionStart))
ops.POST("/tunnels/batch/stop", s.batchTunnels(taskmgr.ActionStop))
ops.POST("/tunnels/batch/delete", s.batchTunnels(taskmgr.ActionDelete))
ops.POST("/tunnels/batch/policy", s.batchSetPolicy)
ops.GET("/tasks", s.listTasks)
ops.GET("/tasks/:id", s.getTask)
// 平台管理 admin
admin := auth.Group("")
admin.Use(requireRole("admin"))