diff options
| author | mhsanaei <ho3ein.sanaei@gmail.com> | 2024-08-11 01:47:44 +0300 |
|---|---|---|
| committer | mhsanaei <ho3ein.sanaei@gmail.com> | 2024-08-11 01:47:44 +0300 |
| commit | 93d52bc86c4725fdfbdb629e87bbb5d24abf7d37 (patch) | |
| tree | ffd23266cd3118484dcd012e675e0e2b110e542c /web/assets | |
| parent | bda5c2c915977e0cbf9de867d918508ef688dd45 (diff) | |
new - vmess security (inbound client side - outbound)
Diffstat (limited to 'web/assets')
| -rw-r--r-- | web/assets/js/model/outbound.js | 17 | ||||
| -rw-r--r-- | web/assets/js/model/xray.js | 73 |
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; |
