Verlihub może załadować skrypty Lua poprzez wtyczkę Lua. Użyj Lua, gdy koncentrator wymaga niewielkiej zmiany zachowania bez ponownej kompilacji serwera Verlihub.
Typowe zastosowania obejmują boty wyświetlające, zaplanowane ogłoszenia, polecenia pomocnicze, reguły sprawdzania poprawności, pomocników automatycznej moderacji, statystyki centrum i punkty zaczepienia integracji. Obsługa Lua zależy od zainstalowanej, zbudowanej i włączonej wtyczki.
Co robi wtyczka Lua
Wtyczka Lua wykonuje skrypty Lua w procesie centrum. Daje to administratorom łatwiejszą ścieżkę dostosowywania centrum niż edytowanie źródła C++ Verlihub lub pisanie skompilowanej wtyczki.
Skrypty Lua są zwykle łatwiejsze do przeglądania i zastępowania niż skompilowane wtyczki, gdy zmiana jest niewielka i specyficzna dla koncentratora.
- Niestandardowe polecenia centrum
- Automatyczne wiadomości powitalne
- Ogłoszenia terminowe
- Sprawdzanie poprawności użytkownika
- Odpowiedzi botów
- Polecenia pomocnika operatora
- Haki do rejestrowania lub powiadamiania
- Proste kontrole antyspamowe i przeciwpowodziowe
- Zachowanie specyficzne dla centrum, które nie uzasadnia wtyczki C++
Wymagania
Przed włączeniem obsługi Lua upewnij się, że na serwerze istnieje wtyczka Lua. Typową ścieżką wtyczki jest /usr/local/lib/liblua_pi.so.
Sprawdź, czy plik wtyczki istnieje:
ls -lah /usr/local/lib/liblua_pi.so
Jeśli plik nie istnieje, prawdopodobnie plik Lua nie został zbudowany lub zainstalowany. Odbuduj Verlihub z włączoną obsługą wtyczki Lua.
W zależności od systemu i metody instalacji wtyczka może również zostać zainstalowana /usr/lib, /usr/lib64, /usr/local/lib, Lub /usr/local/lib64. Wyszukaj go przed zmianą konfiguracji koncentratora:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Budynek Verlihub Ze wsparciem Lua
Jeśli podczas instalacji nie uwzględniono obsługi Lua, najpierw zainstaluj pakiet programistyczny Lua. W Debianie lub Ubuntu:
sudo apt update
sudo apt install lua5.4 liblua5.4-dev
Niektóre kompilacje Verlihub używają Lua 5.3 zamiast Lua 5.4. Zainstaluj pasujący pakiet, jeśli wymaga tego Twoja gałąź lub dystrybucja:
sudo apt install lua5.3 liblua5.3-dev
Następnie odbuduj Verlihub z włączoną wtyczką Lua poprzez CMake:
cmake .. -DWITH_LUA=ON
make
sudo make install
Dokładna nazwa opcji CMake może się różnić w zależności od wersji Verlihub. Przed przebudowaniem centrum produkcyjnego sprawdź dostępne opcje kompilacji:
cmake -LAH ..
Po instalacji potwierdź, że biblioteka wtyczek została zainstalowana:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
Polecenia wtyczki
Wtyczką Lua zarządza się za pomocą poleceń wtyczki Verlihub z konta operatora.
- Lista zainstalowanych lub znanych wtyczek z
!lstplug. - Zarejestruj wtyczkę Lua za pomocą
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.. - Oznacz wtyczkę Lua aktywną za pomocą
!modplug lua -a 1. - Załaduj wtyczkę za pomocą
!onplug lua. - Potwierdź załadowane wtyczki za pomocą
!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
Wyjaśnienie polecenia
!lstplug
Wyświetla listę wtyczek znanych dla Verlihub. Użyj jej najpierw, aby sprawdzić, czy wtyczka Lua jest już zarejestrowana.
!lstplug
!addplug
Rejestruje wtyczkę Lua z numerem Verlihub.
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
Znaczenie opcji:
lua: Wewnętrzna nazwa wtyczki.-p /usr/local/lib/liblua_pi.so: Ścieżka do udostępnionej biblioteki wtyczki Lua.-a 1: Oznacza wtyczkę jako aktywną.-d Support for Lua scripts.: Czytelny dla człowieka opis wtyczki.
!modplug
Modyfikuje rekord wtyczki i upewnia się, że wtyczka Lua jest oznaczona jako aktywna.
!modplug lua -a 1
!onplug
Ładuje lub uruchamia wtyczkę Lua po jej dodaniu i włączeniu.
!onplug lua
!pluglist
Pokazuje aktualnie załadowane wtyczki. Użyj go, aby potwierdzić, że Lua jest aktywny.
!pluglist
Zalecane Lua Lokalizacja skryptu
Przechowuj skrypty Lua w dedykowanym katalogu należącym do użytkownika serwisu 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
Jeśli Twoja usługa Verlihub działa jako inny użytkownik, zamień verlihub:verlihub z właściwym użytkownikiem i grupą.
sudo chown -R vh:vh /usr/local/etc/verlihub/lua
sudo chown -R www-data:www-data /usr/local/etc/verlihub/lua
Nie udostępniaj katalogów skryptów Lua do zapisu na całym świecie. Unikać chmod 777 /usr/local/etc/verlihub/lua.
Przykład Lua Skrypt
Utwórz mały skrypt testowy:
sudo nano /usr/local/etc/verlihub/lua/test.lua
Przykładowa treść:
-- 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
Dostępne funkcje Lua zależą od API wtyczki Verlihub Lua. Niektóre instalacje udostępniają obiekty pomocnicze lub funkcje w inny sposób, więc porównaj przykłady z biblioteką skryptów Lua używaną w Twojej wersji Verlihub.
Ładowanie Lua Skrypty
Po aktywowaniu wtyczki Lua, skrypty można zwykle ładować za pomocą poleceń Lua specyficznych dla wtyczki lub skonfigurowanych katalogów skryptów.
Zacznij od sprawdzenia dostępnych poleceń wtyczki Lua z poziomu koncentratora:
!help lua
!plughelp lua
Jeśli wtyczka obsługuje wyświetlanie, ładowanie, rozładowywanie lub ponowne ładowanie skryptów, możesz zobaczyć polecenia podobne do tych:
!lua
!lslua
!loadlua
!unloadlua
!reloadlua
Nazwy poleceń mogą się różnić w kompilacjach Verlihub i wersjach wtyczek.
Sprawdzanie, czy Lua działa
Sprawdzaj konfigurację etapami. Najpierw potwierdź, że wtyczka jest zarejestrowana, a następnie potwierdź, że jest załadowana:
!lstplug
!pluglist
Następnie sprawdź dzienniki serwera pod kątem komunikatów wtyczki Lua:
journalctl -u verlihub -n 100 --no-pager
Jeśli Verlihub nie jest zarządzany przez systemd, sprawdź zamiast tego skonfigurowany katalog dzienników Verlihub. Typowe lokalizacje obejmują /var/log/verlihub I /usr/local/var/log/verlihub.
Wyszukaj wpisy dziennika powiązane z Lua, gdy dziennik usługi jest duży:
grep -i lua /var/log/verlihub/* 2>/dev/null
Zalecenia produkcyjne
Użyj Lua w przypadku małych niestandardowych zachowań, a nie w przypadku intensywnego przetwarzania. Kod Lua działa w procesie centrum, więc zły skrypt może mieć wpływ na czat, logowanie lub aktualizacje listy użytkowników.
Dobre Lua przypadki użycia:
- Proste polecenia
- Wiadomości centrum
- Kontrole użytkownika
- Lekka automatyzacja
- Małe haczyki integracyjne
Unikaj używania numeru Lua w przypadku:
- Długotrwałe zadania w tle
- Ciężkie zapytania do bazy danych
- Przetwarzanie dużych plików
- Blokowanie połączeń sieciowych
- Pętle obciążające procesor
- Wszystko, co może zamrozić proces centrum
Przetestuj skrypty w centrum przejściowym przed załadowaniem ich do centrum publicznego z połączonymi użytkownikami.
Uwagi dotyczące bezpieczeństwa
Tylko zaufani administratorzy powinni mieć możliwość przesyłania lub modyfikowania skryptów Lua.
Zalecane uprawnienia:
sudo chown -R verlihub:verlihub /usr/local/etc/verlihub/lua
sudo chmod -R u=rwX,g=rX,o= /usr/local/etc/verlihub/lua
Nie zezwalaj niezaufanym użytkownikom na zapisywanie plików Lua. Nie przechowuj sekretów bezpośrednio w skryptach Lua, chyba że uprawnienia do plików są zablokowane.
Zachowaj polecenia zarządzania wtyczkami tylko dla operatora lub tylko dla administratora. Zwykli użytkownicy nie powinni mieć możliwości ładowania, zwalniania ani zastępowania skryptów.
Rozwiązywanie problemów
Nie znaleziono pliku wtyczki
Objawy obejmują Cannot load plugin, No such file, Lub liblua_pi.so not found. Wyszukaj bibliotekę, a następnie zaktualizuj zapisaną ścieżkę wtyczki:
find /usr /usr/local -name 'liblua_pi.so' 2>/dev/null
!modplug lua -p /correct/path/to/liblua_pi.so
Wtyczka Lua nie pojawia się na liście wtyczek
Sprawdź, czy został dodany. Jeśli go brakuje, dodaj go, oznacz jako aktywny i załaduj:
!lstplug
!addplug lua -p /usr/local/lib/liblua_pi.so -a 1 -d Support for Lua scripts.
!modplug lua -a 1
!onplug lua
Wtyczka istnieje, ale nie można jej załadować
Sprawdź zależności bibliotek współdzielonych i poszukaj brakujących bibliotek Lua:
ldd /usr/local/lib/liblua_pi.so
not found
Jeśli brakuje bibliotek Lua, zainstaluj pasujący pakiet wykonawczy Lua.
sudo apt install lua5.4 liblua5.4-0
sudo apt install lua5.3 liblua5.3-0
Skrypt nie działa
Sprawdź ścieżkę skryptu, uprawnienia do plików i logi Verlihub. Sprawdź także, czy wtyczka Lua obsługuje API skryptu używane przez skrypt.
ls -lah /usr/local/etc/verlihub/lua
journalctl -u verlihub -n 100 --no-pager
Hub staje się niestabilny po załadowaniu skryptu
Wyładuj skrypt lub wyłącz wtyczkę Lua. Jeśli koncentrator nie odpowiada, zatrzymaj Verlihub z powłoki i przenieś skrypt z katalogu 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
Sugerowany przepływ pracy administratora
- Potwierdź, że wtyczka Lua istnieje.
- Dodaj wtyczkę za pomocą
!addplug. - Włącz to za pomocą
!modplug. - Zacznij od
!onplug. - Potwierdź za pomocą
!pluglist. - Utwórz dedykowany katalog skryptów Lua.
- Dodaj jeden mały skrypt testowy.
- Sprawdź logi Verlihub.
- Dodawaj skrypty produkcyjne pojedynczo.
- Przed wprowadzeniem zmian należy zachować kopie zapasowe działających skryptów.
Verlihub Lua Biblioteka skryptów
Biblioteka skryptów Verlihub Lua zawiera przykładowe skrypty i kod Lua wielokrotnego użytku umożliwiający dostosowywanie centrum. Użyj go jako odniesienia do obsługiwanych funkcji, punktów zaczepienia zdarzeń i wzorców poleceń.
W przypadku korzystania ze skryptów z biblioteki:
- Przejrzyj skrypt przed jego zainstalowaniem.
- Potwierdź, że pasuje do Twojej wersji Verlihub.
- Najpierw przetestuj go na hubie nieprodukcyjnym.
- Sprawdź zakodowane na stałe ścieżki, nazwy koncentratorów, pseudonimy operatorów lub ustawienia bazy danych.
- Przed edycją zachowaj kopię zapasową oryginalnego skryptu.