Rozdział 6. LMS Daemon

Spis treści
6.1. Informacje podstawowe
6.1.1. Wymagania
6.1.2. Instalacja
6.1.3. Konfiguracja
6.1.4. Uruchomienie
6.2. Moduły
6.2.1. Lista dostępnych modułów
6.2.2. System
6.2.3. Payments
6.2.4. Notify
6.2.5. Ggnotify
6.2.6. Cutoff
6.2.7. Dhcp
6.2.8. Hostfile
6.2.9. Traffic
6.2.10. Tc (HTB)
6.2.11. Dns
6.2.12. Ethers
6.2.13. Oident
6.2.14. Pinger

6.1. Informacje podstawowe

Napisany w języku C program ma ułatwiać zarządzanie usługami. Sam demon odpowiada za uruchamianie odpowiednich modułów na żądanie użytkownika. Moduły natomiast, służą do tworzenia plików konfiguracyjnych na podstawie danych z bazy LMS'a oraz restartowania odpowiednich usług na serwerze. Spełniają także inne funkcje np. zbieranie statystyk, badanie aktywności hostów, naliczanie opłat, powiadamianie o zaległościach.

6.1.1. Wymagania

LMS Daemon potrzebuje:

  • instalacji interfejsu użytkownika LMS-UI

  • libmysqlclient (tj. pełnej instalacji MySQL'a lub odpowiedniego pakietu) lub libpq w przypadku bazy PostgreSQL

  • libdl (to w każdej dzisiejszej dystrybucji jest)

  • kompilatora języka C

6.1.2. Instalacja

Przed kompilacją należy przy pomocy skryptu ./configure ustalić opcje przedstawione na poniższym listingu (w nawiasach podano wartości domyślne opcji):

  --help                pomoc
  --enable-debug0       logowanie zapytań SQL (wyłączone)
  --enable-debug1       logowanie zdarzeń (wyłączone)
  --with-sqlite         gdy korzystasz z bazy SQLite (wyłączone)
  --with-pgsql          gdy korzystasz z bazy PostgreSQL (wyłączone)
  --with-mysql          gdy korzystasz z bazy MySQL (włączone)
  --prefix=DIR          katalog instalacyjny demona (/usr/local/bin)
  --libdir=DIR          lokalizacja bibliotek bazy danych (/usr/lib)
  --incdir=DIR          lokalizacja plików nagłówkowych bazy danych (/usr/include)
Zatem wymagane jest określenie bazy z jakiej będziemy korzystać (-with-mysql lub -with-pgsql) oraz położenia bibliotek dostarczanych wraz z bazą (--incdir, --libdir).
# ./configure --with-pgsql --libdir=/usr/local/pgsql/lib --incdir=/usr/local/pgsql/include
Następnie kompilacja i instalacja (umieszczenie demona w katalogu określonym zmienną --prefix):
# make && make install
Na koniec skompilowane moduły (pliki z rozszerzeniem .so), znajdujące się w katalogu modules/nazwa_modułu przenieś do dowolnego katalogu. Ich lokalizację będziesz określał podczas konfiguracji.

6.1.3. Konfiguracja

Całą konfigurację demona i modułów przeprowadza się przy pomocy LMS-UI w menu Przeładowanie -> Konfiguracja. Konfigurację modułów omówiono w osobnych rozdziałach ich dotyczących. Podstawowe parametry pracy demona i dane do połączenia z bazą danych podaje się jako opcje linii komend, zgodnie z poniższym listingiem:

-h host[:port]    host na którym zainstalowana jest baza danych (domyślnie: 'localhost')
-d nazwa_bazy     nazwa bazy danych (domyślnie: 'lms')
-u użytkownik     nazwa użytkownika bazy danych (domyślnie: 'lms')
-p hasło          hasło do bazy danych (domyślnie: puste)
-H nazwa_hosta    host, na którym działa demon. Domyślnie przyjmowana jest nazwa
                  zwracana przez komendę hostname, ale można ją nadpisać. Nazwa
                  ta musi zgadzać się z nazwą hosta podaną w konfiguracji hostów
-c polecenie      polecenie powłoki do wykonania przed każdym połączeniem z bazą 
                  tzn. co minutę (domyślnie: puste)
-q                wykonuje przeładowanie i kończy pracę
-v                wyświetla wersję i prawa licencyjne
-i "instancja[ ...]" lista instancji (modułów) do przeładowania. Wszystkie pozostałe 
                  zostaną pominięte
Opcje dostępu do bazy są także odczytywane ze zmiennych powłoki: LMSDBPASS, LMSDBNAME, LMSDBUSER, LMSDBHOST, LMSDBPORT.
Notatka

Lista instancji składa się z nazw instancji oddzielonych spacją.

Konfiguracja demona jest podzielona na hosty (umożliwiając osobne konfigurowanie i przeładowywanie demonów zainstalowanych na różnych komputerach/routerach) oraz sekcje konfiguracyjne nazwane instancjami.

Instancja oprócz parametrów konfiguracyjnych wybranego modułu zawiera opcje podstawowe, takie jak:

  • Nazwa

    Nazwa instancji unikalna w obrębie jednego hosta.

    Przykład: system

  • Priorytet

    Liczba określająca priorytet, czyli kolejność wykonania instancji. Instancja o najniższym numerze zostanie wykonana jako pierwsza.

    Przykład: 10

  • Moduł

    Nazwa i ścieżka do pliku modułu. Moduły po instalacji demona znajdują się w katalogu daemon/modules/.

    Przykład: /usr/lib/system.so

  • Crontab

    Czas wykonania modułu określany w sposób podobny do używanego w programie crontab. Wszystkie dane muszą być numeryczne. Podany przykład spowoduje wykonywanie wybranej instancji co 5 minut, w godzinach od 8 do 18. Gdy opcja ta jest pusta instancja zostanie wykonana wyłącznie podczas przeładowania. Domyślnie: pusta.

    Przykład: */5 8-18 * * *

Jakakolwiek zmiana w konfiguracji nie wymaga restartu demona.

6.1.4. Uruchomienie

Program domyślnie działa w trybie demona. Wtedy przeładowanie konfiguracji i usług jest dokonywane na żądanie, przy użyciu menu 'Przeładowanie' w LMS-UI. Sprawdzenie żądania przeładowania oraz odczyt konfiguracji (w szczególności listy instancji i ich konfiguracji) następuje co minutę. Gdy demon wykryje żądanie wykonania reloadu, wywoła wszystkie włączone instancje. Instancje z podaną opcją 'crontab' zostaną wykonane o określonym tą opcją czasie.

Innym sposobem uruchomienia jest jednorazowy reload z wykorzystaniem opcji -q. Ten sposób najczęściej używany jest w celach testowych, a w połączeniu z opcją -i pozwala na wykonanie dowolnych instancji z pominięciem pozostałych zapisanych w bazie oraz bez względu na wartość opcji 'crontab' tych instancji.