diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js index d1448666..c9eab40c 100644 --- a/web/assets/js/model/xray.js +++ b/web/assets/js/model/xray.js @@ -16,16 +16,12 @@ const VmessMethods = { }; const SSMethods = { - // AES_256_CFB: 'aes-256-cfb', - // AES_128_CFB: 'aes-128-cfb', - // CHACHA20: 'chacha20', - // CHACHA20_IETF: 'chacha20-ietf', - // CHACHA20_POLY1305: 'chacha20-poly1305', - // AES_256_GCM: 'aes-256-gcm', - // AES_128_GCM: 'aes-128-gcm', + CHACHA20_POLY1305: 'chacha20-poly1305', + AES_256_GCM: 'aes-256-gcm', + AES_128_GCM: 'aes-128-gcm', BLAKE3_AES_128_GCM: '2022-blake3-aes-128-gcm', BLAKE3_AES_256_GCM: '2022-blake3-aes-256-gcm', - // BLAKE3_CHACHA20_POLY1305: '2022-blake3-chacha20-poly1305', + BLAKE3_CHACHA20_POLY1305: '2022-blake3-chacha20-poly1305', }; const TLS_FLOW_CONTROL = { @@ -876,6 +872,9 @@ class Inbound extends XrayCommonClass { return ""; } } + get isSSMultiUser() { + return [SSMethods.BLAKE3_AES_128_GCM,SSMethods.BLAKE3_AES_256_GCM].includes(this.method); + } get serverName() { if (this.stream.isTls || this.stream.isReality) { @@ -945,7 +944,7 @@ class Inbound extends XrayCommonClass { return this.settings.trojans[index].expiryTime < new Date().getTime(); return false case Protocols.SHADOWSOCKS: - if(this.settings.shadowsockses[index].expiryTime > 0) + if(this.settings.shadowsockses.length > 0 && this.settings.shadowsockses[index].expiryTime > 0) return this.settings.shadowsockses[index].expiryTime < new Date().getTime(); return false default: @@ -1275,7 +1274,9 @@ class Inbound extends XrayCommonClass { break; } - let link = `ss://${safeBase64(settings.method + ':' + settings.password + ':' +settings.shadowsockses[clientIndex].password)}@${address}:${this.port}`; + let clientPassword = this.isSSMultiUser ? ':' + settings.shadowsockses[clientIndex].password : ''; + + let link = `ss://${safeBase64(settings.method + ':' + settings.password + clientPassword)}@${address}:${this.port}`; const url = new URL(link); for (const [key, value] of params) { url.searchParams.set(key, value) diff --git a/web/html/common/qrcode_modal.html b/web/html/common/qrcode_modal.html index 64a7d2c9..29457023 100644 --- a/web/html/common/qrcode_modal.html +++ b/web/html/common/qrcode_modal.html @@ -35,7 +35,7 @@ this.inbound = dbInbound.toInbound(); settings = JSON.parse(this.inbound.settings); this.client = settings.clients[clientIndex]; - remark = this.dbInbound.remark + "-" + this.client.email; + remark = this.dbInbound.remark + ( this.client ? "-" + this.client.email : ''); address = this.dbInbound.address; this.subId = ''; this.qrcodes = []; diff --git a/web/html/xui/form/protocol/shadowsocks.html b/web/html/xui/form/protocol/shadowsocks.html index 283a274f..ef266507 100644 --- a/web/html/xui/form/protocol/shadowsocks.html +++ b/web/html/xui/form/protocol/shadowsocks.html @@ -1,5 +1,6 @@ {{define "form/shadowsocks"}} +
{{ i18n "encryption" }} - + [[ method ]] diff --git a/web/html/xui/inbound_info_modal.html b/web/html/xui/inbound_info_modal.html index 3de5a2c2..f59e4c78 100644 --- a/web/html/xui/inbound_info_modal.html +++ b/web/html/xui/inbound_info_modal.html @@ -175,6 +175,19 @@ [[ inbound.settings.network ]]
+ @@ -247,7 +260,7 @@ this.clientSettings = this.settings.clients ? Object.values(this.settings.clients)[index] : null; this.isExpired = this.inbound.isExpiry(index); this.clientStats = this.settings.clients ? this.dbInbound.clientStats.find(row => row.email === this.clientSettings.email) : []; - remark = this.dbInbound.remark + "-" + this.clientSettings.email; + remark = this.dbInbound.remark + ( this.clientSettings ? "-" + this.clientSettings.email : ''); address = this.dbInbound.address; this.links = []; if (this.inbound.tls && !ObjectUtil.isArrEmpty(this.inbound.stream.tls.settings.domains)) { diff --git a/web/html/xui/inbound_modal.html b/web/html/xui/inbound_modal.html index 93868e16..dd1595c5 100644 --- a/web/html/xui/inbound_modal.html +++ b/web/html/xui/inbound_modal.html @@ -100,6 +100,17 @@ this.inModal.inbound.reality = false; } }, + SSMethodChange() { + if (this.inModal.inbound.isSSMultiUser) { + if (this.inModal.inbound.settings.shadowsockses.length ==0){ + this.inModal.inbound.settings.shadowsockses = [new Inbound.ShadowsocksSettings.Shadowsocks()]; + } + } else { + if (this.inModal.inbound.settings.shadowsockses.length > 0){ + this.inModal.inbound.settings.shadowsockses = []; + } + } + }, setDefaultCertData(index){ inModal.inbound.stream.tls.certs[index].certFile = app.defaultCert; inModal.inbound.stream.tls.certs[index].keyFile = app.defaultKey; diff --git a/web/html/xui/inbounds.html b/web/html/xui/inbounds.html index 1420541d..7faec55f 100644 --- a/web/html/xui/inbounds.html +++ b/web/html/xui/inbounds.html @@ -129,7 +129,11 @@ {{ i18n "edit" }} -
{{ i18n "pages.inbounds.targetAddress" }}