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:
Diffstat (limited to 'web/service')
-rw-r--r--web/service/inbound.go44
1 files changed, 36 insertions, 8 deletions
diff --git a/web/service/inbound.go b/web/service/inbound.go
index 3f736470..5d6acb92 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -314,28 +314,56 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) error {
return db.Save(oldInbound).Error
}
-func (s *InboundService) DelInboundClient(inbound *model.Inbound, email string) error {
- db := database.GetDB()
- err := s.DelClientStat(db, email)
+func (s *InboundService) DelInboundClient(inboundId int, clientId string) error {
+ oldInbound, err := s.GetInbound(inboundId)
+ if err != nil {
+ logger.Error("Load Old Data Error")
+ return err
+ }
+ var settings map[string]interface{}
+ err = json.Unmarshal([]byte(oldInbound.Settings), &settings)
if err != nil {
- logger.Error("Delete stats Data Error")
return err
}
- oldInbound, err := s.GetInbound(inbound.Id)
+ email := ""
+ client_key := "id"
+ if oldInbound.Protocol == "trojan" {
+ client_key = "password"
+ }
+
+ inerfaceClients := settings["clients"].([]interface{})
+ var newClients []interface{}
+ for _, client := range inerfaceClients {
+ c := client.(map[string]interface{})
+ c_id := c[client_key].(string)
+ if c_id == clientId {
+ email = c["email"].(string)
+ } else {
+ newClients = append(newClients, client)
+ }
+ }
+
+ settings["clients"] = newClients
+ newSettings, err := json.MarshalIndent(settings, "", " ")
if err != nil {
- logger.Error("Load Old Data Error")
return err
}
- oldInbound.Settings = inbound.Settings
+ oldInbound.Settings = string(newSettings)
+
+ db := database.GetDB()
+ err = s.DelClientStat(db, email)
+ if err != nil {
+ logger.Error("Delete stats Data Error")
+ return err
+ }
err = s.DelClientIPs(db, email)
if err != nil {
logger.Error("Error in delete client IPs")
return err
}
-
return db.Save(oldInbound).Error
}