package controller import ( "github.com/gin-gonic/gin" ) // XUIController is the main controller for the X-UI panel, managing sub-controllers. type XUIController struct { BaseController inboundController *InboundController serverController *ServerController settingController *SettingController xraySettingController *XraySettingController } // NewXUIController creates a new XUIController and initializes its routes. func NewXUIController(g *gin.RouterGroup) *XUIController { a := &XUIController{} a.initRouter(g) return a } // initRouter sets up the main panel routes and initializes sub-controllers. func (a *XUIController) initRouter(g *gin.RouterGroup) { g = g.Group("/panel") g.Use(a.checkLogin) g.GET("/", a.index) g.GET("/inbounds", a.inbounds) g.GET("/settings", a.settings) g.GET("/xray", a.xraySettings) a.inboundController = NewInboundController(g) a.serverController = NewServerController(g) a.settingController = NewSettingController(g) a.xraySettingController = NewXraySettingController(g) } // index renders the main panel index page. func (a *XUIController) index(c *gin.Context) { html(c, "index.html", "pages.index.title", nil) } // inbounds renders the inbounds management page. func (a *XUIController) inbounds(c *gin.Context) { html(c, "inbounds.html", "pages.inbounds.title", nil) } // settings renders the settings management page. func (a *XUIController) settings(c *gin.Context) { html(c, "settings.html", "pages.settings.title", nil) } // xraySettings renders the Xray settings page. func (a *XUIController) xraySettings(c *gin.Context) { html(c, "xray.html", "pages.xray.title", nil) }