From 0df85cc3d9d418d3abc335047c7bd2c8794685fa Mon Sep 17 00:00:00 2001 From: mhsanaei <ho3ein.sanaei@gmail.com> Date: Mon, 16 Dec 2024 21:21:29 +0100 Subject: [PATCH] XHTTP: server & client Remove scMinPostsIntervalMs, xmux, noGRPCHeader from the server side and add them to the client side. Before you could have them on sub json but I decided to remove them. --- web/assets/js/model/inbound.js | 26 -------------------- web/assets/js/model/outbound.js | 26 ++++++++++++++++++++ web/html/xui/form/outbound.html | 24 +++++++++++++++++++ web/html/xui/form/stream/stream_xhttp.html | 28 ++-------------------- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index a36b9db2..b728c95e 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -496,19 +496,9 @@ class xHTTPStreamSettings extends XrayCommonClass { headers = [], scMaxBufferedPosts = 30, scMaxEachPostBytes = "1000000", - scMinPostsIntervalMs = "30", noSSEHeader = false, xPaddingBytes = "100-1000", - xmux = { - maxConcurrency: "16-32", - maxConnections: 0, - cMaxReuseTimes: "64-128", - cMaxLifetimeMs: 0, - hMaxRequestTimes: "800-900", - hKeepAlivePeriod: 0, - }, mode = MODE_OPTION.AUTO, - noGRPCHeader = false ) { super(); this.path = path; @@ -516,12 +506,9 @@ class xHTTPStreamSettings extends XrayCommonClass { this.headers = headers; this.scMaxBufferedPosts = scMaxBufferedPosts; this.scMaxEachPostBytes = scMaxEachPostBytes; - this.scMinPostsIntervalMs = scMinPostsIntervalMs; this.noSSEHeader = noSSEHeader; this.xPaddingBytes = xPaddingBytes; - this.xmux = xmux; this.mode = mode; - this.noGRPCHeader = noGRPCHeader; } addHeader(name, value) { @@ -539,12 +526,9 @@ class xHTTPStreamSettings extends XrayCommonClass { XrayCommonClass.toHeaders(json.headers), json.scMaxBufferedPosts, json.scMaxEachPostBytes, - json.scMinPostsIntervalMs, json.noSSEHeader, json.xPaddingBytes, - json.xmux, json.mode, - json.noGRPCHeader, ); } @@ -555,19 +539,9 @@ class xHTTPStreamSettings extends XrayCommonClass { headers: XrayCommonClass.toV2Headers(this.headers, false), scMaxBufferedPosts: this.scMaxBufferedPosts, scMaxEachPostBytes: this.scMaxEachPostBytes, - scMinPostsIntervalMs: this.scMinPostsIntervalMs, noSSEHeader: this.noSSEHeader, xPaddingBytes: this.xPaddingBytes, - xmux: { - maxConcurrency: this.xmux.maxConcurrency, - maxConnections: this.xmux.maxConnections, - cMaxReuseTimes: this.xmux.cMaxReuseTimes, - cMaxLifetimeMs: this.xmux.cMaxLifetimeMs, - hMaxRequestTimes: this.xmux.hMaxRequestTimes, - hKeepAlivePeriod: this.xmux.hKeepAlivePeriod, - }, mode: this.mode, - noGRPCHeader: this.noGRPCHeader, }; } } diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js index 7a53383c..fae1a879 100644 --- a/web/assets/js/model/outbound.js +++ b/web/assets/js/model/outbound.js @@ -287,11 +287,24 @@ class xHTTPStreamSettings extends CommonClass { path = '/', host = '', mode = '', + noGRPCHeader = false, + scMinPostsIntervalMs = "30", + xmux = { + maxConcurrency: "16-32", + maxConnections: 0, + cMaxReuseTimes: "64-128", + cMaxLifetimeMs: 0, + hMaxRequestTimes: "800-900", + hKeepAlivePeriod: 0, + }, ) { super(); this.path = path; this.host = host; this.mode = mode; + this.noGRPCHeader = noGRPCHeader; + this.scMinPostsIntervalMs = scMinPostsIntervalMs; + this.xmux = xmux; } static fromJson(json = {}) { @@ -299,6 +312,9 @@ class xHTTPStreamSettings extends CommonClass { json.path, json.host, json.mode, + json.noGRPCHeader, + json.scMinPostsIntervalMs, + json.xmux ); } @@ -307,6 +323,16 @@ class xHTTPStreamSettings extends CommonClass { path: this.path, host: this.host, mode: this.mode, + noGRPCHeader: this.noGRPCHeader, + scMinPostsIntervalMs: this.scMinPostsIntervalMs, + xmux: { + maxConcurrency: this.xmux.maxConcurrency, + maxConnections: this.xmux.maxConnections, + cMaxReuseTimes: this.xmux.cMaxReuseTimes, + cMaxLifetimeMs: this.xmux.cMaxLifetimeMs, + hMaxRequestTimes: this.xmux.hMaxRequestTimes, + hKeepAlivePeriod: this.xmux.hKeepAlivePeriod, + }, }; } } diff --git a/web/html/xui/form/outbound.html b/web/html/xui/form/outbound.html index fb9e6f41..0293ffa8 100644 --- a/web/html/xui/form/outbound.html +++ b/web/html/xui/form/outbound.html @@ -377,6 +377,30 @@ <a-select-option v-for="key in MODE_OPTION" :value="key">[[ key ]]</a-select-option> </a-select> </a-form-item> + <a-form-item label="No gRPC Header" v-if="outbound.stream.xhttp.mode === 'stream-up' || outbound.stream.xhttp.mode === 'stream-one'"> + <a-switch v-model="outbound.stream.xhttp.noGRPCHeader"></a-switch> + </a-form-item> + <a-form-item label="Min Upload Interval (Ms)" v-if="outbound.stream.xhttp.mode === 'packet-up'"> + <a-input v-model.trim="outbound.stream.xhttp.scMinPostsIntervalMs"></a-input> + </a-form-item> + <a-form-item label="Max Concurrency" v-if="!outbound.stream.xhttp.xmux.maxConnections"> + <a-input v-model="outbound.stream.xhttp.xmux.maxConcurrency"></a-input> + </a-form-item> + <a-form-item label="Max Connections" v-if="!outbound.stream.xhttp.xmux.maxConcurrency"> + <a-input v-model="outbound.stream.xhttp.xmux.maxConnections"></a-input> + </a-form-item> + <a-form-item label="Max Reuse Times"> + <a-input v-model="outbound.stream.xhttp.xmux.cMaxReuseTimes"></a-input> + </a-form-item> + <a-form-item label="Max Lifetime (ms)"> + <a-input v-model="outbound.stream.xhttp.xmux.cMaxLifetimeMs"></a-input> + </a-form-item> + <a-form-item label="Max Request Times"> + <a-input v-model="outbound.stream.xhttp.xmux.hMaxRequestTimes"></a-input> + </a-form-item> + <a-form-item label='Keep Alive Period'> + <a-input v-model.number="outbound.stream.xhttp.xmux.hKeepAlivePeriod"></a-input> + </a-form-item> </template> </template> diff --git a/web/html/xui/form/stream/stream_xhttp.html b/web/html/xui/form/stream/stream_xhttp.html index 1dd3c15c..749bfcee 100644 --- a/web/html/xui/form/stream/stream_xhttp.html +++ b/web/html/xui/form/stream/stream_xhttp.html @@ -27,41 +27,17 @@ <a-select-option v-for="key in MODE_OPTION" :value="key">[[ key ]]</a-select-option> </a-select> </a-form-item> - <a-form-item label="Max Buffered Upload"> + <a-form-item label="Max Buffered Upload" v-if="inbound.stream.xhttp.mode === 'packet-up'"> <a-input v-model.trim="inbound.stream.xhttp.scMaxBufferedPosts"></a-input> </a-form-item> - <a-form-item label="Max Upload Size (Byte)"> + <a-form-item label="Max Upload Size (Byte)" v-if="inbound.stream.xhttp.mode === 'packet-up'"> <a-input v-model.trim="inbound.stream.xhttp.scMaxEachPostBytes"></a-input> </a-form-item> - <a-form-item label="Min Upload Interval (Ms)"> - <a-input v-model.trim="inbound.stream.xhttp.scMinPostsIntervalMs"></a-input> - </a-form-item> <a-form-item label="Padding Bytes"> <a-input v-model.trim="inbound.stream.xhttp.xPaddingBytes"></a-input> </a-form-item> <a-form-item label="No SSE Header"> <a-switch v-model="inbound.stream.xhttp.noSSEHeader"></a-switch> </a-form-item> - <a-form-item label="Max Concurrency" v-if="!inbound.stream.xhttp.xmux.maxConnections"> - <a-input v-model="inbound.stream.xhttp.xmux.maxConcurrency"></a-input> - </a-form-item> - <a-form-item label="Max Connections" v-if="!inbound.stream.xhttp.xmux.maxConcurrency"> - <a-input v-model="inbound.stream.xhttp.xmux.maxConnections"></a-input> - </a-form-item> - <a-form-item label="Max Reuse Times"> - <a-input v-model="inbound.stream.xhttp.xmux.cMaxReuseTimes"></a-input> - </a-form-item> - <a-form-item label="Max Lifetime (ms)"> - <a-input v-model="inbound.stream.xhttp.xmux.cMaxLifetimeMs"></a-input> - </a-form-item> - <a-form-item label="Max Request Times"> - <a-input v-model="inbound.stream.xhttp.xmux.hMaxRequestTimes"></a-input> - </a-form-item> - <a-form-item label='Keep Alive Period'> - <a-input v-model.number="inbound.stream.xhttp.xmux.hKeepAlivePeriod"></a-input> - </a-form-item> - <a-form-item label="No gRPC Header"> - <a-switch v-model="inbound.stream.xhttp.noGRPCHeader"></a-switch> - </a-form-item> </a-form> {{end}} \ No newline at end of file