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>2024-08-06 18:06:39 +0300
committermhsanaei <ho3ein.sanaei@gmail.com>2024-08-06 18:10:42 +0300
commitb8c3555b09d716d877b69b477a7f390e8acbc9af (patch)
tree4d51a0e5b7acd4de6ffbbac2ac526f4064e23d70
parent2d2b30daf1d3b3bc06b1acbf879b1c650054a92b (diff)
improve randomShortId , format document
-rw-r--r--web/assets/js/model/outbound.js284
-rw-r--r--web/assets/js/model/setting.js2
-rw-r--r--web/assets/js/model/xray.js541
-rw-r--r--web/assets/js/util/utils.js20
4 files changed, 468 insertions, 379 deletions
diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js
index bcd35478..1ca6cee4 100644
--- a/web/assets/js/model/outbound.js
+++ b/web/assets/js/model/outbound.js
@@ -72,10 +72,12 @@ const WireguardDomainStrategy = [
Object.freeze(Protocols);
Object.freeze(SSMethods);
Object.freeze(TLS_FLOW_CONTROL);
+Object.freeze(UTLS_FINGERPRINT);
Object.freeze(ALPN_OPTION);
Object.freeze(OutboundDomainStrategies);
Object.freeze(WireguardDomainStrategy);
+
class CommonClass {
static toJsonArray(arr) {
@@ -90,30 +92,30 @@ class CommonClass {
return this;
}
- toString(format=true) {
+ toString(format = true) {
return format ? JSON.stringify(this.toJson(), null, 2) : JSON.stringify(this.toJson());
}
}
class TcpStreamSettings extends CommonClass {
- constructor(type='none', host, path) {
+ constructor(type = 'none', host, path) {
super();
this.type = type;
this.host = host;
this.path = path;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
let header = json.header;
if (!header) return new TcpStreamSettings();
- if(header.type == 'http' && header.request){
+ if (header.type == 'http' && header.request) {
return new TcpStreamSettings(
header.type,
header.request.headers.Host.join(','),
header.request.path.join(','),
);
}
- return new TcpStreamSettings(header.type,'','');
+ return new TcpStreamSettings(header.type, '', '');
}
toJson() {
@@ -132,15 +134,17 @@ class TcpStreamSettings extends CommonClass {
}
class KcpStreamSettings extends CommonClass {
- constructor(mtu=1350, tti=20,
- uplinkCapacity=5,
- downlinkCapacity=20,
- congestion=false,
- readBufferSize=2,
- writeBufferSize=2,
- type='none',
- seed='',
- ) {
+ constructor(
+ mtu = 1350,
+ tti = 50,
+ uplinkCapacity = 5,
+ downlinkCapacity = 20,
+ congestion = false,
+ readBufferSize = 2,
+ writeBufferSize = 2,
+ type = 'none',
+ seed = '',
+ ) {
super();
this.mtu = mtu;
this.tti = tti;
@@ -153,7 +157,7 @@ class KcpStreamSettings extends CommonClass {
this.seed = seed;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new KcpStreamSettings(
json.mtu,
json.tti,
@@ -185,13 +189,13 @@ class KcpStreamSettings extends CommonClass {
}
class WsStreamSettings extends CommonClass {
- constructor(path='/', host='') {
+ constructor(path = '/', host = '') {
super();
this.path = path;
this.host = host;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new WsStreamSettings(
json.path,
json.host,
@@ -207,13 +211,13 @@ class WsStreamSettings extends CommonClass {
}
class HttpStreamSettings extends CommonClass {
- constructor(path='/', host='') {
+ constructor(path = '/', host = '') {
super();
this.path = path;
this.host = host;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new HttpStreamSettings(
json.path,
json.host ? json.host.join(',') : '',
@@ -229,15 +233,18 @@ class HttpStreamSettings extends CommonClass {
}
class QuicStreamSettings extends CommonClass {
- constructor(security='none',
- key='', type='none') {
+ constructor(
+ security = 'none',
+ key = '',
+ type = 'none'
+ ) {
super();
this.security = security;
this.key = key;
this.type = type;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new QuicStreamSettings(
json.security,
json.key,
@@ -257,15 +264,19 @@ class QuicStreamSettings extends CommonClass {
}
class GrpcStreamSettings extends CommonClass {
- constructor(serviceName="", authority="", multiMode=false) {
+ constructor(
+ serviceName = "",
+ authority = "",
+ multiMode = false
+ ) {
super();
this.serviceName = serviceName;
this.authority = authority;
this.multiMode = multiMode;
}
- static fromJson(json={}) {
- return new GrpcStreamSettings(json.serviceName, json.authority, json.multiMode );
+ static fromJson(json = {}) {
+ return new GrpcStreamSettings(json.serviceName, json.authority, json.multiMode);
}
toJson() {
@@ -278,13 +289,13 @@ class GrpcStreamSettings extends CommonClass {
}
class HttpUpgradeStreamSettings extends CommonClass {
- constructor(path='/', host='') {
+ constructor(path = '/', host = '') {
super();
this.path = path;
this.host = host;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new HttpUpgradeStreamSettings(
json.path,
json.host,
@@ -300,13 +311,13 @@ class HttpUpgradeStreamSettings extends CommonClass {
}
class SplitHTTPStreamSettings extends CommonClass {
- constructor(path='/', host='') {
+ constructor(path = '/', host = '') {
super();
this.path = path;
this.host = host;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new SplitHTTPStreamSettings(
json.path,
json.host,
@@ -322,10 +333,12 @@ class SplitHTTPStreamSettings extends CommonClass {
}
class TlsStreamSettings extends CommonClass {
- constructor(serverName='',
- alpn=[],
- fingerprint = '',
- allowInsecure = false) {
+ constructor(
+ serverName = '',
+ alpn = [],
+ fingerprint = '',
+ allowInsecure = false
+ ) {
super();
this.serverName = serverName;
this.alpn = alpn;
@@ -333,7 +346,7 @@ class TlsStreamSettings extends CommonClass {
this.allowInsecure = allowInsecure;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new TlsStreamSettings(
json.serverName,
json.alpn,
@@ -353,7 +366,13 @@ class TlsStreamSettings extends CommonClass {
}
class RealityStreamSettings extends CommonClass {
- constructor(publicKey = '', fingerprint = '', serverName = '', shortId = '', spiderX = '/') {
+ constructor(
+ publicKey = '',
+ fingerprint = '',
+ serverName = '',
+ shortId = '',
+ spiderX = '/'
+ ) {
super();
this.publicKey = publicKey;
this.fingerprint = fingerprint;
@@ -381,7 +400,13 @@ class RealityStreamSettings extends CommonClass {
}
};
class SockoptStreamSettings extends CommonClass {
- constructor(dialerProxy = "", tcpFastOpen = false, tcpKeepAliveInterval = 0, tcpMptcp = false, tcpNoDelay = false) {
+ constructor(
+ dialerProxy = "",
+ tcpFastOpen = false,
+ tcpKeepAliveInterval = 0,
+ tcpMptcp = false,
+ tcpNoDelay = false
+ ) {
super();
this.dialerProxy = dialerProxy;
this.tcpFastOpen = tcpFastOpen;
@@ -413,20 +438,21 @@ class SockoptStreamSettings extends CommonClass {
}
class StreamSettings extends CommonClass {
- constructor(network='tcp',
- security='none',
- tlsSettings=new TlsStreamSettings(),
- realitySettings = new RealityStreamSettings(),
- tcpSettings=new TcpStreamSettings(),
- kcpSettings=new KcpStreamSettings(),
- wsSettings=new WsStreamSettings(),
- httpSettings=new HttpStreamSettings(),
- quicSettings=new QuicStreamSettings(),
- grpcSettings=new GrpcStreamSettings(),
- httpupgradeSettings=new HttpUpgradeStreamSettings(),
- splithttpSettings=new SplitHTTPStreamSettings(),
- sockopt = undefined,
- ) {
+ constructor(
+ network = 'tcp',
+ security = 'none',
+ tlsSettings = new TlsStreamSettings(),
+ realitySettings = new RealityStreamSettings(),
+ tcpSettings = new TcpStreamSettings(),
+ kcpSettings = new KcpStreamSettings(),
+ wsSettings = new WsStreamSettings(),
+ httpSettings = new HttpStreamSettings(),
+ quicSettings = new QuicStreamSettings(),
+ grpcSettings = new GrpcStreamSettings(),
+ httpupgradeSettings = new HttpUpgradeStreamSettings(),
+ splithttpSettings = new SplitHTTPStreamSettings(),
+ sockopt = undefined,
+ ) {
super();
this.network = network;
this.security = security;
@@ -442,7 +468,7 @@ class StreamSettings extends CommonClass {
this.splithttp = splithttpSettings;
this.sockopt = sockopt;
}
-
+
get isTls() {
return this.security === 'tls';
}
@@ -459,7 +485,7 @@ class StreamSettings extends CommonClass {
this.sockopt = value ? new SockoptStreamSettings() : undefined;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new StreamSettings(
json.network,
json.security,
@@ -528,9 +554,9 @@ class Mux extends CommonClass {
class Outbound extends CommonClass {
constructor(
- tag='',
- protocol=Protocols.VMess,
- settings=null,
+ tag = '',
+ protocol = Protocols.VMess,
+ settings = null,
streamSettings = new StreamSettings(),
sendThrough,
mux = new Mux(),
@@ -556,7 +582,7 @@ class Outbound extends CommonClass {
canEnableTls() {
if (![Protocols.VMess, Protocols.VLESS, Protocols.Trojan, Protocols.Shadowsocks].includes(this.protocol)) return false;
- return ["tcp", "ws", "http", "quic", "grpc", "httpupgrade" , "splithttp"].includes(this.stream.network);
+ return ["tcp", "ws", "http", "quic", "grpc", "httpupgrade", "splithttp"].includes(this.stream.network);
}
//this is used for xtls-rprx-vision
@@ -577,7 +603,7 @@ class Outbound extends CommonClass {
}
canEnableMux() {
- if (this.settings.flow && this.settings.flow != ''){
+ if (this.settings.flow && this.settings.flow != '') {
this.mux.enabled = false;
return false;
}
@@ -608,7 +634,7 @@ class Outbound extends CommonClass {
return [Protocols.Socks, Protocols.HTTP].includes(this.protocol);
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new Outbound(
json.tag,
json.protocol,
@@ -639,8 +665,8 @@ class Outbound extends CommonClass {
static fromLink(link) {
data = link.split('://');
- if(data.length !=2) return null;
- switch(data[0].toLowerCase()){
+ if (data.length != 2) return null;
+ switch (data[0].toLowerCase()) {
case Protocols.VMess:
return this.fromVmessLink(JSON.parse(Base64.decode(data[1])));
case Protocols.VLESS:
@@ -652,7 +678,7 @@ class Outbound extends CommonClass {
}
}
- static fromVmessLink(json={}){
+ static fromVmessLink(json = {}) {
let stream = new StreamSettings(json.net, json.tls);
let network = json.net;
@@ -666,7 +692,7 @@ class Outbound extends CommonClass {
stream.type = json.type;
stream.seed = json.path;
} else if (network === 'ws') {
- stream.ws = new WsStreamSettings(json.path,json.host);
+ stream.ws = new WsStreamSettings(json.path, json.host);
} else if (network === 'http' || network == 'h2') {
stream.network = 'http'
stream.http = new HttpStreamSettings(
@@ -680,12 +706,12 @@ class Outbound extends CommonClass {
} else if (network === 'grpc') {
stream.grpc = new GrpcStreamSettings(json.path, json.authority, json.type == 'multi');
} else if (network === 'httpupgrade') {
- stream.httpupgrade = new HttpUpgradeStreamSettings(json.path,json.host);
+ stream.httpupgrade = new HttpUpgradeStreamSettings(json.path, json.host);
} else if (network === 'splithttp') {
- stream.splithttp = new SplitHTTPStreamSettings(json.path,json.host);
+ stream.splithttp = new SplitHTTPStreamSettings(json.path, json.host);
}
- if(json.tls && json.tls == 'tls'){
+ if (json.tls && json.tls == 'tls') {
stream.tls = new TlsStreamSettings(
json.sni,
json.alpn ? json.alpn.split(',') : [],
@@ -698,7 +724,7 @@ class Outbound extends CommonClass {
return new Outbound(json.ps, Protocols.VMess, new Outbound.VmessSettings(json.add, port, json.id), stream);
}
- static fromParamLink(link){
+ static fromParamLink(link) {
const url = new URL(link);
let type = url.searchParams.get('type') ?? 'tcp';
let security = url.searchParams.get('security') ?? 'none';
@@ -715,9 +741,9 @@ class Outbound extends CommonClass {
stream.kcp.type = headerType ?? 'none';
stream.kcp.seed = path;
} else if (type === 'ws') {
- stream.ws = new WsStreamSettings(path,host);
+ stream.ws = new WsStreamSettings(path, host);
} else if (type === 'http' || type == 'h2') {
- stream.http = new HttpStreamSettings(path,host);
+ stream.http = new HttpStreamSettings(path, host);
} else if (type === 'quic') {
stream.quic = new QuicStreamSettings(
url.searchParams.get('quicSecurity') ?? 'none',
@@ -729,25 +755,25 @@ class Outbound extends CommonClass {
url.searchParams.get('authority') ?? '',
url.searchParams.get('mode') == 'multi');
} else if (type === 'httpupgrade') {
- stream.httpupgrade = new HttpUpgradeStreamSettings(path,host);
+ stream.httpupgrade = new HttpUpgradeStreamSettings(path, host);
} else if (type === 'splithttp') {
- stream.splithttp = new SplitHTTPStreamSettings(path,host);
+ stream.splithttp = new SplitHTTPStreamSettings(path, host);
}
- if(security == 'tls'){
- let fp=url.searchParams.get('fp') ?? 'none';
- let alpn=url.searchParams.get('alpn');
- let allowInsecure=url.searchParams.get('allowInsecure');
- let sni=url.searchParams.get('sni') ?? '';
+ if (security == 'tls') {
+ let fp = url.searchParams.get('fp') ?? 'none';
+ let alpn = url.searchParams.get('alpn');
+ let allowInsecure = url.searchParams.get('allowInsecure');
+ let sni = url.searchParams.get('sni') ?? '';
stream.tls = new TlsStreamSettings(sni, alpn ? alpn.split(',') : [], fp, allowInsecure == 1);
}
- if(security == 'reality'){
- let pbk=url.searchParams.get('pbk');
- let fp=url.searchParams.get('fp');
- let sni=url.searchParams.get('sni') ?? '';
- let sid=url.searchParams.get('sid') ?? '';
- let spx=url.searchParams.get('spx') ?? '';
+ if (security == 'reality') {
+ let pbk = url.searchParams.get('pbk');
+ let fp = url.searchParams.get('fp');
+ let sni = url.searchParams.get('sni') ?? '';
+ let sid = url.searchParams.get('sid') ?? '';
+ let spx = url.searchParams.get('spx') ?? '';
stream.reality = new RealityStreamSettings(pbk, fp, sni, sid, spx);
}
@@ -755,14 +781,14 @@ class Outbound extends CommonClass {
const match = link.match(regex);
if (!match) return null;
- let [, protocol, userData, address, port, ] = match;
+ let [, protocol, userData, address, port,] = match;
port *= 1;
- if(protocol == 'ss') {
+ if (protocol == 'ss') {
protocol = 'shadowsocks';
userData = atob(userData).split(':');
}
var settings;
- switch(protocol){
+ switch (protocol) {
case Protocols.VLESS:
settings = new Outbound.VLESSSettings(address, port, userData, url.searchParams.get('flow') ?? '');
break;
@@ -770,7 +796,7 @@ class Outbound extends CommonClass {
settings = new Outbound.TrojanSettings(address, port, userData);
break;
case Protocols.Shadowsocks:
- let method = userData.splice(0,1)[0];
+ let method = userData.splice(0, 1)[0];
settings = new Outbound.ShadowsocksSettings(address, port, userData.join(":"), method, true);
break;
default:
@@ -826,13 +852,13 @@ Outbound.Settings = class extends CommonClass {
}
};
Outbound.FreedomSettings = class extends CommonClass {
- constructor(domainStrategy='', fragment={}) {
+ constructor(domainStrategy = '', fragment = {}) {
super();
this.domainStrategy = domainStrategy;
this.fragment = fragment;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new Outbound.FreedomSettings(
json.domainStrategy,
json.fragment ? Outbound.FreedomSettings.Fragment.fromJson(json.fragment) : undefined,
@@ -847,14 +873,14 @@ Outbound.FreedomSettings = class extends CommonClass {
}
};
Outbound.FreedomSettings.Fragment = class extends CommonClass {
- constructor(packets='1-3',length='',interval=''){
+ constructor(packets = '1-3', length = '', interval = '') {
super();
this.packets = packets;
this.length = length;
this.interval = interval;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new Outbound.FreedomSettings.Fragment(
json.packets,
json.length,
@@ -868,7 +894,7 @@ Outbound.BlackholeSettings = class extends CommonClass {
this.type = type;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new Outbound.BlackholeSettings(
json.response ? json.response.type : undefined,
);
@@ -876,19 +902,19 @@ Outbound.BlackholeSettings = class extends CommonClass {
toJson() {
return {
- response: ObjectUtil.isEmpty(this.type) ? undefined : {type: this.type},
+ response: ObjectUtil.isEmpty(this.type) ? undefined : { type: this.type },
};
}
};
Outbound.DNSSettings = class extends CommonClass {
- constructor(network='udp', address='1.1.1.1', port=53) {
+ constructor(network = 'udp', address = '1.1.1.1', port = 53) {
super();
this.network = network;
this.address = address;
this.port = port;
}
- static fromJson(json={}){
+ static fromJson(json = {}) {
return new Outbound.DNSSettings(
json.network,
json.address,
@@ -904,8 +930,8 @@ Outbound.VmessSettings = class extends CommonClass {
this.id = id;
}
- static fromJson(json={}) {
- if(ObjectUtil.isArrEmpty(json.vnext)) return new Outbound.VmessSettings();
+ static fromJson(json = {}) {
+ if (ObjectUtil.isArrEmpty(json.vnext)) return new Outbound.VmessSettings();
return new Outbound.VmessSettings(
json.vnext[0].address,
json.vnext[0].port,
@@ -918,13 +944,13 @@ Outbound.VmessSettings = class extends CommonClass {
vnext: [{
address: this.address,
port: this.port,
- users: [{id: this.id}],
+ users: [{ id: this.id }],
}],
};
}
};
Outbound.VLESSSettings = class extends CommonClass {
- constructor(address, port, id, flow, encryption='none') {
+ constructor(address, port, id, flow, encryption = 'none') {
super();
this.address = address;
this.port = port;
@@ -933,8 +959,8 @@ Outbound.VLESSSettings = class extends CommonClass {
this.encryption = encryption
}
- static fromJson(json={}) {
- if(ObjectUtil.isArrEmpty(json.vnext)) return new Outbound.VLESSSettings();
+ static fromJson(json = {}) {
+ if (ObjectUtil.isArrEmpty(json.vnext)) return new Outbound.VLESSSettings();
return new Outbound.VLESSSettings(
json.vnext[0].address,
json.vnext[0].port,
@@ -949,7 +975,7 @@ Outbound.VLESSSettings = class extends CommonClass {
vnext: [{
address: this.address,
port: this.port,
- users: [{id: this.id, flow: this.flow, encryption: 'none',}],
+ users: [{ id: this.id, flow: this.flow, encryption: 'none', }],
}],
};
}
@@ -962,8 +988,8 @@ Outbound.TrojanSettings = class extends CommonClass {
this.password = password;
}
- static fromJson(json={}) {
- if(ObjectUtil.isArrEmpty(json.servers)) return new Outbound.TrojanSettings();
+ static fromJson(json = {}) {
+ if (ObjectUtil.isArrEmpty(json.servers)) return new Outbound.TrojanSettings();
return new Outbound.TrojanSettings(
json.servers[0].address,
json.servers[0].port,
@@ -992,9 +1018,9 @@ Outbound.ShadowsocksSettings = class extends CommonClass {
this.UoTVersion = UoTVersion;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
let servers = json.servers;
- if(ObjectUtil.isArrEmpty(servers)) servers=[{}];
+ if (ObjectUtil.isArrEmpty(servers)) servers = [{}];
return new Outbound.ShadowsocksSettings(
servers[0].address,
servers[0].port,
@@ -1028,9 +1054,9 @@ Outbound.SocksSettings = class extends CommonClass {
this.pass = pass;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
let servers = json.servers;
- if(ObjectUtil.isArrEmpty(servers)) servers=[{users: [{}]}];
+ if (ObjectUtil.isArrEmpty(servers)) servers = [{ users: [{}] }];
return new Outbound.SocksSettings(
servers[0].address,
servers[0].port,
@@ -1044,7 +1070,7 @@ Outbound.SocksSettings = class extends CommonClass {
servers: [{
address: this.address,
port: this.port,
- users: ObjectUtil.isEmpty(this.user) ? [] : [{user: this.user, pass: this.pass}],
+ users: ObjectUtil.isEmpty(this.user) ? [] : [{ user: this.user, pass: this.pass }],
}],
};
}
@@ -1058,9 +1084,9 @@ Outbound.HttpSettings = class extends CommonClass {
this.pass = pass;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
let servers = json.servers;
- if(ObjectUtil.isArrEmpty(servers)) servers=[{users: [{}]}];
+ if (ObjectUtil.isArrEmpty(servers)) servers = [{ users: [{}] }];
return new Outbound.HttpSettings(
servers[0].address,
servers[0].port,
@@ -1074,7 +1100,7 @@ Outbound.HttpSettings = class extends CommonClass {
servers: [{
address: this.address,
port: this.port,
- users: ObjectUtil.isEmpty(this.user) ? [] : [{user: this.user, pass: this.pass}],
+ users: ObjectUtil.isEmpty(this.user) ? [] : [{ user: this.user, pass: this.pass }],
}],
};
}
@@ -1082,17 +1108,23 @@ Outbound.HttpSettings = class extends CommonClass {
Outbound.WireguardSettings = class extends CommonClass {
constructor(
- mtu=1420, secretKey='',
- address=[''], workers=2, domainStrategy='', reserved='',
- peers=[new Outbound.WireguardSettings.Peer()], kernelMode=false) {
+ mtu = 1420,
+ secretKey = '',
+ address = [''],
+ workers = 2,
+ domainStrategy = '',
+ reserved = '',
+ peers = [new Outbound.WireguardSettings.Peer()],
+ kernelMode = false
+ ) {
super();
this.mtu = mtu;
this.secretKey = secretKey;
- this.pubKey = secretKey.length>0 ? Wireguard.generateKeypair(secretKey).publicKey : '';
- this.address = address instanceof Array ? address.join(',') : address;
+ this.pubKey = secretKey.length > 0 ? Wireguard.generateKeypair(secretKey).publicKey : '';
+ this.address = Array.isArray(address) ? address.join(',') : address;
this.workers = workers;
this.domainStrategy = domainStrategy;
- this.reserved = reserved instanceof Array ? reserved.join(',') : reserved;
+ this.reserved = Array.isArray(reserved) ? reserved.join(',') : reserved;
this.peers = peers;
this.kernelMode = kernelMode;
}
@@ -1105,7 +1137,7 @@ Outbound.WireguardSettings = class extends CommonClass {
this.peers.splice(index, 1);
}
- static fromJson(json={}){
+ static fromJson(json = {}) {
return new Outbound.WireguardSettings(
json.mtu,
json.secretKey,
@@ -1120,10 +1152,10 @@ Outbound.WireguardSettings = class extends CommonClass {
toJson() {
return {
- mtu: this.mtu?? undefined,
+ mtu: this.mtu ?? undefined,
secretKey: this.secretKey,
address: this.address ? this.address.split(",") : [],
- workers: this.workers?? undefined,
+ workers: this.workers ?? undefined,
domainStrategy: WireguardDomainStrategy.includes(this.domainStrategy) ? this.domainStrategy : undefined,
reserved: this.reserved ? this.reserved.split(",").map(Number) : undefined,
peers: Outbound.WireguardSettings.Peer.toJsonArray(this.peers),
@@ -1133,7 +1165,13 @@ Outbound.WireguardSettings = class extends CommonClass {
};
Outbound.WireguardSettings.Peer = class extends CommonClass {
- constructor(publicKey='', psk='', allowedIPs=['0.0.0.0/0','::/0'], endpoint='', keepAlive=0) {
+ constructor(
+ publicKey = '',
+ psk = '',
+ allowedIPs = ['0.0.0.0/0', '::/0'],
+ endpoint = '',
+ keepAlive = 0
+ ) {
super();
this.publicKey = publicKey;
this.psk = psk;
@@ -1142,7 +1180,7 @@ Outbound.WireguardSettings.Peer = class extends CommonClass {
this.keepAlive = keepAlive;
}
- static fromJson(json={}){
+ static fromJson(json = {}) {
return new Outbound.WireguardSettings.Peer(
json.publicKey,
json.preSharedKey,
@@ -1155,10 +1193,10 @@ Outbound.WireguardSettings.Peer = class extends CommonClass {
toJson() {
return {
publicKey: this.publicKey,
- preSharedKey: this.psk.length>0 ? this.psk : undefined,
+ preSharedKey: this.psk.length > 0 ? this.psk : undefined,
allowedIPs: this.allowedIPs ? this.allowedIPs : undefined,
endpoint: this.endpoint,
- keepAlive: this.keepAlive?? undefined,
+ keepAlive: this.keepAlive ?? undefined,
};
}
}; \ No newline at end of file
diff --git a/web/assets/js/model/setting.js b/web/assets/js/model/setting.js
index cd46ab34..9f745ae8 100644
--- a/web/assets/js/model/setting.js
+++ b/web/assets/js/model/setting.js
@@ -26,7 +26,7 @@ class AllSetting {
this.secretEnable = false;
this.subEnable = false;
this.subListen = "";
- this.subPort = "2096";
+ this.subPort = 2096;
this.subPath = "/sub/";
this.subJsonPath = "/json/";
this.subDomain = "";
diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js
index 5c3f3010..d239160b 100644
--- a/web/assets/js/model/xray.js
+++ b/web/assets/js/model/xray.js
@@ -78,9 +78,9 @@ const ALPN_OPTION = {
};
const SNIFFING_OPTION = {
- HTTP: "http",
- TLS: "tls",
- QUIC: "quic",
+ HTTP: "http",
+ TLS: "tls",
+ QUIC: "quic",
FAKEDNS: "fakedns"
};
@@ -103,6 +103,7 @@ const DOMAIN_STRATEGY_OPTION = {
FORCE_IPV4V6: "ForceIPv4v6",
FORCE_IPV4: "ForceIPv4",
};
+
const TCP_CONGESTION_OPTION = {
BBR: "bbr",
CUBIC: "cubic",
@@ -136,7 +137,7 @@ class XrayCommonClass {
return this;
}
- toString(format=true) {
+ toString(format = true) {
return format ? JSON.stringify(this.toJson(), null, 2) : JSON.stringify(this.toJson());
}
@@ -145,7 +146,7 @@ class XrayCommonClass {
if (v2Headers) {
Object.keys(v2Headers).forEach(key => {
let values = v2Headers[key];
- if (typeof(values) === 'string') {
+ if (typeof (values) === 'string') {
newHeaders.push({ name: key, value: values });
} else {
for (let i = 0; i < values.length; ++i) {
@@ -157,7 +158,7 @@ class XrayCommonClass {
return newHeaders;
}
- static toV2Headers(headers, arr=true) {
+ static toV2Headers(headers, arr = true) {
let v2Headers = {};
for (let i = 0; i < headers.length; ++i) {
let name = headers[i].name;
@@ -180,11 +181,12 @@ class XrayCommonClass {
}
class TcpStreamSettings extends XrayCommonClass {
- constructor(acceptProxyProtocol=false,
- type='none',
- request=new TcpStreamSettings.TcpRequest(),
- response=new TcpStreamSettings.TcpResponse(),
- ) {
+ constructor(
+ acceptProxyProtocol = false,
+ type = 'none',
+ request = new TcpStreamSettings.TcpRequest(),
+ response = new TcpStreamSettings.TcpResponse(),
+ ) {
super();
this.acceptProxyProtocol = acceptProxyProtocol;
this.type = type;
@@ -192,7 +194,7 @@ class TcpStreamSettings extends XrayCommonClass {
this.response = response;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
let header = json.header;
if (!header) {
header = {};
@@ -217,10 +219,11 @@ class TcpStreamSettings extends XrayCommonClass {
}
TcpStreamSettings.TcpRequest = class extends XrayCommonClass {
- constructor(version='1.1',
- method='GET',
- path=['/'],
- headers=[],
+ constructor(
+ version = '1.1',
+ method = 'GET',
+ path = ['/'],
+ headers = [],
) {
super();
this.version = version;
@@ -245,7 +248,7 @@ TcpStreamSettings.TcpRequest = class extends XrayCommonClass {
this.headers.splice(index, 1);
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new TcpStreamSettings.TcpRequest(
json.version,
json.method,
@@ -265,10 +268,11 @@ TcpStreamSettings.TcpRequest = class extends XrayCommonClass {
};
TcpStreamSettings.TcpResponse = class extends XrayCommonClass {
- constructor(version='1.1',
- status='200',
- reason='OK',
- headers=[],
+ constructor(
+ version = '1.1',
+ status = '200',
+ reason = 'OK',
+ headers = [],
) {
super();
this.version = version;
@@ -285,7 +289,7 @@ TcpStreamSettings.TcpResponse = class extends XrayCommonClass {
this.headers.splice(index, 1);
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new TcpStreamSettings.TcpResponse(
json.version,
json.status,
@@ -305,15 +309,17 @@ TcpStreamSettings.TcpResponse = class extends XrayCommonClass {
};
class KcpStreamSettings extends XrayCommonClass {
- constructor(mtu=1350, tti=20,
- uplinkCapacity=5,
- downlinkCapacity=20,
- congestion=false,
- readBufferSize=2,
- writeBufferSize=2,
- type='none',
- seed=RandomUtil.randomSeq(10),
- ) {
+ constructor(
+ mtu = 1350,
+ tti = 50,
+ uplinkCapacity = 5,
+ downlinkCapacity = 20,
+ congestion = false,
+ readBufferSize = 2,
+ writeBufferSize = 2,
+ type = 'none',
+ seed = RandomUtil.randomSeq(10),
+ ) {
super();
this.mtu = mtu;
this.tti = tti;
@@ -326,7 +332,7 @@ class KcpStreamSettings extends XrayCommonClass {
this.seed = seed;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new KcpStreamSettings(
json.mtu,
json.tti,
@@ -358,7 +364,12 @@ class KcpStreamSettings extends XrayCommonClass {
}
class WsStreamSettings extends XrayCommonClass {
- constructor(acceptProxyProtocol=false, path='/', host='', headers=[]) {
+ constructor(
+ acceptProxyProtocol = false,
+ path = '/',
+ host = '',
+ headers = []
+ ) {
super();
this.acceptProxyProtocol = acceptProxyProtocol;
this.path = path;
@@ -374,7 +385,7 @@ class WsStreamSettings extends XrayCommonClass {
this.headers.splice(index, 1);
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new WsStreamSettings(
json.acceptProxyProtocol,
json.path,
@@ -395,9 +406,9 @@ class WsStreamSettings extends XrayCommonClass {
class HttpStreamSettings extends XrayCommonClass {
constructor(
- path='/',
- host=[''],
- ) {
+ path = '/',
+ host = [''],
+ ) {
super();
this.path = path;
this.host = host.length === 0 ? [''] : host;
@@ -411,7 +422,7 @@ class HttpStreamSettings extends XrayCommonClass {
this.host.splice(index, 1);
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new HttpStreamSettings(json.path, json.host);
}
@@ -430,15 +441,18 @@ class HttpStreamSettings extends XrayCommonClass {
}
class QuicStreamSettings extends XrayCommonClass {
- constructor(security='none',
- key=RandomUtil.randomSeq(10), type='none') {
+ constructor(
+ security = 'none',
+ key = RandomUtil.randomSeq(10),
+ type = 'none'
+ ) {
super();
this.security = security;
this.key = key;
this.type = type;
}
- static fromJson(json={}) {
+ static fromJson(json = {}) {
return new QuicStreamSettings(
json.security,
json.key,
@@ -459,22 +473,22 @@ class QuicStreamSettings extends XrayCommonClass {