Quellcode durchsuchen

bug fix

Co-Authored-By: Alireza Ahmadi <[email protected]>
MHSanaei vor 1 Jahr
Ursprung
Commit
e1132a3f41
3 geänderte Dateien mit 36 neuen und 25 gelöschten Zeilen
  1. 6 5
      web/assets/js/model/xray.js
  2. 2 2
      web/html/xui/inbounds.html
  3. 28 18
      web/service/inbound.go

+ 6 - 5
web/assets/js/model/xray.js

@@ -853,6 +853,7 @@ class StreamSettings extends XrayCommonClass {
     }
 
     static fromJson(json={}) {
+
         return new StreamSettings(
             json.network,
             json.security,
@@ -1412,13 +1413,13 @@ class Inbound extends XrayCommonClass {
             if (!ObjectUtil.isArrEmpty(this.stream.reality.serverNames)) {
                 params.set("sni", this.stream.reality.serverNames.split(",")[0]);
             }
-            if (this.stream.network === 'tcp') {
+            if (this.stream.network === 'tcp' && !ObjectUtil.isEmpty(this.settings.vlesses[clientIndex].flow)) {
                 params.set("flow", this.settings.vlesses[clientIndex].flow);
             }
-            if (this.stream.reality.shortIds != "") {
+            if (this.stream.reality.shortIds.length > 0) {
                 params.set("sid", this.stream.reality.shortIds.split(",")[0]);
             }
-            if (this.stream.reality.settings.fingerprint != "") {
+            if (!ObjectUtil.isEmpty(this.stream.reality.fingerprint)) {
                 params.set("fp", this.stream.reality.settings.fingerprint);
             }
             if (!ObjectUtil.isEmpty(this.stream.reality.settings.serverName)) {
@@ -1519,10 +1520,10 @@ class Inbound extends XrayCommonClass {
             if (!ObjectUtil.isEmpty(this.stream.reality.settings.serverName)) {
                 address = this.stream.reality.settings.serverName;
             }
-            if (this.stream.reality.shortIds != "") {
+            if (this.stream.reality.shortIds.length > 0) {
                 params.set("sid", this.stream.reality.shortIds.split(",")[0]);
             }
-            if (this.stream.reality.settings.fingerprint != "") {
+            if (!ObjectUtil.isEmpty(this.stream.reality.fingerprint)) {
                 params.set("fp", this.stream.reality.settings.fingerprint);
             }
             if (!ObjectUtil.isEmpty(this.stream.reality.settings.serverName)) {

+ 2 - 2
web/html/xui/inbounds.html

@@ -658,8 +658,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) {

+ 28 - 18
web/service/inbound.go

@@ -266,11 +266,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)
 	}
@@ -280,21 +287,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
 	}
@@ -341,6 +345,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
@@ -361,20 +373,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
 	}