6.2. Moduły

Sam demon potrafi tylko uruchamiać moduły i to one odwalają całą robotę. Większość modułów jest przeznaczona do określonego zastosowania, jedynie 'hostfile' można używać do różnych konfigów (usług), np. różnych typów firewalli. Przykłady konfiguracji demona i modułów zawiera plik daemon/lms.ini.sample. Parametry konfiguracyjne modułów umieszcza się w sekcjach instancji je wywołujących.

6.2.1. Lista dostępnych modułów

Tabela 6-1. Lista modułów demona almsd

NazwaOpis
dhcpKonfiguracja serwera dhcpd
cutoffOdłączanie użytkowników z zaległościami w opłatach
dnsKonfiguracja serwera dns
ethersTworzenie pliku /etc/ethers
hostfileModuł uniwersalny (np. tworzenie reguł iptables)
notifyPowiadamianie użytkowników o zaległościach w opłatach pocztą elektroniczną
ggnotifyPowiadamianie użytkowników o zaległościach w opłatach przez gadu-gadu
paymentsNaliczanie opłat abonamentowych
oidentKonfiguracja oident
tcTworzenie reguł HTB
trafficStatystyki wykorzystania łącza

6.2.2. Payments

6.2.2.1. Opis

Moduł nalicza opłaty abonamentowe użytkowników oraz opłaty stałe. Należy go uruchamiać codziennie. Opłaty naliczane na podstawie przypisanych użytkownikowi taryf zapisywane są do bazy wraz z komentarzem określonym zmienną 'comment'. Po naliczeniu opłat tworzone są faktury. Komentarz do opłaty stałej to zlepek składający się z jej nazwy oraz wierzyciela.

6.2.2.2. Konfiguracja

Dla tego modułu są dostępne następujące zmienne kofiguracyjne:

  • comment

    Komentarz do operacji. '%period' zostanie zamienione na daty od-do należnego abonamentu, np. '10.10.2003 - 09.11.2003', a '%tariff' na nazwę odpowiedniej taryfy. Domyślnie: 'Abonament wg taryfy: '%tariff' za okres: %period'.

    Przykład: comment = 'Abonament miesięczny za okres %period'

  • up_payments

    "Naliczanie z góry", czyli czy okres w komentarzu ma być liczony do przodu, czy do tyłu w stosunku do daty naliczenia opłaty. Domyślnie: yes.

    Przykład: up_payments = no

6.2.3. Notify

6.2.3.1. Opis

Moduł 'notify' służy do informowania użytkowników o zaległościach w opłatach za pomocą poczty elektronicznej. Aktualne saldo użytkownika porównywane jest ze zmienną 'limit', jeśli jest niższe - wiadomość zostaje wysłana. Treść wiadomości pobierana jest z przygotowanego szablonu, w którym można stosować następujące zmienne:

  • %saldo - aktualne saldo użytkownika

  • %name - imię użytkownika

  • %lastname - nazwisko/nazwa użytkownika

  • %last_10_in_a_table - wyciąg ostatnich 10 operacji na kocie użytkownika

6.2.3.2. Konfiguracja

Poniżej przedstawiono dostępne opcje konfiguracyjne modułu 'notify':

  • mailtemplate

    Lokalizacja pliku z szablonem wiadomości. Domyślnie: pusty

    Przykład: mailtemplate = modules/notify/sample/mailtemplate

  • file

    Lokalizacja pliku tymczasowego. Domyślnie: /tmp/mail

    Przykład: file = /tmp/mail.txt

  • command

    Polecenie powłoki wysyłające e-maila. '%address' zostanie zastąpione adresem e-mail użytkownika. Domyślnie: 'mail %address -s "Inf. o zaległościach w opłatach" < /tmp/mail'.

    Przykład: command = 'mail %address -s "musisz zapłacić, bo jak nie..." < /tmp/mail.txt'

  • limit

    Wiadomość o zaległościach zostaje wysłana jeśli saldo użytkownika spadnie poniżej kwoty określonej zmienną limit. Domyślnie: 0

    Przykład: limit = -20

  • debug_mail

    Określa adres na który zostaną wysłane wszystkie wiadomości, przydatne podczas testów. Domyślnie: puste.

    Przykład: debug_mail = localhost@moja.net

6.2.4. Ggnotify

6.2.4.1. Opis

Odpowiednik modułu 'notify' służący do wysyłania wiadomości gadu-gadu. Aktualne saldo użytkownika porównywane jest ze zmienną 'limit', jeśli jest niższe - wiadomość zostaje wysłana. Treść wiadomości pobierana jest z przygotowanego szablonu, w którym można stosować zmienne takie jak dla modułu 'notify' (może to być też ten sam szablon).

