LMS - LAN Management System 1.11-git
Poprzedni | Rozdział 6. LMS Daemon | Następny

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

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)

## 6.2.2. System

### 6.2.2.1. Opis

Jedyne co robi ten moduł to wykonanie zadanego polecenia (listy poleceń) powłoki i/lub komendy SQL. Może się przydać gdy chcesz podczas przeładowania konfiguracji wykonać jakąś komendę lub uruchomić zewnętrzny skrypt, na przykład jeden z tych, które możesz znaleźć w katalogu `/bin`. W pierwszej kolejności jest wykonywane polecenie SQL.

### 6.2.2.2. Konfiguracja

W związku z powyższym możesz zdefiniować jedynie treść polecenia SQL lub shella. Powłoka powinna sobie także poradzić z listą poleceń oddzielonych średnikami:

- sql

  Polecenie SQL. Domyślnie: puste.

  Przykład: `sql = 'DELETE FROM stats WHERE dt < %NOW% - 365*86400'`

- command

  Polecenie powłoki. Domyślnie: puste.

  Przykład: `command = 'echo -n "tu moduł "; echo "system"'`

## 6.2.3. Payments

### 6.2.3.1. Opis

Moduł nalicza opłaty abonamentowe klientów oraz opłaty stałe. Należy go uruchamiać codziennie. Opłaty naliczane na podstawie przypisanych klientowi 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. Na końcu usuwane są z bazy nieaktualne obciążenia klientów.

### 6.2.3.2. Konfiguracja

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

- comment

  Komentarz do operacji. '%period' zostanie zamienione na daty od-do należnego abonamentu, np. '2003/10/10 - 2003/11/09', '%tariff' na nazwę odpowiedniej taryfy/zobowiązania, %month na pełną nazwę bieżącego miesiąca, %year na bieżący rok, a %next_mon na następny miesiąc w formacie RRRR/MM. Domyślnie: 'Subscription: '%tariff' for period: %period'.

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

- settlement_comment

  Komentarz do operacji wyrównania. '%period' zostanie zamienione na daty od-do okresu wyrównania, np. '2003/10/20 - 2003/11/09', a '%tariff' na nazwę odpowiedniej taryfy. Domyślnie odpowiada opcji `comment`.

  Przykład: `settlement_comment = 'Wyrównanie 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`

- expiry_days

  Określa liczbę dni od daty wygaśnięcia przypisanych klientowi zobowiązań, po której dane tego zobowiązania zostaną usunięte z bazy. Przy ustawieniu na '0' dane zostaną usunięte natychmiast po dacie, do której obowiązywało zobowiązanie. Domyślnie: 30.

  Przykład: `expiry_days = 365`

- deadline

  Termin płatności podany w dniach. Domyślnie: 14.

  Przykład: `deadline = 21`

- paytype

  Rodzaj płatności (1-gotówka, 2-przelew, 3-przelew/gotówka, 4-karta, 5-kompensata, 6-barter, 7-umowa). Domyślnie: 2 (przelew).

  Przykład: `paytype = 1`

- numberplan

  ID planu numeracyjnego faktur. Domyślnie: 0 (plan domyślny).

  Przykład: `numberplan = 0`

- check_invoices

  Włącza automatyczne oznaczanie faktur jako rozliczonych dla klientów z bilansem większym równym zero. Domyślnie: wyłączona.

  Przykład: `check_invoices = 1`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- excluded_networks

  Lista nazw sieci, które mają pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

  Przykład: `excluded_networks = "lan3 lan4"`

- customergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

- excluded_customergroups

  Lista nazw grup klientów, które mają być pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

  Przykład: `excluded_customergroups = "grupa3 grupa4"`

## 6.2.4. Notify

### 6.2.4.1. Opis

Moduł 'notify' służy do informowania klientów o zaległościach w opłatach za pomocą poczty elektronicznej. Aktualne saldo klienta 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 klienta (także %B)

- %b - wartość bezwzględna aktualnego salda klienta

- %pin - PIN klienta

- %name - imię klienta

- %lastname - nazwisko/nazwa klienta

- %last_10_in_a_table - wyciąg ostatnich 10 operacji na kocie klienta

### 6.2.4.2. Konfiguracja

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

- template

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

  Przykład: `template = 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 klienta. Domyślnie: 'mail -s "Liabilities Information" %address < /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 klienta 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.5. Ggnotify

### 6.2.5.1. Opis

Odpowiednik modułu 'notify' służący do wysyłania wiadomości gadu-gadu. Aktualne saldo klienta 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.5.2. Konfiguracja

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

- template

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

  Przykład: `template = 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 klienta 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 wszystkie wiadomości. Domyślnie: puste.

  Przykład: `debug_uin = 7654321`

## 6.2.6. Cutoff

### 6.2.6.1. Opis

Cutoff zmienia status komputerów na 'odłączony' i/lub włącza ostrzeżenia klientom, którzy mają na koncie zaległości większe niż określony limit. Ponadto odłącza komputery klientów, którym wygasły wszystkie zobowiązania lub są one zawieszone. Ten moduł nie zajmuje się fizycznym blokowaniem dostępu do sieci.

### 6.2.6.2. Konfiguracja

Dla modułu 'cutoff' mamy następujące opcje:

- limit

  Odłączenie następuje jeśli saldo klienta spadnie poniżej wartości określonej jako kwota lub wartość procentowa sumy miesięcznych zobowiązań klienta (ze znakiem '%'). Domyślnie: 0.

  Przykład: `limit = -20`

- command

  Określa komendę systemową, która zostanie wywołana jeżeli co najmniej jeden klient zostanie odłączony lub zostanie włączone ostrzeżenie. Domyślnie: nieustawiona.

  Przykład: `command = 'lmsd -qi firewall'`

