diff options
| author | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-07-29 15:22:02 +0300 |
|---|---|---|
| committer | MHSanaei <ho3ein.sanaei@gmail.com> | 2023-07-29 15:22:02 +0300 |
| commit | 6066edd510d69b2e92b830ad177b88ae083697d4 (patch) | |
| tree | 50d337840cfe3d0534e77eb44fb59b195048dab7 | |
| parent | eaec9e54ad120362cd4f8728db10c36c7a25a4d2 (diff) | |
sockopt acceptProxyProtocol for h2 , gRPC #773
| -rw-r--r-- | web/assets/js/model/xray.js | 41 | ||||
| -rw-r--r-- | web/html/xui/form/stream/stream_grpc.html | 2 | ||||
| -rw-r--r-- | web/html/xui/form/stream/stream_http.html | 2 |
3 files changed, 37 insertions, 8 deletions
diff --git a/web/assets/js/model/xray.js b/web/assets/js/model/xray.js index 462cc125..94dc4eaa 100644 --- a/web/assets/js/model/xray.js +++ b/web/assets/js/model/xray.js @@ -387,12 +387,10 @@ class HttpStreamSettings extends XrayCommonClass { constructor( path='/', host=[''], - sockopt={acceptProxyProtocol: false} ) { super(); this.path = path; this.host = host.length === 0 ? [''] : host; - this.sockopt = sockopt; } addHost(host) { @@ -417,7 +415,6 @@ class HttpStreamSettings extends XrayCommonClass { return { path: this.path, host: host, - sockopt: this.sockopt, } } } @@ -455,12 +452,10 @@ class GrpcStreamSettings extends XrayCommonClass { constructor( serviceName="", multiMode=false, - sockopt={acceptProxyProtocol: false} ) { super(); this.serviceName = serviceName; this.multiMode = multiMode; - this.sockopt = sockopt; } static fromJson(json={}) { @@ -475,7 +470,6 @@ class GrpcStreamSettings extends XrayCommonClass { return { serviceName: this.serviceName, multiMode: this.multiMode, - sockopt: this.sockopt } } } @@ -807,6 +801,27 @@ RealityStreamSettings.Settings = class extends XrayCommonClass { } }; +class SockoptStreamSettings extends XrayCommonClass { + constructor( + acceptProxyProtocol = false, + ) { + super(); + this.acceptProxyProtocol = acceptProxyProtocol; + } + + static fromJson(json = {}) { + return new SockoptStreamSettings( + json.acceptProxyProtocol, + ); + } + + toJson() { + return { + acceptProxyProtocol: this.acceptProxyProtocol, + }; + } +} + class StreamSettings extends XrayCommonClass { constructor(network='tcp', security='none', @@ -819,6 +834,7 @@ class StreamSettings extends XrayCommonClass { httpSettings=new HttpStreamSettings(), quicSettings=new QuicStreamSettings(), grpcSettings=new GrpcStreamSettings(), + sockopt = new SockoptStreamSettings(), ) { super(); this.network = network; @@ -832,6 +848,7 @@ class StreamSettings extends XrayCommonClass { this.http = httpSettings; this.quic = quicSettings; this.grpc = grpcSettings; + this.sockopt = sockopt; } get isTls() { @@ -871,6 +888,16 @@ class StreamSettings extends XrayCommonClass { } } + get isSockopt() { + return ['http', 'grpc'].indexOf(this.network) !== -1; + } + + set isSockopt(isSockopt) { + if (isSockopt) { + return ['http', 'grpc'].indexOf(this.network) !== -1; + } + } + static fromJson(json={}) { return new StreamSettings( @@ -885,6 +912,7 @@ class StreamSettings extends XrayCommonClass { HttpStreamSettings.fromJson(json.httpSettings), QuicStreamSettings.fromJson(json.quicSettings), GrpcStreamSettings.fromJson(json.grpcSettings), + SockoptStreamSettings.fromJson(json.sockopt), ); } @@ -902,6 +930,7 @@ class StreamSettings extends XrayCommonClass { httpSettings: network === 'http' ? this.http.toJson() : undefined, quicSettings: network === 'quic' ? this.quic.toJson() : undefined, grpcSettings: network === 'grpc' ? this.grpc.toJson() : undefined, + sockopt: this.isSockopt ? this.sockopt.toJson() : undefined, }; } } diff --git a/web/html/xui/form/stream/stream_grpc.html b/web/html/xui/form/stream/stream_grpc.html index f34a3457..1ee57bbf 100644 --- a/web/html/xui/form/stream/stream_grpc.html +++ b/web/html/xui/form/stream/stream_grpc.html @@ -1,7 +1,7 @@ {{define "form/streamGRPC"}} <a-form layout="inline"> <a-form-item label="AcceptProxyProtocol"> - <a-switch v-model="inbound.stream.grpc.sockopt.acceptProxyProtocol"></a-switch> + <a-switch v-model="inbound.stream.sockopt.acceptProxyProtocol"></a-switch> </a-form-item> <br> <a-form-item label="ServiceName"> diff --git a/web/html/xui/form/stream/stream_http.html b/web/html/xui/form/stream/stream_http.html index 17bd3759..e80eef0f 100644 --- a/web/html/xui/form/stream/stream_http.html +++ b/web/html/xui/form/stream/stream_http.html @@ -1,7 +1,7 @@ {{define "form/streamHTTP"}} <a-form layout="inline"> <a-form-item label="AcceptProxyProtocol"> - <a-switch v-model="inbound.stream.http.sockopt.acceptProxyProtocol"></a-switch> + <a-switch v-model="inbound.stream.sockopt.acceptProxyProtocol"></a-switch> </a-form-item> <br> <a-form-item label='{{ i18n "path" }}'> |