Moduł wymaga zainstalowanej biblioteki libgadu oraz źródeł programu ekg. Odpowiednie ścieżki do nich należy ustawić w modules/ggnotify/Makefile przed kompilacją modułu.

6.2.4.2. Konfiguracja

Podobnie jak w 'notify' masz do dyspozycji następujące zmienne:

  • ggtemplate

    Lokalizacja pliku z szablonem wiadomości. Domyślnie: pusty.

    Przykład: ggtemplate = modules/ggnotify/sample/mailtemplate

  • uin

    Identyfikator gadu-gadu użytkownika wysyłającego wiadomości. Domyślnie: pusty.

    Przykład: uin = 1234567

  • password

    Hasło dla konta określonego zmienną 'uin'. Domyślnie: puste.

    Przykład: password = "moje_trudne__hasło"

  • limit

    Wiadomość o zaległościach zostaje wysłana jeśli saldo użytkownika spadnie poniżej kwoty określonej zmienną limit. Domyślnie: 0

    Przykład: limit = -20

  • debug_uin

    Jeśli ustawione, na to konto zostaną wysłane wszyskie wiadomości. Domyślnie: puste.

    Przykład: debug_uin = 7654321

6.2.5. Cutoff

6.2.5.1. Opis

Cutoff zmienia na 'odłączony' status komputerów użytkownikom, którzy mają na koncie zaległości większe niż określony limit. Ten moduł nie zajmuje się fizycznym blokowaniem dostępu do sieci. Należy pamiętać aby uruchamiać go przed modułami takimi jak np. 'hostfile'. Ważna jest kolejność instancji na liście w zmiennej 'instances'. Moduł 'cutoff' najlepiej uruchamiać codziennie.

6.2.5.2. Konfiguracja

Moduł 'cutoff' posiada tylko jeden parametr:

  • limit

    Odłączenie następuje jeśli saldo użytkownika spadnie poniżej kwoty określonej tą zmienną. Domyślnie: 0.

    Przykład: limit = -20

6.2.6. Dhcp

6.2.6.1. Opis

Moduł zarządzający serwerem DHCP, tworzy plik konfiguracyjny oraz restartuje usługę. Zmienna 'command' umożliwia również wykonywanie innych czynności (programów).

6.2.6.2. Konfiguracja

Większość parametrów konfiguracyjnych odpowiada fragmentom pliku konfiguracyjnego dhcpd, które w typowych zastosowaniach nie wymagają zmiany:

  • file

    Określa lokalizację pliku konfiguracyjnego serwera dhcp. Domyślnie: /tmp/dhcpd.conf.

    Przykład: file = /etc/dhcpd.conf

  • command

    Polecenie wykonywane po utworzeniu pliku konfiguracyjnego. Domyślnie: pusta.

    Przykład: command = 'killall -HUP dhcpd'

  • begin

    Nagłówek pliku. Domyślnie: "shared-network LMS {".

    Przykład: begin = "shared-network LMS {"

  • end

    Stopka pliku. Domyślnie: "}".

    Przykład: end = "\n}"

  • subnet_start

    Nagłówek podsieci. '%a' - nazwa, '%m' - maska. Domyślnie: "subnet %a netmask %m {\ndefault-lease-time 86400;\nmax-lease-time 86400;".

    Przykład: subnet_start = "subnet %a netmask %m {default-lease-time 3600;"

  • subnet_end

    Stopka podsieci. Domyślnie: "}".

    Przykład: subnet_end = '\t}'

  • subnet_gateway

    Brama podsieci. '%i' zostanie zamienione na adres ip. Domyślnie: 'option routers %i;'.

    Przykład: subnet_gateway = "option routers %i"

  • subnet_dns

    DNS'y podsieci. '%i - adresy dns'ów. Domyślnie: "option domain-name-servers %i;".

    Przykład: subnet_dns = "option domain-name-servers 192.168.0.1"

  • subnet_domain

    Nazwa domenowa podsieci. '%n' - nazwa. Domyślnie: "option domain-name %n;".

    Przykład: subnet_domain = "option domain-name test.%n;"

  • subnet_wins

    Serwery wins. '%i' - adres ip serwera. Domyślnie: "option netbios-name-servers %i;".

    Przykład: subnet_wins = ""

  • subnet_range

    Zakres adresów podsieci. '%s' - adres początkowy, '%e' - koniec zakresu. Domyślnie: "range %s %e;".

    Przykład: subnet_range = "range %s %e;"

  • host

    Parametry hostów, gdzie '%n' - nazwa hosta, '%m' - MAC, '%i' - adres ip. Domyślnie: "\thost %n {\n\t\thardware ethernet %m; fixed-address %i; \n\t}".

    Przykład: host = "host %n {hardware ethernet %m; fixed-address %i;}"

