IL hub-stats.lua Lo script crea una voce dell'elenco utenti simile a un bot che visualizza le statistiche dell'hub corrente. Un hub può mostrare utenti online, operatori, condivisione totale o un indicatore di stato compatto senza eseguire un processo bot esterno separato.
Questo script si concentra solo sulla visualizzazione. Legge contatori semplici, crea un nome breve come !_Stats_128U_4Ops e lascia il lavoro costoso al di fuori del processo hub.
Cosa fa questo script
Lo script crea un nome visualizzato dalle statistiche dell'hub configurato.
Nomi visualizzati di esempio:
!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB
Gli usi comuni includono:
- Visualizzazione degli utenti attuali online.
- Visualizzazione degli operatori online.
- Visualizzazione della condivisione hub totale quando l'API Lua la espone in modo economico.
- Mostrare gli utenti di punta quando la tua build espone quel contatore.
- Mostrare gli utenti registrati quando la tua build espone quel contatore.
- Creazione di un indicatore di stato dell'hub compatto.
- Aggiunta di una voce di statistiche in tempo reale all'elenco degli utenti.
I contatori esatti disponibili dipendono dall'API del plugin Verlihub Lua esposta dalla versione Verlihub.
Requisiti
Questo script richiede:
- Verlihub installato e funzionante.
- Il plugin Verlihub Lua è installato.
- Il plugin Lua abilitato in Verlihub.
- Autorizzazione a caricare e scaricare gli script Lua.
- Una directory di script scrivibile per i file Verlihub Lua.
- Una build Verlihub Lua che può esporre i dati di visualizzazione dell'elenco utenti o chiamare una funzione di generazione del nome da una voce di visualizzazione.
Prima di caricare lo script, conferma che il plugin Lua è attivo:
!pluglist
Se il plugin Lua non è elencato, caricalo o abilitalo prima dall'articolo di configurazione principale Lua.
Posizione file consigliata
Utilizza una directory di script dedicata:
mkdir -p /PATH/TO/HUB/scripts
Posiziona lo script in:
/PATH/TO/HUB/scripts/hub-stats.lua
Per i sistemi di produzione, solo gli amministratori attendibili o l'utente del servizio Verlihub possono scrivere in quella directory. Non utilizzare autorizzazioni scrivibili da tutti.
Comandi di caricamento e scaricamento
Carica lo script:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Scarica lo script:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Se modifichi lo script, scaricalo e caricalo di nuovo:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilizza il percorso assoluto completo a meno che la configurazione del plug-in Verlihub Lua non supporti i percorsi relativi.
Codice di scrittura
-- 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
Opzioni di configurazione
name
name = ""
Il valore del nome base per la voce simile a un bot.
In questo script, il nome visibile viene generato da GetName(), COSÌ name di solito può rimanere vuoto.
class
class = 3
Controlla la classe visualizzata o il livello del profilo della voce simile a un bot.
Il significato dei valori della classe dipende dalla configurazione dell'hub. Utilizza un valore che corrisponda al modo in cui dovrebbe apparire la voce delle statistiche nell'elenco degli utenti.
description
description = "Hub Stats Bot"
La descrizione mostrata per la voce simile a un bot.
Esempi:
description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"
speed
speed = "100"
Il valore della velocità di connessione visualizzato per la voce simile a un bot. Questo è cosmetico. Non controlla la frequenza con cui lo script viene aggiornato.
email = ""
Il campo email mostrato per la voce simile a un bot. Lascialo vuoto a meno che non desideri visualizzare un indirizzo di contatto.
share
share = "0"
La dimensione della condivisione visualizzata per la voce simile a un bot. Per un bot di visualizzazione delle statistiche, 0 è appropriato a meno che non si desideri che la voce mostri un valore azionario decorativo.
prefix
prefix = "!_Stats_"
Testo posizionato prima delle statistiche generate.
Esempi:
prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "
Scegli un prefisso che venga ordinato chiaramente nell'elenco degli utenti dell'hub.
postfix
postfix = ""
Testo posizionato dopo le statistiche generate.
Esempi:
postfix = ""
postfix = "_Online"
postfix = "_Hub"
interval
interval = 60
Controlla la frequenza con cui la voce visualizzata deve essere aggiornata.
Valori consigliati:
| Valore | Senso |
|---|---|
30 | Più reattivo. Utile per gli hub occupati. |
60 | Impostazione predefinita consigliata. |
300 | Attività inferiore. Utile per hub silenziosi. |
Evitare valori bassi. Le statistiche dell'hub non devono essere aggiornate ogni secondo.
counter
counter = 0
Contatore interno utilizzato dallo script. Non modificarlo a meno che non si stia modificando la logica dello script.
show_users
show_users = true
Controlla se il nome visualizzato include il conteggio corrente degli utenti online.
Esempio di output:
!_Stats_128U
show_ops
show_ops = true
Controlla se il nome visualizzato include il conteggio degli operatori correnti.
Esempio di output:
!_Stats_128U_4Ops
show_share
show_share = false
Controlla se il nome visualizzato include la condivisione hub totale.
Esempio di output:
!_Stats_128U_4Ops_24.5TB
Abilita questa opzione solo quando l'API Verlihub Lua espone un valore di condivisione totale affidabile.
Note sulla compatibilità dell'API
Lo script di esempio utilizza queste funzioni:
VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()
La versione del plug-in Verlihub Lua potrebbe esporre nomi di funzioni diversi. Se lo script viene caricato ma visualizza sempre zero, modificare le chiamate API utilizzate dalle funzioni contatore.
Le principali funzioni da modificare sono:
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
Sostituisci quelle chiamate con le funzioni supportate dalla tua versione del plugin Verlihub.
Configurazioni di esempio
Solo conteggio utenti
prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false
Visualizzazione di esempio:
!_Users_128U_Online
Utenti e operatori
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Visualizzazione di esempio:
!_Stats_128U_4Ops
Visualizzazione della quota totale
prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true
Visualizzazione di esempio:
!_Share_24.5TB
Stato dell'hub compatto
prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true
Visualizzazione di esempio:
!_Hub_128U_4Ops_24.5TB
Impostazioni di produzione consigliate
Per la maggior parte degli hub, iniziare solo con utenti e operatori:
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Ciò mantiene la visualizzazione sufficientemente breve per i normali elenchi di utenti.
Se l'elenco degli utenti dell'hub è affollato, utilizzare una visualizzazione più breve:
prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false
Se il calcolo della quota totale è costoso o inaffidabile nella tua versione Verlihub, mantienilo disabilitato:
show_share = false
Testare la sceneggiatura
Dopo aver caricato lo script, controlla l'elenco degli utenti dell'hub per la voce delle statistiche generate.
Conferma che:
- La voce appare solo una volta.
- Il conteggio degli utenti visualizzato è corretto.
- Il conteggio degli operatori visualizzato è corretto.
- La condivisione totale viene visualizzata correttamente se abilitata.
- Il nome non è troppo lungo per l'elenco degli utenti.
- L'intervallo di aggiornamento è ragionevole.
- La voce scompare dopo aver scaricato lo script.
- Ricaricare lo script non crea duplicati.
Se il display mostra sempre zero, consulta la sezione sulla compatibilità dell'API.
Risoluzione dei problemi
Lo script non viene caricato
Verifica che il plugin Lua sia attivo:
!pluglist
Controlla il percorso del file:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilizzare il percorso assoluto se i percorsi relativi non funzionano.
Le statistiche mostrano sempre zero
Questo di solito significa che i nomi delle funzioni API Lua non corrispondono alla versione del plugin Verlihub.
Controlla le funzioni utilizzate in:
GetUserCount()
GetOperatorCount()
GetTotalShare()
Quindi sostituisci l'esempio VH:* chiamate con le funzioni supportate dalla vostra installazione.
Il nome della voce è troppo lungo
Disabilita alcuni campi o accorcia il prefisso.
Esempio:
prefix = "!_S_"
show_share = false
Visualizza gli aggiornamenti troppo spesso
Aumentare l'intervallo.
Raccomandato:
interval = 60
Per hub silenziosi:
interval = 300
Vengono visualizzate le voci duplicate
Scarica lo script:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Quindi caricalo di nuovo:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Se i duplicati continuano, riavviare il plug-in Lua o il servizio Verlihub durante una finestra di manutenzione.
Note sulla sicurezza
Questo script dovrebbe rimanere leggero. Non aggiungere:
- Richieste HTTP esterne.
- Interrogazioni del database ad ogni aggiornamento.
- Scansione dei file.
- Anelli lunghi.
- Blocco delle chiamate per dormire.
- Calcoli costosi per utente.
Gli script di visualizzazione delle statistiche dovrebbero leggere semplici contatori hub e aggiornare il nome visualizzato. Se un valore è costoso da calcolare, memorizzarlo nella cache all'esterno del processo hub.
Note sulla manutenzione
Conserva un backup prima di modificare lo script:
cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak
Se usi Git:
cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"
Quando si modifica solo il prefisso, il suffisso, l'intervallo o le statistiche abilitate, non sono richieste modifiche alla logica.
Miglioramenti futuri suggeriti
Eventuali versioni successive potrebbero aggiungere:
- Visualizzazione del conteggio massimo degli utenti.
- Visualizzazione del conteggio degli utenti registrati.
- Visualizzazione del tempo di attività dell'hub.
- Visualizzazione della quota totale per unità.
- Voci di visualizzazione separate per utenti e condivisione.
- Comando statistiche riservato all'operatore.
- Monitoraggio giornaliero del livello massimo.
- Registrazione di istantanee statistiche basate su file.
Aggiungi solo le statistiche che gli utenti o gli operatori leggeranno. Troppe informazioni rendono più difficile la scansione della voce dell'elenco utenti.