Verlihub può caricare gli script Lua tramite il suo plugin Lua. Utilizzare Lua quando un hub necessita di una piccola modifica al comportamento senza ricompilare il server Verlihub.
Gli usi comuni includono bot di visualizzazione, annunci pianificati, comandi di supporto, regole di convalida, helper di moderazione automatizzata, statistiche dell'hub e hook di integrazione. Il supporto Lua dipende dal plug-in installato, creato e abilitato.
Cosa fa il plugin Lua
Il plugin Lua esegue gli script Lua all'interno del processo hub. Ciò offre agli amministratori un percorso più semplice per la personalizzazione dell'hub rispetto alla modifica dell'origine C++ Verlihub o alla scrittura di un plug-in compilato.
Gli script Lua sono generalmente più facili da rivedere e sostituire rispetto ai plugin compilati quando la modifica è piccola e specifica dell'hub.
- Comandi dell'hub personalizzato
- Messaggi di benvenuto automatizzati
- Annunci a tempo
- Controlli di convalida dell'utente
- Risposte dei bot
- Comandi dell'assistente operatore
- Hook di registrazione o notifica
- Semplici controlli anti-spam o anti-flood
- Comportamento specifico dell'hub che non giustifica un plug-in C++
Requisiti
Prima di abilitare il supporto Lua, verificare che il plug-in Lua esista sul server. Un percorso comune del plugin è /usr/local/lib/liblua_pi.so.
Controlla se il file plugin esiste:
ls -lah /usr/local/lib/liblua_pi.so
Se il file non esiste, probabilmente Lua non è stato creato o installato. Ricostruisci Verlihub con il supporto del plugin Lua abilitato.
A seconda del sistema e del metodo di installazione, il plug-in potrebbe anche risiedere /usr/lib, /usr/lib64, /usr/local/lib, O /usr/local/lib64. Cercalo prima di modificare la configurazione dell'hub:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Edificio Verlihub Con Lua Supporto
Se il supporto Lua non è stato incluso durante l'installazione, installare prima il pacchetto di sviluppo Lua. Su Debian o Ubuntu:
sudo apt update
sudo apt install lua5.4 liblua5.4-dev
Alcune build Verlihub utilizzano Lua 5.3 invece di Lua 5.4. Installa il pacchetto corrispondente quando il tuo ramo o distribuzione lo richiede:
sudo apt install lua5.3 liblua5.3-dev
Quindi ricostruisci Verlihub con il plugin Lua abilitato tramite CMake:
cmake .. -DWITH_LUA=ON
make
sudo make install
Il nome esatto dell'opzione CMake può variare in base alla versione Verlihub. Controlla le opzioni di build disponibili prima di ricostruire un hub di produzione:
cmake -LAH ..
Dopo l'installazione, conferma che la libreria dei plugin è stata installata:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Comandi del plugin
Il plugin Lua è gestito tramite i comandi del plugin Verlihub da un account operatore.
- Elenca i plugin installati o conosciuti con
!lstplug. - Registra il plugin Lua con
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.. - Contrassegna il plugin Lua attivo con
!modplug lua -a 1. - Carica il plugin con
!onplug lua. - Conferma i plugin caricati con
!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
Spiegazione del comando
!lstplug
Elenca i plugin conosciuti da Verlihub. Usalo prima per vedere se il plugin Lua è già registrato.
!lstplug
!addplug
Registra il plugin Lua con Verlihub.
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
Significato dell'opzione:
lua: nome del plugin interno.-p /usr/local/lib/liblua_pi.so: percorso della libreria condivisa del plugin Lua.-a 1: contrassegna il plugin come attivo.-d Support for Lua scripts.: Descrizione del plugin leggibile dall'uomo.
!modplug
Modifica il record del plugin e si assicura che il plugin Lua sia contrassegnato come attivo.
!modplug lua -a 1
!onplug
Carica o avvia il plugin Lua dopo che è stato aggiunto e abilitato.
!onplug lua
!pluglist
Mostra i plugin attualmente caricati. Usalo per confermare che Lua è attivo.
!pluglist
Posizione script consigliata Lua
Conserva gli script Lua in una directory dedicata di proprietà dell'utente del servizio 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
Se il tuo servizio Verlihub viene eseguito come un altro utente, sostituisci verlihub:verlihub con l'utente e il gruppo corretti.
sudo chown -R vh:vh /usr/local/etc/verlihub/lua
sudo chown -R www-data:www-data /usr/local/etc/verlihub/lua
Non rendere le directory degli script Lua scrivibili da tutti. Evitare chmod 777 /usr/local/etc/verlihub/lua.
Esempio Lua Script
Crea un piccolo script di prova:
sudo nano /usr/local/etc/verlihub/lua/test.lua
Contenuto di esempio:
-- 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
Le funzioni Lua disponibili dipendono dall'API del plugin Verlihub Lua. Alcune installazioni espongono oggetti o funzioni helper in modo diverso, quindi confronta gli esempi con la libreria di script Lua utilizzata dalla tua versione Verlihub.
Caricamento script Lua
Dopo che il plugin Lua è attivo, gli script possono solitamente essere caricati tramite comandi Lua specifici del plugin o directory di script configurate.
Inizia controllando i comandi del plugin Lua disponibili dall'interno dell'hub:
!help lua
!plughelp lua
Se il plugin supporta l'elenco, il caricamento, lo scaricamento o il ricaricamento degli script, potresti visualizzare comandi simili a questi:
!lua
!lslua
!loadlua
!unloadlua
!reloadlua
I nomi dei comandi possono differire tra le build Verlihub e le versioni del plugin.
Verifica che Lua funzioni
Verificare la configurazione in più fasi. Per prima cosa conferma che il plugin è registrato, poi conferma che sia caricato:
!lstplug
!pluglist
Quindi controlla i log del server per i messaggi del plugin Lua:
journalctl -u verlihub -n 100 --no-pager
Se Verlihub non è gestito da systemd, controlla invece la directory di log configurata Verlihub. Le posizioni comuni includono /var/log/verlihub E /usr/local/var/log/verlihub.
Cerca le voci di registro correlate a Lua quando il registro del servizio è di grandi dimensioni:
grep -i lua /var/log/verlihub/* 2>/dev/null
Raccomandazioni per la produzione
Utilizzare Lua per comportamenti personalizzati di piccole dimensioni, non per elaborazioni pesanti. Il codice Lua viene eseguito all'interno del processo dell'hub, quindi uno script errato può influire sugli aggiornamenti della chat, dell'accesso o dell'elenco degli utenti.
Buono Lua casi d'uso:
- Comandi semplici
- Messaggi dell'Hub
- Verifiche utente
- Automazione leggera
- Piccoli ganci di integrazione
Evitare di utilizzare Lua per:
- Lavori in background a lunga esecuzione
- Query pesanti sul database
- Elaborazione di file di grandi dimensioni
- Blocco delle chiamate di rete
- Loop pesanti per la CPU
- Tutto ciò che può congelare il processo hub
Testare gli script su un hub di staging prima di caricarli su un hub pubblico con gli utenti connessi.
Note sulla sicurezza
Solo gli amministratori attendibili dovrebbero essere in grado di caricare o modificare gli script Lua.
Autorizzazioni consigliate:
sudo chown -R verlihub:verlihub /usr/local/etc/verlihub/lua
sudo chmod -R u=rwX,g=rX,o= /usr/local/etc/verlihub/lua
Non consentire agli utenti non attendibili di scrivere file Lua. Non archiviare i segreti direttamente negli script Lua a meno che le autorizzazioni dei file non siano bloccate.
Mantieni i comandi di gestione dei plugin riservati solo all'operatore o all'amministratore. Gli utenti normali non dovrebbero essere in grado di caricare, scaricare o sostituire gli script.
Risoluzione dei problemi
File del plugin non trovato
I sintomi includono Cannot load plugin, No such file, O liblua_pi.so not found. Cerca la libreria, quindi aggiorna il percorso del plugin memorizzato:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
!modplug lua -p /correct/path/to/liblua_pi.so
Il plugin Lua non appare nell'elenco dei plugin
Controlla se è stato aggiunto. Se manca, aggiungilo, contrassegnalo come attivo e caricalo:
!lstplug
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
!modplug lua -a 1
!onplug lua
Il plugin esiste ma non riesce a caricarsi
Controlla le dipendenze delle librerie condivise e cerca le librerie Lua mancanti:
ldd /usr/local/lib/liblua_pi.so
not found
Se mancano le librerie Lua, installare il pacchetto runtime Lua corrispondente.
sudo apt install lua5.4 liblua5.4-0
sudo apt install lua5.3 liblua5.3-0
Lo script non viene eseguito
Controlla il percorso dello script, le autorizzazioni dei file e i registri Verlihub. Verifica inoltre che il plug-in Lua supporti l'API di script utilizzata dallo script.
ls -lah /usr/local/etc/verlihub/lua
journalctl -u verlihub -n 100 --no-pager
L'hub diventa instabile dopo aver caricato uno script
Scarica lo script o disabilita il plugin Lua. Se l'hub non risponde, arresta Verlihub dalla shell e sposta lo script fuori dalla directory 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
Flusso di lavoro amministrativo suggerito
- Conferma che il plugin Lua esiste.
- Aggiungi il plugin con
!addplug. - Abilitalo con
!modplug. - Inizia con
!onplug. - Confermalo con
!pluglist. - Crea una directory di script dedicata Lua.
- Aggiungi un piccolo script di test.
- Controlla i registri Verlihub.
- Aggiungi gli script di produzione uno alla volta.
- Conserva i backup degli script funzionanti prima di apportare modifiche.
Verlihub Lua Libreria di script
La libreria di script Verlihub Lua contiene script di esempio e codice riutilizzabile Lua per la personalizzazione dell'hub. Usalo come riferimento per le funzioni supportate, gli hook di eventi e i modelli di comando.
Quando si utilizzano gli script della libreria:
- Esaminare lo script prima di installarlo.
- Conferma che corrisponda alla tua versione Verlihub.
- Provalo prima su un hub non di produzione.
- Verifica la presenza di percorsi codificati, nomi di hub, soprannomi di operatori o impostazioni del database.
- Conserva un backup dello script originale prima di modificarlo.