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/html/index.html | 399 +++++++++++++++++++++++++++++++++++----------------- 1 file changed, 267 insertions(+), 132 deletions(-) (limited to 'web/html/index.html') diff --git a/web/html/index.html b/web/html/index.html index 62e9453b..ee5109ea 100644 --- a/web/html/index.html +++ b/web/html/index.html @@ -10,6 +10,7 @@ padding: 2px 6px; border-radius: 3px; } + html[data-theme="ultra-dark"] body.dark .custom-geo-section code.custom-geo-ext-code { color: var(--dark-color-text-primary, rgba(255, 255, 255, 0.88)); background: var(--dark-color-surface-700, #111929); @@ -119,7 +120,8 @@ @@ -170,10 +172,11 @@ @@ -327,8 +330,7 @@ - + {{ i18n "pages.index.currentPanelVersion" }} @@ -379,57 +381,62 @@
- -
- - {{ i18n "pages.index.customGeoAdd" }} - - {{ i18n + +
+ + {{ i18n "pages.index.customGeoAdd" }} + + {{ i18n "pages.index.geofilesUpdateAll" }} -
- - - - - +
+ + + + +
- - + geosite geoip - + @@ -469,7 +476,8 @@ SysLog - +
@@ -547,7 +555,8 @@ -
Timeframe: [[ cpuHistoryModal.bucket ]] sec per point (total [[ cpuHistoryLong.length ]] points)
+
Timeframe: [[ cpuHistoryModal.bucket ]] sec per point + (total [[ cpuHistoryLong.length ]] points)
@@ -560,28 +569,88 @@ // Tiny Sparkline component using an inline SVG polyline Vue.component('sparkline', { props: { - data: { type: Array, required: true }, + data: { + type: Array, + required: true + }, // viewBox width for drawing space; SVG width will be 100% of container - vbWidth: { type: Number, default: 320 }, - height: { type: Number, default: 80 }, - stroke: { type: String, default: '#008771' }, - strokeWidth: { type: Number, default: 2 }, - maxPoints: { type: Number, default: 120 }, - showGrid: { type: Boolean, default: true }, - gridColor: { type: String, default: 'rgba(0,0,0,0.1)' }, - fillOpacity: { type: Number, default: 0.15 }, - showMarker: { type: Boolean, default: true }, - markerRadius: { type: Number, default: 2.8 }, + vbWidth: { + type: Number, + default: 320 + }, + height: { + type: Number, + default: 80 + }, + stroke: { + type: String, + default: '#008771' + }, + strokeWidth: { + type: Number, + default: 2 + }, + maxPoints: { + type: Number, + default: 120 + }, + showGrid: { + type: Boolean, + default: true + }, + gridColor: { + type: String, + default: 'rgba(0,0,0,0.1)' + }, + fillOpacity: { + type: Number, + default: 0.15 + }, + showMarker: { + type: Boolean, + default: true + }, + markerRadius: { + type: Number, + default: 2.8 + }, // New opts for axes/labels/tooltip - labels: { type: Array, default: () => [] }, // same length as data for x labels (e.g., timestamps) - showAxes: { type: Boolean, default: false }, - yTickStep: { type: Number, default: 25 }, // percent ticks - tickCountX: { type: Number, default: 4 }, - paddingLeft: { type: Number, default: 32 }, - paddingRight: { type: Number, default: 6 }, - paddingTop: { type: Number, default: 6 }, - paddingBottom: { type: Number, default: 20 }, - showTooltip: { type: Boolean, default: false }, + labels: { + type: Array, + default: () => [] + }, // same length as data for x labels (e.g., timestamps) + showAxes: { + type: Boolean, + default: false + }, + yTickStep: { + type: Number, + default: 25 + }, // percent ticks + tickCountX: { + type: Number, + default: 4 + }, + paddingLeft: { + type: Number, + default: 32 + }, + paddingRight: { + type: Number, + default: 6 + }, + paddingTop: { + type: Number, + default: 6 + }, + paddingBottom: { + type: Number, + default: 20 + }, + showTooltip: { + type: Boolean, + default: false + }, }, data() { return { @@ -644,7 +713,12 @@ // draw at 25%, 50%, 75% return [0, 0.25, 0.5, 0.75, 1] .map(r => Math.round(this.paddingTop + h * r)) - .map(y => ({ x1: this.paddingLeft, y1: y, x2: this.paddingLeft + w, y2: y })) + .map(y => ({ + x1: this.paddingLeft, + y1: y, + x2: this.paddingLeft + w, + y2: y + })) }, lastPoint() { if (this.pointsArr.length === 0) return null @@ -656,7 +730,10 @@ const ticks = [] for (let p = 0; p <= 100; p += step) { const y = Math.round(this.paddingTop + (this.drawHeight - (p / 100) * this.drawHeight)) - ticks.push({ y, label: `${p}%` }) + ticks.push({ + y, + label: `${p}%` + }) } return ticks }, @@ -677,7 +754,10 @@ positions.forEach(idx => { const label = labels[idx] != null ? String(labels[idx]) : String(idx) const x = Math.round(this.paddingLeft + idx * dx) - ticks.push({ x, label }) + ticks.push({ + x, + label + }) }) return ticks }, @@ -778,17 +858,36 @@ this.disk = new CurTotal(0, 0); this.loads = [0, 0, 0]; this.mem = new CurTotal(0, 0); - this.netIO = { up: 0, down: 0 }; - this.netTraffic = { sent: 0, recv: 0 }; - this.publicIP = { ipv4: 0, ipv6: 0 }; + this.netIO = { + up: 0, + down: 0 + }; + this.netTraffic = { + sent: 0, + recv: 0 + }; + this.publicIP = { + ipv4: 0, + ipv6: 0 + }; this.swap = new CurTotal(0, 0); this.tcpCount = 0; this.udpCount = 0; this.uptime = 0; this.appUptime = 0; - this.appStats = { threads: 0, mem: 0, uptime: 0 }; + this.appStats = { + threads: 0, + mem: 0, + uptime: 0 + }; - this.xray = { state: 'stop', stateMsg: "", errorMsg: "", version: "", color: "" }; + this.xray = { + state: 'stop', + stateMsg: "", + errorMsg: "", + version: "", + color: "" + }; if (data == null) { return; @@ -918,20 +1017,20 @@ }; const xraylogModal = { - visible: false, - logs: [], - rows: 20, - showDirect: true, - showBlocked: true, - showProxy: true, - loading: false, - show(logs) { - this.visible = true; - this.logs = logs; - this.formattedLogs = this.logs?.length > 0 ? this.formatLogs(this.logs) : "No Record..."; - }, - formatLogs(logs) { - let formattedLogs = ` + visible: false, + logs: [], + rows: 20, + showDirect: true, + showBlocked: true, + showProxy: true, + loading: false, + show(logs) { + this.visible = true; + this.logs = logs; + this.formattedLogs = this.logs?.length > 0 ? this.formatLogs(this.logs) : "No Record..."; + }, + formatLogs(logs) { + let formattedLogs = `