diff --git a/internal/router/router.go b/internal/router/router.go new file mode 100644 index 0000000..e0c55e9 --- /dev/null +++ b/internal/router/router.go @@ -0,0 +1,38 @@ +package router + +import ( + "net/http" + "strings" + + "lmvpn/internal/handler" + "lmvpn/internal/middleware" + "lmvpn/internal/vpn" + + "github.com/gin-gonic/gin" +) + +func Setup(r *gin.Engine) { + r.GET("/ws", vpn.HandleWS) + + r.POST("/api/login", handler.Login) + + auth := r.Group("/api") + auth.Use(middleware.AuthMiddleware()) + { + auth.GET("/me", handler.Me) + } + + fs := http.FileServer(http.Dir("./dist")) + r.Use(func(c *gin.Context) { + if strings.HasPrefix(c.Request.URL.Path, "/ws") { + return + } + if strings.HasPrefix(c.Request.URL.Path, "/api") { + c.Next() + return + } + + fs.ServeHTTP(c.Writer, c.Request) + c.Abort() + }) +} diff --git a/main.go b/main.go index a18f91f..115b1cc 100644 --- a/main.go +++ b/main.go @@ -4,16 +4,12 @@ import ( "fmt" "log" "net" - "net/http" "os" "path/filepath" - "strings" "lmvpn/internal/config" "lmvpn/internal/db" - "lmvpn/internal/handler" - "lmvpn/internal/middleware" - "lmvpn/internal/vpn" + "lmvpn/internal/router" "github.com/gin-gonic/gin" ) @@ -30,29 +26,7 @@ func main() { r := gin.Default() - r.GET("/ws", vpn.HandleWS) - - r.POST("/api/login", handler.Login) - - auth := r.Group("/api") - auth.Use(middleware.AuthMiddleware()) - { - auth.GET("/me", handler.Me) - } - - fs := http.FileServer(http.Dir("./dist")) - r.Use(func(c *gin.Context) { - if strings.HasPrefix(c.Request.URL.Path, "/ws") { - return - } - if strings.HasPrefix(c.Request.URL.Path, "/api") { - c.Next() - return - } - - fs.ServeHTTP(c.Writer, c.Request) - c.Abort() - }) + router.Setup(r) if cfg.Web.Port == 0 && cfg.Web.Sock == "" { log.Fatal("配置错误: port 和 sock 不能同时为空") @@ -71,7 +45,7 @@ func main() { if err := os.Remove(cfg.Web.Sock); err != nil && !os.IsNotExist(err) { log.Fatalf("删除残留 sock 文件失败: %v", err) } - if err := os.MkdirAll(filepath.Dir(cfg.Web.Sock), 0755); err != nil { + if err := os.MkdirAll(filepath.Dir(cfg.Web.Sock), 0777); err != nil { log.Fatalf("创建 sock 目录失败: %v", err) } listener, err := net.Listen("unix", cfg.Web.Sock)