De hub-stats.lua script bouwt een botachtig gebruikerslijstitem dat de huidige hubstatistieken weergeeft. Een hub kan online gebruikers, operators, het totale aandeel of een compacte statusmarkering weergeven zonder een afzonderlijk extern botproces uit te voeren.
Dit script richt zich alleen op weergave. Het leest eenvoudige tellers, bouwt een korte naam op, zoals !_Stats_128U_4Ops, en laat duur werk buiten het hubproces.
Wat dit script doet
Het script bouwt een weergavenaam op op basis van geconfigureerde hubstatistieken.
Voorbeeld weergavenamen:
!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB
Veel voorkomende toepassingen zijn onder meer:
- Huidige gebruikers online tonen.
- Operators online weergeven.
- Het totale hubaandeel wordt weergegeven wanneer de Lua API dit goedkoop openbaar maakt.
- Toont piekgebruikers wanneer uw build die teller blootlegt.
- Geregistreerde gebruikers tonen wanneer uw build die teller blootlegt.
- Een compacte hubstatusmarkering creëren.
- Een livestatistiekitem toevoegen aan de gebruikerslijst.
De exacte beschikbare tellers zijn afhankelijk van de Verlihub Lua plugin API die wordt weergegeven door uw Verlihub-versie.
Vereisten
Dit script vereist:
- Verlihub geïnstalleerd en actief.
- De plug-in Verlihub Lua is geïnstalleerd.
- De plug-in Lua is ingeschakeld in Verlihub.
- Toestemming om Lua-scripts te laden en te verwijderen.
- Een beschrijfbare scriptmap voor Verlihub Lua bestanden.
- Een Verlihub Lua-build die weergavegegevens van gebruikerslijsten kan weergeven of een functie voor het genereren van namen kan aanroepen vanuit een weergave-item.
Controleer voordat u het script laadt of de plug-in Lua actief is:
!pluglist
Als de plug-in Lua niet in de lijst staat, laadt of schakelt u deze eerst in via het bovenliggende installatieartikel Lua.
Aanbevolen bestandslocatie
Gebruik een speciale scriptdirectory:
mkdir -p /PATH/TO/HUB/scripts
Plaats het script op:
/PATH/TO/HUB/scripts/hub-stats.lua
Voor productiesystemen mogen alleen vertrouwde beheerders of de Verlihub-servicegebruiker naar die map schrijven. Gebruik geen wereldschrijfbare machtigingen.
Opdrachten voor laden en lossen
Laad het script:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Het script uitladen:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Als u het script bewerkt, verwijdert u het en laadt u het opnieuw:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Gebruik het volledige absolute pad tenzij uw plug-inconfiguratie Verlihub Lua relatieve paden ondersteunt.
Scriptcode
-- 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
Configuratie-opties
name
name = ""
De basisnaamwaarde voor het botachtige item.
In dit script wordt de zichtbare naam gegenereerd door GetName(), Dus name kan meestal leeg blijven.
class
class = 3
Beheert het weergegeven klasse- of profielniveau van het botachtige item.
De betekenis van klassewaarden is afhankelijk van de hubconfiguratie. Gebruik een waarde die overeenkomt met hoe de statistiekeninvoer in de gebruikerslijst moet verschijnen.
description
description = "Hub Stats Bot"
De beschrijving die wordt weergegeven voor het botachtige item.
Voorbeelden:
description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"
speed
speed = "100"
De verbindingssnelheidswaarde die wordt weergegeven voor het botachtige item. Dit is cosmetisch. Het bepaalt niet hoe vaak het script wordt bijgewerkt.
email = ""
Het e-mailveld dat wordt weergegeven voor de botachtige invoer. Laat het leeg tenzij u een contactadres wilt weergeven.
share
share = "0"
De gedeelde grootte die wordt weergegeven voor het botachtige item. Voor een bot voor het weergeven van statistieken, 0 is geschikt tenzij u wilt dat de vermelding een decoratieve aandelenwaarde weergeeft.
prefix
prefix = "!_Stats_"
Tekst geplaatst vóór de gegenereerde statistieken.
Voorbeelden:
prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "
Kies een voorvoegsel dat duidelijk wordt gesorteerd in de hubgebruikerslijst.
postfix
postfix = ""
Tekst geplaatst na de gegenereerde statistieken.
Voorbeelden:
postfix = ""
postfix = "_Online"
postfix = "_Hub"
interval
interval = 60
Bepaalt hoe vaak het schermitem moet worden bijgewerkt.
Aanbevolen waarden:
| Waarde | Betekenis |
|---|---|
30 | Responsiever. Handig voor drukke hubs. |
60 | Aanbevolen standaard. |
300 | Lagere activiteit. Handig voor stille hubs. |
Vermijd lage waarden. Hubstatistieken hoeven niet elke seconde te worden bijgewerkt.
counter
counter = 0
Interne teller gebruikt door het script. Wijzig dit niet tenzij u de scriptlogica wijzigt.
show_users
show_users = true
Bepaalt of de weergavenaam het huidige aantal online gebruikers bevat.
Voorbeelduitvoer:
!_Stats_128U
show_ops
show_ops = true
Bepaalt of de weergavenaam het huidige aantal operators bevat.
Voorbeelduitvoer:
!_Stats_128U_4Ops
show_share
show_share = false
Bepaalt of de weergavenaam het totale hub-aandeel omvat.
Voorbeelduitvoer:
!_Stats_128U_4Ops_24.5TB
Schakel dit alleen in als uw Verlihub Lua API een betrouwbare totale aandelenwaarde weergeeft.
Opmerkingen over API-compatibiliteit
Het voorbeeldscript gebruikt deze functies:
VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()
Uw plug-inversie Verlihub Lua kan verschillende functienamen bevatten. Als het script wordt geladen maar altijd nul weergeeft, past u de API-aanroepen aan die door de tellerfuncties worden gebruikt.
De belangrijkste functies om te bewerken zijn:
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
Vervang deze oproepen door de functies die worden ondersteund door uw plug-inversie Verlihub Lua.
Voorbeeldconfiguraties
Alleen gebruikerstelling
prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false
Voorbeeldweergave:
!_Users_128U_Online
Gebruikers en operators
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Voorbeeldweergave:
!_Stats_128U_4Ops
Weergave totaal aandeel
prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true
Voorbeeldweergave:
!_Share_24.5TB
Compacte hubstatus
prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true
Voorbeeldweergave:
!_Hub_128U_4Ops_24.5TB
Aanbevolen productie-instellingen
Begin bij de meeste hubs alleen met gebruikers en operators:
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Hierdoor blijft de weergave kort genoeg voor normale gebruikerslijsten.
Als de hub-gebruikerslijst druk is, gebruik dan een kortere weergave:
prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false
Als de berekening van het totale aandeel duur of onbetrouwbaar is in uw Verlihub-versie, laat deze dan uitgeschakeld:
show_share = false
Het script testen
Controleer na het laden van het script de hubgebruikerslijst voor de gegenereerde statistieken.
Bevestig dat:
- De vermelding verschijnt slechts één keer.
- Het weergegeven aantal gebruikers is correct.
- Het weergegeven aantal operators is correct.
- Het totale aandeel wordt correct weergegeven als dit is ingeschakeld.
- De naam is niet te lang voor de gebruikerslijst.
- Het update-interval is redelijk.
- De invoer verdwijnt na het verwijderen van het script.
- Als u het script opnieuw laadt, ontstaan er geen duplicaten.
Als het display altijd nul weergeeft, raadpleeg dan het gedeelte over API-compatibiliteit.
Problemen oplossen
Het script wordt niet geladen
Controleer of de plug-in Lua actief is:
!pluglist
Controleer het bestandspad:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Gebruik het absolute pad als relatieve paden niet werken.
Statistieken tonen altijd nul
Dit betekent meestal dat de Lua API-functienamen niet overeenkomen met uw plug-inversie Verlihub.
Controleer de functies die worden gebruikt in:
GetUserCount()
GetOperatorCount()
GetTotalShare()
Vervang dan het voorbeeld VH:* bellen met de functies die door uw installatie worden ondersteund.
Naam van item is te lang
Schakel enkele velden uit of verkort het voorvoegsel.
Voorbeeld:
prefix = "!_S_"
show_share = false
Geef updates te vaak weer
Verhoog het interval.
Aanbevolen:
interval = 60
Voor stille hubs:
interval = 300
Er verschijnen dubbele vermeldingen
Het script uitladen:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Laad het vervolgens opnieuw:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Als er nog steeds duplicaten voorkomen, start u de plug-in Lua of de service Verlihub opnieuw tijdens een onderhoudsperiode.
Veiligheidsopmerkingen
Dit script moet lichtgewicht blijven. Voeg niet toe:
- Externe HTTP-verzoeken.
- Databasequery's bij elke update.
- Bestanden scannen.
- Lange lussen.
- Slaapoproepen blokkeren.
- Dure berekeningen per gebruiker.
Statistiekenweergavescripts moeten eenvoudige hubtellers lezen en de weergavenaam bijwerken. Als het berekenen van een waarde duur is, kunt u deze buiten het hubproces in de cache opslaan.
Onderhoudsopmerkingen
Bewaar een back-up voordat u het script wijzigt:
cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak
Als je Git gebruikt:
cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"
Als u alleen het voorvoegsel, het achtervoegsel, het interval of de ingeschakelde statistieken wijzigt, zijn er geen logische wijzigingen vereist.
Voorgestelde toekomstige verbeteringen
Mogelijke latere versies kunnen toevoegen:
- Weergave van piekgebruikerstelling.
- Weergave van geregistreerde gebruikerstelling.
- Weergave van hub-uptime.
- Weergave van het totale aandeel per eenheid.
- Afzonderlijke weergave-items voor gebruikers en delen.
- Commando voor statistieken alleen voor operators.
- Dagelijkse tracking van hoogwatermarkeringen.
- Op bestanden gebaseerde momentopnameregistratie van statistieken.
Voeg alleen de statistieken toe die gebruikers of operators zullen lezen. Te veel informatie maakt het moeilijker om de vermelding in de gebruikerslijst te scannen.