diff --git a/sub/subJsonService.go b/sub/subJsonService.go
index cbda594a..d1b5baaa 100644
--- a/sub/subJsonService.go
+++ b/sub/subJsonService.go
@@ -268,13 +268,13 @@ func (s *SubJsonService) realityData(rData map[string]interface{}) map[string]in
rltyData["spiderX"] = "/" + random.Seq(15)
shortIds, ok := rData["shortIds"].([]interface{})
if ok && len(shortIds) > 0 {
- rltyData["shortId"] = shortIds[random.Num(len(shortIds))].(string)
+ rltyData["shortId"] = shortIds
} else {
rltyData["shortId"] = ""
}
serverNames, ok := rData["serverNames"].([]interface{})
if ok && len(serverNames) > 0 {
- rltyData["serverName"] = serverNames[random.Num(len(serverNames))].(string)
+ rltyData["serverName"] = serverNames
} else {
rltyData["serverName"] = ""
}
diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js
index 80f2ac15..a225c993 100644
--- a/web/assets/js/model/xray.js
+++ b/web/assets/js/model/xray.js
@@ -914,7 +914,7 @@ class RealityStreamSettings extends XrayCommonClass {
minClient = '',
maxClient = '',
maxTimediff = 0,
- shortIds = RandomUtil.randomShortId(),
+ shortIds = RandomUtil.randomShortIds(),
settings = new RealityStreamSettings.Settings()
) {
super();
diff --git a/web/assets/js/util/utils.js b/web/assets/js/util/utils.js
index f726e72e..30f1f6a2 100644
--- a/web/assets/js/util/utils.js
+++ b/web/assets/js/util/utils.js
@@ -99,7 +99,7 @@ class RandomUtil {
return str;
}
- static randomShortId() {
+ static randomShortIds() {
const lengths = [2, 4, 6, 8, 10, 12, 14, 16];
for (let i = lengths.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
@@ -114,8 +114,8 @@ class RandomUtil {
}
shortIds.push(shortId);
}
- return shortIds;
- }
+ return shortIds.join(',');
+ }
static randomLowerAndNum(len) {
let str = '';
@@ -294,172 +294,172 @@ class ObjectUtil {
}
class Wireguard {
- static gf(init) {
- var r = new Float64Array(16);
- if (init) {
- for (var i = 0; i < init.length; ++i)
- r[i] = init[i];
- }
- return r;
- }
+ static gf(init) {
+ var r = new Float64Array(16);
+ if (init) {
+ for (var i = 0; i < init.length; ++i)
+ r[i] = init[i];
+ }
+ return r;
+ }
- static pack(o, n) {
- var b, m = this.gf(), t = this.gf();
- for (var i = 0; i < 16; ++i)
- t[i] = n[i];
- this.carry(t);
- this.carry(t);
- this.carry(t);
- for (var j = 0; j < 2; ++j) {
- m[0] = t[0] - 0xffed;
- for (var i = 1; i < 15; ++i) {
- m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);
- m[i - 1] &= 0xffff;
- }
- m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);
- b = (m[15] >> 16) & 1;
- m[14] &= 0xffff;
- this.cswap(t, m, 1 - b);
- }
- for (var i = 0; i < 16; ++i) {
- o[2 * i] = t[i] & 0xff;
- o[2 * i + 1] = t[i] >> 8;
- }
- }
+ static pack(o, n) {
+ var b, m = this.gf(), t = this.gf();
+ for (var i = 0; i < 16; ++i)
+ t[i] = n[i];
+ this.carry(t);
+ this.carry(t);
+ this.carry(t);
+ for (var j = 0; j < 2; ++j) {
+ m[0] = t[0] - 0xffed;
+ for (var i = 1; i < 15; ++i) {
+ m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);
+ m[i - 1] &= 0xffff;
+ }
+ m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);
+ b = (m[15] >> 16) & 1;
+ m[14] &= 0xffff;
+ this.cswap(t, m, 1 - b);
+ }
+ for (var i = 0; i < 16; ++i) {
+ o[2 * i] = t[i] & 0xff;
+ o[2 * i + 1] = t[i] >> 8;
+ }
+ }
- static carry(o) {
- var c;
- for (var i = 0; i < 16; ++i) {
- o[(i + 1) % 16] += (i < 15 ? 1 : 38) * Math.floor(o[i] / 65536);
- o[i] &= 0xffff;
- }
- }
+ static carry(o) {
+ var c;
+ for (var i = 0; i < 16; ++i) {
+ o[(i + 1) % 16] += (i < 15 ? 1 : 38) * Math.floor(o[i] / 65536);
+ o[i] &= 0xffff;
+ }
+ }
- static cswap(p, q, b) {
- var t, c = ~(b - 1);
- for (var i = 0; i < 16; ++i) {
- t = c & (p[i] ^ q[i]);
- p[i] ^= t;
- q[i] ^= t;
- }
- }
+ static cswap(p, q, b) {
+ var t, c = ~(b - 1);
+ for (var i = 0; i < 16; ++i) {
+ t = c & (p[i] ^ q[i]);
+ p[i] ^= t;
+ q[i] ^= t;
+ }
+ }
- static add(o, a, b) {
- for (var i = 0; i < 16; ++i)
- o[i] = (a[i] + b[i]) | 0;
- }
+ static add(o, a, b) {
+ for (var i = 0; i < 16; ++i)
+ o[i] = (a[i] + b[i]) | 0;
+ }
- static subtract(o, a, b) {
- for (var i = 0; i < 16; ++i)
- o[i] = (a[i] - b[i]) | 0;
- }
+ static subtract(o, a, b) {
+ for (var i = 0; i < 16; ++i)
+ o[i] = (a[i] - b[i]) | 0;
+ }
- static multmod(o, a, b) {
- var t = new Float64Array(31);
- for (var i = 0; i < 16; ++i) {
- for (var j = 0; j < 16; ++j)
- t[i + j] += a[i] * b[j];
- }
- for (var i = 0; i < 15; ++i)
- t[i] += 38 * t[i + 16];
- for (var i = 0; i < 16; ++i)
- o[i] = t[i];
- this.carry(o);
- this.carry(o);
- }
+ static multmod(o, a, b) {
+ var t = new Float64Array(31);
+ for (var i = 0; i < 16; ++i) {
+ for (var j = 0; j < 16; ++j)
+ t[i + j] += a[i] * b[j];
+ }
+ for (var i = 0; i < 15; ++i)
+ t[i] += 38 * t[i + 16];
+ for (var i = 0; i < 16; ++i)
+ o[i] = t[i];
+ this.carry(o);
+ this.carry(o);
+ }
- static invert(o, i) {
- var c = this.gf();
- for (var a = 0; a < 16; ++a)
- c[a] = i[a];
- for (var a = 253; a >= 0; --a) {
- this.multmod(c, c, c);
- if (a !== 2 && a !== 4)
+ static invert(o, i) {
+ var c = this.gf();
+ for (var a = 0; a < 16; ++a)
+ c[a] = i[a];
+ for (var a = 253; a >= 0; --a) {
+ this.multmod(c, c, c);
+ if (a !== 2 && a !== 4)
this.multmod(c, c, i);
- }
- for (var a = 0; a < 16; ++a)
- o[a] = c[a];
- }
+ }
+ for (var a = 0; a < 16; ++a)
+ o[a] = c[a];
+ }
- static clamp(z) {
- z[31] = (z[31] & 127) | 64;
- z[0] &= 248;
- }
+ static clamp(z) {
+ z[31] = (z[31] & 127) | 64;
+ z[0] &= 248;
+ }
- static generatePublicKey(privateKey) {
- var r, z = new Uint8Array(32);
- var a = this.gf([1]),
- b = this.gf([9]),
- c = this.gf(),
- d = this.gf([1]),
- e = this.gf(),
- f = this.gf(),
- _121665 = this.gf([0xdb41, 1]),
- _9 = this.gf([9]);
- for (var i = 0; i < 32; ++i)
- z[i] = privateKey[i];
- this.clamp(z);
- for (var i = 254; i >= 0; --i) {
- r = (z[i >>> 3] >>> (i & 7)) & 1;
- this.cswap(a, b, r);
- this.cswap(c, d, r);
- this.add(e, a, c);
- this.subtract(a, a, c);
- this.add(c, b, d);
- this.subtract(b, b, d);
- this.multmod(d, e, e);
- this.multmod(f, a, a);
- this.multmod(a, c, a);
- this.multmod(c, b, e);
- this.add(e, a, c);
- this.subtract(a, a, c);
- this.multmod(b, a, a);
- this.subtract(c, d, f);
- this.multmod(a, c, _121665);
- this.add(a, a, d);
- this.multmod(c, c, a);
- this.multmod(a, d, f);
- this.multmod(d, b, _9);
- this.multmod(b, e, e);
- this.cswap(a, b, r);
- this.cswap(c, d, r);
- }
- this.invert(c, c);
- this.multmod(a, a, c);
- this.pack(z, a);
- return z;
- }
+ static generatePublicKey(privateKey) {
+ var r, z = new Uint8Array(32);
+ var a = this.gf([1]),
+ b = this.gf([9]),
+ c = this.gf(),
+ d = this.gf([1]),
+ e = this.gf(),
+ f = this.gf(),
+ _121665 = this.gf([0xdb41, 1]),
+ _9 = this.gf([9]);
+ for (var i = 0; i < 32; ++i)
+ z[i] = privateKey[i];
+ this.clamp(z);
+ for (var i = 254; i >= 0; --i) {
+ r = (z[i >>> 3] >>> (i & 7)) & 1;
+ this.cswap(a, b, r);
+ this.cswap(c, d, r);
+ this.add(e, a, c);
+ this.subtract(a, a, c);
+ this.add(c, b, d);
+ this.subtract(b, b, d);
+ this.multmod(d, e, e);
+ this.multmod(f, a, a);
+ this.multmod(a, c, a);
+ this.multmod(c, b, e);
+ this.add(e, a, c);
+ this.subtract(a, a, c);
+ this.multmod(b, a, a);
+ this.subtract(c, d, f);
+ this.multmod(a, c, _121665);
+ this.add(a, a, d);
+ this.multmod(c, c, a);
+ this.multmod(a, d, f);
+ this.multmod(d, b, _9);
+ this.multmod(b, e, e);
+ this.cswap(a, b, r);
+ this.cswap(c, d, r);
+ }
+ this.invert(c, c);
+ this.multmod(a, a, c);
+ this.pack(z, a);
+ return z;
+ }
- static generatePresharedKey() {
- var privateKey = new Uint8Array(32);
- window.crypto.getRandomValues(privateKey);
- return privateKey;
- }
+ static generatePresharedKey() {
+ var privateKey = new Uint8Array(32);
+ window.crypto.getRandomValues(privateKey);
+ return privateKey;
+ }
- static generatePrivateKey() {
- var privateKey = this.generatePresharedKey();
- this.clamp(privateKey);
- return privateKey;
- }
+ static generatePrivateKey() {
+ var privateKey = this.generatePresharedKey();
+ this.clamp(privateKey);
+ return privateKey;
+ }
- static encodeBase64(dest, src) {
- var input = Uint8Array.from([(src[0] >> 2) & 63, ((src[0] << 4) | (src[1] >> 4)) & 63, ((src[1] << 2) | (src[2] >> 6)) & 63, src[2] & 63]);
- for (var i = 0; i < 4; ++i)
- dest[i] = input[i] + 65 +
- (((25 - input[i]) >> 8) & 6) -
- (((51 - input[i]) >> 8) & 75) -
- (((61 - input[i]) >> 8) & 15) +
- (((62 - input[i]) >> 8) & 3);
- }
+ static encodeBase64(dest, src) {
+ var input = Uint8Array.from([(src[0] >> 2) & 63, ((src[0] << 4) | (src[1] >> 4)) & 63, ((src[1] << 2) | (src[2] >> 6)) & 63, src[2] & 63]);
+ for (var i = 0; i < 4; ++i)
+ dest[i] = input[i] + 65 +
+ (((25 - input[i]) >> 8) & 6) -
+ (((51 - input[i]) >> 8) & 75) -
+ (((61 - input[i]) >> 8) & 15) +
+ (((62 - input[i]) >> 8) & 3);
+ }
- static keyToBase64(key) {
- var i, base64 = new Uint8Array(44);
- for (i = 0; i < 32 / 3; ++i)
+ static keyToBase64(key) {
+ var i, base64 = new Uint8Array(44);
+ for (i = 0; i < 32 / 3; ++i)
this.encodeBase64(base64.subarray(i * 4), key.subarray(i * 3));
this.encodeBase64(base64.subarray(i * 4), Uint8Array.from([key[i * 3 + 0], key[i * 3 + 1], 0]));
- base64[43] = 61;
- return String.fromCharCode.apply(null, base64);
- }
+ base64[43] = 61;
+ return String.fromCharCode.apply(null, base64);
+ }
static keyFromBase64(encoded) {
const binaryStr = atob(encoded);
@@ -470,12 +470,12 @@ class Wireguard {
return bytes;
}
- static generateKeypair(secretKey='') {
- var privateKey = secretKey.length>0 ? this.keyFromBase64(secretKey) : this.generatePrivateKey();
+ static generateKeypair(secretKey = '') {
+ var privateKey = secretKey.length > 0 ? this.keyFromBase64(secretKey) : this.generatePrivateKey();
var publicKey = this.generatePublicKey(privateKey);
return {
publicKey: this.keyToBase64(publicKey),
- privateKey: secretKey.length>0 ? secretKey : this.keyToBase64(privateKey)
+ privateKey: secretKey.length > 0 ? secretKey : this.keyToBase64(privateKey)
};
}
}
\ No newline at end of file
diff --git a/web/html/xui/form/tls_settings.html b/web/html/xui/form/tls_settings.html
index d6b0dd18..f743ea7b 100644
--- a/web/html/xui/form/tls_settings.html
+++ b/web/html/xui/form/tls_settings.html
@@ -189,7 +189,7 @@
{{ i18n "reset" }}
- Short ID
+ Short IDs