Browse Source

chore: add new grpc params for outbound (#2744)

Shishkevich D. 3 weeks ago
parent
commit
c49ec9a74c

+ 1 - 5
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,
         }
     }
 }

+ 27 - 3
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
         }
     }
 }

+ 15 - 0
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 -->

+ 2 - 5
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}}