- warning

  Włącza ostrzeżenie dla odłączanego klienta i przypisuje mu określoną w tej opcji treść. Jeżeli pusta, ostrzeżenie nie będzie włączane. Data w ostrzeżeniu ukryta jest pod zmienną '%time'. Możesz także użyć zmiennych: %B dla rzeczywistego salda klienta oraz %b dla salda bez znaku. Saldo liczone jest w chwili wykonania modułu cutoff, a nie wyświetlenia komunikatu w przeglądarce klienta. Domyślnie: 'Blocked automatically due to payment deadline override at %time".

  Przykład: `warning = ""`

- expired_warning

  Włącza ostrzeżenie dla odłączanego klienta i przypisuje mu określoną w tej opcji treść. Jeżeli pusta, ostrzeżenie nie będzie włączane. Dotyczy klientów, którym wygasły zobowiązania. Data w ostrzeżeniu ukryta jest pod zmienną '%time'. Domyślnie: 'Blocked automatically due to tariff(s) expiration at %time".

  Przykład: `expired_warning = ""`

- warnings_only

  Ta opcja pozwala zdecydować, czy chcemy użyć naszego modułu wyłącznie do włączania ostrzeżeń. Działa tylko w stosunku do klientów, którzy posiadają aktywne zobowiązania. Klienci, którym wygasły zobowiązania, zostaną odłączeni mimo włączenia tej opcji. Domyślnie: wyłączona.

  Przykład: `warnings_only = true`

- setnodegroup_only

  Ta opcja pozwala zdecydować, czy chemy przypisać do wybranej grupy komputery klienta, zamiast zmieniać jego status lub włączać ostrzeżenie. Do grupa o podanej nazwie zostaną przypisane wszystkie komputery klienta, który przekroczył limit zadłużenia, albo posiada nierozliczone faktury (jeśli włączono check_invoices). Domyślnie: pusta.

  Przykład: `setnodegroup_only = ograniczony_dostep`

- use_nodeassignments

  Jeśli stosujesz powiązywanie komputerów z zobowiązaniami powinieneś włączyć tą opcję. W przeciwnym wypadku będą sprawdzane powiązania taryf z klientami. Domyślnie: wyłączona.

  Przykład: `use_nodeassignments = true`

- use_customerassignments

  Jeśli chciałbyś pominąć sprawdzanie zobowiązań klientów powinieneś włączyć tą opcję. Domyślnie: włączona.

  Przykład: `use_customerassignments = false`

- disable_suspended

  Włączenie tej opcji spowoduje odłaczenie także klientów, których wszystkie obowiązujące zobowiązania są zawieszone. Domyślnie: wyłączona.

  Przykład: `disable_suspended = true`

- check_invoices

  Opcja włącza dodatkowe sprawdzenie czy klient posiada nierozliczone faktury z dniem płatności starszym o określoną w opcji 'deadline' ilość dni. Domyślnie: wyłączona.

  Przykład: `check_invoices = true`

- deadline

  Określa okres w dniach (licząc od terminu płatności faktury), po którym nierozliczona faktura jest brana pod uwagę przy zastosowaniu opcji 'check_invoices'. Domyślnie, klient zostanie zablokowany od razu po terminie płatności. Domyślnie: 0.

  Przykład: `deadline = 30`

- customergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

- excluded_customergroups

  Lista nazw grup klientów, które mają być pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

  Przykład: `excluded_customergroups = "grupa3 grupa4"`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- excluded_networks

  Lista nazw sieci, które mają pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

  Przykład: `excluded_networks = "lan3 lan4"`

## 6.2.7. Dhcp

### 6.2.7.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.7.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: /etc/dhcpd.conf.

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

- command

  Polecenie wykonywane po utworzeniu pliku konfiguracyjnego. Domyślnie: 'killall dhcpd; /usr/sbin/dhcpd'.

  Przykład: `command = 'service dhcp restart'`

- begin

  Nagłówek pliku. Domyślnie: pusty.

  Przykład: `begin = "authoritative;"`

- end

  Stopka pliku. Domyślnie: pusty.

  Przykład: `end = ""`

- subnet_start

  Nagłówek podsieci. '%a' - nazwa, '%m' - maska, %b - broadcast. 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;}"`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- customergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

## 6.2.8. Hostfile

### 6.2.8.1. Opis

Moduł 'hostfile' jest dość uniwersalnym narzędziem. Ponieważ wykonuje pętlę po wszystkich komputerach (oraz adresach urządzeń sieciowych) w bazie rozróżniając ich status podłączenia i ostrzeżenia, adresy prywatne i publiczne, a ponadto sieć do której są podłączone oraz grupy do których należą ich właściciele. Dzięki temu 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.8.2. Konfiguracja

W opcjach zawierających reguły hosta można stosować specjalne zmienne, które podczas zapisu do pliku zostaną zastąpione odpowiednimi dla danego komputera danymi:

