diff --git a/web/controller/api.go b/web/controller/api.go index a9ffc369..e7bfff42 100644 --- a/web/controller/api.go +++ b/web/controller/api.go @@ -12,9 +12,10 @@ import ( // APIController handles the main API routes for the 3x-ui panel, including inbounds and server management. type APIController struct { BaseController - inboundController *InboundController - serverController *ServerController - userController *UserController + inboundController *InboundController + serverController *ServerController + userController *UserController + nodeController *NodeController Tgbot service.Tgbot } @@ -58,6 +59,11 @@ func (a *APIController) initRouter(g *gin.RouterGroup) { users.Use(a.checkAdmin) a.userController = NewUserController(users) + // Nodes API + nodes := api.Group("/nodes") + nodes.Use(a.checkAdmin) + a.nodeController = NewNodeController(nodes) + // Extra routes api.GET("/backuptotgbot", a.checkAdmin, a.BackuptoTgbot) } diff --git a/web/controller/xui.go b/web/controller/xui.go index 607359e5..7dd0d29b 100644 --- a/web/controller/xui.go +++ b/web/controller/xui.go @@ -33,6 +33,7 @@ func (a *XUIController) initRouter(g *gin.RouterGroup) { g.GET("/inbounds", a.checkAdmin, a.inbounds) g.GET("/settings", a.checkAdmin, a.settings) g.GET("/xray", a.checkAdmin, a.xraySettings) + g.GET("/nodes", a.checkAdmin, a.nodes) g.GET("/users", a.checkAdmin, a.users) a.settingController = NewSettingController(g) @@ -69,6 +70,11 @@ func (a *XUIController) xraySettings(c *gin.Context) { html(c, "xray.html", "pages.xray.title", nil) } +// nodes renders the node management page. +func (a *XUIController) nodes(c *gin.Context) { + html(c, "nodes.html", "pages.nodes.title", nil) +} + // users renders the admin user management page. func (a *XUIController) users(c *gin.Context) { html(c, "users.html", "pages.users.title", nil)