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:
authorAzavax <21226881+azavaxhuman@users.noreply.github.com>2025-07-23 00:43:48 +0300
committerGitHub <noreply@github.com>2025-07-23 00:43:48 +0300
commitb1ab156e42ed0e68b49e89df45d44b6ad0ea02ff (patch)
treee4ffb3297e38afaf54e625065ab2886b25f5fc1c
parentfa45bf87de469f9e7f79c90b4381de5b9e4f58d2 (diff)
Endpoint for updating client traffic by email (#3259)
* Update api.go * Update inbound.go * Update inbound.go
-rw-r--r--web/controller/api.go1
-rw-r--r--web/controller/inbound.go25
-rw-r--r--web/service/inbound.go15
3 files changed, 41 insertions, 0 deletions
diff --git a/web/controller/api.go b/web/controller/api.go
index 9944e2a3..636035ba 100644
--- a/web/controller/api.go
+++ b/web/controller/api.go
@@ -47,6 +47,7 @@ func (a *APIController) initRouter(g *gin.RouterGroup) {
{"POST", "/resetAllClientTraffics/:id", a.inboundController.resetAllClientTraffics},
{"POST", "/delDepletedClients/:id", a.inboundController.delDepletedClients},
{"POST", "/onlines", a.inboundController.onlines},
+ {"POST", "/updateClientTraffic/:email", a.inboundController.updateClientTraffic},
}
for _, route := range inboundRoutes {
diff --git a/web/controller/inbound.go b/web/controller/inbound.go
index 592a4bd0..a89f224f 100644
--- a/web/controller/inbound.go
+++ b/web/controller/inbound.go
@@ -339,3 +339,28 @@ func (a *InboundController) delDepletedClients(c *gin.Context) {
func (a *InboundController) onlines(c *gin.Context) {
jsonObj(c, a.inboundService.GetOnlineClients(), nil)
}
+
+func (a *InboundController) updateClientTraffic(c *gin.Context) {
+ email := c.Param("email")
+
+ // Define the request structure for traffic update
+ type TrafficUpdateRequest struct {
+ Upload int64 `json:"upload"`
+ Download int64 `json:"download"`
+ }
+
+ var request TrafficUpdateRequest
+ err := c.ShouldBindJSON(&request)
+ if err != nil {
+ jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundUpdateSuccess"), err)
+ return
+ }
+
+ err = a.inboundService.UpdateClientTrafficByEmail(email, request.Upload, request.Download)
+ if err != nil {
+ jsonMsg(c, I18nWeb(c, "somethingWentWrong"), err)
+ return
+ }
+
+ jsonMsg(c, I18nWeb(c, "pages.inbounds.toasts.inboundClientUpdateSuccess"), nil)
+}
diff --git a/web/service/inbound.go b/web/service/inbound.go
index f2646dbb..66e1a420 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -1785,6 +1785,21 @@ func (s *InboundService) GetClientTrafficByEmail(email string) (traffic *xray.Cl
return nil, nil
}
+func (s *InboundService) UpdateClientTrafficByEmail(email string, upload int64, download int64) error {
+ db := database.GetDB()
+
+ result := db.Model(xray.ClientTraffic{}).
+ Where("email = ?", email).
+ Updates(map[string]any{"up": upload, "down": download})
+
+ err := result.Error
+ if err != nil {
+ logger.Warningf("Error updating ClientTraffic with email %s: %v", email, err)
+ return err
+ }
+ return nil
+}
+
func (s *InboundService) GetClientTrafficByID(id string) ([]xray.ClientTraffic, error) {
db := database.GetDB()
var traffics []xray.ClientTraffic