Créé: 2026/07/02 19:41:27 America/Chicago
Par: admin
Modifié: 2026/07/03 13:19:11 America/Chicago
Par: admin

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.

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

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:

ValeurSignification
30Plus réactif. Utile pour les hubs occupés.
60Valeur par défaut recommandée.
300Activité 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

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.

Page Parente