diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html
index a57d006a..90876777 100644
--- a/web/html/xui/inbounds.html
+++ b/web/html/xui/inbounds.html
@@ -655,8 +655,8 @@
inbound = dbInbound.toInbound();
clients = this.getClients(dbInbound.protocol, inbound.settings);
index = this.findIndexOfClient(clients, client);
- clients[index].enable = ! clients[index].enable
- await this.updateClient(inbound, dbInbound, index);
+ clients[index].enable = !clients[index].enable;
+ await this.updateClient(clients[index],dbInboundId, index);
this.loading(false);
},
async submit(url, data) {
diff --git a/web/service/inbound.go b/web/service/inbound.go
index 69463224..d12f3604 100644
--- a/web/service/inbound.go
+++ b/web/service/inbound.go
@@ -252,11 +252,18 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) error {
if err != nil {
return err
}
- existEmail, err := s.checkEmailsExistForClients(clients)
+
+ var settings map[string]interface{}
+ err = json.Unmarshal([]byte(data.Settings), &settings)
if err != nil {
return err
}
+ interfaceClients := settings["clients"].([]interface{})
+ existEmail, err := s.checkEmailsExistForClients(clients)
+ if err != nil {
+ return err
+ }
if existEmail != "" {
return common.NewError("Duplicate email:", existEmail)
}
@@ -266,21 +273,18 @@ func (s *InboundService) AddInboundClient(data *model.Inbound) error {
return err
}
- var settings map[string]interface{}
- err = json.Unmarshal([]byte(oldInbound.Settings), &settings)
+ var oldSettings map[string]interface{}
+ err = json.Unmarshal([]byte(oldInbound.Settings), &oldSettings)
if err != nil {
return err
}
- oldClients := settings["clients"].([]interface{})
- var newClients []interface{}
- for _, client := range clients {
- newClients = append(newClients, client)
- }
+ oldClients := oldSettings["clients"].([]interface{})
+ oldClients = append(oldClients, interfaceClients...)
- settings["clients"] = append(oldClients, newClients...)
+ oldSettings["clients"] = oldClients
- newSettings, err := json.MarshalIndent(settings, "", " ")
+ newSettings, err := json.MarshalIndent(oldSettings, "", " ")
if err != nil {
return err
}
@@ -321,6 +325,14 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, index int) err
return err
}
+ var settings map[string]interface{}
+ err = json.Unmarshal([]byte(data.Settings), &settings)
+ if err != nil {
+ return err
+ }
+
+ inerfaceClients := settings["clients"].([]interface{})
+
oldInbound, err := s.GetInbound(data.Id)
if err != nil {
return err
@@ -341,20 +353,18 @@ func (s *InboundService) UpdateInboundClient(data *model.Inbound, index int) err
}
}
- var settings map[string]interface{}
- err = json.Unmarshal([]byte(oldInbound.Settings), &settings)
+ var oldSettings map[string]interface{}
+ err = json.Unmarshal([]byte(oldInbound.Settings), &oldSettings)
if err != nil {
return err
}
- settingsClients := settings["clients"].([]interface{})
- var newClients []interface{}
- newClients = append(newClients, clients[0])
- settingsClients[index] = newClients[0]
+ settingsClients := oldSettings["clients"].([]interface{})
+ settingsClients[index] = inerfaceClients[0]
- settings["clients"] = settingsClients
+ oldSettings["clients"] = settingsClients
- newSettings, err := json.MarshalIndent(settings, "", " ")
+ newSettings, err := json.MarshalIndent(oldSettings, "", " ")
if err != nil {
return err
}