Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSanaei <ho3ein.sanaei@gmail.com>2025-09-09 02:22:43 +0300
committermhsanaei <ho3ein.sanaei@gmail.com>2025-09-09 03:32:05 +0300
commitfe9f0d1d0e86f55a97e3905358888f595b9bd08b (patch)
tree2210606a64b38e89edf4197268957913efbb7f06 /web/controller
parent18d74d54caa5f55b8d9048b49ad28b42be31b322 (diff)
api (#3434)
Diffstat (limited to 'web/controller')
-rw-r--r--web/controller/api.go52
-rw-r--r--web/controller/inbound.go9
-rw-r--r--web/controller/server.go38
-rw-r--r--web/controller/xui.go2
4 files changed, 54 insertions, 47 deletions
diff --git a/web/controller/api.go b/web/controller/api.go
index 32af934e..6edd7939 100644
--- a/web/controller/api.go
+++ b/web/controller/api.go
@@ -9,6 +9,7 @@ import (
type APIController struct {
BaseController
inboundController *InboundController
+ serverController *ServerController
Tgbot service.Tgbot
}
@@ -19,43 +20,22 @@ func NewAPIController(g *gin.RouterGroup) *APIController {
}
func (a *APIController) initRouter(g *gin.RouterGroup) {
- g = g.Group("/panel/api/inbounds")
- g.Use(a.checkLogin)
-
- a.inboundController = NewInboundController(g)
-
- inboundRoutes := []struct {
- Method string
- Path string
- Handler gin.HandlerFunc
- }{
- {"GET", "/createbackup", a.createBackup},
- {"GET", "/list", a.inboundController.getInbounds},
- {"GET", "/get/:id", a.inboundController.getInbound},
- {"GET", "/getClientTraffics/:email", a.inboundController.getClientTraffics},
- {"GET", "/getClientTrafficsById/:id", a.inboundController.getClientTrafficsById},
- {"POST", "/add", a.inboundController.addInbound},
- {"POST", "/del/:id", a.inboundController.delInbound},
- {"POST", "/update/:id", a.inboundController.updateInbound},
- {"POST", "/clientIps/:email", a.inboundController.getClientIps},
- {"POST", "/clearClientIps/:email", a.inboundController.clearClientIps},
- {"POST", "/addClient", a.inboundController.addInboundClient},
- {"POST", "/:id/delClient/:clientId", a.inboundController.delInboundClient},
- {"POST", "/updateClient/:clientId", a.inboundController.updateInboundClient},
- {"POST", "/:id/resetClientTraffic/:email", a.inboundController.resetClientTraffic},
- {"POST", "/resetAllTraffics", a.inboundController.resetAllTraffics},
- {"POST", "/resetAllClientTraffics/:id", a.inboundController.resetAllClientTraffics},
- {"POST", "/delDepletedClients/:id", a.inboundController.delDepletedClients},
- {"POST", "/onlines", a.inboundController.onlines},
- {"POST", "/lastOnline", a.inboundController.lastOnline},
- {"POST", "/updateClientTraffic/:email", a.inboundController.updateClientTraffic},
- }
-
- for _, route := range inboundRoutes {
- g.Handle(route.Method, route.Path, route.Handler)
- }
+ // Main API group
+ api := g.Group("/panel/api")
+ api.Use(a.checkLogin)
+
+ // Inbounds API
+ inbounds := api.Group("/inbounds")
+ a.inboundController = NewInboundController(inbounds)
+
+ // Server API
+ server := api.Group("/server")
+ a.serverController = NewServerController(server)
+
+ // Extra routes
+ api.GET("/backuptotgbot", a.BackuptoTgbot)
}
-func (a *APIController) createBackup(c *gin.Context) {
+func (a *APIController) BackuptoTgbot(c *gin.Context) {
a.Tgbot.SendBackupToAdmins()
}
diff --git a/web/controller/inbound.go b/web/controller/inbound.go
index 9ff2f302..10a58daa 100644
--- a/web/controller/inbound.go
+++ b/web/controller/inbound.go
@@ -24,9 +24,12 @@ func NewInboundController(g *gin.RouterGroup) *InboundController {
}
func (a *InboundController) initRouter(g *gin.RouterGroup) {
- g = g.Group("/inbound")
- g.POST("/list", a.getInbounds)
+ g.GET("/list", a.getInbounds)
+ g.GET("/get/:id", a.getInbound)
+ g.GET("/getClientTraffics/:email", a.getClientTraffics)
+ g.GET("/getClientTrafficsById/:id", a.getClientTrafficsById)
+
g.POST("/add", a.addInbound)
g.POST("/del/:id", a.delInbound)
g.POST("/update/:id", a.updateInbound)
@@ -41,6 +44,8 @@ func (a *InboundController) initRouter(g *gin.RouterGroup) {
g.POST("/delDepletedClients/:id", a.delDepletedClients)
g.POST("/import", a.importInbound)
g.POST("/onlines", a.onlines)
+ g.POST("/lastOnline", a.lastOnline)
+ g.POST("/updateClientTraffic/:email", a.updateClientTraffic)
}
func (a *InboundController) getInbounds(c *gin.Context) {
diff --git a/web/controller/server.go b/web/controller/server.go
index b1174b8f..d5ae688b 100644
--- a/web/controller/server.go
+++ b/web/controller/server.go
@@ -37,11 +37,17 @@ func NewServerController(g *gin.RouterGroup) *ServerController {
}
func (a *ServerController) initRouter(g *gin.RouterGroup) {
- g = g.Group("/server")
- g.Use(a.checkLogin)
- g.POST("/status", a.status)
- g.POST("/getXrayVersion", a.getXrayVersion)
+ g.GET("/status", a.status)
+ g.GET("/getXrayVersion", a.getXrayVersion)
+ g.GET("/getConfigJson", a.getConfigJson)
+ g.GET("/getDb", a.getDb)
+ g.GET("/getNewUUID", a.getNewUUID)
+ g.GET("/getNewX25519Cert", a.getNewX25519Cert)
+ g.GET("/getNewmldsa65", a.getNewmldsa65)
+ g.GET("/getNewmlkem768", a.getNewmlkem768)
+ g.GET("/getNewVlessEnc", a.getNewVlessEnc)
+
g.POST("/stopXrayService", a.stopXrayService)
g.POST("/restartXrayService", a.restartXrayService)
g.POST("/installXray/:version", a.installXray)
@@ -49,13 +55,8 @@ func (a *ServerController) initRouter(g *gin.RouterGroup) {
g.POST("/updateGeofile/:fileName", a.updateGeofile)
g.POST("/logs/:count", a.getLogs)
g.POST("/xraylogs/:count", a.getXrayLogs)
- g.POST("/getConfigJson", a.getConfigJson)
- g.GET("/getDb", a.getDb)
g.POST("/importDB", a.importDB)
- g.POST("/getNewX25519Cert", a.getNewX25519Cert)
- g.POST("/getNewmldsa65", a.getNewmldsa65)
g.POST("/getNewEchCert", a.getNewEchCert)
- g.POST("/getNewVlessEnc", a.getNewVlessEnc)
}
func (a *ServerController) refreshStatus() {
@@ -276,3 +277,22 @@ func (a *ServerController) getNewVlessEnc(c *gin.Context) {
}
jsonObj(c, out, nil)
}
+
+func (a *ServerController) getNewUUID(c *gin.Context) {
+ uuidResp, err := a.serverService.GetNewUUID()
+ if err != nil {
+ jsonMsg(c, "Failed to generate UUID", err)
+ return
+ }
+
+ jsonObj(c, uuidResp, nil)
+}
+
+func (a *ServerController) getNewmlkem768(c *gin.Context) {
+ out, err := a.serverService.GetNewmlkem768()
+ if err != nil {
+ jsonMsg(c, "Failed to generate mlkem768 keys", err)
+ return
+ }
+ jsonObj(c, out, nil)
+}
diff --git a/web/controller/xui.go b/web/controller/xui.go
index 5b4c0a18..1afbc427 100644
--- a/web/controller/xui.go
+++ b/web/controller/xui.go
@@ -8,6 +8,7 @@ type XUIController struct {
BaseController
inboundController *InboundController
+ serverController *ServerController
settingController *SettingController
xraySettingController *XraySettingController
}
@@ -28,6 +29,7 @@ func (a *XUIController) initRouter(g *gin.RouterGroup) {
g.GET("/xray", a.xraySettings)
a.inboundController = NewInboundController(g)
+ a.serverController = NewServerController(g)
a.settingController = NewSettingController(g)
a.xraySettingController = NewXraySettingController(g)
}