6.2.7. Hostfile

6.2.7.1. Opis

Moduł 'hostfile' jest dość uniwersalnym narzędziem. Ponieważ wykonuje pętlę po wszystkich komputerach w bazie rozróżniając ich status (odłączony/podłączony), dlatego możliwe jest tworzenie np. reguł dowolnego firewalla, czy też pliku /etc/hosts. Dane zapisuje do pliku i następnie wykonuje określone polecenie powłoki.

6.2.7.2. Konfiguracja

W opcjach 'grantedhost' i 'deniedhost' można stosować specjalne zmienne, które podczas zapisu do pliku zostaną zastąpione '%i' - adresem ip, '%m' - mac adresem, '%n' - nazwą komputera. Poniżej opcje udostępniane przez ten moduł

  • file

    Lokalizacja pliku tymczasowego. Domyślnie: /tmp/hostfile

    Przykład: file = /etc/rc.d/rc.firewall

  • command

    Polecenie powłoki wyk. po utworzeniu pliku 'file'. Domyślnie: puste

    Przykład: command = '/bin/sh /etc/rc.d/rc.firewall'

  • begin

    Nagłówek pliku tymczasowego. Domyślnie: "/usr/sbin/iptables -F FORWARD\n"

    Przykład: begin = "IPT=/usr/sbin/iptables \n$IPT -F FORWARD\n"

  • end

    Stopka pliku tymczasowego. Domyślnie: "/usr/sbin/iptables -A FORWARD -J REJECT\n"

    Przykład: end = "$IPT -A FORWARD -J REJECT\n"

  • grantedhost

    Tekst dla hosta podłączonego. Domyślnie: "/usr/sbin/iptables -A FORWARD -s %i -m mac --mac-source %m -j ACCEPT\n"

    Przykład: grantedhost = "$IPT -A FORWARD -s %i -m mac --mac-source %m -j ACCEPT\n"

  • deniedhost

    Tekst dla hosta odłączonego. Domyślnie: "/usr/sbin/iptables -A FORWARD -s %i -m mac --mac-source %m -j REJECT\n"

    Przykład: deniedhost = "$IPT -A FORWARD -s %i -m mac --mac-source %m -j REJECT\n"

6.2.8. Traffic

6.2.8.1. Opis

'Traffic' to odpowiednik perlowego lms-traffic, zapisujący do bazy statystyki wykorzystania łącza z pliku utworzonego przez użytkownika. Plik taki powinien mieć format: ip_hosta upload download . Więcej informacji (w tym jak utworzyć taki plik) można znaleźć w rozdziale dotyczącym lms-traffic.

6.2.8.2. Konfiguracja

Jedyny dostępny parametr jest jednocześnie obowiązkowy:

  • file

    Lokalizacja pliku ze statystykami firewalla. Domyślnie: /var/log/traffic.log

    Przykład: file = /tmp/log

6.2.9. Tc (HTB)

6.2.9.1. Opis

Do pliku określonego opcją 'file' zapisywane są dane dotyczące uploadu i downloadu dla komputerów określonego w taryfach, w formacie: upload, download, numer_ip_hosta_lub_ich_lista.

Tak przygotowany plik można wykorzystać w skrypcie tworzącym reguły htb. Przykładowy skrypt htb.sh zamieszczono w katalogu modules/tc/sample. Opcja 'command' jest odpowiedzialna za uruchomienie takiego skryptu.

6.2.9.2. Konfiguracja

Ten moduł zawiera standardowe parametry:

  • file

    Lokalizacja pliku tymczasowego. Domyślnie: /tmp/tc.dat.

    Przykład: file = /tmp/htb.data

  • command

    Polecenie powłoki wykonywane po utworzeniu pliku. Domyślnie: "/bin/sh sample/htb.sh < /tmp/tc.dat".

    Przykład: command = "/bin/bash modules/tc/sample/htb.sh < /tmp/tc.dat"

6.2.10. Dns

6.2.10.1. Opis

Moduł do konfiguracji stref serwera 'named' jest jednym z bardziej skomplikowanych. Tworzy dla każdej sieci pliki stref oraz odpowiednie wpisy w named.conf w oparciu o szablony tych plików. Przykładowe szablony znajdują się w katalogu /modules/dns/sample.

