diff --git a/web/assets/js/model/outbound.js b/web/assets/js/model/outbound.js
index af4e512c..f62b06b9 100644
--- a/web/assets/js/model/outbound.js
+++ b/web/assets/js/model/outbound.js
@@ -356,6 +356,34 @@ class RealityStreamSettings extends CommonClass {
};
}
};
+class SockoptStreamSettings extends CommonClass {
+ constructor(dialerProxy = "", tcpFastOpen = false, tcpKeepAliveInterval = 0, tcpNoDelay = false) {
+ super();
+ this.dialerProxy = dialerProxy;
+ this.tcpFastOpen = tcpFastOpen;
+ this.tcpKeepAliveInterval = tcpKeepAliveInterval;
+ this.tcpNoDelay = tcpNoDelay;
+ }
+
+ static fromJson(json = {}) {
+ if (Object.keys(json).length === 0) return undefined;
+ return new SockoptStreamSettings(
+ json.dialerProxy,
+ json.tcpFastOpen,
+ json.tcpKeepAliveInterval,
+ json.tcpNoDelay,
+ );
+ }
+
+ toJson() {
+ return {
+ dialerProxy: this.dialerProxy,
+ tcpFastOpen: this.tcpFastOpen,
+ tcpKeepAliveInterval: this.tcpKeepAliveInterval,
+ tcpNoDelay: this.tcpNoDelay,
+ };
+ }
+}
class StreamSettings extends CommonClass {
constructor(network='tcp',
@@ -392,6 +420,14 @@ class StreamSettings extends CommonClass {
return this.security === "reality";
}
+ get sockoptSwitch() {
+ return this.sockopt != undefined;
+ }
+
+ set sockoptSwitch(value) {
+ this.sockopt = value ? new SockoptStreamSettings() : undefined;
+ }
+
static fromJson(json={}) {
return new StreamSettings(
json.network,
@@ -422,6 +458,7 @@ class StreamSettings extends CommonClass {
quicSettings: network === 'quic' ? this.quic.toJson() : undefined,
grpcSettings: network === 'grpc' ? this.grpc.toJson() : undefined,
httpupgradeSettings: network === 'httpupgrade' ? this.httpupgrade.toJson() : undefined,
+ sockopt: this.sockopt != undefined ? this.sockopt.toJson() : undefined,
};
}
}
diff --git a/web/html/xui/form/outbound.html b/web/html/xui/form/outbound.html
index b6874240..2f2a5215 100644
--- a/web/html/xui/form/outbound.html
+++ b/web/html/xui/form/outbound.html
@@ -351,7 +351,7 @@
{{ i18n "none" }}
TLS
- REALITY
+ Reality
@@ -399,6 +399,30 @@
+
+
+
+
+
+
+
+
+
+ [[ tag ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+