%i - adres IP,
%ipub - publiczny adres IP,
%id - ID komputera,
%m - adres MAC,
%ms - lista adresów MAC hosta (oddzielonych przecinkiem),
%n - nazwa komputera,
%p - hasło,
%port - nr portu w urządzeniu, do którego jest podłączony komputer,
%info - opis komputera,
%l - lokalizacja komputera,
%devl - lokalizacja urządzenia, do którego podłączony jest komputer,
%domain - domena,
%net - nazwa sieci, do której należy host,
%if - interfejs sieci,
%addr - adres sieci,
%mask - maska sieci,
%prefix - maska sieci w postaci prefixu CIDR,
%gw - adres bramy,
%dns, %dns2 - adresy serwerów DNS,
%dhcps, %dhcpe - początek i koniec zakresu DHCP,
%wins - adres serwera WINS,
%i16 - ostatni oktet adresu IP w formacie szesnastkowym,
%i16pub - ostatni oktet publicznego adresu IP w formacie szesnastkowym.
%domainpub - domena sieci publicznej,
%netpub - nazwa sieci, do której należy adres publiczny,
%ifpub - interfejs sieci publicznej,
%addrpub - adres sieci publicznej,
%maskpub - maska sieci publicznej,
%prefixpub - maska sieci publicznej w postaci prefixu CIDR,
%gwpub - adres bramy w sieci publicznej,
%dnspub, %dns2pub - adresy serwerów DNS w sieci publicznej,
%dhcpspub, %dhcpepub - początek i koniec zakresu DHCP w sieci publicznej,
%winspub - adres serwera WINS w sieci publicznej,
%customer - nazwa klienta,
%cid - ID klienta

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"`

- host_begin

  Nagłówek reguły hosta. Domyślnie: ""

  Przykład: `host_begin = "#%n\n"`

- host_end

  Stopka reguły hosta. Domyślnie: ""

  Przykład: `host_end = "\n"`

- grantedhost

  Reguła 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

  Reguła 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"`

- public_grantedhost

  Reguła dla hosta podłączonego, który posiada adres publiczny. Domyślnie reguła określona opcją 'grantedhost'.

  Przykład: `public_grantedhost = "$IPT -A FORWARD -s %i -m mac --mac-source %m -j ACCEPT\n$IPT -t nat -A PREROUTING -p tcp -d %ipub -j DNAT --to-destination %i\n$IPT -t nat -A POSTROUTING -s %i -j SNAT --to-source %ipub\n"`

- public_deniedhost

  Reguła dla hosta odłączonego, który posiada adres publiczny. Domyślnie reguła określona opcją 'deniedhost'.

  Przykład: `public_deniedhost = ""`

- warnedhost

  Reguła dla hosta z włączonym ostrzeżeniem. Domyślnie reguła określona opcją 'grantedhost'.

  Przykład: `warnedhost = "$IPT -A PREROUTING -s %i --dport 80 -p tcp -j REDIRECT --to-port 82\n"`

- public_warnedhost

  Reguła dla hosta z włączonym ostrzeżeniem, który posiada adres publiczny. Domyślnie reguła określona opcją 'warnedhost'.

  Przykład: `public_warnedhost = ""`

- public_replace

  Określa czy reguły zdefiniowane dla adresów publicznych mają nadpisać reguły główne, czy zostać dopisane do nich. Domyślnie: włączona.

  Przykład: `public_replace = false`

- warn_replace

  Określa czy reguły zdefiniowane dla komputerów z ostrzeżeniem mają nadpisać reguły główne, czy zostać dopisane do nich. Domyślnie: wyłączona.

  Przykład: `warn_replace = true`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- customergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

- nodegroups

  Lista nazw grup komputerów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `nodegroups = "grupa1 grupa2"`

- excluded_networks

  Lista nazw sieci, które nie mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta.

  Przykład: `excluded_networks = "lan1 lan2"`

- excluded_customergroups

  Lista nazw grup klientów, które nie mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta.

  Przykład: `excluded_customergroups = "grupa1 grupa2"`

- excluded_nodegroups

  Lista nazw grup komputerów, które nie mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta.

  Przykład: `excluded_nodegroups = "grupa1 grupa2"`

- skip_dev_ips

  Jeśli ustawiona na tak (yes, true) pominięte zostaną adresy urządzeń sieciowych. Domyślnie: tak

  Przykład: `skip_dev_ips = nie`

- skip_host_ips

  Jeśli ustawiona na tak (yes, true) pominięte zostaną adresy komputerów. Uwaga: włączenie obu opcji 'skip_*_ips' spowoduje ich zignorowanie. Domyślnie: nie

  Przykład: `skip_host_ips = tak`

- multi_mac

  Jeśli ustawiona na tak (yes, true) utworzony zostanie osobny rekord dla każdego adresu MAC. Tzn. jeśli komputer ma przypisanych kilka adresów MAC, będzie utworzone tyle wpisów ile tych adresów. Domyślnie: nie

  Przykład: `multi_mac = tak`

- share_netdev_pubip

  Włączenie tej opcji (yes, true, 1) spowoduje, że wszystkim adresom urządzenia sieciowego, które nie posiadają zdefiniowanego adresu publicznego zostanie przypisany jeden (ten sam) ze zdefiniowanych dla danego urządzenia adresów publicznych. Domyślnie: nie

  Przykład: `share_netdev_pubip = tak`

## 6.2.9. Traffic

### 6.2.9.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.9.2. Konfiguracja

Moduł posiada trzy opcje:

- file

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

  Przykład: `file = /tmp/log`

- begin_command

  Polecenie powłoki wykonywane przed wczytaniem pliku. Domyślnie: puste

  Przykład: `begin_command = 'perl /usr/local/lms/bin/traffic_ipt.pl'`

- end_command

  Polecenie powłoki wykonywane po wczytaniu pliku. Domyślnie: puste

  Przykład: `end_command = 'rm /var/log/traffic.log'`

## 6.2.10. Tc (HTB)

### 6.2.10.1. Opis

