Narzędzia użytkownika

Narzędzia witryny


lms_daemon

To jest stara wersja strony!


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

Oto lista rzeczy, które lmsd potrzebuje już na etapie kompilacji:

  • interfejs 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)
  • kompilator języka C (testowany na gcc-2.95.x i nowszych)
  • moduł ggnotify wymaga biblioteki libgadu i jej plików nagłówkowych
  • moduł parser wymaga pakietu bison w wersji 1.875 lub nowszej oraz pakietu flex
  • moduły ewx-* wymagają biblioteki net-snmp i jej plików nagłówkowych.

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-pgsql          gdy korzystasz z bazy PostgreSQL (wyłączone)
  --with-mysql          gdy korzystasz z bazy MySQL (włączone)
  --prefix=PREFIX       docelowy katalog instalacyjny demona i modułów (/usr/local)
  --lmsbindir=DIR       docelowa lokalizacja binarki lmsd (PREFIX/lms/bin)
  --lmslibdir=DIR       docelowa lokalizacja modułów lmsd (PREFIX/lms/lib)
  --libdir=DIR          lokalizacja bibliotek bazy danych (/usr/lib)
  --incdir=DIR          lokalizacja plików nagłówkowych bazy danych (/usr/include)
  --inifile=FILE        plik konfiguracyjny - wyłącza konfigurację przez UI

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). Możliwe jest zmuszenie demona do korzystania z plików konfiguracyjnych zamiast bazy danych. Nie jest możliwe używanie obu sposobów przechowywania konfiguracji, dlatego należy o tym zdecydować przed kompilacją.

# ./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

Skompilowane moduły (pliki z rozszerzeniem .so), znajdujące się w katalogu modules/nazwa_modułu zostają umieszczone w katalogu PREFIX/lms/lib, a główny program (lmsd) w katalogu PREFIX/lms/bin.

6.1.3. Konfiguracja

Całą konfigurację demona i modułów przeprowadza się przy pomocy LMS-UI w menu Konfiguracja → Demon. 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:

--dbhost -h host[:port]    host na którym zainstalowana jest baza danych (domyślnie: 'localhost')
--dbname -d nazwa_bazy     nazwa bazy danych (domyślnie: 'lms')
--dbuser -u użytkownik     nazwa użytkownika bazy danych (domyślnie: 'lms')
--dbpass -p hasło          hasło do bazy danych (domyślnie: puste)
--hostname -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
--pidfile -P pid_file      pidfile where daemon write pid (default: none)
--ssl -s                   wymusza bezpieczne połączenie z bazą danych (domyślnie: wyłączone)
--command -c polecenie     polecenie powłoki do wykonania przed każdym połączeniem z bazą 
                           tzn. co minutę (domyślnie: puste)
--instance -i "instancja[ ...]" lista instancji (modułów) do przeładowania. Wszystkie pozostałe 
                           zostaną pominięte
--reload -q                wykonuje przeładowanie i kończy pracę
--reload-all -r            wykonuje przeładowanie wszystkich instancji (także tych, które mają
                           zdefiniowany crontab) i kończy pracę
--foreground -f            działa na pierwszym planie (nie forkuje się) 
--version -v               wyświetla wersję i prawa licencyjne

Opcje dostępu do bazy są także odczytywane ze zmiennych powłoki: LMSDBPASS, LMSDBNAME, LMSDBUSER, LMSDBHOST, LMSDBPORT.

Lista instancji składa się z nazw instancji oddzielonych spacją. W nazwach instancji zawierających spacje należy zamienić je na znaki '\s', np. lmsd -i „moja\sinstancja”.

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 Opis Przykład
Nazwa Nazwa instancji unikalna w obrębie jednego hosta. system
Priorytet Liczba określająca priorytet, czyli kolejność wykonania instancji. Instancja o najniższym numerze zostanie wykonana jako pierwsza. 10
Moduł Nazwa pliku modułu (z rozszerzeniem lub bez). Jeśli nie podano ścieżki demon będzie szukał modułu w katalogu PREFIX/lms/lib, do którego trafiają moduły podczas „make install”. /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.

6.2. Moduły

Nazwa Opis
system Wywoływanie poleceń powłoki
parser Parser uniwersalnych skryptów T-Script
dhcp Konfiguracja serwera dhcpd
cutoff Odłączanie klientów z zaległościami w opłatach
dns Konfiguracja serwera dns
ethers Tworzenie pliku /etc/ethers
hostfile Moduł uniwersalny (np. tworzenie reguł iptables)
notify Powiadamianie klientów o zaległościach w opłatach pocztą elektroniczną
ggnotify Powiadamianie klientów o zaległościach w opłatach przez gadu-gadu
payments Naliczanie opłat abonamentowych
oident Konfiguracja oident
tc Tworzenie reguł TC
tc-new Tworzenie reguł TC (powiązania komputerów z taryfami)
traffic Statystyki wykorzystania łącza
pinger Badanie aktywności klientów
ewx-pt Konfiguracja EtherWerX PPPoE Terminatora
ewx-stm Konfiguracja EtherWerX Standalone Traffic Managera
ewx-stm-channels Konfiguracja EtherWerX Standalone Traffic Managera (ze rozszerzoną obsługą kanałów)
lms_daemon.1358192646.txt.gz · ostatnio zmienione: 2013/01/14 00:00 (edycja zewnętrzna)