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:
authorMHSanaei <ho3ein.sanaei@gmail.com>2023-04-24 14:37:11 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2023-04-24 14:37:11 +0300
commit16e3107d23b4bc536d509c2dd832d10366fb895e (patch)
tree3592c9b3d2cd703a73aeed971bed65c0c37a0fa6 /web/service
parent262e3c0985c8c315c78f86370e8b338df9e69593 (diff)
Better client delete + api
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
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
}