Moduł generujący skrypt zawierający polecenia iptables i tc służące do ograniczania przepływności i limitowania połączeń klientom. Regułki dla komputerów można dowolnie zdefiniować i wykorzystać nie tylko do "traffic control". Zasada działania skryptu przedstawia się następująco: Najpierw z bazy pobierane są dane dla wszystkich klientów. Obliczane są sumy ograniczeń (uprate, downrate, upceil, downceil, limity połączeń) dla każdego klienta Następnie wykonywana jest pętla ze sprawdzeniem przynależności do grupy klientów i sieci (jeśli określono). Jeśli wartości ograniczeń są różne od zera następuje zapis reguł do pliku z podmianą zmiennych. W regułkach można stosować następujące zmienne: %name - nazwa hosta, %i - adres IP, %m - MAC, %if - interfejs, %uprate, %downrate, %upceil, %downceil, %plimit, %climit, %o1, %o2, %o3, %o4 - kolejne oktety adresu IP, %h1, %h2, %h3, %h4 - kolejne oktety adresu IP w zapisie szesnastkowym oraz %x - licznik o wartości początkowej 100 zwiększany o jeden dla każdego komputera (lub klienta, w zależności od ustawienia opcji `one_class_per_host`).

Domyślna polityka tworzenia klas htb zakłada utworzenie jednej klasy dla wszystkich komputerów klienta. Może to być zmienione za pomocą opcji 'one_class_per_host'.

Konfiguracja domyślna zakłada, że twój system jest przystosowany do zastosowania htb oraz iptables z modułami limit, connlimit, mark i ipp2p. Możesz sam spatchować jądro lub skorzystać ze źródeł dostępnych na stronie www.inet.one.pl.

### 6.2.10.2. Konfiguracja

Masz do dyspozycji standardowe parametry takie jak customergroups, file, command, networks i dodatkowo opcje definiujące treść regułek tc i firewalla. Domyślna konfiguracja przeznaczona jest dla łącz 512/128 kbit i 100mbit.

- file

  Lokalizacja pliku tymczasowego. Domyślnie: /etc/rc.d/rc.htb.

  Przykład: `file = /tmp/rc.htb`

- command

  Polecenie powłoki wykonywane po utworzeniu pliku. Domyślnie: "sh /etc/rc.d/rc.htb start".

  Przykład: `command = "chmod 700 /tmp/rc.htb; /tmp/rc.htb start"`

- begin

  Nagłówek skryptu. Domyślnie:

      "#!/bin/sh
      IPT=/usr/sbin/iptables
      TC=/sbin/tc
      LAN=eth0
      WAN=eth1
      BURST="burst 30k"

      stop ()
      {
      $IPT -t mangle -D FORWARD -i $WAN -j LIMITS >/dev/null 2>&1
      $IPT -t mangle -D FORWARD -o $WAN -j LIMITS >/dev/null 2>&1
      $IPT -t mangle -F LIMITS >/dev/null 2>&1
      $IPT -t mangle -X LIMITS >/dev/null 2>&1
      $IPT -t mangle -F OUTPUT
      $IPT -t filter -F FORWARD
      $TC qdisc del dev $LAN root 2> /dev/null
      $TC qdisc del dev $WAN root 2> /dev/null
      }

      start ()
      {
      stop
      $IPT -t mangle -N LIMITS
      $IPT -t mangle -I FORWARD -i $WAN -j LIMITS
      $IPT -t mangle -I FORWARD -o $WAN -j LIMITS
      # incomming traffic
      $IPT -t mangle -A OUTPUT -j MARK --set-mark 1
      $TC qdisc add dev $LAN root handle 1:0 htb default 3 r2q 1
      $TC class add dev $LAN parent 1:0 classid 1:1 htb rate 99000kbit ceil 99000kbit quantum 1500
      $TC class add dev $LAN parent 1:1 classid 1:2 htb rate   500kbit ceil   500kbit
      $TC class add dev $LAN parent 1:1 classid 1:3 htb rate 98500kbit ceil 98500kbit prio 9 quantum 1500
      $TC qdisc add dev $LAN parent 1:3 esfq perturb 10 hash dst
      # priorities for ICMP, TOS 0x10 and ports 22 and 53
      $TC class add dev $LAN parent 1:2 classid 1:20 htb rate 50kbit ceil 500kbit $BURST prio 1 quantum 1500
      $TC qdisc add dev $LAN parent 1:20 esfq perturb 10 hash dst
      $TC filter add dev $LAN parent 1:0 protocol ip prio 2 u32 match ip sport 22 0xffff flowid 1:20
      $TC filter add dev $LAN parent 1:0 protocol ip prio 2 u32 match ip sport 53 0xffff flowid 1:20
      $TC filter add dev $LAN parent 1:0 protocol ip prio 1 u32 match ip tos 0x10 0xff flowid 1:20
      $TC filter add dev $LAN parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:20
      # serwer -> LAN
      $TC filter add dev $LAN parent 1:0 protocol ip prio 4 handle 1 fw flowid 1:3

      # outgoing traffic
      $TC qdisc add dev $WAN root handle 2:0 htb default 11 r2q 1
      $TC class add dev $WAN parent 2:0 classid 2:1 htb rate 120kbit ceil 120kbit
      # priorities for ACK, ICMP, TOS 0x10, ports 22 and 53
      $TC class add dev $WAN parent 2:1 classid 2:10 htb rate 60kbit ceil 120kbit prio 1 quantum 1500
      $TC qdisc add dev $WAN parent 2:10 esfq perturb 10 hash dst
      $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip protocol 6 0xff \
      match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 2:10
      $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip dport 22 0xffff flowid 2:10
      $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip dport 53 0xffff flowid 2:10
      $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip tos 0x10 0xff flowid 2:10
      $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 2:10
      # serwer -> Internet
      $TC class add dev $WAN parent 2:1 classid 2:11 htb rate 30kbit ceil 120kbit prio 2 quantum 1500
      $TC qdisc add dev $WAN parent 2:11 esfq perturb 10 hash dst
      $TC filter add dev $WAN parent 2:0 protocol ip prio 3 handle 1 fw flowid 2:11
      $TC filter add dev $WAN parent 2:0 protocol ip prio 9 u32 match ip dst 0/0 flowid 2:11

  Przykład: `begin = "#!/bin/bash\n$TC=/usr/local/sbin/tc\n"`

- end

  Stopka skryptu. Domyślnie:

      }

      case "$1" in
          'start')
      	start
          ;;
          'stop')
      	stop
          ;;
          'status')
      	echo "WAN Interface"
      	echo "============="
      	$TC class show dev $WAN | grep root
      	$TC class show dev $WAN | grep -v root | sort | nl
      	echo "LAN Interface"
      	echo "============="
      	$TC class show dev $LAN | grep root
      	$TC class show dev $LAN | grep -v root | sort | nl
          ;;
          *)
      	echo -e "\nUsage: rc.htb start|stop|status"
          ;;
      esac

  Przykład: `end = ""`

