From e19061d513b8c4fb2207b4a553a96ea086089612 Mon Sep 17 00:00:00 2001 From: MHSanaei Date: Mon, 4 May 2026 13:20:24 +0200 Subject: TLS: Remove ECH Force Query --- web/assets/js/model/inbound.js | 4 - web/html/common/page.html | 65 +- web/html/component/aClientTable.html | 87 +- web/html/component/aCustomStatistic.html | 18 +- web/html/component/aPersianDatepicker.html | 5 +- web/html/component/aSettingListItem.html | 4 +- web/html/component/aSidebar.html | 7 +- web/html/component/aTableSortable.html | 19 +- web/html/component/aThemeSwitch.html | 6 +- web/html/form/client.html | 127 +-- web/html/form/outbound.html | 993 +++++------------- web/html/form/protocol/dokodemo.html | 4 +- web/html/form/protocol/http.html | 5 +- web/html/form/protocol/hysteria.html | 10 +- web/html/form/protocol/shadowsocks.html | 44 +- web/html/form/protocol/socks.html | 49 +- web/html/form/protocol/trojan.html | 62 +- web/html/form/protocol/tun.html | 60 +- web/html/form/protocol/vless.html | 203 ++-- web/html/form/protocol/vmess.html | 4 +- web/html/form/sniffing.html | 30 +- web/html/form/stream/external_proxy.html | 60 +- web/html/form/stream/stream_finalmask.html | 698 ++++++------- web/html/form/stream/stream_grpc.html | 8 +- web/html/form/stream/stream_httpupgrade.html | 49 +- web/html/form/stream/stream_hysteria.html | 80 +- web/html/form/stream/stream_kcp.html | 40 +- web/html/form/stream/stream_settings.html | 18 +- web/html/form/stream/stream_sockopt.html | 79 +- web/html/form/stream/stream_tcp.html | 121 +-- web/html/form/stream/stream_ws.html | 44 +- web/html/form/stream/stream_xhttp.html | 172 +--- web/html/form/tls_settings.html | 41 +- web/html/inbounds.html | 597 +++++------ web/html/index.html | 399 +++++--- web/html/login.html | 22 +- web/html/modals/client_bulk_modal.html | 116 +-- web/html/modals/client_modal.html | 69 +- web/html/modals/dns_presets_modal.html | 15 +- web/html/modals/inbound_info_modal.html | 41 +- web/html/modals/inbound_modal.html | 32 +- web/html/modals/nord_modal.html | 69 +- web/html/modals/prompt_modal.html | 19 +- web/html/modals/qrcode_modal.html | 39 +- web/html/modals/text_modal.html | 6 +- web/html/modals/two_factor_modal.html | 58 +- web/html/modals/warp_modal.html | 22 +- web/html/modals/xray_balancer_modal.html | 37 +- web/html/modals/xray_dns_modal.html | 18 +- web/html/modals/xray_fakedns_modal.html | 17 +- web/html/modals/xray_outbound_modal.html | 54 +- web/html/modals/xray_reverse_modal.html | 94 +- web/html/modals/xray_rule_modal.html | 31 +- web/html/settings.html | 237 +++-- web/html/settings/panel/general.html | 21 +- web/html/settings/panel/subscription/general.html | 18 +- web/html/settings/panel/subscription/subpage.html | 13 +- web/html/settings/xray/balancers.html | 8 +- web/html/settings/xray/basics.html | 105 +- web/html/settings/xray/dns.html | 3 +- web/html/settings/xray/outbounds.html | 51 +- web/html/xray.html | 1130 +++++++++++++++------ 62 files changed, 3146 insertions(+), 3411 deletions(-) (limited to 'web') diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js index f695d251..9531f19b 100644 --- a/web/assets/js/model/inbound.js +++ b/web/assets/js/model/inbound.js @@ -697,7 +697,6 @@ class TlsStreamSettings extends XrayCommonClass { certificates = [new TlsStreamSettings.Cert()], alpn = [ALPN_OPTION.H2, ALPN_OPTION.HTTP1], echServerKeys = '', - echForceQuery = 'none', settings = new TlsStreamSettings.Settings() ) { super(); @@ -711,7 +710,6 @@ class TlsStreamSettings extends XrayCommonClass { this.certs = certificates; this.alpn = alpn; this.echServerKeys = echServerKeys; - this.echForceQuery = echForceQuery; this.settings = settings; } @@ -744,7 +742,6 @@ class TlsStreamSettings extends XrayCommonClass { certs, json.alpn, json.echServerKeys, - json.echForceQuery, settings, ); } @@ -761,7 +758,6 @@ class TlsStreamSettings extends XrayCommonClass { certificates: TlsStreamSettings.toJsonArray(this.certs), alpn: this.alpn, echServerKeys: this.echServerKeys, - echForceQuery: this.echForceQuery, settings: this.settings, }; } diff --git a/web/html/common/page.html b/web/html/common/page.html index 058682d5..47b2b654 100644 --- a/web/html/common/page.html +++ b/web/html/common/page.html @@ -1,6 +1,7 @@ {{ define "page/head_start" }} + @@ -12,6 +13,7 @@ [v-cloak] { display: none; } + /* vazirmatn-regular - arabic_latin_latin-ext */ @font-face { font-display: swap; @@ -21,10 +23,11 @@ src: url('{{ .base_path }}assets/Vazirmatn-UI-NL-Regular.woff2') format('woff2'); unicode-range: U+0600-06FF, U+200C-200E, U+2010-2011, U+204F, U+2E41, U+FB50-FDFF, U+FE80-FEFC, U+0030-0039; } + body { font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Vazirmatn', 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif; } - + /* mobile touch scrolling for tabs */ @media (max-width: 576px) { .ant-tabs-nav-container { @@ -34,59 +37,69 @@ overscroll-behavior-x: contain; white-space: nowrap; max-width: 100%; - padding: 0 !important; /* Remove padding for arrows */ + padding: 0 !important; + /* Remove padding for arrows */ } + .ant-tabs-nav-wrap { overflow: visible !important; padding: 0 !important; } + .ant-tabs-nav-scroll { overflow: visible !important; box-shadow: none !important; } + .ant-tabs-nav { - display: flex !important; - transform: none !important; /* Disable JS transform */ - width: auto !important; - margin: 0 !important; + display: flex !important; + transform: none !important; + /* Disable JS transform */ + width: auto !important; + margin: 0 !important; } + .ant-tabs-tab-prev, .ant-tabs-tab-next { - display: none !important; /* Hide arrows */ + display: none !important; + /* Hide arrows */ } + .ant-tabs-nav-container::-webkit-scrollbar { display: none; } } {{ .host }} – {{ i18n .title}} -{{ end }} + {{ end }} -{{ define "page/head_end" }} + {{ define "page/head_end" }} {{ end }} {{ define "page/body_start" }} +
-{{ end }} + {{ end }} -{{ define "page/body_scripts" }} - - - - - - - - - -{{ end }} - -{{ define "page/body_end" }} + {{ define "page/body_scripts" }} + + + + + + + + + + {{ end }} + + {{ define "page/body_end" }} + {{ end }} \ No newline at end of file diff --git a/web/html/component/aClientTable.html b/web/html/component/aClientTable.html index 0e32d45c..6e525396 100644 --- a/web/html/component/aClientTable.html +++ b/web/html/component/aClientTable.html @@ -2,30 +2,39 @@ @@ -34,7 +43,7 @@ @@ -165,7 +184,8 @@ {{ i18n "delete"}} - + {{ i18n "enable"}} @@ -179,9 +199,11 @@ {{ i18n "pages.inbounds.traffic" }} - [[ SizeFormatter.sizeFormat(getUpStats(record, client.email) + getDownStats(record, client.email)) ]] + [[ + SizeFormatter.sizeFormat(getUpStats(record, client.email) + getDownStats(record, client.email)) ]] - + @@ -197,11 +219,14 @@ - + - + @@ -216,14 +241,16 @@ - [[ IntlUtil.formatRelativeTime(client.expiryTime) ]] + [[ + IntlUtil.formatRelativeTime(client.expiryTime) ]] - + - + @@ -248,7 +280,8 @@ - + @@ -271,4 +304,4 @@ - -{{end}} +{{end}} \ No newline at end of file diff --git a/web/html/component/aCustomStatistic.html b/web/html/component/aCustomStatistic.html index 0bff128d..e9bfe83b 100644 --- a/web/html/component/aCustomStatistic.html +++ b/web/html/component/aCustomStatistic.html @@ -1,13 +1,13 @@ {{define "component/customStatistic"}} {{end}} @@ -16,9 +16,11 @@ .dark .ant-statistic-content { color: var(--dark-color-text-primary) } + .dark .ant-statistic-title { color: rgba(255, 255, 255, 0.55) } + .ant-statistic-content { font-size: 16px; } diff --git a/web/html/component/aPersianDatepicker.html b/web/html/component/aPersianDatepicker.html index ebd85a08..e8b09b92 100644 --- a/web/html/component/aPersianDatepicker.html +++ b/web/html/component/aPersianDatepicker.html @@ -42,7 +42,7 @@ }; }, watch: { - value: function (date) { + value: function(date) { this.date = this.convertToJalalian(date) } }, @@ -52,7 +52,8 @@ }, methods: { convertToGregorian(date) { - return date ? moment(moment(date, 'jYYYY/jMM/jDD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')) : null + return date ? moment(moment(date, 'jYYYY/jMM/jDD HH:mm:ss').format('YYYY-MM-DD HH:mm:ss')) : + null }, convertToJalalian(date) { return date && moment.isMoment(date) ? date.format('jYYYY/jMM/jDD HH:mm:ss') : null diff --git a/web/html/component/aSettingListItem.html b/web/html/component/aSettingListItem.html index 27a7abac..7ad13456 100644 --- a/web/html/component/aSettingListItem.html +++ b/web/html/component/aSettingListItem.html @@ -26,7 +26,7 @@ type: String, required: false, defaultValue: "default", - validator: function (value) { + validator: function(value) { return ['small', 'default'].includes(value) } } @@ -46,4 +46,4 @@ } }) -{{end}} +{{end}} \ No newline at end of file diff --git a/web/html/component/aSidebar.html b/web/html/component/aSidebar.html index b69c8f3f..9c89a96d 100644 --- a/web/html/component/aSidebar.html +++ b/web/html/component/aSidebar.html @@ -43,8 +43,7 @@ Vue.component('a-sidebar', { data() { return { - tabs: [ - { + tabs: [{ key: '{{ .base_path }}panel/', icon: 'dashboard', title: '{{ i18n "menu.dashboard"}}' @@ -79,8 +78,8 @@ }, methods: { openLink(key) { - return key.startsWith('http') ? - window.open(key) : + return key.startsWith('http') ? + window.open(key) : location.href = key }, closeDrawer() { diff --git a/web/html/component/aTableSortable.html b/web/html/component/aTableSortable.html index 4abad8ef..b3606527 100644 --- a/web/html/component/aTableSortable.html +++ b/web/html/component/aTableSortable.html @@ -1,6 +1,6 @@ {{define "component/sortableTableTrigger"}} - + {{end}} {{define "component/aTableSortable"}} @@ -49,7 +49,7 @@ sortable, } }, - render: function (createElement) { + render: function(createElement) { return createElement('a-table', { class: { 'ant-table-is-sorting': this.isDragging(), @@ -64,12 +64,12 @@ drop: (e) => this.dropHandler(e), }, scopedSlots: this.$scopedSlots, - locale: { - filterConfirm: `{{ i18n "confirm" }}`, - filterReset: `{{ i18n "reset" }}`, - emptyText: `{{ i18n "noData" }}` + locale: { + filterConfirm: `{{ i18n "confirm" }}`, + filterReset: `{{ i18n "reset" }}`, + emptyText: `{{ i18n "noData" }}` } - }, this.$slots.default,) + }, this.$slots.default, ) }, created() { this.$memoSort = {}; @@ -148,7 +148,8 @@ class: { ...(parentMethodResult?.class || {}), [DRAGGABLE_ROW_CLASS]: true, - ['dragging']: this.isDragging() ? (newIndex === null ? index === currentIndex : index === newIndex) : false, + ['dragging']: this.isDragging() ? (newIndex === null ? index === currentIndex : index === newIndex) : + false, }, }; } diff --git a/web/html/component/aThemeSwitch.html b/web/html/component/aThemeSwitch.html index ca340da3..2107e5a8 100644 --- a/web/html/component/aThemeSwitch.html +++ b/web/html/component/aThemeSwitch.html @@ -24,9 +24,11 @@ {{define "component/themeSwitchTemplateLogin"}} {{ i18n "pages.inbounds.email" }} - + - + @@ -55,42 +38,26 @@ {{ i18n "reset" }} Auth Password - + - + - - - [[ key ]] + + + [[ key ]] @@ -100,10 +67,7 @@ {{ i18n "pages.inbounds.subscriptionDesc" }} Subscription - + @@ -118,11 +82,7 @@ - + @@ -139,9 +99,7 @@ - + @@ -293,28 +192,15 @@ - - [[ wds ]] + + [[ wds ]] - + - + @@ -331,27 +217,15 @@ - + - + Peer [[ index + 1 ]] - + :style="{ color: 'rgb(255, 77, 79)', cursor: 'pointer' }"> @@ -365,33 +239,17 @@ - @@ -402,18 +260,12 @@ - + -