diff --git a/web/html/form/client.html b/web/html/form/client.html
index ef0cfb0a..9c6a7f8a 100644
--- a/web/html/form/client.html
+++ b/web/html/form/client.html
@@ -1,191 +1,256 @@
{{define "form/client"}}
-
-
-
-
-
-
-
-
- {{ i18n "pages.inbounds.emailDesc" }}
-
- {{ i18n "pages.inbounds.email" }}
-
-
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.emailDesc" }}
-
-
-
-
-
-
- {{ i18n "reset" }}
-
- {{ i18n "password" }}
-
-
-
+ {{ i18n "pages.inbounds.email" }}
+
+
+
+
+
+
+
+
+
+ {{ i18n "reset" }}
-
-
-
-
-
-
- {{ i18n "reset" }}
-
- Auth Password
-
-
+ {{ i18n "password" }}
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "reset" }}
-
-
-
-
-
-
- {{ i18n "reset" }}
-
- ID
-
+ Auth Password
+
+
+
+
+
+
+
+
+
+ {{ i18n "reset" }}
-
-
-
-
- [[ key
- ]]
-
-
-
-
-
-
- {{ i18n "pages.inbounds.subscriptionDesc" }}
-
- Subscription
-
-
+ ID
+
+
+
+
+
+
+
+ [[ key ]]
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.subscriptionDesc" }}
-
-
-
-
-
-
- {{ i18n "pages.inbounds.telegramDesc" }}
-
- Telegram ChatID
-
-
+ Subscription
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.telegramDesc" }}
-
-
-
-
-
-
-
-
-
- {{ i18n "pages.inbounds.IPLimitDesc"}}
-
- {{ i18n "pages.inbounds.IPLimit"}}
-
-
+ Telegram ChatID
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.IPLimitDesc"}}
-
-
-
-
-
-
- {{ i18n "pages.inbounds.IPLimitlogDesc" }}
-
- {{ i18n "pages.inbounds.IPLimitlog" }}
-
-
+ {{ i18n "pages.inbounds.IPLimit"}}
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.IPLimitlogDesc" }}
-
-
- {{ i18n "pages.inbounds.IPLimitlogclear" }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ i18n "none" }}
- [[ key
- ]]
-
-
-
-
-
-
- 0 {{ i18n "pages.inbounds.meansNoLimit" }}
-
- {{ i18n "pages.inbounds.totalFlow" }}
-
-
+ {{ i18n "pages.inbounds.IPLimitlog" }}
+
+
+
+
+
+ {{ i18n "pages.inbounds.IPLimitlogclear" }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "none" }}
+ [[ key ]]
+
+
+
+
+
+
+ 0 {{ i18n "pages.inbounds.meansNoLimit" }}
-
-
-
-
- [[ SizeFormatter.sizeFormat(clientStats.up) ]] /
- [[ SizeFormatter.sizeFormat(clientStats.down) ]]
- ([[ SizeFormatter.sizeFormat(clientStats.up + clientStats.down) ]])
-
-
- {{ i18n "pages.inbounds.resetTraffic"
- }}
-
-
-
-
-
-
-
-
-
-
-
-
- {{ i18n
- "pages.inbounds.leaveBlankToNeverExpire" }}
- {{ i18n "pages.inbounds.expireDate" }}
-
-
-
-
-
- Expired
-
-
-
-
- {{ i18n "pages.client.renewDesc"
- }}
- {{ i18n "pages.client.renew" }}
-
-
-
-
-
+ {{ i18n "pages.inbounds.totalFlow" }}
+
+
+
+
+
+
+
+ [[ SizeFormatter.sizeFormat(clientStats.up) ]] / [[
+ SizeFormatter.sizeFormat(clientStats.down) ]] ([[
+ SizeFormatter.sizeFormat(clientStats.up + clientStats.down) ]])
+
+
+ {{ i18n "pages.inbounds.resetTraffic" }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.inbounds.leaveBlankToNeverExpire" }}
+ {{ i18n "pages.inbounds.expireDate" }}
+
+
+
+
+
+ Expired
+
+
+
+
+ {{ i18n "pages.client.renewDesc" }}
+ {{ i18n "pages.client.renew" }}
+
+
+
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/external_proxy.html b/web/html/form/stream/external_proxy.html
index 5c13df1b..5447abfd 100644
--- a/web/html/form/stream/external_proxy.html
+++ b/web/html/form/stream/external_proxy.html
@@ -1,31 +1,67 @@
{{define "form/externalProxy"}}
-
+
-
+
-
+
-
- {{ i18n "pages.inbounds.same" }}
+
+ {{ i18n "pages.inbounds.same" }}
{{ i18n "none" }}
TLS
-
+
-
+
-
+
-
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_finalmask.html b/web/html/form/stream/stream_finalmask.html
index be3761b7..b61813ee 100644
--- a/web/html/form/stream/stream_finalmask.html
+++ b/web/html/form/stream/stream_finalmask.html
@@ -1,167 +1,252 @@
{{define "form/streamFinalMask"}}
-
-
-
-
-
-
-
-
- UDP Mask [[ index + 1 ]]
- inbound.stream.delUdpMask(index)"
- :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }">
-
-
- { mask.settings = mask._getDefaultSettings(type, {}); if(inbound.stream.network === 'kcp') { inbound.stream.kcp.mtu = type === 'xdns' ? 900 : 1350; } }"
- :dropdown-class-name="themeSwitcher.currentTheme">
-
- Salamander (Hysteria2)
-
-
- mKCP AES-128-GCM
- Header DNS
- Header DTLS 1.2
- Header SRTP
- Header uTP
- Header WeChat Video
- Header WireGuard
- mKCP Original
- xDNS
- xICMP
- Header Custom
- Noise
- Sudoku
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Client [[ index + 1 ]]
- mask.settings.client.splice(index, 1)"
- :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }">
-
-
-
-
-
-
-
-
-
- Array
- String
- Hex
- Base64
-
-
-
-
-
-
-
-
-
-
-
- Server [[ index + 1 ]]
- mask.settings.server.splice(index, 1)"
- :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }">
-
-
-
-
-
-
-
-
-
- Array
- String
- Hex
- Base64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Noise [[ index + 1 ]]
- mask.settings.noise.splice(index, 1)"
- :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }">
-
-
-
-
-
-
-
-
-
- Array
- String
- Hex
- Base64
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+ UDP Mask [[ index + 1 ]]
+ inbound.stream.delUdpMask(index)"
+ :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"
+ >
+
+
+ { mask.settings = mask._getDefaultSettings(type, {}); if(inbound.stream.network === 'kcp') { inbound.stream.kcp.mtu = type === 'xdns' ? 900 : 1350; } }"
+ :dropdown-class-name="themeSwitcher.currentTheme"
+ >
+
+ Salamander (Hysteria2)
+
+
+ mKCP AES-128-GCM
+ Header DNS
+ Header DTLS 1.2
+ Header SRTP
+ Header uTP
+ Header WeChat Video
+ Header WireGuard
+ mKCP Original
+ xDNS
+ xICMP
+ Header Custom
+ Noise
+ Sudoku
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Client [[ index + 1 ]]
+ mask.settings.client.splice(index, 1)"
+ :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"
+ >
+
+
+
+
+
+
+
+
+
+ Array
+ String
+ Hex
+ Base64
+
+
+
+
+
+
+
+
+
+
+
+
+ Server [[ index + 1 ]]
+ mask.settings.server.splice(index, 1)"
+ :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"
+ >
+
+
+
+
+
+
+
+
+
+ Array
+ String
+ Hex
+ Base64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Noise [[ index + 1 ]]
+ mask.settings.noise.splice(index, 1)"
+ :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"
+ >
+
+
+
+
+
+
+
+
+
+ Array
+ String
+ Hex
+ Base64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_grpc.html b/web/html/form/stream/stream_grpc.html
index 1e3d5bd3..e88fc067 100644
--- a/web/html/form/stream/stream_grpc.html
+++ b/web/html/form/stream/stream_grpc.html
@@ -1,13 +1,17 @@
{{define "form/streamGRPC"}}
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_httpupgrade.html b/web/html/form/stream/stream_httpupgrade.html
index 3b2398b6..067adf8d 100644
--- a/web/html/form/stream/stream_httpupgrade.html
+++ b/web/html/form/stream/stream_httpupgrade.html
@@ -1,7 +1,13 @@
{{define "form/streamHTTPUpgrade"}}
-
+
-
+
@@ -10,20 +16,39 @@
-
+
-
-
- [[ index+1 ]]
+
+
+ [[ index+1 ]]
-
-
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_hysteria.html b/web/html/form/stream/stream_hysteria.html
index b2979356..4a424fd1 100644
--- a/web/html/form/stream/stream_hysteria.html
+++ b/web/html/form/stream/stream_hysteria.html
@@ -1,62 +1,115 @@
{{define "form/streamHysteria"}}
-
-
-
-
-
-
-
-
-
-
-
- Masquerade
-
-
- File
- Proxy
- String
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- +
-
-
-
-
- [[ index+1 ]]
-
-
- -
-
-
-
-
-
-
+
+
+
+
+
+ {{ i18n "reset" }}
+ Auth Password
+
+
+
+
+
+
+
+
+
+
+
+ Masquerade
+
+
+ File
+ Proxy
+ String
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+ [[ index+1 ]]
+
+
+ -
+
+
+
+
+
+
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_kcp.html b/web/html/form/stream/stream_kcp.html
index e74dd3ea..48e77848 100644
--- a/web/html/form/stream/stream_kcp.html
+++ b/web/html/form/stream/stream_kcp.html
@@ -1,25 +1,49 @@
{{define "form/streamKCP"}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_settings.html b/web/html/form/stream/stream_settings.html
index c0397d96..28ce5efd 100644
--- a/web/html/form/stream/stream_settings.html
+++ b/web/html/form/stream/stream_settings.html
@@ -1,10 +1,18 @@
{{define "form/streamSettings"}}
-
+
-
+
TCP (RAW)
mKCP
WebSocket
@@ -51,12 +59,8 @@
-
- {{template "form/streamSockopt"}}
-
+ {{template "form/streamSockopt"}}
-
- {{template "form/streamFinalMask"}}
-
-{{end}}
\ No newline at end of file
+ {{template "form/streamFinalMask"}}
+{{end}}
diff --git a/web/html/form/stream/stream_sockopt.html b/web/html/form/stream/stream_sockopt.html
index 29f2d743..84a96c2b 100644
--- a/web/html/form/stream/stream_sockopt.html
+++ b/web/html/form/stream/stream_sockopt.html
@@ -1,78 +1,119 @@
{{define "form/streamSockopt"}}
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [[ key ]]
-
-
-
-
- [[ key ]]
-
-
-
-
- Off
- Redirect
- TProxy
-
-
-
-
-
-
-
-
-
-
- CF-Connecting-IP
- X-Real-IP
- True-Client-IP
- X-Client-IP
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ key ]]
+
+
+
+
+ [[ key ]]
+
+
+
+
+ Off
+ Redirect
+ TProxy
+
+
+
+
+
+
+
+
+
+
+ CF-Connecting-IP
+ X-Real-IP
+ True-Client-IP
+ X-Client-IP
+
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_tcp.html b/web/html/form/stream/stream_tcp.html
index 2fb69cb0..47d1d515 100644
--- a/web/html/form/stream/stream_tcp.html
+++ b/web/html/form/stream/stream_tcp.html
@@ -1,19 +1,31 @@
{{define "form/streamTCP"}}
-
+
- inbound.stream.tcp.type = checked ? 'http' : 'none'">
+ inbound.stream.tcp.type = checked ? 'http' : 'none'"
+ >
-
+
- {{ i18n "pages.inbounds.stream.general.request" }}
+ {{ i18n "pages.inbounds.stream.general.request" }}
@@ -21,35 +33,66 @@
- {{ i18n "pages.inbounds.stream.tcp.path" }}
-
+ {{ i18n "pages.inbounds.stream.tcp.path" }}
+
-
+
-
+
-
-
- [[ index+1 ]]
+
+
+ [[ index+1 ]]
-
-
+
+
- {{ i18n "pages.inbounds.stream.general.response" }}
+ {{ i18n "pages.inbounds.stream.general.response" }}
@@ -60,22 +103,40 @@
-
+
-
-
- [[ index+1 ]]
+
+
+ [[ index+1 ]]
-
+
-
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_ws.html b/web/html/form/stream/stream_ws.html
index d3885ad6..cd0c30e5 100644
--- a/web/html/form/stream/stream_ws.html
+++ b/web/html/form/stream/stream_ws.html
@@ -1,5 +1,9 @@
{{define "form/streamWS"}}
-
+
@@ -9,23 +13,43 @@
-
-
+
+
-
+
-
- [[ index+1 ]]
+
+ [[ index+1 ]]
-
-
+
+
-{{end}}
\ No newline at end of file
+{{end}}
diff --git a/web/html/form/stream/stream_xhttp.html b/web/html/form/stream/stream_xhttp.html
index 15c6161a..8ae3a40c 100644
--- a/web/html/form/stream/stream_xhttp.html
+++ b/web/html/form/stream/stream_xhttp.html
@@ -1,129 +1,212 @@
{{define "form/streamXHTTP"}}
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ index+1 ]]
+
+
+
+
+
+
+
+
+ [[ key ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
+ Default (queryInHeader)
+ queryInHeader
+ header
+ cookie
+ query
+
-
-
-
- [[ index+1
- ]]
-
-
-
-
-
-
-
-
- [[ key
- ]]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default (queryInHeader)
- queryInHeader
- header
- cookie
- query
-
-
-
-
- Default (repeat-x)
- repeat-x
- tokenish
-
-
-
-
-
- Default (POST)
- POST
- PUT
- GET (packet-up only)
-
-
-
-
- Default (path)
- path
- header
- cookie
- query
-
-
-
-
-
-
-
- Default (path)
- path
- header
- cookie
- query
-
-
-
-
-
-
-
- Default (body)
- body
- header
- cookie
- query
-
-
-
-
-
-
-
-
-
-
+
+
+ Default (repeat-x)
+ repeat-x
+ tokenish
+
+
+
+
+ Default (POST)
+ POST
+ PUT
+ GET (packet-up only)
+
+
+
+
+ Default (path)
+ path
+ header
+ cookie
+ query
+
+
+
+
+
+
+
+ Default (path)
+ path
+ header
+ cookie
+ query
+
+
+
+
+
+
+
+ Default (body)
+ body
+ header
+ cookie
+ query
+
+
+
+
+
+
+
+
+
+
+
-{{end}}
\ No newline at end of file
+{{end}}