Vytvořeno: 2026/07/02 19:41:27 America/Chicago
Od: admin
Upraveno: 2026/07/03 13:19:11 America/Chicago
Od: admin

The hub-stats.lua script vytvoří položku seznamu uživatelů podobnou botovi, která zobrazí aktuální statistiky centra. Hub může zobrazovat online uživatele, operátory, celkový podíl nebo kompaktní značku stavu, aniž by spouštěl samostatný proces externího robota.

Tento skript se zaměřuje pouze na zobrazení. Čte jednoduché čítače, staví krátký název jako např !_Stats_128U_4Ops a ponechává drahou práci mimo proces centra.

Co tento skript dělá

Skript vytvoří zobrazovaný název z nakonfigurovaných statistik centra.

Příklady zobrazovaných jmen:

!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB

Mezi běžné použití patří:

  • Zobrazení aktuálních uživatelů online.
  • Zobrazení operátorů online.
  • Zobrazuje se celkový podíl hubu, když jej Lua API odhalí levně.
  • Zobrazení špičkových uživatelů, když vaše sestavení odhalí tento čítač.
  • Zobrazuje se registrovaným uživatelům, když vaše sestavení odhalí tento čítač.
  • Vytvoření kompaktní značky stavu rozbočovače.
  • Přidání záznamu živé statistiky do seznamu uživatelů.

Přesná dostupná počítadla závisí na Verlihub Lua plugin API vystaveném vaší verzí Verlihub.

Požadavky

Tento skript vyžaduje:

  • Verlihub nainstalováno a spuštěno.
  • Nainstalovaný plugin Verlihub Lua.
  • Plugin Lua povolen v Verlihub.
  • Oprávnění k načtení a uvolnění Lua skriptů.
  • Adresář zapisovatelných skriptů pro Verlihub Lua soubory.
  • Sestavení Verlihub Lua, které může vystavit data zobrazení seznamu uživatelů nebo volat funkci generování názvu z položky zobrazení.

Před načtením skriptu se ujistěte, že je aktivní plugin Lua:

!pluglist

Pokud plugin Lua není uveden, nejprve jej načtěte nebo povolte z článku o nadřazeném nastavení Lua.

Použijte vyhrazený adresář skriptů:

mkdir -p /PATH/TO/HUB/scripts

Umístěte skript na:

/PATH/TO/HUB/scripts/hub-stats.lua

U produkčních systémů by do tohoto adresáře měli zapisovat pouze důvěryhodní správci nebo uživatel služby Verlihub. Nepoužívejte světově zapisovatelná oprávnění.

Příkazy Načíst a Vyjmout

Načtěte skript:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Uvolněte skript:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua

Pokud skript upravíte, uvolněte jej a znovu načtěte:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Použijte úplnou absolutní cestu, pokud vaše konfigurace pluginu Verlihub Lua nepodporuje relativní cesty.

Kód skriptu

-- 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

Možnosti konfigurace

name

name = ""

Hodnota základního názvu pro položku podobnou botě.

V tomto skriptu je viditelný název generován pomocí GetName(), takže name může obvykle zůstat prázdný.

class

class = 3

Ovládá zobrazenou úroveň třídy nebo profilu položky podobné botě.

Význam hodnot třídy závisí na konfiguraci hubu. Použijte hodnotu, která odpovídá tomu, jak by se měl záznam statistik objevit v seznamu uživatelů.

description

description = "Hub Stats Bot"

Popis zobrazený u záznamu podobného robotu.

Příklady:

description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"

speed

speed = "100"

Hodnota rychlosti připojení zobrazená u položky podobné botě. Tohle je kosmetika. Neřídí, jak často se skript aktualizuje.

email

email = ""

Pole e-mailu zobrazené u záznamu podobného robotu. Nechejte pole prázdné, pokud nechcete zobrazit kontaktní adresu.

share

share = "0"

Velikost sdílené položky zobrazená u položky podobné botě. U robota pro zobrazení statistik 0 je vhodné, pokud nechcete, aby záznam ukazoval hodnotu dekorativního podílu.

prefix

prefix = "!_Stats_"

Text umístěný před vygenerovanou statistikou.

Příklady:

prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "

Vyberte předponu, která se jasně seřadí v seznamu uživatelů hubu.

postfix

postfix = ""

Text umístěný za vygenerované statistiky.

Příklady:

postfix = ""
postfix = "_Online"
postfix = "_Hub"

interval

interval = 60

Řídí, jak často se má položka zobrazení aktualizovat.

Doporučené hodnoty:

HodnotaVýznam
30Větší odezva. Užitečné pro rušné uzly.
60Doporučená výchozí hodnota.
300Nižší aktivita. Užitečné pro tiché náboje.

Vyhněte se nízkým hodnotám. Statistiky hubu se nemusí aktualizovat každou sekundu.

counter

counter = 0

Interní počítadlo používané skriptem. Toto neměňte, pokud neupravujete logiku skriptu.

show_users

show_users = true

Řídí, zda zobrazovaný název zahrnuje aktuální počet online uživatelů.

Příklad výstupu:

!_Stats_128U

show_ops

show_ops = true

