瀏覽代碼

Merge pull request #431 from hamid-gh98/main

[HOTFIX] Redirect `/xui` to `/panel`
Ho3ein 1 年之前
父節點
當前提交
66f0a13145
共有 3 個文件被更改,包括 39 次插入2 次删除
  1. 1 1
      README.md
  2. 14 1
      web/controller/api.go
  3. 24 0
      web/web.go

+ 1 - 1
README.md

@@ -187,7 +187,7 @@ Reference syntax:
 ## API routes
 
 - `/login` with `PUSH` user data: `{username: '', password: ''}` for login
-- `/xui/API/inbounds` base for following actions:
+- `/panel/api/inbounds` base for following actions:
 
 | Method | Path                               | Action                                      |
 | :----: | ---------------------------------- | ------------------------------------------- |

+ 14 - 1
web/controller/api.go

@@ -14,7 +14,7 @@ func NewAPIController(g *gin.RouterGroup) *APIController {
 }
 
 func (a *APIController) initRouter(g *gin.RouterGroup) {
-	g = g.Group("/xui/API/inbounds")
+	g = g.Group("/panel/api/inbounds")
 	g.Use(a.checkLogin)
 
 	g.GET("/list", a.getAllInbounds)
@@ -35,21 +35,27 @@ func (a *APIController) initRouter(g *gin.RouterGroup) {
 
 	a.inboundController = NewInboundController(g)
 }
+
 func (a *APIController) getAllInbounds(c *gin.Context) {
 	a.inboundController.getInbounds(c)
 }
+
 func (a *APIController) getSingleInbound(c *gin.Context) {
 	a.inboundController.getInbound(c)
 }
+
 func (a *APIController) getClientTraffics(c *gin.Context) {
 	a.inboundController.getClientTraffics(c)
 }
+
 func (a *APIController) addInbound(c *gin.Context) {
 	a.inboundController.addInbound(c)
 }
+
 func (a *APIController) delInbound(c *gin.Context) {
 	a.inboundController.delInbound(c)
 }
+
 func (a *APIController) updateInbound(c *gin.Context) {
 	a.inboundController.updateInbound(c)
 }
@@ -61,24 +67,31 @@ func (a *APIController) getClientIps(c *gin.Context) {
 func (a *APIController) clearClientIps(c *gin.Context) {
 	a.inboundController.clearClientIps(c)
 }
+
 func (a *APIController) addInboundClient(c *gin.Context) {
 	a.inboundController.addInboundClient(c)
 }
+
 func (a *APIController) delInboundClient(c *gin.Context) {
 	a.inboundController.delInboundClient(c)
 }
+
 func (a *APIController) updateInboundClient(c *gin.Context) {
 	a.inboundController.updateInboundClient(c)
 }
+
 func (a *APIController) resetClientTraffic(c *gin.Context) {
 	a.inboundController.resetClientTraffic(c)
 }
+
 func (a *APIController) resetAllTraffics(c *gin.Context) {
 	a.inboundController.resetAllTraffics(c)
 }
+
 func (a *APIController) resetAllClientTraffics(c *gin.Context) {
 	a.inboundController.resetAllClientTraffics(c)
 }
+
 func (a *APIController) delDepletedClients(c *gin.Context) {
 	a.inboundController.delDepletedClients(c)
 }

+ 24 - 0
web/web.go

@@ -147,6 +147,27 @@ func (s *Server) getHtmlTemplate(funcMap template.FuncMap) (*template.Template,
 	return t, nil
 }
 
+func redirectMiddleware() gin.HandlerFunc {
+	return func(c *gin.Context) {
+		// Redirect from old '/xui' path to '/panel'
+		path := c.Request.URL.Path
+		redirects := map[string]string{
+			"/panel/API": "/panel/api",
+			"/xui/API":   "/panel/api",
+			"/xui":       "/panel",
+		}
+		for from, to := range redirects {
+			if strings.HasPrefix(path, from) {
+				newPath := to + path[len(from):]
+				c.Redirect(http.StatusMovedPermanently, newPath)
+				c.Abort()
+				return
+			}
+		}
+		c.Next()
+	}
+}
+
 func (s *Server) initRouter() (*gin.Engine, error) {
 	if config.IsDebug() {
 		gin.SetMode(gin.DebugMode)
@@ -203,6 +224,9 @@ func (s *Server) initRouter() (*gin.Engine, error) {
 		engine.StaticFS(basePath+"assets", http.FS(&wrapAssetsFS{FS: assetsFS}))
 	}
 
+	// Apply the redirect middleware (`/xui` to `/panel`)
+	engine.Use(redirectMiddleware())
+
 	g := engine.Group(basePath)
 
 	s.index = controller.NewIndexController(g)