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:
authorMHSanaei <ho3ein.sanaei@gmail.com>2023-07-27 11:28:12 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2023-07-27 11:28:46 +0300
commit145ea1e6f17cc766df266ca3eacf8dd688eb1930 (patch)
tree3849ce3c15ba5d418ffda923270f1163f1e02124 /web/assets/js
parent4cfed17650a2aa22346a4aee7aacf3ef6d0c667a (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')
-rw-r--r--web/assets/js/model/xray.js19
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,