diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-07-27 11:28:12 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-07-27 11:28:46 +0300 |
| commit | 145ea1e6f17cc766df266ca3eacf8dd688eb1930 (patch) | |
| tree | 3849ce3c15ba5d418ffda923270f1163f1e02124 /web/assets/js/model | |
| parent | 4cfed17650a2aa22346a4aee7aacf3ef6d0c667a (diff) | |
full multiuser shadowsocks
full multiuser shadowsocks +
fix logs after api changes
Co-Authored-By: Alireza Ahmadi <alireza7@gmail.com>
Diffstat (limited to 'web/assets/js/model')
| -rw-r--r-- | web/assets/js/model/xray.js | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js index 23df0364..d8dc9f72 100644 --- a/web/assets/js/model/xray.js +++ b/web/assets/js/model/xray.js @@ -16,9 +16,10 @@ const VmessMethods = { }; const SSMethods = { - CHACHA20_POLY1305: 'chacha20-poly1305', AES_256_GCM: 'aes-256-gcm', AES_128_GCM: 'aes-128-gcm', + CHACHA20_POLY1305: 'chacha20-poly1305', + XCHACHA20_POLY1305: 'xchacha20-poly1305', 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', @@ -1040,7 +1041,10 @@ class Inbound extends XrayCommonClass { } } get isSSMultiUser() { - return [SSMethods.BLAKE3_AES_128_GCM,SSMethods.BLAKE3_AES_256_GCM].includes(this.method); + return this.method != SSMethods.BLAKE3_CHACHA20_POLY1305; + } + get isSS2022(){ + return this.method.substring(0,4) === "2022"; } get serverName() { @@ -1470,9 +1474,11 @@ class Inbound extends XrayCommonClass { break; } - let clientPassword = this.isSSMultiUser ? ':' + settings.shadowsockses[clientIndex].password : ''; + let password = new Array(); + if (this.isSSMultiUser) password.push(settings.shadowsockses[clientIndex].password); + if (this.isSS2022) password.push(settings.password); - let link = `ss://${safeBase64(settings.method + ':' + settings.password + clientPassword)}@${address}:${this.port}`; + let link = `ss://${safeBase64(settings.method + ':' + password.join(':'))}@${address}:${this.port}`; const url = new URL(link); for (const [key, value] of params) { url.searchParams.set(key, value) @@ -2097,8 +2103,9 @@ Inbound.ShadowsocksSettings = class extends Inbound.Settings { }; Inbound.ShadowsocksSettings.Shadowsocks = class extends XrayCommonClass { - constructor(password=RandomUtil.randomShadowsocksPassword(), email=RandomUtil.randomLowerAndNum(8),limitIp=0, totalGB=0, expiryTime=0, enable=true, tgId='', subId=RandomUtil.randomLowerAndNum(16)) { + constructor(method='', password=RandomUtil.randomShadowsocksPassword(), email=RandomUtil.randomLowerAndNum(8),limitIp=0, totalGB=0, expiryTime=0, enable=true, tgId='', subId=RandomUtil.randomLowerAndNum(16)) { super(); + this.method = method; this.password = password; this.email = email; this.limitIp = limitIp; @@ -2111,6 +2118,7 @@ Inbound.ShadowsocksSettings.Shadowsocks = class extends XrayCommonClass { toJson() { return { + method: this.method, password: this.password, email: this.email, limitIp: this.limitIp, @@ -2124,6 +2132,7 @@ Inbound.ShadowsocksSettings.Shadowsocks = class extends XrayCommonClass { static fromJson(json = {}) { return new Inbound.ShadowsocksSettings.Shadowsocks( + json.method, json.password, json.email, json.limitIp, |
