The hub-stats.lua script-ul creează o intrare de listă de utilizatori asemănătoare unui bot care afișează statisticile actuale ale centrului. Un hub poate afișa utilizatori online, operatori, cota totală sau un marcator de stare compact fără a rula un proces bot extern separat.
Acest script se concentrează numai pe afișare. Citește contoare simple, construiește un nume scurt, cum ar fi !_Stats_128U_4Ops, și lasă muncă costisitoare în afara procesului hub.
Ce face acest script
Scriptul creează un nume afișat din statisticile hub configurate.
Exemple de nume afișate:
!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB
Utilizările comune includ:
- Se afișează utilizatorii actuali online.
- Se afișează operatori online.
- Se afișează cota totală de concentrare atunci când API-ul Lua o expune ieftin.
- Afișarea utilizatorilor de vârf atunci când versiunea dvs. expune acel contor.
- Afișarea utilizatorilor înregistrați atunci când versiunea dvs. expune acel contor.
- Crearea unui marcator de stare compact hub.
- Adăugarea unei intrări de statistici live la lista de utilizatori.
Contoarele exacte disponibile depind de API-ul pluginului Verlihub Lua expus de versiunea dvs. Verlihub.
Cerințe
Acest script necesită:
- Verlihub instalat și în funcțiune.
- Pluginul Verlihub Lua este instalat.
- Pluginul Lua este activat în Verlihub.
- Permisiune de încărcare și descărcare Lua scripturi.
- Un director de script care poate fi scris pentru Verlihub Lua.
- O versiune Verlihub Lua care poate expune datele de afișare a listei de utilizatori sau poate apela o funcție de generare a numelui dintr-o intrare de afișare.
Înainte de a încărca scriptul, confirmați că pluginul Lua este activ:
!pluglist
Dacă pluginul Lua nu este listat, încărcați-l sau activați-l mai întâi din articolul de configurare Lua.
Locația recomandată a fișierului
Utilizați un director de script dedicat:
mkdir -p /PATH/TO/HUB/scripts
Plasați scriptul la:
/PATH/TO/HUB/scripts/hub-stats.lua
Pentru sistemele de producție, numai administratorii de încredere sau utilizatorul serviciului Verlihub ar trebui să scrie în acel director. Nu utilizați permisiuni de scriere în lume.
Comenzi de încărcare și descărcare
Încărcați scriptul:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Descărcați scriptul:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Dacă editați scriptul, descărcați-l și încărcați-l din nou:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilizați calea absolută completă, cu excepția cazului în care configurația pluginului dvs. Verlihub Lua acceptă căi relative.
Cod script
-- Script: hub-stats.lua
-- Purpose: Displays hub statistics as a bot-like user-list entry.
-- Scope: Lightweight display bot only.
-- Notes: Available statistics depend on the Verlihub Lua API exposed by your build.
name = ""
class = 3
description = "Hub Stats Bot"
speed = "100"
email = ""
share = "0"
prefix = "!_Stats_"
postfix = ""
interval = 60
counter = 0
show_users = true
show_ops = true
show_share = false
function SafeCall(callback, fallback)
local ok, result = pcall(callback)
if ok and result ~= nil then
return result
end
return fallback
end
function FormatShare(bytes)
local value = tonumber(bytes)
if value == nil then
return "0B"
end
if value >= 1099511627776 then
return string.format("%.1fTB", value / 1099511627776)
end
if value >= 1073741824 then
return string.format("%.1fGB", value / 1073741824)
end
if value >= 1048576 then
return string.format("%.1fMB", value / 1048576)
end
if value >= 1024 then
return string.format("%.1fKB", value / 1024)
end
return tostring(value) .. "B"
end
function GetUserCount()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetUsersCount()
end, 0)
end
function GetOperatorCount()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetOperatorsCount()
end, 0)
end
function GetTotalShare()
-- Replace this function body if your Verlihub Lua API uses a different call.
return SafeCall(function()
return VH:GetTotalShare()
end, 0)
end
function GetStatsText()
local parts = {}
if show_users then
table.insert(parts, tostring(GetUserCount()) .. "U")
end
if show_ops then
table.insert(parts, tostring(GetOperatorCount()) .. "Ops")
end
if show_share then
table.insert(parts, FormatShare(GetTotalShare()))
end
if table.getn(parts) == 0 then
return "Online"
end
return table.concat(parts, "_")
end
function GetName()
return prefix .. GetStatsText() .. postfix
end
Opțiuni de configurare
name
name = ""
Valoarea numelui de bază pentru intrarea asemănătoare botului.
În acest script, numele vizibil este generat de GetName(), deci name poate rămâne de obicei goală.
class
class = 3
Controlează clasa afișată sau nivelul de profil al intrării asemănătoare botului.
Semnificația valorilor clasei depinde de configurația hub-ului. Utilizați o valoare care se potrivește cu modul în care ar trebui să apară intrarea de statistici în lista de utilizatori.
description
description = "Hub Stats Bot"
Descrierea afișată pentru intrarea asemănătoare botului.
Exemple:
description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"
speed
speed = "100"
Valoarea vitezei de conectare afișată pentru intrarea de tip bot. Acesta este cosmetic. Nu controlează cât de des se actualizează scriptul.
email = ""
Câmpul de e-mail afișat pentru intrarea asemănătoare botului. Lăsați-l necompletat dacă nu doriți să afișați o adresă de contact.
share
share = "0"
Mărimea cotei afișată pentru intrarea asemănătoare botului. Pentru un bot de afișare a statisticilor, 0 este adecvat, cu excepția cazului în care doriți ca intrarea să arate o valoare cota decorativă.
prefix
prefix = "!_Stats_"
Text plasat înaintea statisticilor generate.
Exemple:
prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "
Alegeți un prefix care se sortează clar în lista de utilizatori hub.
postfix
postfix = ""
Text plasat după statisticile generate.
Exemple:
postfix = ""
postfix = "_Online"
postfix = "_Hub"
interval
interval = 60
Controlează cât de des ar trebui să se actualizeze intrarea de pe afișaj.
Valori recomandate:
| Valoare | Sens |
|---|---|
30 | Mai receptiv. Util pentru hub-urile aglomerate. |
60 | Implicit recomandat. |
300 | Activitate mai scăzută. Util pentru hub-uri silențioase. |
Evitați valorile scăzute. Statisticile hub nu trebuie actualizate în fiecare secundă.
counter
counter = 0
Contor intern utilizat de script. Nu modificați acest lucru decât dacă modificați logica scriptului.
show_users
show_users = true
Controlează dacă numele afișat include numărul curent de utilizatori online.
Exemplu de ieșire:
!_Stats_128U
show_ops
show_ops = true
Controlează dacă numele afișat include numărul de operator curent.
Exemplu de ieșire:
!_Stats_128U_4Ops
show_share
show_share = false
Controlează dacă numele afișat include cota totală de hub.
Exemplu de ieșire:
!_Stats_128U_4Ops_24.5TB
Activați acest lucru numai atunci când Verlihub Lua API-ul dvs. expune o valoare totală de încredere.
Note de compatibilitate API
Exemplul de script folosește următoarele funcții:
VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()
Versiunea dvs. de plugin Verlihub Lua poate expune diferite nume de funcții. Dacă scriptul se încarcă, dar afișează întotdeauna zero, ajustați apelurile API utilizate de funcțiile contor.
Principalele funcții de editat sunt:
function GetUserCount()
return SafeCall(function()
return VH:GetUsersCount()
end, 0)
end
function GetOperatorCount()
return SafeCall(function()
return VH:GetOperatorsCount()
end, 0)
end
function GetTotalShare()
return SafeCall(function()
return VH:GetTotalShare()
end, 0)
end
Înlocuiți aceste apeluri cu funcțiile acceptate de versiunea dvs. de plugin Verlihub Lua.
Exemple de configurații
Număr de utilizatori
prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false
Exemplu de afișare:
!_Users_128U_Online
Utilizatori și operatori
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Exemplu de afișare:
!_Stats_128U_4Ops
Afișare cotă totală
prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true
Exemplu de afișare:
!_Share_24.5TB
Stare Compact Hub
prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true
Exemplu de afișare:
!_Hub_128U_4Ops_24.5TB
Setări de producție recomandate
Pentru majoritatea hub-urilor, începeți numai cu utilizatori și operatori:
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Acest lucru menține afișajul suficient de scurt pentru listele normale de utilizatori.
Dacă lista de utilizatori hub este aglomerată, utilizați un afișaj mai scurt:
prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false
Dacă calcularea cotei totale este costisitoare sau nesigură în versiunea dvs. Verlihub, păstrați-l dezactivat:
show_share = false
Testarea scenariului
După încărcarea scriptului, verificați lista de utilizatori hub pentru intrarea de statistici generată.
Confirmați că:
- Intrarea apare o singură dată.
- Numărul de utilizatori afișat este corect.
- Numărul operatorului afișat este corect.
- Cota totală se afișează corect dacă este activată.
- Numele nu este prea lung pentru lista de utilizatori.
- Intervalul de actualizare este rezonabil.
- Intrarea dispare după descărcarea scriptului.
- Reîncărcarea scriptului nu creează duplicate.
Dacă afișajul arată întotdeauna zero, consultați secțiunea de compatibilitate API.
Depanare
Scriptul nu se încarcă
Verificați dacă pluginul Lua este activ:
!pluglist
Verificați calea fișierului:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilizați calea absolută dacă căile relative nu funcționează.
Statisticile arată întotdeauna zero
Aceasta înseamnă, de obicei, că numele funcțiilor API Lua nu se potrivesc cu versiunea dvs. de plugin Verlihub.
Verificați funcțiile utilizate în:
GetUserCount()
GetOperatorCount()
GetTotalShare()
Apoi înlocuiți exemplul VH:* apeluri cu funcțiile acceptate de instalația dvs.
Numele intrării este prea lung
Dezactivează unele câmpuri sau scurtează prefixul.
Exemplu:
prefix = "!_S_"
show_share = false
Afișează actualizările prea des
Măriți intervalul.
Recomandat:
interval = 60
Pentru hub-uri silențioase:
interval = 300
Apar intrările duplicate
Descărcați scriptul:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Apoi încărcați-l din nou:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Dacă duplicatele continuă, reporniți pluginul Lua sau serviciul Verlihub în timpul unei ferestre de întreținere.
Note de siguranță
Acest script ar trebui să rămână ușor. Nu adăugați:
- Solicitări HTTP externe.
- Interogări de bază de date la fiecare actualizare.
- Scanarea fișierelor.
- Bucle lungi.
- Blocarea apelurilor de somn.
- Calcule costisitoare pentru fiecare utilizator.
Scripturile de afișare a statisticilor ar trebui să citească contoare simple și să actualizeze numele afișat. Dacă o valoare este costisitoare de calculat, memorați-o în cache în afara procesului hub.
Note de întreținere
Păstrați o copie de rezervă înainte de a schimba scriptul:
cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak
Dacă folosești Git:
cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"
Când schimbați numai prefixul, postfixul, intervalul sau statisticile activate, nu sunt necesare modificări de logică.
Îmbunătățiri viitoare sugerate
Versiunile ulterioare posibile ar putea adăuga:
- Afișarea numărului maxim de utilizatori.
- Afișarea numărului de utilizatori înregistrați.
- Afișarea timpului de funcționare al hub-ului.
- Afișare cotă totală pe unitate.
- Separați intrările de afișare pentru utilizatori și partajați.
- Comanda statistici numai pentru operator.
- Urmărirea zilnică a nivelului de apă mare.
- Înregistrare instantanee cu statistici bazate pe fișiere.
Adăugați doar statisticile pe care utilizatorii sau operatorii le vor citi. Prea multe informații fac ca intrarea din lista de utilizatori să fie mai greu de scanat.