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-11 01:47:44 +0300
committermhsanaei <ho3ein.sanaei@gmail.com>2024-08-11 01:47:44 +0300
commit93d52bc86c4725fdfbdb629e87bbb5d24abf7d37 (patch)
treeffd23266cd3118484dcd012e675e0e2b110e542c /web/assets
parentbda5c2c915977e0cbf9de867d918508ef688dd45 (diff)
new - vmess security (inbound client side - outbound)
Diffstat (limited to 'web/assets')
-rw-r--r--web/assets/js/model/outbound.js17
-rw-r--r--web/assets/js/model/xray.js73
2 files changed, 69 insertions, 21 deletions
diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js
index 1ca6cee4..f1909552 100644
--- a/web/assets/js/model/outbound.js
+++ b/web/assets/js/model/outbound.js
@@ -69,6 +69,14 @@ const WireguardDomainStrategy = [
"ForceIPv6v4"
];
+const USERS_SECURITY = {
+ AES_128_GCM: "aes-128-gcm",
+ CHACHA20_POLY1305: "chacha20-poly1305",
+ AUTO: "auto",
+ NONE: "none",
+ ZERO: "zero",
+};
+
Object.freeze(Protocols);
Object.freeze(SSMethods);
Object.freeze(TLS_FLOW_CONTROL);
@@ -76,6 +84,7 @@ Object.freeze(UTLS_FINGERPRINT);
Object.freeze(ALPN_OPTION);
Object.freeze(OutboundDomainStrategies);
Object.freeze(WireguardDomainStrategy);
+Object.freeze(USERS_SECURITY);
class CommonClass {
@@ -721,7 +730,7 @@ class Outbound extends CommonClass {
const port = json.port * 1;
- return new Outbound(json.ps, Protocols.VMess, new Outbound.VmessSettings(json.add, port, json.id), stream);
+ return new Outbound(json.ps, Protocols.VMess, new Outbound.VmessSettings(json.add, port, json.id, json.scy), stream);
}
static fromParamLink(link) {
@@ -923,11 +932,12 @@ Outbound.DNSSettings = class extends CommonClass {
}
};
Outbound.VmessSettings = class extends CommonClass {
- constructor(address, port, id) {
+ constructor(address, port, id, security) {
super();
this.address = address;
this.port = port;
this.id = id;
+ this.security = security;
}
static fromJson(json = {}) {
@@ -936,6 +946,7 @@ Outbound.VmessSettings = class extends CommonClass {
json.vnext[0].address,
json.vnext[0].port,
json.vnext[0].users[0].id,
+ json.vnext[0].users[0].security,
);
}
@@ -944,7 +955,7 @@ Outbound.VmessSettings = class extends CommonClass {
vnext: [{
address: this.address,
port: this.port,
- users: [{ id: this.id }],
+ users: [{ id: this.id, security: this.security }],
}],
};
}
diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js
index d239160b..0e4e2e72 100644
--- a/web/assets/js/model/xray.js
+++ b/web/assets/js/model/xray.js
@@ -110,6 +110,14 @@ const TCP_CONGESTION_OPTION = {
RENO: "reno",
};
+const USERS_SECURITY = {
+ AES_128_GCM: "aes-128-gcm",
+ CHACHA20_POLY1305: "chacha20-poly1305",
+ AUTO: "auto",
+ NONE: "none",
+ ZERO: "zero",
+};
+
Object.freeze(Protocols);
Object.freeze(SSMethods);
Object.freeze(XTLS_FLOW_CONTROL);
@@ -122,6 +130,7 @@ Object.freeze(SNIFFING_OPTION);
Object.freeze(USAGE_OPTION);
Object.freeze(DOMAIN_STRATEGY_OPTION);
Object.freeze(TCP_CONGESTION_OPTION);
+Object.freeze(USERS_SECURITY);
class XrayCommonClass {
@@ -1446,20 +1455,21 @@ class Inbound extends XrayCommonClass {
this.sniffing = new Sniffing();
}
- genVmessLink(address = '', port = this.port, forceTls, remark = '', clientId) {
+ genVmessLink(address = '', port = this.port, forceTls, remark = '', clientId, security) {
if (this.protocol !== Protocols.VMESS) {
return '';
}
- const security = forceTls == 'same' ? this.stream.security : forceTls;
+ const tls = forceTls == 'same' ? this.stream.security : forceTls;
let obj = {
v: '2',
ps: remark,
add: address,
port: port,
id: clientId,
+ scy: security,
net: this.stream.network,
type: 'none',
- tls: security,
+ tls: tls,
};
const network = this.stream.network;
if (network === 'tcp') {
@@ -1870,7 +1880,7 @@ class Inbound extends XrayCommonClass {
genLink(address = '', port = this.port, forceTls = 'same', remark = '', client) {
switch (this.protocol) {
case Protocols.VMESS:
- return this.genVmessLink(address, port, forceTls, remark, client.id);
+ return this.genVmessLink(address, port, forceTls, remark, client.id, client.security);
case Protocols.VLESS:
return this.genVLESSLink(address, port, forceTls, remark, client.id, client.flow);
case Protocols.SHADOWSOCKS:
@@ -2007,24 +2017,24 @@ Inbound.Settings = class extends XrayCommonClass {
Inbound.VmessSettings = class extends Inbound.Settings {
constructor(protocol,
- vmesses = [new Inbound.VmessSettings.Vmess()]) {
+ vmesses = [new Inbound.VmessSettings.VMESS()]) {
super(protocol);
this.vmesses = vmesses;
}
indexOfVmessById(id) {
- return this.vmesses.findIndex(vmess => vmess.id === id);
+ return this.vmesses.findIndex(VMESS => VMESS.id === id);
}
- addVmess(vmess) {
- if (this.indexOfVmessById(vmess.id) >= 0) {
+ addVmess(VMESS) {
+ if (this.indexOfVmessById(VMESS.id) >= 0) {
return false;
}
- this.vmesses.push(vmess);
+ this.vmesses.push(VMESS);
}
- delVmess(vmess) {
- const i = this.indexOfVmessById(vmess.id);
+ delVmess(VMESS) {
+ const i = this.indexOfVmessById(VMESS.id);
if (i >= 0) {
this.vmesses.splice(i, 1);
}
@@ -2033,7 +2043,7 @@ Inbound.VmessSettings = class extends Inbound.Settings {
static fromJson(json = {}) {
return new Inbound.VmessSettings(
Protocols.VMESS,
- json.clients.map(client => Inbound.VmessSettings.Vmess.fromJson(client)),
+ json.clients.map(client => Inbound.VmessSettings.VMESS.fromJson(client)),
);
}
@@ -2043,10 +2053,23 @@ Inbound.VmessSettings = class extends Inbound.Settings {
};
}
};
-Inbound.VmessSettings.Vmess = class extends XrayCommonClass {
- constructor(id = RandomUtil.randomUUID(), email = RandomUtil.randomLowerAndNum(8), limitIp = 0, totalGB = 0, expiryTime = 0, enable = true, tgId = '', subId = RandomUtil.randomLowerAndNum(16), reset = 0) {
+
+Inbound.VmessSettings.VMESS = class extends XrayCommonClass {
+ constructor(
+ id = RandomUtil.randomUUID(),
+ security = USERS_SECURITY.AUTO,
+ email = RandomUtil.randomLowerAndNum(8),
+ limitIp = 0,
+ totalGB = 0,
+ expiryTime = 0,
+ enable = true,
+ tgId = '',
+ subId = RandomUtil.randomLowerAndNum(16),
+ reset = 0
+ ) {
super();
this.id = id;
+ this.security = security;
this.email = email;
this.limitIp = limitIp;
this.totalGB = totalGB;
@@ -2058,8 +2081,9 @@ Inbound.VmessSettings.Vmess = class extends XrayCommonClass {
}
static fromJson(json = {}) {
- return new Inbound.VmessSettings.Vmess(
+ return new Inbound.VmessSettings.VMESS(
json.id,
+ json.security,
json.email,
json.limitIp,
json.totalGB,
@@ -2098,10 +2122,12 @@ Inbound.VmessSettings.Vmess = class extends XrayCommonClass {
};
Inbound.VLESSSettings = class extends Inbound.Settings {
- constructor(protocol,
+ constructor(
+ protocol,
vlesses = [new Inbound.VLESSSettings.VLESS()],
decryption = 'none',
- fallbacks = []) {
+ fallbacks = []
+ ) {
super(protocol);
this.vlesses = vlesses;
this.decryption = decryption;
@@ -2135,7 +2161,18 @@ Inbound.VLESSSettings = class extends Inbound.Settings {
};
Inbound.VLESSSettings.VLESS = class extends XrayCommonClass {
- constructor(id = RandomUtil.randomUUID(), flow = '', email = RandomUtil.randomLowerAndNum(8), limitIp = 0, totalGB = 0, expiryTime = 0, enable = true, tgId = '', subId = RandomUtil.randomLowerAndNum(16), reset = 0) {
+ constructor(
+ id = RandomUtil.randomUUID(),
+ flow = '',
+ email = RandomUtil.randomLowerAndNum(8),
+ limitIp = 0,
+ totalGB = 0,
+ expiryTime = 0,
+ enable = true,
+ tgId = '',
+ subId = RandomUtil.randomLowerAndNum(16),
+ reset = 0
+ ) {
super();
this.id = id;
this.flow = flow;