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:
-rw-r--r--web/assets/js/model/xray.js11
-rw-r--r--web/html/xui/inbounds.html4
-rw-r--r--web/service/inbound.go46
3 files changed, 36 insertions, 25 deletions
diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js
index 3e3ff9cb..573f2f88 100644
--- a/web/assets/js/model/xray.js
+++ b/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)) {
diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html
index 15782b1d..5bfcaccd 100644
--- a/web/html/xui/inbounds.html
+++ b/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) {
diff --git a/web/service/inbound.go b/web/service/inbound.go
index c3f92e5a..9fb9a5b1 100644
--- a/web/service/inbound.go
+++ b/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
}