- one_class_per_host

  Określa politykę tworzenia klas htb. W ustawieniu domyślnym wszystkie komputery klienta zostaną wrzucone do jednej klasy. Ustawienie tej opcji na 'true' spowoduje, że reguły określone w host_htb_up i host_htb_down zostaną wygenerowane dla wszystkich komputerów klienta (z inną wartością '%x'). Reguły z host_mark_down, host_mark_up, host_plimit i host_climit generowane są dla każdego komputera niezależnie od ustawień tej zmiennej. Domyślnie: false

  Przykład: `one_class_per_host = 1`

- limit_per_host

  Określa politykę tworzenia limitów połączeń/pakietów dla komputerów. W ustawieniu domyślnym limit połączeń/pakietów jest dzielony przez ilość komputerów klienta. Włączenie tej opcji spowoduje, że reguły określone w host_climit i host_plimit zostaną wygenerowane dla wszystkich komputerów klienta z wartością $climit i %plimit zdefiniowaną w taryfie (nie podzieloną przez ilość komputerów). Domyślnie: false

  Przykład: `limit_per_host = 1`

- host_mark_up

  Reguła markująca dla każdego komputera. Domyślnie:

      # %n
      $IPT -t mangle -A LIMITS -s %i -j MARK --set-mark %x

  Przykład: `host_mark_up = ""`

- host_mark_down

  Reguła markująca dla każdego komputera. Domyślnie:

      $IPT -t mangle -A LIMITS -d %i -j MARK --set-mark %x

  Przykład: `host_mark_down = ""`

- host_htb_down

  Zestaw reguł dla każdego komputera, wykonywanych gdy uprate i downrate są różne od zera. Domyślnie:

      $TC class add dev $LAN parent 1:2 classid 1:%x htb rate %downratekbit ceil %downceilkbit $BURST prio 2 quantum 1500
      $TC qdisc add dev $LAN parent 1:%x esfq perturb 10 hash dst
      $TC filter add dev $LAN parent 1:0 protocol ip prio 5 handle %x fw flowid 1:%x

  Przykład: `host_htb_down = ""`

- host_htb_up

  Zestaw reguł dla każdego komputera, wykonywanych gdy uprate i downrate są różne od zera. Domyślnie:

      $TC class add dev $WAN parent 2:1 classid 2:%x htb rate %upratekbit ceil %upceilkbit $BURST prio 2 quantum 1500
      $TC qdisc add dev $WAN parent 2:%x esfq perturb 10 hash dst
      $TC filter add dev $WAN parent 2:0 protocol ip prio 5 handle %x fw flowid 2:%x

  Przykład: `host_htb_up = ""`

- host_climit

  Regułka z ograniczeniem ilości równoczesnych połączeń tcp. Wykonywana gdy climit w bazie jest różny od zera. Domyślnie:

      $IPT -t filter -I FORWARD -p tcp -s %i -m connlimit --connlimit-above %climit -m ipp2p --ipp2p -j REJECT

  Przykład: `host_climit = "$IPT -t filter -I FORWARD -p tcp -s %i -m connlimit --connlimit-above -j REJECT"`

- host_plimit

  Regułka z ograniczeniem ilości pakietów w jednostce czasu (tutaj sekunda). Wykonywana gdy plimit w bazie jest różny od zera. Domyślnie:

      $IPT -t filter -I FORWARD -p tcp -d %i -m limit --limit %plimit/s -m ipp2p --ipp2p -j ACCEPT
      $IPT -t filter -I FORWARD -p tcp -s %i -m limit --limit %plimit/s -m ipp2p --ipp2p -j ACCEPT

  Przykład: `host_plimit = ""`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- customergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

## 6.2.11. Tc-new (HTB)

### 6.2.11.1. Opis

Moduł generujący skrypt zawierający polecenia iptables i tc służące do ograniczania przepływności i limitowania połączeń klientom. Działa podobnie do modułu 'tc', lecz obsługuje funkcjonalność pozwalającą na powiązywanie taryf z komputerami. Skrypt tworzy tzw. kanały dla komputerów klienta przypisanych do tej samej taryfy. Przykładowo: dla klienta z dwoma komputerami przypisanymi do tej samej taryfy zostaną utworzone dwie klasy (upload i download) oraz po dwa filtry dla każdego komputera. W przypadku gdy klient ma dwie taryfy i do każdej po jednym komputerze powstaną po dwie klasy dla każdej taryfy i odpowiednia ilość filtrów. Wartość początkowa liczników (%x i %h w regułach) wynosi 100.

### 6.2.11.2. Konfiguracja

Wartości domyślne niektórych opcją są zgodne z modułem tc.

