From 6051c5c2fdb81d044d9fab71da0c57237117bca2 Mon Sep 17 00:00:00 2001 From: butubb <1422726308@qq.com> Date: Tue, 11 Aug 2026 09:19:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Tailscale=20=E8=AE=BE=E5=A4=87=E8=A1=A8?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E7=BB=9F=E4=B8=80=E5=88=86=E9=A1=B5/?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E9=80=BB=E8=BE=91=EF=BC=88setListPager?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E4=BF=AE=E6=AD=A3=20IP=20=E5=8F=AF=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E7=9A=84=E8=BF=87=E6=97=B6=E6=8F=90=E7=A4=BA=E6=96=87?= =?UTF-8?q?=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- static/admin/monitor.js | 52 +++++++++++++++++++++--------------- templates/admin/monitor.html | 4 ++- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/static/admin/monitor.js b/static/admin/monitor.js index abb489d..217c513 100644 --- a/static/admin/monitor.js +++ b/static/admin/monitor.js @@ -2268,6 +2268,8 @@ function closeTestModal(){ } // ================== Tab: 维护 - Tailscale 管理 ================== +// 与其他表格共用 setListPager/applyListPager 统一逻辑(搜索 + 分页) +let _tsDevices=[]; async function loadTailscaleDevices(){ const tb=document.getElementById('tb-tailscale'); const st=document.getElementById('ts-status'); @@ -2284,27 +2286,35 @@ async function loadTailscaleDevices(){ return; } if(hint)hint.textContent=''; - const devs=r.devices||[]; - if(!devs.length){tb.innerHTML='tailnet 暂无设备';if(st)st.textContent='';return;} - tb.innerHTML=devs.map(d=>{ - const ip=(d.addresses||[])[0]||'-'; - return ''+ - ''+esc(d.hostname||'-')+''+ - ''+esc(d.name||'-')+''+ - ''+esc(ip)+''+ - ''+esc(d.os||'-')+''+ - ''+((d.online===true)?'在线':(d.online===false?'离线':'最近在线'))+''+ - ''+(d.authorized?'已授权':'未授权')+''+ - ''+(d.key_expiry_disabled?'永不过期':'会过期')+''+ - ''+ - ' '+ - ' '+ - ' '+ - ' '+ - ''+ - ''; - }).join(''); - if(st)st.textContent='共 '+devs.length+' 台设备'; + _tsDevices=r.devices||[]; + setListPager('tailscale',{ + data:()=>_tsDevices, + filter:(d,kw)=>((d.hostname||'').toLowerCase().includes(kw)||(d.name||'').toLowerCase().includes(kw)||(d.addresses||[]).join(',').includes(kw)), + render:renderTsRow, + tbody:'tb-tailscale',pager:'pager-tailscale',pageSize:10, + empty:'tailnet 暂无设备' + }); + applyListPager('tailscale'); + initListSearch('tailscale','search-tailscale'); + if(st)st.textContent='共 '+_tsDevices.length+' 台设备'; +} +function renderTsRow(d){ + const ip=(d.addresses||[])[0]||'-'; + return ''+ + ''+esc(d.hostname||'-')+''+ + ''+esc(d.name||'-')+''+ + ''+esc(ip)+''+ + ''+esc(d.os||'-')+''+ + ''+((d.online===true)?'在线':(d.online===false?'离线':'最近在线'))+''+ + ''+(d.authorized?'已授权':'未授权')+''+ + ''+(d.key_expiry_disabled?'永不过期':'会过期')+''+ + ''+ + ' '+ + ' '+ + ' '+ + ' '+ + ''+ + ''; } function renameTailscaleDevice(id, current){ const name=prompt('修改显示名(只改名称,不影响主机名):', current||''); diff --git a/templates/admin/monitor.html b/templates/admin/monitor.html index df2392b..253620d 100644 --- a/templates/admin/monitor.html +++ b/templates/admin/monitor.html @@ -523,6 +523,7 @@ select.form-control{cursor:pointer}
+
@@ -531,7 +532,8 @@ select.form-control{cursor:pointer}
点击"刷新设备"加载
-
设备 IP 由 tailnet 自动分配,不可修改(只读展示);"密钥不过期"= 关闭设备密钥验证,设备不会被定期踢下线;auth key 生成后只显示一次,请立即复制。
+
+
"设置IP"可修改设备 IPv4(会断开当前连接,平台 serial 随之变化,需同步 STF 设备池);"密钥不过期"= 关闭设备密钥验证,设备不会被定期踢下线;auth key 生成后只显示一次,请立即复制。