From 22c58200dc93d313f8724523db1fb995317849ff Mon Sep 17 00:00:00 2001 From: redhat <2292650292@qq.com> Date: Fri, 4 Jul 2025 16:21:27 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E6=89=80=E6=9C=89route=E4=BD=BF?= =?UTF-8?q?=E7=94=A8interface=E6=96=B9=E5=BC=8F=E6=B3=A8=E5=86=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/fileroute.go | 42 +++++++++++++++++++++++++++++++++++++++++ main.go | 3 ++- pkg/fsm/fsm.go | 2 +- routes/routes.go | 26 +------------------------ 4 files changed, 46 insertions(+), 27 deletions(-) create mode 100644 controller/fileroute.go diff --git a/controller/fileroute.go b/controller/fileroute.go new file mode 100644 index 0000000..41713d5 --- /dev/null +++ b/controller/fileroute.go @@ -0,0 +1,42 @@ +package controller + +import ( + "dashboard/pkg/jwt" + "dashboard/routes" + "dashboard/settings" + "time" + + "github.com/gin-gonic/gin" +) + +type FileRoute struct { + cjwt *jwt.Jwt +} + +func NewFileRoute(jwtC settings.JwtConfig) *FileRoute { + res := new(FileRoute) + res.cjwt = jwt.New(jwt.WithSalt(jwtC.Salt), jwt.WithExpire(time.Duration(jwtC.Expire)*time.Second)) + return res +} + +func (f *FileRoute) AddRoute(r *gin.Engine) { + // 静态文件服务 + r.Static("/static", "./static") + r.StaticFile("/", "./static/index.html") + + r.GET("login", LoginPage) + + r.POST("/api/login", routes.ErrWapper(UserSignInHandler(f.cjwt))) + r.POST("/api/logout", UserLogOutHandler) + + g1 := r.Group("/api") + g1.Use(routes.ErrWapper(routes.GinJwtAuthor(f.cjwt))) + { + g1.GET("/system-info", routes.ErrWapper(SystemInfoHandle)) + g1.POST("/upload", routes.ErrWapper(FileUploadHandle)) + g1.GET("/files", routes.ErrWapper(FileListHandle)) + g1.GET("/download", routes.ErrWapper(FileDownloadHandle)) + } + + r.GET("/ws/terminal", routes.ErrWapper(routes.GinJwtAuthor(f.cjwt)), routes.ErrWapper(TerminalHandle())) +} diff --git a/main.go b/main.go index 8fd78cb..9d38d16 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "context" + "dashboard/controller" "dashboard/controller/unisc" "dashboard/dao/sqldb" "dashboard/logger" @@ -80,7 +81,7 @@ func main() { errwg := errgroups.NewErrGroup() errwg.Add(routes.NewRouter(fmt.Sprintf(":%d", sets.BaseConfig.Port), - log, *sets.RateLimitConfig, *sets.JwtConfig, + log, *sets.RateLimitConfig, controller.NewFileRoute(*sets.JwtConfig), unisc.NewHttpRoute(route...))) errwg.Add(sunisa...) diff --git a/pkg/fsm/fsm.go b/pkg/fsm/fsm.go index 59832e0..22a301f 100644 --- a/pkg/fsm/fsm.go +++ b/pkg/fsm/fsm.go @@ -129,7 +129,7 @@ func NewFsm(name string, initState string, events Events, states StateRules, log } fsm.eventNames = append(fsm.eventNames, internalEvents...) - if len(logs) == 1 { + if len(logs) > 0 { fsm.log = logs[0] } if fsm.log == nil { diff --git a/routes/routes.go b/routes/routes.go index eb75e85..f6f334b 100644 --- a/routes/routes.go +++ b/routes/routes.go @@ -2,9 +2,7 @@ package routes import ( "context" - "dashboard/controller" "dashboard/logger" - "dashboard/pkg/jwt" "dashboard/settings" "errors" "net/http" @@ -30,9 +28,7 @@ type AddRouter interface { AddRoute(*gin.Engine) } -func NewRouter(addr string, log *logger.Logger, rate settings.RateLimitConfig, jwtC settings.JwtConfig, routes ...AddRouter) *Router { - cjwt := jwt.New(jwt.WithSalt(jwtC.Salt), jwt.WithExpire(time.Duration(jwtC.Expire)*time.Second)) - +func NewRouter(addr string, log *logger.Logger, rate settings.RateLimitConfig, routes ...AddRouter) *Router { r := gin.New() r.Use(cors.New(cors.Config{ @@ -46,26 +42,6 @@ func NewRouter(addr string, log *logger.Logger, rate settings.RateLimitConfig, j r.Use(GinLogger(log), GinRecovery(log, true), GinLog(log), ErrWapper(GinRateLimit(rate))) - // 静态文件服务 - r.Static("/static", "./static") - r.StaticFile("/", "./static/index.html") - - r.GET("login", controller.LoginPage) - - r.POST("/api/login", ErrWapper(controller.UserSignInHandler(cjwt))) - r.POST("/api/logout", controller.UserLogOutHandler) - - g1 := r.Group("/api") - g1.Use(ErrWapper(GinJwtAuthor(cjwt))) - { - g1.GET("/system-info", ErrWapper(controller.SystemInfoHandle)) - g1.POST("/upload", ErrWapper(controller.FileUploadHandle)) - g1.GET("/files", ErrWapper(controller.FileListHandle)) - g1.GET("/download", ErrWapper(controller.FileDownloadHandle)) - } - - r.GET("/ws/terminal", ErrWapper(GinJwtAuthor(cjwt)), ErrWapper(controller.TerminalHandle())) - for _, route := range routes { route.AddRoute(r) }