diff options
| author | mhsanaei <ho3ein.sanaei@gmail.com> | 2024-04-01 15:32:02 +0300 |
|---|---|---|
| committer | mhsanaei <ho3ein.sanaei@gmail.com> | 2024-04-01 15:32:02 +0300 |
| commit | 4e20bb5f02c4aef31c9026458984825e820414ba (patch) | |
| tree | 2229b2c5ce10742631b39efa4f6c1099c6d1f74f /web/assets | |
| parent | 44b7eb881cb2ff2142f3566913c1e70ee8106556 (diff) | |
Add host for WS
Diffstat (limited to 'web/assets')
| -rw-r--r-- | web/assets/js/model/outbound.js | 2 | ||||
| -rw-r--r-- | web/assets/js/model/xray.js | 16 |
2 files changed, 16 insertions, 2 deletions
diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js index 708728a8..aa83287c 100644 --- a/web/assets/js/model/outbound.js +++ b/web/assets/js/model/outbound.js @@ -194,6 +194,7 @@ class WsStreamSettings extends CommonClass { static fromJson(json={}) { return new WsStreamSettings( json.path, + json.host, json.headers && !ObjectUtil.isEmpty(json.headers.Host) ? json.headers.Host : '', ); } @@ -201,6 +202,7 @@ class WsStreamSettings extends CommonClass { toJson() { return { path: this.path, + host: this.host, headers: ObjectUtil.isEmpty(this.host) ? undefined : {Host: this.host}, }; } diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js index 9d863798..40e435cc 100644 --- a/web/assets/js/model/xray.js +++ b/web/assets/js/model/xray.js @@ -338,10 +338,11 @@ class KcpStreamSettings extends XrayCommonClass { } class WsStreamSettings extends XrayCommonClass { - constructor(acceptProxyProtocol=false, path='/', headers=[]) { + constructor(acceptProxyProtocol=false, path='/', host='', headers=[]) { super(); this.acceptProxyProtocol = acceptProxyProtocol; this.path = path; + this.host = host; this.headers = headers; } @@ -366,6 +367,7 @@ class WsStreamSettings extends XrayCommonClass { return new WsStreamSettings( json.acceptProxyProtocol, json.path, + json.host, XrayCommonClass.toHeaders(json.headers), ); } @@ -374,6 +376,7 @@ class WsStreamSettings extends XrayCommonClass { return { acceptProxyProtocol: this.acceptProxyProtocol, path: this.path, + host: this.host, headers: XrayCommonClass.toV2Headers(this.headers, false), }; } @@ -1108,7 +1111,12 @@ class Inbound extends XrayCommonClass { if (this.isTcp) { return this.stream.tcp.request.getHeader("Host"); } else if (this.isWs) { - return this.stream.ws.getHeader("Host"); + const hostHeader = this.stream.ws.getHeader("Host"); + if (hostHeader !== null) { + return hostHeader; + } else { + return this.stream.ws.host; + } } else if (this.isH2) { return this.stream.http.host[0]; } else if (this.isHttpupgrade) { @@ -1230,6 +1238,7 @@ class Inbound extends XrayCommonClass { } else if (network === 'ws') { let ws = this.stream.ws; obj.path = ws.path; + obj.host = ws.host; let index = ws.headers.findIndex(header => header.name.toLowerCase() === 'host'); if (index >= 0) { obj.host = ws.headers[index].value; @@ -1300,6 +1309,7 @@ class Inbound extends XrayCommonClass { case "ws": const ws = this.stream.ws; params.set("path", ws.path); + params.set("host", ws.host); const index = ws.headers.findIndex(header => header.name.toLowerCase() === 'host'); if (index >= 0) { const host = ws.headers[index].value; @@ -1420,6 +1430,7 @@ class Inbound extends XrayCommonClass { case "ws": const ws = this.stream.ws; params.set("path", ws.path); + params.set("host", ws.host); const index = ws.headers.findIndex(header => header.name.toLowerCase() === 'host'); if (index >= 0) { const host = ws.headers[index].value; @@ -1507,6 +1518,7 @@ class Inbound extends XrayCommonClass { case "ws": const ws = this.stream.ws; params.set("path", ws.path); + params.set("host", ws.host); const index = ws.headers.findIndex(header => header.name.toLowerCase() === 'host'); if (index >= 0) { const host = ws.headers[index].value; |
