Creato: 2026/07/02 19:41:27 America/Chicago
Da: admin
Modificato: 2026/07/03 13:19:11 America/Chicago
Da: admin

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.

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

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:

ValoreSenso
30Più reattivo. Utile per gli hub occupati.
60Impostazione predefinita consigliata.
300Attività 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

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.

Pagina Padre