Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/web/html
diff options
context:
space:
mode:
authorMHSanaei <ho3ein.sanaei@gmail.com>2026-05-04 18:42:55 +0300
committerMHSanaei <ho3ein.sanaei@gmail.com>2026-05-04 18:42:55 +0300
commitd44b70682c400e3cd12f7a84701b153b7182dedb (patch)
treeed29719ded50301f2ec2e3701bf84b5ef51fe2ee /web/html
parentfb75e3d7c7455f349b007961cdf3e668fe34fb93 (diff)
Update QUIC params defaults and UI validations
#4142 Adjust QUIC parameter defaults and tighten form validation across inbound/outbound components. - Set default brutalUp/brutalDown to 65537 and only include them in JSON when congestion is 'brutal' or 'force-brutal'. - Change keepAlivePeriod defaults (inbound QUIC -> 5s, Hysteria stream -> 2s) and enforce minimums in the UI. - Expose and serialize additional QUIC fields in outbound QuicParams: init/max stream windows, init/max connection windows, maxIdleTimeout, disablePathMTUDiscovery, maxIncomingStreams. - Add UI min/placeholder constraints: stream/connection receive windows min=16384 and updated placeholders to show defaults, brutal fields min=65537, maxIncomingStreams min=8 (placeholders updated), keepAlive min adjusted. - Add Wireguard and Hysteria entries to Protocols. Touched files: web/assets/js/model/inbound.js, web/assets/js/model/outbound.js, web/html/form/outbound.html, web/html/form/stream/stream_finalmask.html.
Diffstat (limited to 'web/html')
-rw-r--r--web/html/form/outbound.html34
-rw-r--r--web/html/form/stream/stream_finalmask.html26
2 files changed, 30 insertions, 30 deletions
diff --git a/web/html/form/outbound.html b/web/html/form/outbound.html
index 90eb24c9..519c4cbc 100644
--- a/web/html/form/outbound.html
+++ b/web/html/form/outbound.html
@@ -579,23 +579,23 @@
<a-input-number v-model.number="outbound.stream.hysteria.udphopIntervalMax" :min="5"></a-input-number>
</a-form-item>
<a-form-item label="Init Stream Receive">
- <a-input-number v-model.number="outbound.stream.hysteria.initStreamReceiveWindow"></a-input-number>
+ <a-input-number v-model.number="outbound.stream.hysteria.initStreamReceiveWindow" :min="16384"></a-input-number>
</a-form-item>
<a-form-item label="Max Stream Receive">
- <a-input-number v-model.number="outbound.stream.hysteria.maxStreamReceiveWindow"></a-input-number>
+ <a-input-number v-model.number="outbound.stream.hysteria.maxStreamReceiveWindow" :min="16384"></a-input-number>
</a-form-item>
<a-form-item label="Init Connection Receive">
- <a-input-number v-model.number="outbound.stream.hysteria.initConnectionReceiveWindow"></a-input-number>
+ <a-input-number v-model.number="outbound.stream.hysteria.initConnectionReceiveWindow" :min="16384"></a-input-number>
</a-form-item>
<a-form-item label="Max Connection Receive">
- <a-input-number v-model.number="outbound.stream.hysteria.maxConnectionReceiveWindow"></a-input-number>
+ <a-input-number v-model.number="outbound.stream.hysteria.maxConnectionReceiveWindow" :min="16384"></a-input-number>
</a-form-item>
<a-form-item label="Max Idle Timeout (s)">
<a-input-number v-model.number="outbound.stream.hysteria.maxIdleTimeout" :min="4"
:max="120"></a-input-number>
</a-form-item>
<a-form-item label="Keep Alive Period (s)">
- <a-input-number v-model.number="outbound.stream.hysteria.keepAlivePeriod" :min="0"
+ <a-input-number v-model.number="outbound.stream.hysteria.keepAlivePeriod" :min="2"
:max="60"></a-input-number>
</a-form-item>
<a-form-item label="Disable Path MTU Dis">
@@ -934,10 +934,10 @@
</a-form-item>
<template v-if="['brutal','force-brutal'].includes(outbound.stream.finalmask.quicParams.congestion)">
<a-form-item label="Brutal Up">
- <a-input v-model.trim="outbound.stream.finalmask.quicParams.brutalUp" placeholder="e.g. 60 mbps" />
+ <a-input v-model.trim="outbound.stream.finalmask.quicParams.brutalUp" :min="65537"placeholder="65537" />
</a-form-item>
<a-form-item label="Brutal Down">
- <a-input v-model.trim="outbound.stream.finalmask.quicParams.brutalDown" placeholder="e.g. 60 mbps" />
+ <a-input v-model.trim="outbound.stream.finalmask.quicParams.brutalDown" :min="65537" placeholder="65537" />
</a-form-item>
</template>
<a-form-item label="UDP Hop">
@@ -964,24 +964,24 @@
<a-switch v-model="outbound.stream.finalmask.quicParams.disablePathMTUDiscovery"></a-switch>
</a-form-item>
<a-form-item label="Max Incoming Streams">
- <a-input-number v-model.number="outbound.stream.finalmask.quicParams.maxIncomingStreams" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="outbound.stream.finalmask.quicParams.maxIncomingStreams" :min="8"
+ placeholder="8 = default" />
</a-form-item>
<a-form-item label="Init Stream Window">
- <a-input-number v-model.number="outbound.stream.finalmask.quicParams.initStreamReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="outbound.stream.finalmask.quicParams.initStreamReceiveWindow" :min="16384"
+ placeholder="8388608 = default" />
</a-form-item>
<a-form-item label="Max Stream Window">
- <a-input-number v-model.number="outbound.stream.finalmask.quicParams.maxStreamReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="outbound.stream.finalmask.quicParams.maxStreamReceiveWindow" :min="16384"
+ placeholder="8388608 = default" />
</a-form-item>
<a-form-item label="Init Conn Window">
- <a-input-number v-model.number="outbound.stream.finalmask.quicParams.initConnectionReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="outbound.stream.finalmask.quicParams.initConnectionReceiveWindow" :min="16384"
+ placeholder="20971520 = default" />
</a-form-item>
<a-form-item label="Max Conn Window">
- <a-input-number v-model.number="outbound.stream.finalmask.quicParams.maxConnectionReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="outbound.stream.finalmask.quicParams.maxConnectionReceiveWindow" :min="16384"
+ placeholder="20971520 = default" />
</a-form-item>
</template>
</template>
diff --git a/web/html/form/stream/stream_finalmask.html b/web/html/form/stream/stream_finalmask.html
index 1259b660..0e28b476 100644
--- a/web/html/form/stream/stream_finalmask.html
+++ b/web/html/form/stream/stream_finalmask.html
@@ -356,10 +356,10 @@
</a-form-item>
<template v-if="['brutal','force-brutal'].includes(inbound.stream.finalmask.quicParams.congestion)">
<a-form-item label="Brutal Up">
- <a-input v-model.trim="inbound.stream.finalmask.quicParams.brutalUp" placeholder="e.g. 60 mbps" />
+ <a-input v-model.trim="inbound.stream.finalmask.quicParams.brutalUp" :min="65537" placeholder="65537" />
</a-form-item>
<a-form-item label="Brutal Down">
- <a-input v-model.trim="inbound.stream.finalmask.quicParams.brutalDown" placeholder="e.g. 60 mbps" />
+ <a-input v-model.trim="inbound.stream.finalmask.quicParams.brutalDown" :min="65537" placeholder="65537" />
</a-form-item>
</template>
<a-form-item label="UDP Hop">
@@ -377,30 +377,30 @@
<a-input-number v-model.number="inbound.stream.finalmask.quicParams.maxIdleTimeout" :min="4" :max="120" />
</a-form-item>
<a-form-item label="Keep Alive Period (s)">
- <a-input-number v-model.number="inbound.stream.finalmask.quicParams.keepAlivePeriod" :min="0" :max="60" />
+ <a-input-number v-model.number="inbound.stream.finalmask.quicParams.keepAlivePeriod" :min="2" :max="60" />
</a-form-item>
<a-form-item label="Disable Path MTU Dis">
<a-switch v-model="inbound.stream.finalmask.quicParams.disablePathMTUDiscovery"></a-switch>
</a-form-item>
<a-form-item label="Max Incoming Streams">
- <a-input-number v-model.number="inbound.stream.finalmask.quicParams.maxIncomingStreams" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="inbound.stream.finalmask.quicParams.maxIncomingStreams" :min="8"
+ placeholder="1024 = default" />
</a-form-item>
<a-form-item label="Init Stream Window">
- <a-input-number v-model.number="inbound.stream.finalmask.quicParams.initStreamReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="inbound.stream.finalmask.quicParams.initStreamReceiveWindow" :min="16384"
+ placeholder="8388608 = default" />
</a-form-item>
<a-form-item label="Max Stream Window">
- <a-input-number v-model.number="inbound.stream.finalmask.quicParams.maxStreamReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="inbound.stream.finalmask.quicParams.maxStreamReceiveWindow" :min="16384"
+ placeholder="8388608 = default" />
</a-form-item>
<a-form-item label="Init Conn Window">
- <a-input-number v-model.number="inbound.stream.finalmask.quicParams.initConnectionReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="inbound.stream.finalmask.quicParams.initConnectionReceiveWindow" :min="16384"
+ placeholder="20971520 = default" />
</a-form-item>
<a-form-item label="Max Conn Window">
- <a-input-number v-model.number="inbound.stream.finalmask.quicParams.maxConnectionReceiveWindow" :min="0"
- placeholder="0 = default" />
+ <a-input-number v-model.number="inbound.stream.finalmask.quicParams.maxConnectionReceiveWindow" :min="16384"
+ placeholder="20971520 = default" />
</a-form-item>
</template>
</template>