- file

  Lokalizacja pliku wynikowego. Domyślnie: /etc/rc.d/rc.htb.

  Przykład: `file = /tmp/rc.htb`

- command

  Polecenie powłoki wykonywane po utworzeniu pliku. Domyślnie: "sh /etc/rc.d/rc.htb start".

  Przykład: `command = "chmod 700 /tmp/rc.htb; /tmp/rc.htb start"`

- begin

  Nagłówek skryptu. Domyślnie: jak w module tc

  Przykład: `begin = "#!/bin/bash\n$TC=/usr/local/sbin/tc\n"`

- end

  Stopka skryptu. Domyślnie: jak w module tc

  Przykład: `end = ""`

- class_up

  Definicja klasy dla uploadu, w której możemy użyć następujących zmiennych: %cid - ID klienta, %cname - nazwa klienta, %h - numer uchwytu klasy %uprate, %upceil. Domyślnie:

      # %cname (ID:%cid)
      $TC class add dev $WAN parent 2:1 classid 2:%h htb rate %upratekbit ceil %upceilkbit $BURST prio 2 quantum 1500
      $TC qdisc add dev $WAN parent 2:%h esfq perturb 10 hash dst

  Przykład: `class_up = "$TC class add dev $WAN parent 2:1 classid 2:%h htb rate %upratekbit ceil %upceilkbit $BURST prio 2 quantum 1500"`

- class_down

  Definicja klasy dla downloadu, w której możemy użyć następujących zmiennych: %cid - ID klienta, %cname - nazwa klienta, %h - numer uchwytu klasy, %downrate, %downceil. Domyślnie:

      $TC class add dev $LAN parent 1:2 classid 1:%h htb rate %downratekbit ceil %downceilkbit $BURST prio 2 quantum 1500
      $TC qdisc add dev $LAN parent 1:%h esfq perturb 10 hash dst

  Przykład: `class_up = "$TC class add dev $LAN parent 1:2 classid 1:%h htb rate %downratekbit ceil %ceilceilkbit $BURST prio 2 quantum 1500"`

- filter_up

  Definicja filtrów dla ruchu w kierunku od hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %h - uchwyt klasy, %x - uchwyt filtra (unikalny numer reguły). Domyślnie:

      # %n
      $IPT -t mangle -A LIMITS -s %i -j MARK --set-mark %x
      $TC filter add dev $WAN parent 2:0 protocol ip prio 5 handle %x fw flowid 2:%h

  Przykład: `class_up = "%n\n$IPT -A src%o3 -s %i -j CLASSIFY --set-class 2:%h\n"`

- filter_down

  Definicja filtrów dla ruchu w kierunku do hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %h - uchwyt klasy, %x - uchwyt filtra (unikalny numer reguły). Domyślnie:

      $IPT -t mangle -A LIMITS -d %i -j MARK --set-mark %x
      $TC filter add dev $LAN parent 1:0 protocol ip prio 5 handle %x fw flowid 1:%h

  Przykład: `class_down = "%n\n$IPT -A dst%o3 -d %i -j CLASSIFY --set-class 1:%h\n"`

- climit

  Definicja reguły dla limitu połączeń hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %climit - limit połączeń. Domyślnie:

      $IPT -t filter -I FORWARD -p tcp -s %i -m connlimit --connlimit-above %climit -j REJECT

  Przykład: `climit = ""`

- plimit

  Definicja reguły dla limitu pakietów dla hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %plimit - limit pakietów. Domyślnie:

      $IPT -t filter -I FORWARD -d %i -m limit --limit %plimit/s -j ACCEPT
      $IPT -t filter -I FORWARD -s %i -m limit --limit %plimit/s -j ACCEPT

  Przykład: `plimit = ""`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- customergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

- night_hours

  Zakres godzin nocnych w formacie 24-godzinnym. Np. "22-5" oznacza, że podczas uruchomienia modułu w godzinach od 22:00 do 4:59 brane będą wartości taryf dla godzin nocnych. Obowiązują następujące ograniczenia dla formatu zakresu: nie może zawierać spacji, okres nie może zaczynać się przed godziną 18. Domyślnie: pusta.

  Przykład: `night_hours = "24-6"`

- night_no_debtors

  Włączenie tej opcji spowoduje sprawdzenie czy klient posiada nierozliczone faktury przeterminowane. Jeśli tak, taryfa nocna nie zostanie zastosowana. Domyślnie: false.

  Przykład: `night_no_debtors = tak`

- night_deadline

  Dodatkowy czas (ilość dni) po terminie płatności, zanim faktura zostanie potraktowana jako przeterminowana. Opcja działa w połączeniu z 'night_no_debtors'. Domyślnie: 0.

  Przykład: `night_deadline = 7`

- multi_mac

  Jeśli ustawiona na tak (yes, true) utworzony zostanie osobny rekord dla każdego adresu MAC. Tzn. jeśli komputer ma przypisanych kilka adresów MAC, będzie utworzone tyle wpisów ile tych adresów. Domyślnie: nie

  Przykład: `multi_mac = tak`

## 6.2.12. Dns

### 6.2.12.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.12.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 określonym '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 odwr. 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 odwr. w głównym pliku konfiguracyjnym. Domyślnie: 'zone "%c.in-addr.arpa" { \ntype master; \nfile "reverse/%c"; \nnotify yes; \n}; \n'.

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

- command

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

  Przykład: `command = ""`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- custmergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

## 6.2.13. Ethers

### 6.2.13.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.13.2. Konfiguracja

Tutaj są tylko standardowe opcje:

- file

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

  Przykład: `file = /tmp/ethers`

- command

  Polecenie powłoki wykonywane po wygenerowaniu konfiga. Domyślnie: 'arp -f /etc/ethers'.

  Przykład: `command = ""`

