Le hub-stats.lua Le script crée une entrée de liste d'utilisateurs de type robot qui affiche les statistiques actuelles du hub. Un hub peut afficher les utilisateurs en ligne, les opérateurs, la part totale ou un marqueur d'état compact sans exécuter de processus de robot externe distinct.
Ce script se concentre uniquement sur l'affichage. Il lit des compteurs simples, construit un nom court tel que !_Stats_128U_4Ops, et laisse un travail coûteux en dehors du processus de hub.
Ce que fait ce script
Le script crée un nom d'affichage à partir des statistiques du hub configurées.
Exemples de noms d'affichage:
!_Users_128
!_Hub_128_Online
!_Stats_128U_4Ops
!_Share_24.5TB
Les utilisations courantes incluent:
- Affichage des utilisateurs actuels en ligne.
- Affichage des opérateurs en ligne.
- Affichage de la part totale du hub lorsque l'API Lua l'expose à moindre coût.
- Afficher les utilisateurs de pointe lorsque votre build expose ce compteur.
- Afficher les utilisateurs enregistrés lorsque votre build expose ce compteur.
- Création d'un marqueur d'état de hub compact.
- Ajout d'une entrée de statistiques en direct à la liste des utilisateurs.
Les compteurs exacts disponibles dépendent de l'API du plugin Verlihub Lua exposée par votre version Verlihub.
Exigences
Ce script nécessite:
- Verlihub installé et en cours d’exécution.
- Le plugin Verlihub Lua installé.
- Le plugin Lua activé dans Verlihub.
- Autorisation de charger et décharger les scripts Lua.
- Un répertoire de scripts inscriptible pour les fichiers Verlihub Lua.
- Une version Verlihub Lua qui peut exposer les données d'affichage de la liste d'utilisateurs ou appeler une fonction de génération de nom à partir d'une entrée d'affichage.
Avant de charger le script, vérifiez que le plugin Lua est actif:
!pluglist
Si le plug-in Lua n'est pas répertorié, chargez-le ou activez-le d'abord à partir de l'article de configuration parent Lua.
Emplacement du fichier recommandé
Utilisez un répertoire de script dédié:
mkdir -p /PATH/TO/HUB/scripts
Placez le script à:
/PATH/TO/HUB/scripts/hub-stats.lua
Pour les systèmes de production, seuls les administrateurs de confiance ou l'utilisateur du service Verlihub doivent écrire dans ce répertoire. N'utilisez pas d'autorisations d'écriture universelle.
Commandes de chargement et de déchargement
Chargez le script:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Déchargez le script:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Si vous modifiez le script, déchargez-le et chargez-le à nouveau:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilisez le chemin absolu complet, sauf si la configuration de votre plugin Verlihub Lua prend en charge les chemins relatifs.
Code de 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
Options de configuration
name
name = ""
La valeur du nom de base pour l’entrée de type bot.
Dans ce script, le nom visible est généré par GetName(), donc name peut généralement rester vide.
class
class = 3
Contrôle la classe affichée ou le niveau de profil de l’entrée de type bot.
La signification des valeurs de classe dépend de la configuration du hub. Utilisez une valeur qui correspond à la façon dont l'entrée de statistiques doit apparaître dans la liste des utilisateurs.
description
description = "Hub Stats Bot"
La description affichée pour l'entrée de type bot.
Exemples:
description = "Hub Stats Bot"
description = "Users Online"
description = "Hub Status"
description = "Live Hub Stats"
speed
speed = "100"
La valeur de la vitesse de connexion affichée pour l’entrée de type bot. C'est cosmétique. Il ne contrôle pas la fréquence à laquelle le script est mis à jour.
email = ""
Le champ de courrier électronique affiché pour l'entrée de type bot. Laissez-le vide sauf si vous souhaitez afficher une adresse de contact.
share
share = "0"
La taille de partage affichée pour l’entrée de type bot. Pour un bot d'affichage de statistiques, 0 est approprié, sauf si vous souhaitez que l'entrée affiche une valeur de partage décorative.
prefix
prefix = "!_Stats_"
Texte placé avant les statistiques générées.
Exemples:
prefix = "!_Stats_"
prefix = "!_Hub_"
prefix = "!_Users_"
prefix = "[Stats] "
Choisissez un préfixe qui trie clairement dans la liste des utilisateurs du hub.
postfix
postfix = ""
Texte placé après les statistiques générées.
Exemples:
postfix = ""
postfix = "_Online"
postfix = "_Hub"
interval
interval = 60
Contrôle la fréquence à laquelle l’entrée d’affichage doit être mise à jour.
Valeurs recommandées:
| Valeur | Signification |
|---|---|
30 | Plus réactif. Utile pour les hubs occupés. |
60 | Valeur par défaut recommandée. |
300 | Activité moindre. Utile pour les hubs silencieux. |
Évitez les valeurs faibles. Les statistiques du hub n'ont pas besoin d'être mises à jour toutes les secondes.
counter
counter = 0
Compteur interne utilisé par le script. Ne changez pas cela sauf si vous modifiez la logique du script.
show_users
show_users = true
Contrôle si le nom d'affichage inclut le nombre d'utilisateurs en ligne actuel.
Exemple de sortie:
!_Stats_128U
show_ops
show_ops = true
Contrôle si le nom d'affichage inclut le nombre d'opérateurs actuel.
Exemple de sortie:
!_Stats_128U_4Ops
show_share
show_share = false
Contrôle si le nom d’affichage inclut le partage total du hub.
Exemple de sortie:
!_Stats_128U_4Ops_24.5TB
Activez cette option uniquement lorsque votre API Verlihub Lua expose une valeur de partage totale fiable.
Notes de compatibilité des API
L'exemple de script utilise ces fonctions:
VH:GetUsersCount()
VH:GetOperatorsCount()
VH:GetTotalShare()
Votre version du plugin Verlihub Lua peut exposer différents noms de fonctions. Si le script se charge mais affiche toujours zéro, ajustez les appels API utilisés par les fonctions du compteur.
Les principales fonctions à éditer sont:
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
Remplacez ces appels par les fonctions prises en charge par votre version du plugin Verlihub Lua.
Exemples de configurations
Nombre d'utilisateurs uniquement
prefix = "!_Users_"
postfix = "_Online"
interval = 60
show_users = true
show_ops = false
show_share = false
Exemple d'affichage:
!_Users_128U_Online
Utilisateurs et opérateurs
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Exemple d'affichage:
!_Stats_128U_4Ops
Affichage du partage total
prefix = "!_Share_"
postfix = ""
interval = 300
show_users = false
show_ops = false
show_share = true
Exemple d'affichage:
!_Share_24.5TB
Statut du hub compact
prefix = "!_Hub_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = true
Exemple d'affichage:
!_Hub_128U_4Ops_24.5TB
Paramètres de production recommandés
Pour la plupart des hubs, commencez par les utilisateurs et les opérateurs uniquement:
prefix = "!_Stats_"
postfix = ""
interval = 60
show_users = true
show_ops = true
show_share = false
Cela maintient l'affichage suffisamment court pour les listes d'utilisateurs normales.
Si la liste des utilisateurs du hub est encombrée, utilisez un affichage plus court:
prefix = "!_U_"
postfix = ""
interval = 60
show_users = true
show_ops = false
show_share = false
Si le calcul de la part totale est coûteux ou peu fiable dans votre version Verlihub, laissez-le désactivé:
show_share = false
Tester le script
Après avoir chargé le script, vérifiez la liste des utilisateurs du hub pour l'entrée de statistiques générée.
Confirmez que:
- L'entrée n'apparaît qu'une seule fois.
- Le nombre d'utilisateurs affiché est correct.
- Le nombre d’opérateurs affiché est correct.
- Le partage total s'affiche correctement s'il est activé.
- Le nom n'est pas trop long pour la liste des utilisateurs.
- L'intervalle de mise à jour est raisonnable.
- L'entrée disparaît après le déchargement du script.
- Le rechargement du script ne crée pas de doublons.
Si l'écran affiche toujours zéro, consultez la section Compatibilité API.
Dépannage
Le script ne se charge pas
Vérifiez que le plugin Lua est actif:
!pluglist
Vérifiez le chemin du fichier:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Utilisez le chemin absolu si les chemins relatifs ne fonctionnent pas.
Les statistiques affichent toujours zéro
Cela signifie généralement que les noms de fonctions API Lua ne correspondent pas à la version de votre plugin Verlihub.
Vérifiez les fonctions utilisées dans:
GetUserCount()
GetOperatorCount()
GetTotalShare()
Remplacez ensuite l'exemple VH:* appels avec les fonctions supportées par votre installation.
Le nom de l'entrée est trop long
Désactivez certains champs ou raccourcissez le préfixe.
Exemple:
prefix = "!_S_"
show_share = false
Afficher les mises à jour trop souvent
Augmentez l'intervalle.
Recommandé:
interval = 60
Pour les hubs silencieux:
interval = 300
Des entrées en double apparaissent
Déchargez le script:
!luaunload /PATH/TO/HUB/scripts/hub-stats.lua
Puis chargez-le à nouveau:
!luaload /PATH/TO/HUB/scripts/hub-stats.lua
Si les doublons persistent, redémarrez le plugin Lua ou le service Verlihub pendant une fenêtre de maintenance.
Notes de sécurité
Ce script doit rester léger. N'ajoutez pas:
- Requêtes HTTP externes.
- Requêtes de base de données à chaque mise à jour.
- Analyse de fichiers.
- Longues boucles.
- Bloquer les appels en veille.
- Calculs coûteux par utilisateur.
Les scripts d'affichage des statistiques doivent lire des compteurs de hub simples et mettre à jour le nom d'affichage. Si une valeur est coûteuse à calculer, mettez-la en cache en dehors du processus hub.
Notes d'entretien
Conservez une sauvegarde avant de modifier le script:
cp /PATH/TO/HUB/scripts/hub-stats.lua /PATH/TO/HUB/scripts/hub-stats.lua.bak
Si vous utilisez Git:
cd /PATH/TO/HUB/scripts
git add hub-stats.lua
git commit -m "Update hub-stats.lua settings"
Lorsque vous modifiez uniquement le préfixe, le suffixe, l'intervalle ou les statistiques activées, aucune modification logique n'est requise.
Améliorations futures suggérées
Les versions ultérieures possibles pourraient ajouter:
- Affichage du nombre maximal d'utilisateurs.
- Affichage du nombre d'utilisateurs enregistrés.
- Affichage de la disponibilité du hub.
- Affichage de la part totale par unité.
- Séparez les entrées d’affichage pour les utilisateurs et partagez.
- Commande de statistiques réservée à l'opérateur.
- Suivi quotidien des hautes eaux.
- Journalisation d'instantanés de statistiques basées sur des fichiers.
Ajoutez uniquement les statistiques que les utilisateurs ou les opérateurs liront. Trop d'informations rendent l'entrée de la liste d'utilisateurs plus difficile à analyser.