diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index 5c3235e1..d08553d9 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -420,20 +420,17 @@ class WsStreamSettings extends XrayCommonClass { class GrpcStreamSettings extends XrayCommonClass { constructor( serviceName = "", - authority = "", - multiMode = false, + authority = "" ) { super(); this.serviceName = serviceName; this.authority = authority; - this.multiMode = multiMode; } static fromJson(json = {}) { return new GrpcStreamSettings( json.serviceName, json.authority, - json.multiMode ); } @@ -441,7 +438,6 @@ class GrpcStreamSettings extends XrayCommonClass { return { serviceName: this.serviceName, authority: this.authority, - multiMode: this.multiMode, } } } diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js index 0103b1e8..38c7ce73 100644 --- a/web/assets/js/model/outbound.js +++ b/web/assets/js/model/outbound.js @@ -251,23 +251,47 @@ class GrpcStreamSettings extends CommonClass { constructor( serviceName = "", authority = "", - multiMode = false + multiMode = false, + userAgent = "", + idleTimeout = 60, + healthCheckTimeout = 20, + permitWithoutStream = false, + initialWindowsSize = 0 ) { super(); this.serviceName = serviceName; this.authority = authority; this.multiMode = multiMode; + this.user_agent = userAgent; + this.idle_timeout = idleTimeout; + this.health_check_timeout = healthCheckTimeout; + this.permit_without_stream = permitWithoutStream; + this.initial_windows_size = initialWindowsSize; } static fromJson(json = {}) { - return new GrpcStreamSettings(json.serviceName, json.authority, json.multiMode); + return new GrpcStreamSettings( + json.serviceName, + json.authority, + json.multiMode, + json.user_agent, + json.idle_timeout, + json.health_check_timeout, + json.permit_without_stream, + json.initial_windows_size + ); } toJson() { return { serviceName: this.serviceName, authority: this.authority, - multiMode: this.multiMode + multiMode: this.multiMode, + user_agent: this.user_agent, + idle_timeout: this.idle_timeout, + health_check_timeout: this.health_check_timeout, + permit_without_stream: this.permit_without_stream, + initial_windows_size: this.initial_windows_size } } } diff --git a/web/html/xui/form/outbound.html b/web/html/xui/form/outbound.html index d4e9e5f6..93b0a94f 100644 --- a/web/html/xui/form/outbound.html +++ b/web/html/xui/form/outbound.html @@ -352,6 +352,21 @@ <a-form-item label='Multi Mode'> <a-switch v-model="outbound.stream.grpc.multiMode"></a-switch> </a-form-item> + <a-form-item label="User Agent"> + <a-input v-model.trim="outbound.stream.grpc.user_agent"></a-input> + </a-form-item> + <a-form-item label="Idle Timeout"> + <a-input-number v-model.number="outbound.stream.grpc.idle_timeout"></a-input-number> + </a-form-item> + <a-form-item label="Health Check Timeout"> + <a-input-number v-model.number="outbound.stream.grpc.health_check_timeout"></a-input-number> + </a-form-item> + <a-form-item label="Permit Without Stream"> + <a-switch v-model="outbound.stream.grpc.permit_without_stream"></a-switch> + </a-form-item> + <a-form-item label="Initial Window Size"> + <a-input-number v-model.number="outbound.stream.grpc.initial_windows_size"></a-input-number> + </a-form-item> </template> <!-- httpupgrade --> diff --git a/web/html/xui/form/stream/stream_grpc.html b/web/html/xui/form/stream/stream_grpc.html index e74a3c3f..a036080f 100644 --- a/web/html/xui/form/stream/stream_grpc.html +++ b/web/html/xui/form/stream/stream_grpc.html @@ -1,13 +1,10 @@ {{define "form/streamGRPC"}} <a-form :colon="false" :label-col="{ md: {span:8} }" :wrapper-col="{ md: {span:14} }"> - <a-form-item label="Service Name"> - <a-input v-model.trim="inbound.stream.grpc.serviceName"></a-input> - </a-form-item> <a-form-item label="Authority"> <a-input v-model.trim="inbound.stream.grpc.authority"></a-input> </a-form-item> - <a-form-item label="Multi Mode"> - <a-switch v-model="inbound.stream.grpc.multiMode"></a-switch> + <a-form-item label="Service Name"> + <a-input v-model.trim="inbound.stream.grpc.serviceName"></a-input> </a-form-item> </a-form> {{end}}