Browse Source

sockopt acceptProxyProtocol for h2 , gRPC #773

MHSanaei 1 year ago
parent
commit
6066edd510

+ 35 - 6
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,
         };
     }
 }

+ 1 - 1
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">

+ 1 - 1
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" }}'>