6.2.10.2. Konfiguracja

  • forward-patterns

    Katalog z szablonami stref. Domyślnie: forward.

    Przykład: forward-patterns = /dns/patterns/forward

  • reverse-patterns

    Katalog z szablonami stref odwrotnych. Domyślnie: reverse.

    Przykład: reverse-patterns = /dns/patterns/revers

  • generic-forward

    Szablon domyślny. Zostanie wykorzystany jeśli w katalogu okreslonym 'forward-patterns' nie będzie pliku odpowiadającego nazwie domenowej sieci. Domyślnie: modules/dns/sample/forward/generic.

    Przykład: generic-forward = /dns/patterns/forward

  • generic-reverse

    Szablon domyślny. Zostanie wykorzystany jeśli w katalogu określonym 'reverse-patterns' nie będzie pliku odpowiadającego numerowi IP sieci. Domyślnie: modules/dns/sample/reverse/generic.

    Przykład: generic-reverse = /dns/patterns/forward

  • forward-zones

    Katalog na pliki wynikowe stref. Domyślnie: modules/dns/sample/out/forward.

    Przykład: forward-zones = /dns/forward

  • reverse-zones

    Katalog na pliki wynikowe stref odwrotnych. Domyślnie: modules/dns/sample/out/reverse.

    Przykład: reverse-zones = /dns/reverse

  • host-reverse

    Linia w pliku strefy odw. odpowiadająca każdemu komputerowi w dane sieci. Domyślnie: "%n IN A %i\n".

    Przykład: host-reverse = "\t %n IN A %i\n"

  • host-forward

    Linia w pliku strefy odpowiadająca każdemu komputerowi w danej sieci. Domyślnie: "%c IN PTR %n.%d.\n".

    Przykład: host-forward = "\t %c IN PTR %n.%d.\n"

  • conf-pattern

    Lokalizacja szablonu głównego pliku konfiguracyjnego serwera. Domyślnie: modules/dns/sample/named.conf.

    Przykład: conf-pattern = /dns/patterns/named.conf

  • conf-output

    Lokalizacja głównego pliku konfiguracyjnego serwera. Domyślnie: /tmp/named.conf.

    Przykład: conf-output = /etc/named.conf

  • conf-forward-entry

    Wpis dla każdej strefy w głównym pliku konfiguracyjnym. Domyślnie: 'zone "%n" {\ntype master;\n file "forward/%n"; \nnotify yes; \n}; \n'.

    Przykład: conf-forward-entry = 'zone "%n" { \n\ttype master; \n\tfile "forward/%n"; \n\tnotify yes; \n}; \n'

  • conf-reverse-entry

    Wpis dla każdej strefy odw. w głównym pliku konfiguracyjnym. Domyślnie: 'zone "%c.in-addr.arpa" { \ntype master; \nfile "reverse/%i"; \nnotify yes; \n}; \n'.

    Przykład: conf-revers-entry = 'zone "%c.in-addr.arpa" { \n\ttype master; \n\tfile "reverse/%i"; \n\tnotify yes; \n}; \n'

  • command

    Polecenie wykonywane po utworzeniu plików konf. Domyślnie: puste.

    Przykład: command = ""

6.2.11. Ethers

6.2.11.1. Opis

Moduł tworzący konfigurację tablicy ARP systemu. Ustawiając opcję 'dummy_macs' można sprawić, aby komputerom odłączonym został przypisany mac-adres 00:00:00:00:00:00.

6.2.11.2. Konfiguracja

Tutaj są tylko standardowe opcje:

  • file

    Lokalizacja pliku wynikowego. Domyślnie: /tmp/ethers.

    Przykład: file = /etc/ethers

  • command

    Polecenie powłoki wykonywane po wygenerowaniu konfiga. Domyślnie: puste.

    Przykład: command = "arp -f /etc/ethers"

  • dummy_macs

    Jeśli ustawimy na 'yes', to komputerom odłączonym zostanie przypisany mac-adres '00:00:00:00:00:00'. Domyślnie: "no".

    Przykład: dummy_macs = yes

6.2.12. Oident

6.2.12.1. Opis

Moduł do konfiguracji oidend. W zasadzie można to zrobić modułem 'hostfile', ale w 'oident' masz możliwość określenia dla których sieci ma być tworzony konfig.

6.2.12.2. Konfiguracja

A oto parametry modułu 'oident'

  • begin

    Tekst wstawiany na początku pliku. Domyślnie: puste.

    Przykład: begin = "#Generowany utomatycznie\n"

  • end

    Tekst wstawiany na końcu pliku. Domyślnie: puste.

    Przykład: end = ""

  • host

    Linia tekstu dla każdego komputera. Domyślnie: "%i\t%n\tUNIX".

    Przykład: host = "%i %n WINDOWS"

  • file

    Tekst wstawiany na początku pliku. Domyślnie: /tmp/oidentd.conf.

    Przykład: file = /etc/identd.conf

  • networks

    Lista sieci do uwzględnienia. Domyślnie: "192.168.0.0/16 10.0.0.0/8".

    Przykład: networks = 192.168.1.0/24

  • command

    Polecenie do wykonania po utworzeniu pliku. Domyslnie: puste.

    Przykład: command = "killall -HUP midentd"