Řídí, zda zobrazovaný název zahrnuje aktuální počet operátorů.

Příklad výstupu:

!_Stats_128U_4Ops

show_share

show_share = false

Řídí, zda zobrazovaný název zahrnuje celkové sdílení hubu.

Příklad výstupu:

!_Stats_128U_4Ops_24.5TB

Povolte to pouze tehdy, když vaše Verlihub Lua API odhaluje spolehlivou celkovou hodnotu sdílení.

Poznámky ke kompatibilitě API

Ukázkový skript používá tyto funkce:

VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()

Vaše verze pluginu Verlihub Lua může odhalit různé názvy funkcí. Pokud se skript načte, ale vždy zobrazuje nulu, upravte volání API používaná funkcemi čítače.

Hlavní funkce, které je třeba upravit, jsou:

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

Nahraďte tato volání funkcemi podporovanými vaší verzí pluginu Verlihub Lua.

Příklad konfigurace

Pouze počet uživatelů

prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false

Příklad zobrazení:

!_Users_128U_Online

Uživatelé a operátoři

prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false

Příklad zobrazení:

!_Stats_128U_4Ops

Zobrazení celkového podílu

prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true

Příklad zobrazení:

!_Share_24.5TB

Stav kompaktního rozbočovače

prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true

Příklad zobrazení:

!_Hub_128U_4Ops_24.5TB

U většiny hubů začněte pouze uživateli a operátory:

prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false

Díky tomu je displej dostatečně krátký pro běžné seznamy uživatelů.

Pokud je seznam uživatelů hubu přeplněný, použijte kratší zobrazení:

prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false

Pokud je výpočet celkového podílu ve vaší verzi Verlihub drahý nebo nespolehlivý, ponechte jej deaktivovaný:

show_share = false

Testování skriptu

Po načtení skriptu zkontrolujte v seznamu uživatelů hubu vygenerovaný záznam statistik.

Potvrďte, že:

  • Záznam se objeví pouze jednou.
  • Zobrazený počet uživatelů je správný.
  • Zobrazený počet operátorů je správný.
  • Celkový podíl se zobrazuje správně, pokud je povoleno.
  • Název není příliš dlouhý pro seznam uživatelů.
  • Interval aktualizace je rozumný.
  • Po uvolnění skriptu záznam zmizí.
  • Opětovné načtení skriptu nevytváří duplikáty.

Pokud se na displeji vždy zobrazuje nula, přečtěte si část o kompatibilitě rozhraní API.

Odstraňování problémů

Skript se nenačte

Zkontrolujte, zda je aktivní plugin Lua:

!pluglist

Zkontrolujte cestu k souboru:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Pokud relativní cesty nefungují, použijte absolutní cestu.

Statistiky vždy ukazují nulu

To obvykle znamená, že názvy funkcí API Lua neodpovídají vaší verzi pluginu Verlihub.

Zkontrolujte funkce používané v:

GetUserCount()
GetOperatorCount()
GetTotalShare()

Pak nahraďte příklad VH:* volání s funkcemi podporovanými vaší instalací.

Název položky je příliš dlouhý

Vypněte některá pole nebo zkraťte předponu.

Příklad:

prefix = "!_S_"
show_share = false

Příliš často se zobrazují aktualizace

Zvyšte interval.

Doporučeno:

interval = 60

Pro tiché náboje:

interval = 300

Objeví se duplicitní záznamy

Uvolněte skript:

!luaunload /PATH/TO/HUB/scripts/hub-stats.lua

Poté jej znovu načtěte:

!luaload /PATH/TO/HUB/scripts/hub-stats.lua

Pokud duplikáty přetrvávají, restartujte během období údržby plugin Lua nebo službu Verlihub.

Bezpečnostní poznámky

Tento skript by měl zůstat lehký. Nepřidávejte:

  • Externí požadavky HTTP.
  • Databázové dotazy při každé aktualizaci.
  • Skenování souborů.
  • Dlouhé smyčky.
  • Blokování spánkových hovorů.
  • Nákladné výpočty na uživatele.

Skripty zobrazení statistik by měly číst jednoduché čítače hubů a aktualizovat zobrazovaný název. Pokud je výpočet hodnoty drahý, uložte ji do mezipaměti mimo proces hubu.

Poznámky k údržbě

Před změnou skriptu si vytvořte zálohu:

cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak

Pokud používáte Git:

cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"

Při změně pouze prefixu, postfixu, intervalu nebo povolených statistik nejsou vyžadovány žádné logické změny.

Navrhovaná budoucí vylepšení

Možné pozdější verze mohou přidat:

  • Zobrazení maximálního počtu uživatelů.
  • Zobrazení počtu registrovaných uživatelů.
  • Zobrazení doby provozuschopnosti hubu.
  • Zobrazení celkového podílu podle jednotky.
  • Oddělte položky zobrazení pro uživatele a sdílení.
  • Příkaz statistik pouze pro operátora.
  • Denní sledování značek vysoké vody.
  • Protokolování statistik založených na souborech.

Přidejte pouze statistiky, které budou číst uživatelé nebo operátoři. Příliš mnoho informací ztěžuje skenování položky seznamu uživatelů.

Nadřazená Stránka