Verlihub peut charger des scripts Lua via son plugin Lua. Utilisez Lua lorsqu'un hub a besoin d'un petit changement de comportement sans recompiler le serveur Verlihub.
Les utilisations courantes incluent les robots d'affichage, les annonces programmées, les commandes d'assistance, les règles de validation, les aides de modération automatisées, les statistiques du hub et les hooks d'intégration. La prise en charge de Lua dépend du plugin installé, construit et activé.
Que fait le plugin Lua
Le plugin Lua exécute les scripts Lua dans le processus hub. Cela donne aux administrateurs un chemin plus simple pour la personnalisation du hub que la modification de la source C++ Verlihub ou l'écriture d'un plugin compilé.
Les scripts Lua sont généralement plus faciles à réviser et à remplacer que les plugins compilés lorsque le changement est petit et spécifique au hub.
- Commandes de hub personnalisées
- Messages de bienvenue automatisés
- Annonces chronométrées
- Contrôles de validation des utilisateurs
- Réponses des robots
- Commandes d'aide à l'opérateur
- Hooks de journalisation ou de notification
- Vérifications simples anti-spam ou anti-inondation
- Comportement spécifique au Hub qui ne justifie pas un plugin C++
Exigences
Avant d'activer la prise en charge Lua, confirmez que le plugin Lua existe sur le serveur. Un chemin de plugin courant est /usr/local/lib/liblua_pi.so.
Vérifiez si le fichier du plugin existe:
ls -lah /usr/local/lib/liblua_pi.so
Si le fichier n'existe pas, Lua n'a probablement pas été créé ou installé. Reconstruisez Verlihub avec la prise en charge du plugin Lua activée.
Selon le système et la méthode d'installation, le plugin peut également résider dans /usr/lib, /usr/lib64, /usr/local/lib, ou /usr/local/lib64. Recherchez-le avant de modifier la configuration du hub:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Bâtiment Verlihub avec support Lua
Si la prise en charge de Lua n'a pas été incluse lors de l'installation, installez d'abord le package de développement Lua. Sur Debian ou Ubuntu:
sudo apt update
sudo apt install lua5.4 liblua5.4-dev
Certaines versions de Verlihub utilisent Lua 5.3 au lieu de Lua 5.4. Installez le package correspondant lorsque votre branche ou distribution l'exige:
sudo apt install lua5.3 liblua5.3-dev
Reconstruisez ensuite Verlihub avec le plugin Lua activé via CMake:
cmake .. -DWITH_LUA=ON
make
sudo make install
Le nom exact de l’option CMake peut varier selon la version Verlihub. Vérifiez les options de build disponibles avant de reconstruire un hub de production:
cmake -LAH ..
Après l'installation, confirmez que la bibliothèque de plugins a été installée:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Commandes du plugin
Le plugin Lua est géré via les commandes du plugin Verlihub à partir d'un compte opérateur.
- Lister les plugins installés ou connus avec
!lstplug. - Enregistrez le plugin Lua avec
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.. - Marquez le plugin Lua actif avec
!modplug lua -a 1. - Chargez le plugin avec
!onplug lua. - Confirmez les plugins chargés avec
!pluglist.
!lstplug
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
!modplug lua -a 1
!onplug lua
!pluglist
Explication de la commande
!lstplug
Répertorie les plugins connus par Verlihub. Utilisez-le d'abord pour voir si le plugin Lua est déjà enregistré.
!lstplug
!addplug
Enregistre le plugin Lua avec Verlihub.
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
Signification des options:
lua: Nom du plugin interne.-p /usr/local/lib/liblua_pi.so: Chemin d'accès à la bibliothèque partagée du plugin Lua.-a 1: Marque le plugin comme actif.-d Support for Lua scripts.: Description du plugin lisible par l'homme.
!modplug
Modifie l'enregistrement du plugin et s'assure que le plugin Lua est marqué actif.
!modplug lua -a 1
!onplug
Charge ou démarre le plugin Lua après son ajout et son activation.
!onplug lua
!pluglist
Affiche les plugins actuellement chargés. Utilisez-le pour confirmer que Lua est actif.
!pluglist
Emplacement du script recommandé Lua
Conservez les scripts Lua dans un répertoire dédié appartenant à l'utilisateur du service Verlihub.
sudo mkdir -p /usr/local/etc/verlihub/lua
sudo chown -R verlihub:verlihub /usr/local/etc/verlihub/lua
sudo chmod 750 /usr/local/etc/verlihub/lua
Si votre service Verlihub s'exécute en tant qu'autre utilisateur, remplacez verlihub:verlihub avec le bon utilisateur et le bon groupe.
sudo chown -R vh:vh /usr/local/etc/verlihub/lua
sudo chown -R www-data:www-data /usr/local/etc/verlihub/lua
Ne rendez pas les répertoires de script Lua accessibles en écriture universelle. Éviter chmod 777 /usr/local/etc/verlihub/lua.
Exemple de script Lua
Créez un petit script de test:
sudo nano /usr/local/etc/verlihub/lua/test.lua
Exemple de contenu:
-- Simple Verlihub Lua test script.
-- This file confirms that the Lua plugin can load and execute scripts.
function Main()
VH:SendToAll("Lua test script loaded successfully.")
end
Les fonctions Lua disponibles dépendent de l'API du plugin Verlihub Lua. Certaines installations exposent les objets ou les fonctions d'assistance différemment. Comparez donc les exemples avec la bibliothèque de scripts Lua utilisée par votre version Verlihub.
Chargement des scripts Lua
Une fois le plug-in Lua actif, les scripts peuvent généralement être chargés via des commandes Lua spécifiques au plug-in ou des répertoires de scripts configurés.
Commencez par vérifier les commandes du plugin Lua disponibles depuis l'intérieur du hub:
!help lua
!plughelp lua
Si le plugin prend en charge la liste, le chargement, le déchargement ou le rechargement de scripts, vous pouvez voir des commandes similaires à celles-ci:
!lua
!lslua
!loadlua
!unloadlua
!reloadlua
Les noms de commandes peuvent différer entre les builds Verlihub et les versions de plugin.
La vérification du Lua fonctionne
Vérifiez la configuration par étapes. Confirmez d’abord que le plugin est enregistré, puis confirmez qu’il est chargé:
!lstplug
!pluglist
Vérifiez ensuite les journaux du serveur pour les messages du plug-in Lua:
journalctl -u verlihub -n 100 --no-pager
Si Verlihub n’est pas géré par systemd, vérifiez plutôt le répertoire de journaux configuré Verlihub. Les emplacements communs incluent /var/log/verlihub et /usr/local/var/log/verlihub.
Recherchez les entrées de journal liées à Lua lorsque le journal de service est volumineux:
grep -i lua /var/log/verlihub/* 2>/dev/null
Recommandations de production
Utilisez Lua pour un petit comportement personnalisé, pas pour un traitement lourd. Le code Lua s'exécute dans le processus hub, donc un mauvais script peut affecter les mises à jour du chat, de la connexion ou de la liste d'utilisateurs.
Bons cas d'utilisation Lua:
- Commandes simples
- Messages du hub
- Vérifications des utilisateurs
- Automatisation légère
- Petits crochets d'intégration
Évitez d'utiliser Lua pour:
- Travaux d'arrière-plan de longue durée
- Requêtes de base de données lourdes
- Traitement de fichiers volumineux
- Bloquer les appels réseau
- Boucles gourmandes en CPU
- Tout ce qui peut geler le processus du hub
Testez les scripts sur un hub intermédiaire avant de les charger sur un hub public avec des utilisateurs connectés.
Notes de sécurité
Seuls les administrateurs de confiance doivent pouvoir télécharger ou modifier les scripts Lua.
Autorisations recommandées:
sudo chown -R verlihub:verlihub /usr/local/etc/verlihub/lua
sudo chmod -R u=rwX,g=rX,o= /usr/local/etc/verlihub/lua
N'autorisez pas les utilisateurs non fiables à écrire des fichiers Lua. Ne stockez pas les secrets directement dans les scripts Lua à moins que les autorisations de fichiers ne soient verrouillées.
Conservez les commandes de gestion des plugins uniquement pour les opérateurs ou pour les administrateurs uniquement. Les utilisateurs normaux ne devraient pas pouvoir charger, décharger ou remplacer des scripts.
Dépannage
Fichier de plugin introuvable
Les symptômes incluent Cannot load plugin, No such file, ou liblua_pi.so not found. Recherchez la bibliothèque, puis mettez à jour le chemin du plugin stocké:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
!modplug lua -p /correct/path/to/liblua_pi.so
Le plugin Lua n'apparaît pas dans la liste des plugins
Vérifiez s'il a été ajouté. S'il manque, ajoutez-le, marquez-le comme actif et chargez-le:
!lstplug
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
!modplug lua -a 1
!onplug lua
Le plugin existe mais ne parvient pas à se charger
Vérifiez les dépendances des bibliothèques partagées et recherchez les bibliothèques Lua manquantes:
ldd /usr/local/lib/liblua_pi.so
not found
Si les bibliothèques Lua sont manquantes, installez le package d'exécution Lua correspondant.
sudo apt install lua5.4 liblua5.4-0
sudo apt install lua5.3 liblua5.3-0
Le script ne s'exécute pas
Vérifiez le chemin du script, les autorisations des fichiers et les journaux Verlihub. Vérifiez également que le plugin Lua prend en charge l'API de script utilisée par le script.
ls -lah /usr/local/etc/verlihub/lua
journalctl -u verlihub -n 100 --no-pager
Hub devient instable après le chargement d'un script
Déchargez le script ou désactivez le plugin Lua. Si le hub ne répond pas, arrêtez Verlihub depuis le shell et déplacez le script hors du répertoire Lua:
sudo systemctl stop verlihub
sudo mkdir -p /usr/local/etc/verlihub/lua-disabled
sudo mv /usr/local/etc/verlihub/lua/problem-script.lua /usr/local/etc/verlihub/lua-disabled/
sudo systemctl start verlihub
Flux de travail d'administration suggéré
- Confirmez que le plugin Lua existe.
- Ajoutez le plugin avec
!addplug. - Activez-le avec
!modplug. - Commencez-le avec
!onplug. - Confirmez-le avec
!pluglist. - Créez un répertoire de scripts Lua dédié.
- Ajoutez un petit script de test.
- Vérifiez les journaux Verlihub.
- Ajoutez les scripts de production un par un.
- Conservez des sauvegardes des scripts de travail avant d'apporter des modifications.
Verlihub Lua Bibliothèque de scripts
La bibliothèque de scripts Verlihub Lua contient des exemples de scripts et du code Lua réutilisable pour la personnalisation du hub. Utilisez-le comme référence pour les fonctions, les hooks d'événements et les modèles de commandes pris en charge.
Lors de l'utilisation de scripts de la bibliothèque:
- Vérifiez le script avant de l'installer.
- Confirmez qu'il correspond à votre version Verlihub.
- Testez-le d'abord sur un hub hors production.
- Recherchez les chemins codés en dur, les noms de hub, les surnoms d'opérateur ou les paramètres de base de données.
- Conservez une sauvegarde du script original avant de le modifier.