Verlihub kan Lua-scripts laden via de plug-in Lua. Gebruik Lua wanneer een hub een kleine gedragsverandering nodig heeft zonder de Verlihub-server opnieuw te compileren.
Veelvoorkomende toepassingen zijn displaybots, geplande aankondigingen, helperopdrachten, validatieregels, geautomatiseerde moderatiehelpers, hubstatistieken en integratiehooks. Lua-ondersteuning is afhankelijk van de plug-in die wordt geïnstalleerd, gebouwd en ingeschakeld.
Wat de plug-in Lua doet
De plug-in Lua voert Lua-scripts uit binnen het hubproces. Dat geeft beheerders een lichter pad voor het aanpassen van de hub dan het bewerken van de Verlihub C++-bron of het schrijven van een gecompileerde plug-in.
Lua-scripts zijn doorgaans gemakkelijker te beoordelen en te vervangen dan gecompileerde plug-ins als de wijziging klein en hub-specifiek is.
- Aangepaste hub-opdrachten
- Geautomatiseerde welkomstberichten
- Getimede aankondigingen
- Controles op gebruikersvalidatie
- Bot-reacties
- Operatorhelperopdrachten
- Haken voor logboekregistratie of meldingen
- Eenvoudige anti-spam- of anti-overstromingscontroles
- Hub-specifiek gedrag dat een C++-plug-in niet rechtvaardigt
Vereisten
Voordat u ondersteuning voor Lua inschakelt, moet u bevestigen dat de plug-in Lua op de server bestaat. Een veelgebruikt plug-inpad is /usr/local/lib/liblua_pi.so.
Controleer of het plug-inbestand bestaat:
ls -lah /usr/local/lib/liblua_pi.so
Als het bestand niet bestaat, is Lua waarschijnlijk niet gebouwd of geïnstalleerd. Herbouw Verlihub met ondersteuning voor plug-ins Lua ingeschakeld.
Afhankelijk van het systeem en de installatiemethode kan de plug-in ook aanwezig zijn /usr/lib, /usr/lib64, /usr/local/lib, of /usr/local/lib64. Zoek ernaar voordat u de hubconfiguratie wijzigt:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Gebouw Verlihub met Lua Ondersteuning
Als er tijdens de installatie geen ondersteuning voor Lua was inbegrepen, installeer dan eerst het ontwikkelingspakket Lua. Op Debian of Ubuntu:
sudo apt update
sudo apt install lua5.4 liblua5.4-dev
Sommige Verlihub-builds gebruiken Lua 5.3 in plaats van Lua 5.4. Installeer het bijpassende pakket wanneer uw vestiging of distributie dit vereist:
sudo apt install lua5.3 liblua5.3-dev
Bouw vervolgens Verlihub opnieuw op met de plug-in Lua ingeschakeld via CMake:
cmake .. -DWITH_LUA=ON
make
sudo make install
De exacte optienaam CMake kan variëren per versie Verlihub. Controleer de beschikbare bouwopties voordat u een productiehub opnieuw opbouwt:
cmake -LAH ..
Bevestig na de installatie dat de plug-inbibliotheek is geïnstalleerd:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Plugin-opdrachten
De plug-in Lua wordt beheerd via plug-inopdrachten Verlihub vanuit een operatoraccount.
- Geef geïnstalleerde of bekende plug-ins weer met
!lstplug. - Registreer de plug-in Lua met
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.. - Markeer de plug-in Lua actief met
!modplug lua -a 1. - Laad de plug-in met
!onplug lua. - Bevestig geladen plug-ins met
!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
Commando uitleg
!lstplug
Geeft een overzicht van de plug-ins die bekend zijn bij Verlihub. Gebruik deze eerst om te zien of de plug-in Lua al is geregistreerd.
!lstplug
!addplug
Registreert de plug-in Lua met Verlihub.
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
Optie betekenis:
lua: Interne plug-innaam.-p /usr/local/lib/liblua_pi.so: Pad naar de gedeelde bibliotheek Lua plug-in.-a 1: Markeert de plug-in als actief.-d Support for Lua scripts.: Voor mensen leesbare plug-inbeschrijving.
!modplug
Wijzigt het plug-inrecord en zorgt ervoor dat plug-in Lua als actief wordt gemarkeerd.
!modplug lua -a 1
!onplug
Laadt of start de plug-in Lua nadat deze is toegevoegd en ingeschakeld.
!onplug lua
!pluglist
Toont momenteel geladen plug-ins. Gebruik het om te bevestigen dat Lua actief is.
!pluglist
Aanbevolen Lua Scriptlocatie
Bewaar de Lua-scripts in een speciale map die eigendom is van de Verlihub-servicegebruiker.
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
Als uw Verlihub-service als een andere gebruiker wordt uitgevoerd, vervangt u verlihub:verlihub met de juiste gebruiker en groep.
sudo chown -R vh:vh /usr/local/etc/verlihub/lua
sudo chown -R www-data:www-data /usr/local/etc/verlihub/lua
Maak de Lua-scriptmappen niet wereldbeschrijfbaar. Voorkomen chmod 777 /usr/local/etc/verlihub/lua.
Voorbeeld Lua Script
Maak een klein testscript:
sudo nano /usr/local/etc/verlihub/lua/test.lua
Voorbeeld inhoud:
-- 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
De beschikbare Lua-functies zijn afhankelijk van de plug-in-API Verlihub Lua. Sommige installaties geven helperobjecten of -functies anders weer, dus vergelijk de voorbeelden met de scriptbibliotheek Lua die door uw Verlihub-versie wordt gebruikt.
Lua Scripts laden
Nadat de plug-in Lua actief is, kunnen scripts meestal worden geladen via plug-in-specifieke Lua-opdrachten of geconfigureerde scriptmappen.
Begin met het controleren van de beschikbare Lua plug-inopdrachten vanuit de hub:
!help lua
!plughelp lua
Als de plug-in het weergeven, laden, verwijderen of herladen van scripts ondersteunt, ziet u mogelijk soortgelijke opdrachten als deze:
!lua
!lslua
!loadlua
!unloadlua
!reloadlua
Commandonamen kunnen verschillen tussen Verlihub-builds en plug-inversies.
Controleren of Lua werkt
Controleer de opstelling stapsgewijs. Bevestig eerst dat de plug-in is geregistreerd en bevestig vervolgens dat deze is geladen:
!lstplug
!pluglist
Controleer vervolgens de serverlogboeken op Lua-plug-inberichten:
journalctl -u verlihub -n 100 --no-pager
Als Verlihub niet wordt beheerd door systemd, controleer dan in plaats daarvan de geconfigureerde logmap Verlihub. Veel voorkomende locaties zijn onder meer /var/log/verlihub En /usr/local/var/log/verlihub.
Zoek naar Lua-gerelateerde logboekvermeldingen wanneer het servicelogboek groot is:
grep -i lua /var/log/verlihub/* 2>/dev/null
Productie-aanbevelingen
Gebruik Lua voor klein aangepast gedrag, niet voor zware verwerking. Lua-code wordt binnen het hubproces uitgevoerd, dus een slecht script kan van invloed zijn op chat-, login- of gebruikerslijstupdates.
Goede Lua gebruiksscenario's:
- Eenvoudige commando's
- Hub-berichten
- Gebruikerscontroles
- Lichtgewicht automatisering
- Kleine integratiehaken
Vermijd het gebruik van Lua voor:
- Langlopende achtergrondbanen
- Zware databasequery's
- Verwerking van grote bestanden
- Netwerkoproepen blokkeren
- CPU-zware loops
- Alles wat het hubproces kan bevriezen
Test scripts op een faseringshub voordat u ze op een openbare hub laadt terwijl de gebruikers zijn verbonden.
Beveiligingsopmerkingen
Alleen vertrouwde beheerders mogen Lua-scripts kunnen uploaden of wijzigen.
Aanbevolen rechten:
sudo chown -R verlihub:verlihub /usr/local/etc/verlihub/lua
sudo chmod -R u=rwX,g=rX,o= /usr/local/etc/verlihub/lua
Sta niet toe dat niet-vertrouwde gebruikers Lua-bestanden schrijven. Bewaar geheimen niet rechtstreeks in Lua-scripts, tenzij de bestandsrechten zijn vergrendeld.
Houd plug-inbeheeropdrachten alleen voor de operator of alleen voor de beheerder. Normale gebruikers zouden geen scripts moeten kunnen laden, verwijderen of vervangen.
Problemen oplossen
Plug-inbestand niet gevonden
Symptomen zijn onder meer Cannot load plugin, No such file, of liblua_pi.so not found. Zoek naar de bibliotheek en update vervolgens het opgeslagen plug-inpad:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
!modplug lua -p /correct/path/to/liblua_pi.so
Lua plug-in verschijnt niet in de plug-inlijst
Controleer of deze is toegevoegd. Als het ontbreekt, voeg het dan toe, markeer het als actief en laad het:
!lstplug
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
!modplug lua -a 1
!onplug lua
De plug-in bestaat, maar kan niet worden geladen
Controleer de afhankelijkheden van de gedeelde bibliotheek en zoek naar ontbrekende Lua-bibliotheken:
ldd /usr/local/lib/liblua_pi.so
not found
Als de Lua-bibliotheken ontbreken, installeert u het overeenkomende runtimepakket Lua.
sudo apt install lua5.4 liblua5.4-0
sudo apt install lua5.3 liblua5.3-0
Script wordt niet uitgevoerd
Controleer het scriptpad, de bestandsrechten en de Verlihub-logboeken. Controleer ook of de plug-in Lua de script-API ondersteunt die door het script wordt gebruikt.
ls -lah /usr/local/etc/verlihub/lua
journalctl -u verlihub -n 100 --no-pager
Hub wordt instabiel na het laden van een script
Verwijder het script of schakel de plug-in Lua uit. Als de hub niet reageert, stop dan Verlihub vanuit de shell en verplaats het script uit de map 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
Voorgestelde beheerdersworkflow
- Controleer of de plug-in Lua bestaat.
- Voeg de plug-in toe met
!addplug. - Schakel het in met
!modplug. - Begin ermee
!onplug. - Bevestig het met
!pluglist. - Maak een speciale scriptmap Lua.
- Voeg een klein testscript toe.
- Controleer de logboeken Verlihub.
- Voeg productiescripts één voor één toe.
- Bewaar back-ups van werkende scripts voordat u wijzigingen aanbrengt.
Verlihub Lua Scriptbibliotheek
De scriptbibliotheek Verlihub Lua bevat voorbeeldscripts en herbruikbare Lua-code voor hubaanpassing. Gebruik het als referentie voor ondersteunde functies, gebeurtenishooks en opdrachtpatronen.
Bij gebruik van scripts uit de bibliotheek:
- Controleer het script voordat u het installeert.
- Bevestig dat het overeenkomt met uw Verlihub-versie.
- Test het eerst op een niet-productiehub.
- Controleer op hardgecodeerde paden, hubnamen, bijnamen van operators of database-instellingen.
- Bewaar een back-up van het originele script voordat u het gaat bewerken.