- 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`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = "lan1 lan2"`

- customergroups

  Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: `customergroups = "grupa1 grupa2"`

## 6.2.14. Oident

### 6.2.14.1. Opis

Moduł do konfiguracji oidentd. W zasadzie można to zrobić modułem 'hostfile', ale tutaj masz już gotowe ustawienia domyślne.

### 6.2.14.2. Konfiguracja

A oto parametry modułu 'oident'

- begin

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

  Przykład: `begin = "#Generowany automatycznie\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

  Nazwa pliku konfiguracyjnego. Domyślnie: /etc/oidentd.conf.

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

- networks

  Lista nazw sieci do uwzględnienia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = 'lan1 lan2'`

- command

  Polecenie do wykonania po utworzeniu pliku. Domyślnie: puste.

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

## 6.2.15. Pinger

### 6.2.15.1. Opis

Moduł pinger to odpowiednik perlowego skryptu lms-fping. Różnice są jednak zasadnicze. Nie potrzebuje zewnętrznego programu i działa przy wykorzystaniu protokołu ARP. Powodem tego jest mniej więcej dwukrotnie szybsze wykonanie skanowania sieci. Nie ma także problemów z komputerami mającymi wyłączone odpowiadanie na pingi. Po skanowaniu, wszystkim włączonym komputerom jest ustawiany w bazie danych czas skanowania, wykorzystywany do obrazowania aktywności komputerów np. na mapie sieci.

| Pinger rozpoznaje interfejsy sieciowe na podstawie nazwy, dlatego (np. gdy do zakładania interfejsów wirtualnych/aliasów wykorzystujesz program `ip`) musisz nadawać interfejsom etykiety (ip addr add ... label ...). Pamiętaj także, żeby nie używać w nazwach kropek, ani myślników (mimo, że `ip` na to pozwala), gdyż pinger nie rozpozna poprawnie takiego interfejsu.

### 6.2.15.2. Konfiguracja

Pinger udostępnia tylko jedną opcję konfiguracyjną:

- networks

  Lista nazw sieci, które mają być skanowane. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = 'lan1 lan2'`

## 6.2.16. Parser

### 6.2.16.1. Wstęp

Moduł parser jest oparty na skryptowym języku T-Script, którego głównym zadaniem jest generowanie plików tekstowych. Może być używany do przetwarzania szablonów z danymi pobieranymi z różnych źródeł np. baz SQL lub plików tekstowych. W naszym przypadku treść skryptu (szablon) jest przechowywany w bazie danych, dlatego istnieje możliwość jego edycji poprzez LMS-UI. W przyszłości moduł parser może zastąpić większość modułów demona.

Opis języka T-Script znajduje się w rozdziale T-Script.

Przed kompilacją modułu upewnij się, że posiadasz w systemie pakiety `bison` (co najmniej w wersji 1.875) oraz `flex`.

### 6.2.16.2. Konfiguracja

Parser posiada następujące opcje:

- script

  Zawartość skryptu (szablonu). Domyślnie: pusta.

  Przykład: `script = '{var=1}zmienna var={var}'`

- file

  Lokalizacja pliku wynikowego. Domyślnie: pusta

  Przykład: `file = /tmp/parser.out`

- command

  Polecenie powłoki do wykonania po kompilacji skryptu. Domyślnie: pusta

  Przykład: `command = "sh /tmp/parser.out"`

## 6.2.17. Ewx-pt

### 6.2.17.1. Wstęp

Moduł ewx-pt służy do zarządzania urządzeniem PPPoE Terminator marki EtherWerX. Komunikacja odbywa się z wykorzystaniem protokołu SNMP.

Moduł podczas pracy tworzy własną kopię konfiguracji urządzenia. Konfiguracja urządzenia nie jest w żaden sposób weryfikowana, dlatego korzystając z modułu ewx-pt nie można dokonywać zmian bezpośrednio na urządzeniu. W celu rekonfiguracji urządzenia należy wyczyścić konfigurację na urządzeniu oraz usunąć zawartość tabeli ewx_pt_config w bazie LMSa.

| Pamiętaj o włączeniu opcji konfiguracyjnej `ewx_support` w sekcji [phpui].

### 6.2.17.2. Konfiguracja

Moduł ewx-pt udostępnia następujące opcje:

- snmp_host

  Adres urządzenia EtherWerX. Domyślnie: pusty.

  Przykład: `snmp_host = 192.168.0.1`

- snmp_port

  Port urządzenia dla komunikacji SNMP. Domyślnie: 161

  Przykład: `snmp_port = 2161`

- community

  Nazwa community SNMP urządzenia. Domyślnie: private

  Przykład: `community = public`

- offset

  Liczba całkowita o jaką będą zwiększane identyfikatory komputerów podczas zapisu na urządzeniu EtherWerX. Domyślnie: 0.

  Przykład: `offset = 1000`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = 'lan1 lan2'`

- dummy_ip_networks

  Lista nazw sieci, dla których komputerom zostanie przypisany adres IP 0.0.0.0. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

  Przykład: `dummy_ip_networks = lan1`

- dummy_mac_networks

  Lista nazw sieci, dla których komputerom zostanie przypisany adres MAC 00:00:00:00:00:00. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

  Przykład: `dummy_mac_networks = lan1`

- skip_disabled

  Wyłączenie tej opcji spowoduje, że komputery o statusie odłączony nie będą pomijane. Należy ją wyłączyć w przypadku gdy chcemy aby zablokowani klienci mieli możliwość zalogowania się do Terminatora. Domyślnie: włączona.

  Przykład: `skip_disabled = false`

## 6.2.18. Ewx-stm

### 6.2.18.1. Wstęp

