52 lines
1.4 KiB
Go
52 lines
1.4 KiB
Go
package routes
|
|
|
|
import (
|
|
"dashboard/controller"
|
|
"dashboard/logger"
|
|
"dashboard/pkg/jwt"
|
|
"dashboard/settings"
|
|
"time"
|
|
|
|
"github.com/gin-contrib/cors"
|
|
"github.com/gin-gonic/gin"
|
|
)
|
|
|
|
func Setup(log *logger.Logger, rate settings.RateLimitConfig, jwtC settings.JwtConfig) *gin.Engine {
|
|
cjwt := jwt.New(jwt.WithSalt(jwtC.Salt), jwt.WithExpire(time.Duration(jwtC.Expire)*time.Second))
|
|
|
|
r := gin.New()
|
|
|
|
r.Use(cors.New(cors.Config{
|
|
AllowOrigins: []string{"*"},
|
|
AllowMethods: []string{"GET", "POST"},
|
|
AllowHeaders: []string{"Origin", "Content-Type"},
|
|
ExposeHeaders: []string{"Content-Length"},
|
|
AllowCredentials: true,
|
|
MaxAge: 12 * time.Hour,
|
|
}))
|
|
|
|
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()))
|
|
|
|
return r
|
|
}
|