Rozdział 6. A.L.E.C's 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.

Dlaczego taka nazwa? Większość kodu demona napisał jeden z developerów - Aleksander 'A.L.E.C' Machniak, niemniej należy także podkreślić udział Marcina 'Lexx' Króla. Program zawiera fragmenty kodu autorstwa Mateusza 'mteg' Golicza oraz korzysta z biblioteki iniparser Nicolasa Devillarda. Jeśli Ty masz ochotę napisać jakiś moduł lub poprawić funkcjonalność demona jak najbardziej do tego zachęcam.

6.1.1. Wymagania

A.L.E.C's 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ł w pliku konfiguracyjnym.

6.1.3. Konfiguracja

Przykładowy konfig demona i modułów zawarto w pliku lms.ini.sample. Poniższy listing przedstawia podstawowe opcje dla demona (konfigurację modułów omówiono w osobnych rozdziałach ich dotyczących):

[database]
host            = localhost     # nazwa lub ip hosta, domyślnie: localhost
user            = lms           # nazwa użytkownika, domyślnie: lms
password        = mypasswd      # hasło do bazy, domyślnie: puste
database        = lms           # nazwa bazy, domyślnie: lms
port            = 0             # numer portu, domyślnie: 0

[lmsd]
sleeptime       = 30            # określa odstęp czasu (w sekundach) jak często ma
                                # być sprawdzane żądanie reloadu, domyślnie: 30
instances       = hosts oident firewall       # lista instancji modułów
command         = 'echo "łączę się z bazą"'   # polecenie wykonywane przed każdym połączeniem z bazą	
Notatka

Lista instancji składa się z nazw instancji oddzielonych spacją. Instancja to nazwa sekcji w pliku konfiguracyjnym.

W sekcji dotyczącej instancji, oprócz parametrów konfiguracji modułów, umieszcza się opcje podstawowe, jak na poniższym listingu:

[nazwa_instancji]
module = /ścieżka/nazwa_modułu.so
info = "Opcjonalny opis modułu"

Zmiana opcji 'instances' oraz dowolnej opcji w sekcjach instancji, w odróżnieniu od pozostałych opcji globalnych, nie wymaga restartu demona.

6.1.4. Uruchomienie

Program możesz uruchamiać jako demona pracującego w tle (opcja '-b'). Wtedy przeładowanie konfiguracji i usług jest dokonywane na żądanie, przy użyciu menu 'Przeładowanie' w LMS-UI. Opcja 'sleeptime' (-s) określa okres między odczytami bazy. Gdy demon wykryje żądanie wykonania reloadu, wywoła moduły określone opcją 'instances' z lms.ini. Na przykład:

# almsd -b

Innym sposobem uruchomienia jest jednorazowy reload w wykorzystaniem crona. Z tego sposobu należy korzystać uruchamiając moduły takie jak 'payments' 'notify', 'traffic', czy 'pinger'. W tym wypadku możesz określić listę instancji do wykonania za pomocą opcji '-i'. Przykładowy wpis do crontab'a wygląda następująco:

  1 0 * * *    /usr/local/bin/almsd -qi "payments notify"

Poniższy listing przedstawia dostępne opcje linii poleceń programu:

  -c	ścieżka do pliku konfiguracyjnego (domyślnie: /etc/lms/lms.ini)
  -i	lista instancji (oddzielonych spacją) do przeładowania
  -b	uruchomienie w tle
  -s	czas w sek. między odczytami tabeli 'reload' (domyślnie: 30)
  -q 	wykonaj reload i zakończ
  -h 	wyświetla opcje linii poleceń