diff --git a/web/html/xui/component/setting.html b/web/html/xui/component/setting.html
index 8adc000c..bc2c6e42 100644
--- a/web/html/xui/component/setting.html
+++ b/web/html/xui/component/setting.html
@@ -1,26 +1,18 @@
{{define "component/settingListItem"}}
-
-
-
-
-
-
-
-
-
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
- $emit('input', value)" :min="min" :max="max" style="width: 100%;">
-
-
- $emit('input', value)">
-
+
@@ -28,9 +20,21 @@
{{define "component/setting"}}
{{end}}
diff --git a/web/html/xui/settings.html b/web/html/xui/settings.html
index 923a040c..3d652b68 100644
--- a/web/html/xui/settings.html
+++ b/web/html/xui/settings.html
@@ -109,366 +109,512 @@
-
-
-
-
-
- {{ i18n "pages.settings.sampleRemark"}}: #[[ remarkSample ]]
-
-
-
-
-
- [[ value ]]
-
-
- [[ key ]]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ i18n "pages.settings.datepickerDescription"}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {{ i18n "pages.settings.remarkModel"}}
+
+
+ {{ i18n "pages.settings.sampleRemark"}}: #[[ remarkSample ]]
+
+
+
+
+ [[ value ]]
+
+
+ [[ key ]]
+
+
+
+
+
+ {{ i18n "pages.settings.panelListeningIP"}}
+ {{ i18n "pages.settings.panelListeningIPDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.panelListeningDomain"}}
+ {{ i18n "pages.settings.panelListeningDomainDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.panelPort"}}
+ {{ i18n "pages.settings.panelPortDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.publicKeyPath"}}
+ {{ i18n "pages.settings.publicKeyPathDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.privateKeyPath"}}
+ {{ i18n "pages.settings.privateKeyPathDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.panelUrlPath"}}
+ {{ i18n "pages.settings.panelUrlPathDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.sessionMaxAge" }}
+ {{ i18n "pages.settings.sessionMaxAgeDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.pageSize" }}
+ {{ i18n "pages.settings.pageSizeDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.expireTimeDiff" }}
+ {{ i18n "pages.settings.expireTimeDiffDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.trafficDiff" }}
+ {{ i18n "pages.settings.trafficDiffDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.externalTrafficInformEnable"}}
+ {{ i18n "pages.settings.externalTrafficInformEnableDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.externalTrafficInformURI"}}
+ {{ i18n "pages.settings.externalTrafficInformURIDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.timeZone"}}
+ {{ i18n "pages.settings.timeZoneDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.datepicker"}}
+ {{ i18n "pages.settings.datepickerDescription"}}
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.settings.timeZone"}}
+
+
+
+
+
+ Language
+
+
+
+
+
+
+
+
+
+ {{ i18n "pages.settings.oldUsername"}}
+
+
+
+
+
+ {{ i18n "pages.settings.currentPassword"}}
+
+
+
+
+
+ {{ i18n "pages.settings.newUsername"}}
+
+
+
+
+
+ {{ i18n "pages.settings.newPassword"}}
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
{{ i18n "confirm" }}
+
+ {{ i18n "pages.settings.security.loginSecurity" }}
+ {{ i18n "pages.settings.security.loginSecurityDesc" }}
+
+
+
+
+
+
+ {{ i18n "pages.settings.security.secretToken" }}
+ {{ i18n "pages.settings.security.secretTokenDesc" }}
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
{{ i18n "confirm" }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ {{ i18n "pages.settings.telegramBotEnable" }}
+ {{ i18n "pages.settings.telegramBotEnableDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.telegramToken"}}
+ {{ i18n "pages.settings.telegramTokenDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.telegramChatId"}}
+ {{ i18n "pages.settings.telegramChatIdDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.telegramNotifyTime"}}
+ {{ i18n "pages.settings.telegramNotifyTimeDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.tgNotifyBackup" }}
+ {{ i18n "pages.settings.tgNotifyBackupDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.tgNotifyLogin" }}
+ {{ i18n "pages.settings.tgNotifyLoginDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.tgNotifyCpu" }}
+ {{ i18n "pages.settings.tgNotifyCpuDesc" }}
+
+
+
+
+
+ {{ i18n "pages.settings.telegramProxy"}}
+ {{ i18n "pages.settings.telegramProxyDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.telegramAPIServer"}}
+ {{ i18n "pages.settings.telegramAPIServerDesc"}}
+
+
+
+
+
+ Telegram Bot Language
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ {{ i18n "pages.settings.subEnable"}}
+ {{ i18n "pages.settings.subEnableDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subEncrypt"}}
+ {{ i18n "pages.settings.subEncryptDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subShowInfo"}}
+ {{ i18n "pages.settings.subShowInfoDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subListen"}}
+ {{ i18n "pages.settings.subListenDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subDomain"}}
+ {{ i18n "pages.settings.subDomainDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subPort"}}
+ {{ i18n "pages.settings.subPortDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subPath"}}
+ {{ i18n "pages.settings.subPathDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subCertPath"}}
+ {{ i18n "pages.settings.subCertPathDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subKeyPath"}}
+ {{ i18n "pages.settings.subKeyPathDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subURI"}}
+ {{ i18n "pages.settings.subURIDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subUpdates"}}
+ {{ i18n "pages.settings.subUpdatesDesc"}}
+
+
+
+
-
-
-
-
-
-
-
- {{ i18n "pages.settings.fragmentDesc"}}
-
-
-
-
-
-
-
+
+
+ {{ i18n "pages.settings.subPath"}}
+ {{ i18n "pages.settings.subPathDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.subURI"}}
+ {{ i18n "pages.settings.subURIDesc"}}
+
+
+
+
+
+ {{ i18n "pages.settings.fragment"}}
+ {{ i18n "pages.settings.fragmentDesc"}}
+
+
+
+
+
+
-
-
-
+
+ Packets
+
+
+
+
+
+ Length
+
+
+
+
+
+ Interval
+
+
+
+
-
-
-
-
- {{ i18n "pages.settings.noisesDesc"}}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- updateNoiseType(index, value)">
-
- [[ p ]]
-
-
-
-
- updateNoisePacket(index, value)" placeholder="5-10">
- updateNoiseDelay(index, value)" placeholder="10-20">
- Remove
+
+ Noises
+ {{ i18n "pages.settings.noisesDesc"}}
+
+
+
+
+
+
+
+
+ Type
+
+ updateNoiseType(index, value)">
+
+ [[ p ]]
+
+
+
+
+ Packet
+
+ updateNoisePacket(index, event.target.value)" placeholder="5-10">
+
+
+
+ Delay (ms)
+
+ updateNoiseDelay(index, event.target.value)" placeholder="10-20">
+
+
+
+ Remove
+
Add Noise
-
-
-
-
- {{ i18n "pages.settings.muxDesc"}}
-
-
-
-
-
-
-
+
+ {{ i18n "pages.settings.mux"}}
+ {{ i18n "pages.settings.muxDesc"}}
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
- [[ p ]]
-
-
-
-
+
+ Concurrency
+
+
+
+
+
+ xudp Concurrency
+
+
+
+
+
+ xudp UDP 443
+
+
+ [[ p ]]
+
+
+
-
-
-
-
- {{ i18n "pages.settings.directDesc"}}
-
-
-
-
-
-
-
+
+ {{ i18n "pages.settings.direct"}}
+ {{ i18n "pages.settings.directDesc"}}
+
+
+
+
+
+
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
+
+ {{ i18n "pages.xray.directips" }}
+
+
+ [[ p.label ]]
+
+
+
+
+ {{ i18n "pages.xray.directdomains" }}
+
+
+ [[ p.label ]]
+
+
+
diff --git a/web/html/xui/xray.html b/web/html/xui/xray.html
index 45ab621f..ac8ed80a 100644
--- a/web/html/xui/xray.html
+++ b/web/html/xui/xray.html
@@ -114,44 +114,54 @@
-
-
-
-
-
-
-
-
-
+
+ {{ i18n "pages.xray.FreedomStrategy" }}
+ {{ i18n "pages.xray.FreedomStrategyDesc" }}
+
+
[[ s ]]
-
-
-
-
-
-
-
-
-
-
- [[ s ]]
-
-
-
-
+
+
+
+ {{ i18n "pages.xray.RoutingStrategy" }}
+ {{ i18n "pages.xray.RoutingStrategyDesc" }}
+
+
+ [[ s ]]
+
+
+
-
-
-
-
-
-
+
+ {{ i18n "pages.xray.statsInboundUplink" }}
+ {{ i18n "pages.xray.statsInboundUplinkDesc" }}
+
+
+
+
+
+ {{ i18n "pages.xray.statsInboundDownlink" }}
+ {{ i18n "pages.xray.statsInboundDownlinkDesc" }}
+
+
+
+
+
+ {{ i18n "pages.xray.statsOutboundUplink" }}
+ {{ i18n "pages.xray.statsOutboundUplinkDesc" }}
+
+
+
+
+
+ {{ i18n "pages.xray.statsOutboundDownlink" }}
+ {{ i18n "pages.xray.statsOutboundDownlinkDesc" }}
+
+
+
+
@@ -162,68 +172,52 @@
-
-
-
-
-
-
-
-
+
+ {{ i18n "pages.xray.logLevel" }}
+ {{ i18n "pages.xray.logLevelDesc" }}
+
[[ s ]]
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {{ i18n "pages.xray.accessLog" }}
+ {{ i18n "pages.xray.accessLogDesc" }}
+
Empty
[[ s ]]
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {{ i18n "pages.xray.errorLog" }}
+ {{ i18n "pages.xray.errorLogDesc" }}
+
Empty
[[ s ]]
-
-
-
-
-
-
-
-
-
-
+
+
+
+ {{ i18n "pages.xray.maskAddress" }}
+ {{ i18n "pages.xray.maskAddressDesc" }}
+
Empty
[[ s ]]
-
-
-
-
-
+
+
+
+ {{ i18n "pages.xray.dnsLog"}}
+ {{ i18n "pages.xray.dnsLogDesc"}}
+
+
+
+
@@ -234,10 +228,20 @@
-
-
-
-
+
+ {{ i18n "pages.xray.Torrent"}}
+ {{ i18n "pages.xray.TorrentDesc"}}
+
+
+
+
+
+ {{ i18n "pages.xray.Family"}}
+ {{ i18n "pages.xray.FamilyDesc"}}
+
+
+
+
@@ -248,43 +252,22 @@
-
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
-
+
+ {{ i18n "pages.xray.blockips" }}
+
+
+ [[ p.label ]]
+
+
+
+
+ {{ i18n "pages.xray.blockdomains" }}
+
+
+ [[ p.label ]]
+
+
+
@@ -293,44 +276,22 @@
-
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
-
+
+ {{ i18n "pages.xray.directips" }}
+
+
+ [[ p.label ]]
+
+
+
+
+ {{ i18n "pages.xray.directdomains" }}
+
+
+ [[ p.label ]]
+
+
+
@@ -339,25 +300,14 @@
-
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
-
+
+ {{ i18n "pages.xray.ipv4Routing" }}
+
+
+ [[ p.label ]]
+
+
+
@@ -366,30 +316,19 @@
-
-
-
-
-
-
-
-
-
-
- [[ p.label ]]
-
-
-
-
-
-
-
- WARP
-
+
+ {{ i18n "pages.xray.warpRouting" }}
+
+
+
+ [[ p.label ]]
+
+
+
+ WARP
+
+
+
@@ -670,78 +609,61 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- [[ l ]]
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ {{ i18n "pages.xray.dns.enable" }}
+ {{ i18n "pages.xray.dns.enableDesc" }}
+
+
-
+
+
+
+ {{ i18n "pages.xray.dns.tag" }}
+ {{ i18n "pages.xray.dns.tagDesc" }}
+
+
+
+
+
+ {{ i18n "pages.xray.dns.clientIp" }}
+ {{ i18n "pages.xray.dns.clientIpDesc" }}
+
+
+
+
+
+ {{ i18n "pages.xray.dns.strategy" }}
+ {{ i18n "pages.xray.dns.strategyDesc" }}
+
+
+
+ [[ l ]]
+
+
+
+
+
+ {{ i18n "pages.xray.dns.disableCache" }}
+ {{ i18n "pages.xray.dns.disableCacheDesc" }}
+
+
+
+
+
+ {{ i18n "pages.xray.dns.disableFallback" }}
+ {{ i18n "pages.xray.dns.disableFallbackDesc" }}
+
+
+
+
+
+ {{ i18n "pages.xray.dns.disableFallbackIfMatch" }}
+ {{ i18n "pages.xray.dns.disableFallbackIfMatchDesc" }}
+
+
+
+
+