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 }