Moduł ewx-stm służy do zarządzania urządzeniem Standalone Traffic Manager marki EtherWerX. Komunikacja odbywa się z wykorzystaniem protokołu SNMP. Do prawidłowej pracy wymagany jest firmware w wersji 1.4.x lub nowszej.

Moduł podczas pracy tworzy własną kopię konfiguracji urządzenia. Konfiguracja urządzenia nie jest w żaden sposób weryfikowana, dlatego korzystając z modułu ewx-stm nie można dokonywać zmian bezpośrednio na urządzeniu. W celu rekonfiguracji urządzenia należy wyczyścić konfigurację na urządzeniu oraz usunąć zawartość tabel ewx_stm_channels oraz ewx_stm_nodes w bazie LMSa.

| Pamiętaj o włączeniu opcji konfiguracyjnej `ewx_support` w sekcji [phpui].

Należy także zwrócić uwagę na to, iż moduł uwzględnia ustawienia opcji 'Sprawdzanie MACa' oraz 'Half duplex' w danych komputera.

### 6.2.18.2. Konfiguracja

Moduł ewx-stm udostępnia następujące opcje:

- snmp_host

  Adres urządzenia EtherWerX. Domyślnie: pusty.

  Przykład: `snmp_host = 192.168.0.1`

- snmp_port

  Port urządzenia dla komunikacji SNMP. Domyślnie: 161

  Przykład: `snmp_port = 2161`

- community

  Nazwa community SNMP urządzenia. Domyślnie: private

  Przykład: `community = public`

- path

  Numer ścieżki zdefiniowanej na urządzeniu, do której zostaną dopisane komputery i kanały z LMSa. Domyślnie: nieustawiona.

  Przykład: `path = 1`

- offset

  Liczba całkowita o jaką będą zwiększane identyfikatory komputerów podczas zapisu na urządzeniu EtherWerX. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: 0.

  Przykład: `offset = 1000`

- networks

  Lista nazw sieci, które mają być brane pod uwagę. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: `networks = 'lan1 lan2'`

- excluded_networks

  Lista nazw sieci, które mają zostać pominięte. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta.

  Przykład: `excluded_networks = 'lan3 lan4'`

- dummy_ip_networks

  Lista nazw sieci, dla których komputerom zostanie przypisany adres IP 0.0.0.0. Wartość tej opcji może zawierać specjalny znak '*', oznaczający wszystkie sieci. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

  Przykład: `dummy_ip_networks = lan1`

- dummy_mac_networks

  Lista nazw sieci, dla których komputerom zostanie przypisany adres MAC 00:00:00:00:00:00. Wartość tej opcji może zawierać specjalny znak '*', oznaczający wszystkie sieci. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

  Przykład: `dummy_mac_networks = lan1`

- excluded_dummy_ip_networks

  Lista nazw sieci, które zostaną wyłączone z działania opcji dummy_ip_networks, w przypadku użycia w niej znaku '*'. Domyślnie: pusta (żadna sieć).

  Przykład: `excluded_dummy_ip_networks = lan5`

- excluded_dummy_mac_networks

  Lista nazw sieci, które zostaną wyłączone z działania opcji dummy_mac_networks, w przypadku użycia w niej znaku '*'. Domyślnie: pusta (żadna sieć).

  Przykład: `excluded_dummy_mac_networks = lan7`

- skip_disabled

  Przy domyślnym ustawieniu tej opcji (true) komputery o statusie 'odłączony' nie są brane pod uwagę. Domyślnie: włączona.

  Przykład: `skip_disabled = false`

- night_hours

  Zakres godzin nocnych w formacie 24-godzinnym. Np. "22-5" oznacza, że podczas uruchomienia modułu w godzinach od 22:00 do 4:59 brane będą wartości taryf dla godzin nocnych. Obowiązują następujące ograniczenia dla formatu zakresu: nie może zawierać spacji, okres nie może zaczynać się przed godziną 18. Domyślnie: pusta.

  Przykład: `night_hours = "24-6"`

## 6.2.19. Ewx-stm-channels

### 6.2.19.1. Wstęp

Moduł ewx-stm-channels to odpowiednik modułu ewx-stm (służącego do zarządzania urządzeniem Standalone Traffic Manager marki EtherWerX) zawierający rozbudowaną obsługę kanałów.

Różnica w pracy tych modułów jest następująca. Moduł ewx-stm tworzy kanały automatycznie w zależności od ustawień zobowiązań klientów i ich przypisania do komputerów. Nie obsługuje kanałów zdefiniowanych w LMS-UI. Z kolei moduł ewx-stm-channels pracuje wyłącznie z kanałami zdefiniowanymi w LMS-UI. Komputery powinny być przypisane do urządzeń sieciowych, a te z kolei do kanałów o zdefiniowanych parametrach. Komputery nie przypisane do żadnego kanału są pomijane. Można to zmienić definiując parametry domyślnego kanału w konfiguracji modułu, do którego trafią wszystkie komputery bez powiązania.

### 6.2.19.2. Konfiguracja

Moduł ewx-stm-channels oprócz opcji dostępnych dla modułu ewx-stm udostępnia następujące opcje:

- default_upceil

  Wartość upceil dla domyślnego kanału. Domyślnie: 0.

  Przykład: `default_upceil = 10000`

- default_downceil

  Wartość downceil dla domyślnego kanału. Domyślnie: 0

  Przykład: `default_downceil = 20000`

- default_halfduplex

  Określa czy domyślny kanał ma pracować w trybie half duplex. Domyślnie: nie

  Przykład: `default_halfduplex = tak`

Poprzedni | Spis treści | Następny
LMS Daemon | Początek rozdziału | T-Script