LMS - LAN Management System 1.11-git
Poprzedni | Rozdział 4. Skrypty | Następny

# 4.3. Opis i konfiguracja

## 4.3.1. lms-notify

lms-notify jest dobrym sposobem przypominania ludziom o tym że do pracy sieci i łącz konieczne są ich pieniążki. Pozwala on na napisanie kilku[-nastu] plików tekstowych i traktowania ich jako szablonów do mailingu. Skrypt jest wielofunkcyjny, włączenie określonego zadania następuje poprzez zdefiniowanie lokalizacji pliku z szablonem wiadomości. Do wysyłania poczty został zastosowany moduł Mail::Sender.

### 4.3.1.1. Szablony

W szablonach można używać następujących zmiennych:

- %date-m - zostanie zastąpione aktualnym miesiącem, licząc od 1 poprzedzone 0, np. 02

- %date-y - zostanie zastąpione aktualnym rokiem, np. 2003

- %date_month_name - zostanie zastąpione nazwą bieżącego miesiąca, np. marzec

- %saldo - zostanie zastąpione aktualnym saldem klienta, np. 535

- %abonament - zostanie zastąpione kwotą abonamentu jaka jest do danego klienta przypisana, np. 107

- %b - saldo z zanegowanym znakiem, np. 107

- %B - saldo z prawdziwym znakiem, np. -107

- %pin - numer PIN klienta

- %cid - ID klienta

- %number - numer dokumentu (tylko w powiadomieniu o fakturze lub nocie obciążeniowej)

- %value - wartość brutto na fakturze (tylko w powiadomieniu o fakturze)

- %last_10_in_a_table - wyciąg ostatnich 10 operacji kasowych na koncie klienta (tylko wiadomości e-mail), np.:

Przykład 4-1. Lms-notify: Przykładowy wyciąg 10 ostatnich operacji kasowych

    -----------+------------------------------------------------------+---------
    2003-02-02 | Abonament za miesiąc 2003/02                         |  107.00
    2003-02-01 | Wpłata                                               | -107.00
    2003-02-01 | Abonament za miesiąc 2003/02                         |  107.00
    2003-02-01 | Wpłata                                               | -321.00
    2003-01-31 | Abonament za miesiąc 2003/01                         |  107.00
    2003-01-31 | Abonament za miesiąc 2003/01                         |  107.00
    2003-01-31 | Abonament za miesiąc 2003/01                         |  107.00
    -----------+------------------------------------------------------+---------

Przykład 4-2. Lms-notify: Przykład szablonu

    UWAGA! Ta wiadomość została wygenerowana automatycznie.

    Uprzejmie informujemy iż na Pani/Pana koncie figuruje zaległość w opłatach za
    internet w wysokości %B zł.

    Jeżeli porozumieli się już Państwo z administratorami w kwestii opłaty za
    bieżący miesiąc czyli %date-m %date-y roku, prosimy o
    zignorowanie tej wiadomości.

    W wypadku gdy uważają Państwo iż zaległość ta jest nieporozumieniem prosimy o
    jak najszybszy kontakt.

    Wszelkie informacje na temat Państwa rozliczeń mogą Państwo znaleźć pod
    adresem http://www.naszasiec.pl/mojekonto/

    Jeżeli chcieliby Państwo uregulować zaległości prosimy o kontakt:

    Dział Rozliczeń ASK NaszaSiec

    Gwidon Mniejważny
    telefon: 0-606666666
    e-mail: gwidonm@naszasiec.pl

    ps. załączamy ostatnie 10 operacji jakie zostało zarejestrowane przez nasz
    system billingowy na Państwa koncie:

    Data       | Opis                                                 | Wartość
    %last_10_in_a_table

    --
    Amatorska Sieć Komputerowa NaszaSiec
    http://www.naszasiec.pl/

### 4.3.1.2. Konfiguracja

Konfigurację dla lms-notify można ustalić w pliku `lms.ini` w sekcji [notify]. Możesz tam ustawić następujące parametry, które mają zastosowanie również dla skryptów lms-notify-sms i lms-notify-messages:

- debtors_template (opcjonalny)

  Lokalizacja pliku z szablonem wiadomości wysyłanej do zadłużonych klientów. Pozostawienie tej opcji pustej wyłączy powiadomienia o zadłużeniu. Domyślnie: pusta

  Przykład: `debtors_template = /etc/lms/debtors.txt`

- debtors_subject (opcjonalny)

  Temat wiadomości o zadłużeniu. Domyślnie: 'Debtors notification'

  Przykład: `debtors_subject = 'Powiadomienie o zadłużeniu'`

- invoices_template (opcjonalny)

  Lokalizacja pliku z szablonem wiadomości z informacją o wystawieniu faktury. Pod uwagę brane są faktury wystawione w ciągu ostatnich 24 godzin od uruchomienia skryptu. Pozostawienie tej opcji pustej wyłączy powiadomienia o nowych fakturach. Domyślnie: pusta

  Przykład: `invoices_template = /etc/lms/new_invoice.txt`

- invoices_subject (opcjonalny)

  Temat wiadomości o nowej fakturze. Domyślnie: 'New invoice notification'

  Przykład: `invoices_subject = 'Powiadomienie o wystawieniu faktury'`

- notes_template (opcjonalny)

  Lokalizacja pliku z szablonem wiadomości z informacją o wystawieniu noty obciążeniowej. Pod uwagę brane są noty wystawione w ciągu ostatnich 24 godzin od uruchomienia skryptu. Pozostawienie tej opcji pustej wyłączy powiadomienia o nowych notach. Domyślnie: pusta

  Przykład: `notes_template = /etc/lms/new_note.txt`

- notes_subject (opcjonalny)

  Temat wiadomości o nowej nocie obciążeniowej. Domyślnie: 'New debit note notification'

  Przykład: `notes_subject = 'Powiadomienie o wystawieniu noty obciążeniowej'`

- deadline_template (opcjonalny)

  Lokalizacja pliku z szablonem wiadomości wysyłanej do zadłużonych klientów, posiadających przeterminowane (nierozliczone) faktury. Pozostawienie tej opcji pustej wyłączy powiadomienia. Domyślnie: pusta

  Przykład: `deadline_template = /etc/lms/deadline.txt`

- deadline_subject (opcjonalny)

  Temat wiadomości o przeterminowanych fakturach. Domyślnie: 'Invoice deadline notification'

  Przykład: `deadline_subject = 'Powiadomienie o zaległości'`

- limit (opcjonalny)

  Pozwala na ustalenie limitu bilansu poniżej którego do klienta zostanie wysłana wiadomość z informacją o zadłużeniu. Domyślnie: 0

  Przykład: `limit = -20`

Poniżej przedstawiono opcje dotyczące wyłącznie wiadomości e-mail.

- mailfrom (wymagana)

  Adres e-mail z którego zostanie wysłany e-mail. Proszę pamiętać, że na niektórych MTA (np. exim) konto to musi istnieć w systemie. Domyślnie: pusta.

  Przykład: `mailfrom = staff@domain.pl`

- mailfname

  Nazwa nadawcy maila. Domyślnie: pusta.

  Przykład: `mailfname = Administratorzy`

- smtp_host

  Serwer SMTP, przez który ma zostać wysłana wiadomość. Domyślnie: localhost

  Przykład: `smtp_host = smtp.mydomain.pl`

- smtp_auth

  Sposób autoryzacji. Dozwolone wartości: LOGIN, PLAIN, CRAM-MD5, NTLM. Domyślnie: pusta (brak autoryzacji)

  Przykład: `smtp_auth = LOGIN`

- smtp_user

  Login do autoryzacji SMTP. Domyślnie: pusty

  Przykład: `smtp_user = admin`

- smtp_pass

  Hasło do konta zdefiniowanego w opcji smtp_user. Domyślnie: puste

  Przykład: `smtp_pass = password`

- debug_email (opcjonalny)

  Adres e-mail do debugowania. Gdy ustawiony, cała poczta zostaje wysłana na dany email zamiast do klientów. Przydatne do debugowania i sprawdzania czy wszystko działa OK. Domyślnie: nie ustawiony.

  Przykład: `debug_email = lexx@domain.pl`

## 4.3.2. lms-notify-sms

lms-notify-sms to odpowiednik lms-notify, służący do wysyłania smsów. Obecnie skrypt wspiera dwie usługi, smstools oraz gnokii. Wyboru usługi dokonuje się w sekcji [sms]. Skrypt jest wielofunkcyjny, włączenie określonego zadania następuje poprzez zdefiniowanie lokalizacji pliku z szablonem wiadomości.

Konfigurację dla lms-notify-sms można ustalić w pliku `lms.ini` w sekcji [notify-sms], oprócz opcji dostępnych w lms-notify masz do dyspozycji następujące opcje:

- service (opcjonalny)

  Pozwala na wybranie usługi SMS niezależnie od tej, którą podano w sekcji [sms]. Domyślnie: pusta

  Przykład: `service = smstools`

## 4.3.3. lms-notify-messages

lms-notify-messages to odpowiednik lms-notify, służący do ustawiania powiadomień, które będą pojawiać się w przeglądarkach internetowych klientów. Skrypt jest wielofunkcyjny, włączenie określonego zadania następuje poprzez zdefiniowanie lokalizacji pliku z szablonem wiadomości.

Konfigurację dla lms-notify-messages przeprowadza się w pliku `lms.ini` w sekcji [notify-messages].

## 4.3.4. lms-cutoff

Skrypt pozwala na odłączenie (a raczej zmianę w bazie danych stanu komputerów na wyłączony) klientów których bilans jest poniżej zadanej wartości. Właściwe odłączanie powinno być realizowane przez generator plików konfiguracyjnych.

Konfigurację dla lms-cutoff możemy ustalić w pliku `lms.ini` w sekcji [cutoff]. Możemy tam ustawić następujące parametry:

- limit (opcjonalny)

  Pozwala na ustalenie limitu bilansu poniżej którego do bazy danych zostanie zapisany stan odłączony. Domyślnie: 0

  Przykład: `limit = -20`

- message (optional)

  Jeśli nie jest pusta, wiadomość ta po dołączeniu użytkownika zostanie zapisana do jego rekordu w polu wiadomości administracyjnej. W treści wiadomości można użyć zmiennej %now, która zostanie zamieniona na bieżącą datę oraz zmiennych %b i %B tak jak w skrypcie lms-notify. Domyślnie: 'Automatic cutoff caused by exceeding of liabilities limit on %now'

  Przykład: `message = ''`

## 4.3.5. lms-payments

Skrypt służący do naliczania opłat abonamentowych przypisanych klientom oraz opłat stałych. Ponadto zapisuje dane do faktur. Aby działał poprawnie powinien być uruchamiany codziennie.

Skrypt ten udostępnia trzy opcje do fakturowania, które można ustawić w sekcji [payments] pliku `lms.ini`:

- deadline (opcjonalny)

  Pozwala na ustalenie terminu płatności w dniach. Domyślnie: 14

  Przykład: `deadline = 7`

- paytype (opcjonalny)

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

- comment (opcjonalny)

  Opis pozycji na fakturze za naliczane zobowiązanie

  Domyślnie: 'Tariff %tariff subscription for period %period'

  Niektóre ze słów kluczowych są zastępowane:

  %tariff - nazwa taryfy

  %period - okres (liczony od dziś do ostatniego dnia cyklu rozliczeniowego, w formacie RRRR/MM/DD)

  %current_month - okres od pierwszego dnia bieżącego miesiąca do jego końca

  %current_period - bieżący miesiąc w formacie MM/RRRR

  %next_period - następny miesiąc w formacie MM/RRRR

  %prev_period - poprzedni miesiąc w formacie MM/RRRR

  %desc - opis taryfy

  Przykład: `comment = 'Abonament za %current_month w/g taryfy %tariff'`

- settlement_comment (opcjonalny)

  Opis pozycji z tytułu wyrównania niepełnego okresu zobowiązania.

  Domyślnie odpowiada opcji `comment`

  Przykład: `settlement_comment = 'Wyrównanie za okres %period'`

- suspension_description (opcjonalny)

  Tekst dodawany na końcu opisu operacji dla obciążeń zawieszonych. Domyślnie: ''

  Przykład: `suspension_description = (zawieszenie)`

- saledate_next_month (opcjonalny)

  Włączenie tej opcji spowoduje, że data sprzedaży na fakturze zostanie ustawiona na pierwszy dzień następnego miesiąca. Domyślnie: 0

  Przykład: `saledate_next_month = 1`

Ponadto mamy do dyspozycji jeden przydatny parametr wiersza poleceń `--fakedate` (`-f`). Przy jego użyciu można sprawić, aby skrypt działał z podmienioną datą systemową (w formacie YYYY/MM/DD), na przykład `--fakedate=2004/10/10`.

## 4.3.6. lms-traffic

Skrypt służy do logowania informacji o ilości danych pobranych i wysłanych przez każdy komputer w sieci lokalnej. W bazie danych zapisywana jest ilość danych w bajtach, numer komputera z bazy lms i znacznik czasu. Od klienta zależy w jakich odstępach dane będą odczytywane. Ponieważ dane odczytywane są z pliku utworzonego przez klienta, nie ma znaczenia z jakiego źródła pochodzą, może to być iptables, ipchains lub program zewnętrzny np. ipfm.

Przeglądanie wykresów wykorzystania łącza oraz definiowanie filtrów dostępne jest z głównego menu 'Statystyki'.

### 4.3.6.1. Instalacja

Przed uruchomieniem lms-traffic należy zadbać o utworzenie pliku z danymi. Zawartość pliku powinna mieć następujący format:

    <adres IP> <n_spacji> <upload> <n_spacji> <download>
    <adres IP> <n_spacji> <upload> <n_spacji> <download>
    ...

Skrypt tworzący statystyki należy uruchamiać z taką samą częstotliwością co lms-traffic.

| Przykład takiego skryptu dla iptables znajduje się w pliku `/sample/traffic_ipt.pl`.

Następnie instalujemy skrypt dopisując do crontaba. Oprócz standardowych opcji wiersza poleceń możliwe jest zdefiniowanie lokalizacji pliku z logiem

    -f=/plik 	położenie i nazwa pliku ze statystykami domyślnie /var/log/traffic.log

| Częstotliwość zapisywania danych do bazy ustala użytkownik. Ustawienie jej poniżej 10 minut, może spowodować szybki przyrost ilości rekordów w bazie danych, a co za tym idzie zwiększyć czas oczekiwania na wyświetlenie wyników.

## 4.3.7. lms-traffic-logiptables

Skrypt służy do logowania informacji o ilości danych pobranych i wysłanych przez każdy komputer z sieci lokalnej, na podstawie liczników iptables. Dane sczytuje z firewalla, tworząc jednocześnie odpowiednie reguły. Zatem, nie jest konieczne ręczne tworzenie reguł iptables, ani wywoływanie skryptu `lms-traffic`.

Konfigurację należy umieścić w sekcji [traffic-logiptables]:

- outfile

  Lokalizacja skryptu z regułami iptables. Domyślnie: /etc/rc.d/rc.stat

  Przykład: `outfile = /etc/rc.d/rc.stat`

- iptables_binary

  Lokalizacja programu iptables. Domyślnie: /usr/sbin/iptables

  Przykład: `iptables_binary = /usr/local/sbin/iptables`

- wan_interfaces

  Nazwy interfejsów, na których dane mają być zliczane. Domyślnie: niezdefiniowane.

  Przykład: `wan_interfaces = eth0`

- local_ports

  Lista portów (źródłowych i docelowych) dla zliczanych pakietów. Domyślnie: niezdefiniowane.

  Przykład: `local_ports = 80`

- script_owneruid

  UID właściciela skryptu określonego w 'outfile'. Domyślnie: 0 (root).

  Przykład: `script_owneruid = 0`

- script_ownergid

  GID właściciela skryptu określonego w 'outfile'. Domyślnie: 0 (root).

  Przykład: `script_ownergid = 0`

- script_permission

  Uprawnienia skryptu określonego w 'outfile'. Domyślnie: 700 (rwx------).

  Przykład: `script_permission = 700`

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony konfig dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

## 4.3.8. lms-makedhcpconf

Tworzenie pliku konfiguracyjnego serwera DHCP - dhcpd.conf. Konfigurację skryptu umieszcza się w sekcji [dhcp]:

- config_file

  Lokalizacja pliku wynikowego. Domyślnie: /etc/dhcpd.conf

  Przykład: `config_file = /tmp/dhcpd.conf`

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony konfig dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

- customergroups

  Lista nazw grup (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony konfig dla wszystkich grup.

  Przykład: `customergroups = grupa1 grupa2`

- default_lease_time

  Domyślny czas dzierżawy. Domyślnie: 86400.

  Przykład: `default_lease_time = 43200`

- max_lease_time

  Maksymalny czas dzierżawy. Domyślnie: 86400.

  Przykład: `max_lease_time = 43200`

- ignore_ddns

  Nie generuj wpisu 'ddns-update-style none;' na początku pliku. Przydatne przy starszych (2.2) wersjach demona dhcpd. Domyślnie: wyłączone.

  Przykład: `ignore_ddns = 1`

- log_facility

  Ustawienie trybu logowania daemona dhcp. Jeżeli puste to tryb domyślny.

  Przykład: `log_facility = 7`

- authoritative

  Dodanie wpisu 'authoritative;' na początku pliku. Domyślnie: wyłączone.

  Przykład: `authoritative = 1`

- script_owneruid

  UID właściciela skryptu określonego w 'config_file'. Domyślnie: 0 (root).

  Przykład: `script_owneruid = 0`

- script_ownergid

  GID właściciela skryptu określonego w 'config_file'. Domyślnie: 0 (root).

  Przykład: `script_ownergid = 0`

- script_permission

  Uprawnienia skryptu określonego w 'config_file'. Domyślnie: 600 (rwx------).

  Przykład: `script_permission = 700`

Możesz podać czasy dzierżawy dla konkretnych sieci poprzez stworzenie sekcji `[dhcp:nazwasieci]` np.:

    [dhcp:public-custa] # nazwa sieci małymi literami!
    default_lease_time = 3600
    max_lease_time     = 3600

Możesz podać gateway, serwer dns, nazwę domeny i wins dla konkretnego hosta poprzez stworzenie sekcji `[dhcp:adresip]` np.:

    [dhcp:213.25.209.216]
    domain  = anotherdomain.pl
    gateway = 213.25.209.251
    dns     = 213.25.209.8
    wins    = 213.25.209.10

## 4.3.9. lms-makeiptables, lms-makeipchains

Para skryptów służących do generowania plików zawierających reguły firewalla. Do utworzonego pliku możesz dołączyć inne wcześniej utworzone pliki, a w końcu nadać mu odpowiednie uprawnienia. Skrypty nie uruchamiają wygenerowanych plików.

Konfigurację dla tych skryptów możesz ustalić w pliku `lms.ini` w sekcji [iptables] (i odpowiednio [ipchains]). Oba skrypty posiadają te same opcje:

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku firewalla. Jeśli nie ustawiono, zostanie stworzony konfig dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

- iptables_binary (ipchains_binary)

  Lokalizacja programu iptables (ipchains). Domyślnie: /usr/sbin/iptables (/usr/sbin/ipchains)

  Przykład: `iptables_binary = /usr/local/sbin/iptables`

- script_file

  Plik, do którego zapisujemy reguły firewalla. Domyślnie: /etc/rc.d/rc.masq

  Przykład: `script_file = /etc/rc.d/rc.firewall`

- pre_script

  Plik wykonywany PO wyczyszczeniu regułek, ale PRZED ustawieniem nowych. Domyślnie: niezdefiniowany.

  Przykład: `pre_script = /etc/rc.d/rc.masq-pre`

- post_script

  Plik wykonywany PO ustawieniu regułek. Domyślnie: niezdefiniowany.

  Przykład: `post_script = /etc/rc.d/rc.masq-post`

- forward_to

  Lista sieci, dla których włączamy forwarding. Możliwe wartości: "" - pełny forward, "dowolny ciąg" - wyłącz forward, "siec1 siec2" - lista sieci z włączonym forwardingiem. Domyślnie: pełny forward.

  Przykład: `forward_to = public-custa public-custb`

- script_owneruid

  UID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `script_owneruid = 0`

- script_ownergid

  GID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `script_ownergid = 0`

- script_permission

  Uprawnienia pliku skryptu. Domyślnie: 700 (rwx------).

  Przykład: `script_permission = 700`

- snat_address

  Adres SNAT. Jeśli nie ustawiono, dla hostów z adresami publicznymi będzie użyte "-j MASQUERADE". Jeśli ustawiono zostanie użyte "-j SNAT --to xxx.xxx.xxx.xxx". Dotyczy lms-makeiptables. Domyślnie: nie ustawiony.

  Przykład: `snat_address = 123.123.123.123`

- tcp_redirect_ports (udp_redirect_ports)

  Konfiguracja przekierowań w formie port_źródłowy:port_docelowy dla przekierowań na lokalną maszynę dla połączeń wychodzących. Dotyczy lms-makeipchains. Domyślnie: nie ustawione.

  Przykład: `tcp_redirect_ports = 80:3128 25:25`

## 4.3.10. lms-etherdesc

Skrypt służący do generowania pliku zawierającego MAC adresy oraz nazwy hostów pobierane z bazy lms'a. Adresy zapisywane są w formacie 'stripped mac', czyli bez ":". Tego typu plik wykorzystywany jest przez pakiet iptraf.

Konfigurację tego skryptu zawiera sekcja [ether] w pliku `lms.ini`:

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony konfig dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

- etherdesc_owneruid

  UID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `etherdesc_owneruid = 0`

- etherdesc_file

  Lokalizacja pliku. Domyślnie: /var/lib/iptraf/ethernet.desc.

  Przykład: `etherdesc_file = /etc/ethernet.desc`

- etherdesc_ownergid

  GID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `etherdesc_ownergid = 0`

- etherdesc_permission

  Uprawnienia pliku skryptu. Domyślnie: 600 (rw-------).

  Przykład: `etherdesc_permission = 600`

## 4.3.11. lms-sendinvoices

Skrypt służy do wysyłania pocztą elektroniczną faktur, jako załączników do wiadomości. Faktury generowane są na podstawie szablonu dostępnego w lms-ui, dlatego wymagane jest podanie klienta i hasła do interfejsu www lms-ui.

W odróżnieniu od pozostałych skryptów ten wymaga dodatkowych modułów perla: LWP::UserAgent, MIME::QuotedPrint oraz Mail::Sender.

Konfigurację należy umieścić w sekcji [sendinvoices]:

- lms_url

  Adres do lms-ui. Domyślnie: http://localhost/lms/

  Przykład: `lms_url = http://lms.mynet.pl`

- lms_user

  Login użytkownika. Domyślnie: pusty

  Przykład: `lms_user = admin`

- lms_password

  Hasło do lms-ui. Domyślnie: puste

  Przykład: `lms_password = moje_hasło`

- debug_email

  Konto pocztowe do testów. Domyślnie: niezdefiniowane.

  Przykład: `debug_email = admin@mynet.pl`

- sender_name

  Nadawca listu. Domyślnie: niezdefiniowany.

  Przykład: `sender_name = ASK MyNet`

- sender_email

  Adres nadawcy listu. Domyślnie: niezdefiniowany.

  Przykład: `sender_email = admin@mynet.pl`

- mail_subject

  Temat wiadomości. Można użyć zmiennej %invoice zastępowanej numerem faktury. Domyślnie: 'Invoice No. %invoice'.

  Przykład: `mail_subject = 'Nowa faktura'`

- mail_body

  Treść wiadomości. Można użyć zmiennej %invoice, która zostanie zastąpiona numerem faktury. Domyślnie: 'Attached file with Invoice No. %invoice'.

  Przykład: `mail_body = ''`

- customergroups

  Lista nazw grup (oddzielonych spacjami), które mają być uwzględnione podczas wysyłki. Domyślnie: nie ustawiona - wszystkie grupy.

  Przykład: `customergroups = grupa1 grupa2`

- smtp_host

  Serwer SMTP, przez który ma zostać wysłana wiadomość. Domyślnie: localhost

  Przykład: `smtp_host = smtp.mydomain.pl`

- smtp_auth

  Sposób autoryzacji. Dozwolone wartości: LOGIN, PLAIN, CRAM-MD5, NTLM. Domyślnie: pusta (brak autoryzacji)

  Przykład: `smtp_auth = LOGIN`

- smtp_user

  Login do autoryzacji SMTP. Domyślnie: pusty

  Przykład: `smtp_user = admin`

- smtp_pass

  Hasło do konta zdefiniowanego w opcji smtp_user. Domyślnie: puste

  Przykład: `smtp_pass = password`

Ponadto mamy do dyspozycji jeden przydatny parametr wiersza poleceń `--fakedate` (`-f`). Przy jego użyciu można sprawić, aby skrypt działał z podmienioną datą systemową (w formacie YYYY/MM/DD), na przykład `--fakedate=2004/10/10`.

## 4.3.12. lms-makemacs

Skrypt służący do generowania pliku zawierającego reguły netfiltra filtrujące ruch klientów na bazie testu adresu źródłowego MAC. Dla każdego komputera generowana jest jedna reguła dla tablicy nat, zadanego łańcucha, testująca adres źródłowy IP pakietu oraz adres źródłowy MAC ramki. Jeśli testy zakończą się pozytywnie następuje powrót do łańcucha nadrzędnego za pomocą decyzji RETURN. Na końcu listy reguł dodawane są 2 reguły przekierowujące ruch http oraz webcache na podany w konfiguracji adres IP oraz port (z wykorzystaniem decyzji DNAT). Przekierowanie może odbywać się na wirtualny host www z zawiadomieniem klienta o zaległościach finansowych bez możliwości wyłączenia zawiadomienia. Na końcu dodawana jest reguła blokująca jakikolwiek inny ruch.

Konfigurację tego skryptu zawiera sekcja [macs] w pliku `lms.ini`:

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

- customergroups

  Lista nazw grup klientów (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich grup klientów.

  Przykład: `customergroups = osiedle1 osiedle2`

- iptables_binary

  Lokalizacja programu iptables. Domyślnie: /sbin/iptables

  Przykład: `iptables_binary = /usr/local/sbin/iptables`

- config_owneruid

  UID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_owneruid = 0`

- config_file

  Lokalizacja pliku. Domyślnie: /etc/rc.d/rc.macs.

  Przykład: `config_file = /etc/conf.d/rc.macs`

- config_ownergid

  GID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_ownergid = 0`

- config_permission

  Uprawnienia pliku skryptu. Domyślnie: 700 (rwx------).

  Przykład: `config_permission = 700`

- chain

  Łańcuch do którego będą dodawane generowane reguły. Domyślnie: MACS.

  Przykład: `chain = TESTY_MACOW`

- redirect_address

  Adres IP + port na który będzie przekierowywany niesklasyfikowany ruch http i webcache. Domyślnie: 127.0.0.1:80.

  Przykład: `redirect_address = 192.168.1.1:3000`

- lock_noaccess

  Czy generować regułki testujące z decyzją RETURN dla komputerów, które są odłączone. Domyślnie: 0 (reguły są generowane)

  Przykład: `lock_noaccess = 1`

## 4.3.13. lms-makehosts

Skrypt służący do generowania pliku /etc/hosts zawierającego odwzorowania nazw komputerów na adresy IP.

Konfigurację tego skryptu zawiera sekcja [hosts] w pliku `lms.ini`:

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

- customergroups

  Lista nazw grup klientów (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich grup klientów.

  Przykład: `customergroups = osiedle1 osiedle2`

- config_owneruid

  UID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_owneruid = 0`

- config_file

  Lokalizacja pliku. Domyślnie: /etc/hosts.

  Przykład: `config_file = /etc/hosts`

- config_ownergid

  GID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_ownergid = 0`

- config_permission

  Uprawnienia pliku skryptu. Domyślnie: 644 (rw-r--r--).

  Przykład: `config_permission = 600`

- config_header

  Pierwsza linia w pliku /etc/hosts. Domyślnie: 127.0.0.1 localhost localhost.localdomain.

  Przykład: `config_header = 192.168.1.1 serwer serwer.nasza-siec`

## 4.3.14. lms-makewarnings

Skrypt służący do generowania pliku zawierającego reguły netfiltra przekierowujące ruch http i webcache klientów o saldzie mniejszym lub równym od zadanego na zadany adres IP i port (wykorzystywana jest tablica nat, testy adresów źródłowych IP oraz decyzja DNAT).

Konfigurację tego skryptu zawiera sekcja [warnings] w pliku `lms.ini`:

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

- customergroups

  Lista nazw grup klientów (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich grup klientów.

  Przykład: `customergroups = osiedle1 osiedle2`

- iptables_binary

  Lokalizacja programu iptables. Domyślnie: /sbin/iptables

  Przykład: `iptables_binary = /usr/local/sbin/iptables`

- config_owneruid

  UID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_owneruid = 0`

- config_file

  Lokalizacja pliku. Domyślnie: /etc/rc.d/rc.warnings.

  Przykład: `config_file = /etc/conf.d/rc.warnings`

- config_ownergid

  GID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_ownergid = 0`

- config_permission

  Uprawnienia pliku skryptu. Domyślnie: 700 (rwx------).

  Przykład: `config_permission = 700`

- chain

  Łańcuch do którego będą dodawane generowane reguły. Domyślnie: WARNINGS.

  Przykład: `chain = OSTRZEZENIA`

- redirect_address

  Adres IP + port na który będzie przekierowywany ruch http i webcache pochodzący z hostów dla których ma być włączone ostrzeżenie o zaległościach finansowych. Domyślnie: 127.0.0.1:80.

  Przykład: `redirect_address = 192.168.1.1:3001`

- limit

  Saldo klienta przy którym dla wszystkich komputerów klienta generowane są regułki przekierowujące ruch. Domyślnie: 0

  Przykład: `limit = -85`

## 4.3.15. lms-makemessages

Skrypt służący do generowania pliku zawierającego reguły netfiltra przekierowujące ruch http i webcache klientów dla których zostało włączone przekazywanie wiadomości administracyjnej (ostrzeżenia) na zadany adres IP i port (wykorzystywana jest tablica nat, testy adresów źródłowych IP oraz decyzja DNAT).

Konfigurację tego skryptu zawiera sekcja [messages] w pliku `lms.ini`:

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich sieci.

  Przykład: `networks = public-custa public-custb`

- customergroups

  Lista nazw grup klientów (oddzielonych spacjami), które mają być uwzględnione podczas generowania pliku. Jeśli nie ustawiono, zostanie stworzony plik konfiguracyjny dla wszystkich grup klientów.

  Przykład: `customergroups = osiedle1 osiedle2`

- iptables_binary

  Lokalizacja programu iptables. Domyślnie: /sbin/iptables

  Przykład: `iptables_binary = /usr/local/sbin/iptables`

- config_owneruid

  UID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_owneruid = 0`

- config_file

  Lokalizacja pliku. Domyślnie: /etc/rc.d/rc.messages.

  Przykład: `config_file = /etc/conf.d/rc.messages`

- config_ownergid

  GID właściciela pliku. Domyślnie: 0 (root).

  Przykład: `config_ownergid = 0`

- config_permission

  Uprawnienia pliku skryptu. Domyślnie: 700 (rwx------).

  Przykład: `config_permission = 700`

- chain

  Łańcuch do którego będą dodawane generowane reguły. Domyślnie: MESSAGES.

  Przykład: `chain = WIADOMOSCI`

- redirect_address

  Adres IP + port na który będzie przekierowywany ruch http i webcache pochodzący z hostów dla których ma być włączona wiadomość administracyjna. Domyślnie: 127.0.0.1:80.

  Przykład: `redirect_address = 192.168.1.1:3002`

## 4.3.16. lms-fping

Skrypt zapisuje do bazy informacje o aktywności komputerów. Do skanowania wykorzystywany jest szybki program fping (z opcjami -ar1). Najpierw tworzona jest lista hostów, a następnie, po wywołaniu fping'a, komputerom włączonym zostaje przypisana data i czas skanowania. Dzięki temu mamy w bazie informacje kiedy dany komputer był ostatnio włączony.

Konfigurację tego skryptu zawiera sekcja [fping] w pliku `lms.ini`:

- networks

  Lista nazw sieci (oddzielonych spacjami), które mają być uwzględnione podczas skanowania. Jeśli nie ustawiono przeskanowane zostaną wszystkie komputery.

  Przykład: `networks = public-custa public-custb`

- fping_binary

  Lokalizacja programu fping. Domyślnie: /usr/sbin/fping

  Przykład: `fping_binary = /usr/local/sbin/fping`

- temp_file

  Lokalizacja pliku tymczasowego na listę hostów, który po wykonaniu skryptu zostaje usunięty. Domyślnie: /tmp/fping_hosts.

  Przykład: `temp_file = /tmp/hosts`

## 4.3.17. lms-reminder

Skrypt służy do przypominania klientom o zaplanowanych na dany dzień zadaniach. Lista zdarzeń przypisanych w Terminarzu danemu klientowi w bieżącym dniu zostaje wysłana na jego adres e-mail.

Konfigurację dla lms-reminder umieszcza się w pliku `lms.ini` w sekcji [reminder]. Możesz tam ustawić następujące parametry:

- mailsubject (wymagany)

  Pozwala na ustalenie tematu e-maila wysyłanego do klienta. Domyślnie: nie ustawione.

  Przykład: `mailsubject = 'Terminarz z LMSa'`

- mailfrom (wymagany)

  Adres e-mail z którego zostanie wysłany e-mail. Proszę pamiętać, że na niektórych MTA (np. exim) konto to musi istnieć w systemie. Domyślnie nieustawione.

  Przykład: `mailfrom = staff@domain.pl`

- mailfname (wymagany)

  Nazwa nadawcy maila.

  Przykład: `mailfname = LMS`

- smtp_host

  Serwer SMTP, przez który ma zostać wysłana wiadomość. Domyślnie: localhost

  Przykład: `smtp_host = smtp.mydomain.pl`

- smtp_auth

  Sposób autoryzacji. Dozwolone wartości: LOGIN, PLAIN, CRAM-MD5, NTLM. Domyślnie: pusta (brak autoryzacji)

  Przykład: `smtp_auth = LOGIN`

- smtp_user

  Login do autoryzacji SMTP. Domyślnie: pusty

  Przykład: `smtp_user = admin`

- smtp_pass

  Hasło do konta zdefiniowanego w opcji smtp_user. Domyślnie: puste

  Przykład: `smtp_pass = password`

- debug_email (opcjonalny)

  Adres e-mail do debugowania. Gdy ustawiony, cała poczta zostaje wysłana na dany email zamiast do klientów. Przydatne do debugowania i sprawdzania czy wszystko działa OK. Domyślnie: nie ustawiony.

  Przykład: `debug_email = alec@domain.pl`

## 4.3.18. lms-rtparser

Jest to tzw. backend dla systemu Helpdesk, czyli skrypt który współpracując z serwerem pocztowym zapisuje do bazy danych wszystkie wiadomości skierowane na adresy Helpdesk'a. Skrypt pobiera z wejścia wiadomość pocztową, parsuje zawartość i umieszcza zgłoszenie w kolejce, wysyłając do zgłaszających potwierdzenie przyjęcia wiadomości. W temacie potwierdzenia znajduje się symbol zgłoszenia. Podczas parsowania wiadomości następuje, na podstawie tematu wiadomości, próba rozpoznania czy wiadomość nie jest odpowiedzią na inną wiadomość z już przypisanym numerem zgłoszenia. Od wiadomości zostają odłączone załączniki i umieszczone w katalogu zdefiniowanym w opcji `mail_dir`.

Oprócz modułów Perla standardowo wymaganych przez resztę skryptów, należy zainstalować także moduły `MIME::Parser` i `MIME::Words` z pakietu MIME-Tools oraz `Mail::Sender` i `Text::Iconv`.

Skrypt można uruchamiać na wiele sposobów. Jednym z nich jest stworzenie skryptu powłoki, który odczytując skrzynkę pocztową wywoła lms-rtparser dla każdego maila. Wygodniejszym zastosowaniem jest jednak zintegrowanie go z serwerem pocztowym. Poniżej przedstawiono sposób podłączenia go do postfixa przy użyciu opcji header_checks.

    # plik main.cf:
    header_checks = regexp:/etc/postfix/header_checks

    # plik header_checks
    /^To:.*adres@domena.*/ FILTER filter:dummy

    # plik master.cf:
    filter unix - n n - 10 pipe
          -flags=Rq user=nobody argv=/path/to/lms-rtparser

Powyższy sposób działa dla postfixa w wersjach nowszych od 2.0. Wcześniejsze wersje nie obsługują FILTER w header_checks. Z tym problemem można sobie poradzić używając procmaila:

    # plik main.cf
    mailbox_command = /usr/bin/procmail

    # w katalogu domowym klienta, którego maile mają być obsługiwane przez HelpDesk:
    # plik .forward
    "|IFS=' ' && exec /usr/bin/procmail -f - || exit 75 #YOUR_USERNAME"

    # plik .procmailrc
    :0 c
       * ^To.*adres@domena
       | /bin/lms-rtparser

    :0 A
    $DEFAULT

Kolejny listing to przykład podłączenia parsera do Exima przy użyciu filtrów systemowych:

    # plik exim.conf

    system_filter_pipe_transport = address_pipe

    # plik system_filter.txt

    if $recipients is "adres_kolejki@domena.pl"
    then
         pipe "/sciezka/do/lms-rtparser -q id_kolejki"
    endif

| Jeżeli chcesz aby wiadomości wprowadzane poprzez lms-ui były kierowane do parsera, zamiast bezpośrednio zapisywane do bazy, powinieneś włączyć opcję konfiguracyjną `helpdesk_backend_mode` w sekcji [phpui].

Konfigurację tego skryptu zawiera sekcja [rt] w pliku `lms.ini`:

- default_queue

  Numer ID kolejki, do której trafią zgłoszenia. Jeśli nie podano, Kolejka zostanie odszukana na podstawie adresu odbiorcy maila. Opcja ta może zostać nadpisana przy pomocy parametru -q przy uruchomieniu skryptu. Domyślnie: niezdefiniowana.

  Przykład: `default_queue =`

- mail_from

  Nadawca potwierdzenia (adres). Jeśli nie zdefiniowano, zostanie użyty adres kolejki do której zapisano zgłoszenie. Domyślnie: pusty.

  Przykład: `mail_from = rt@net.pl`

- mail_from_name

  Nadawca potwierdzenia (nazwa). Domyślnie: niezdefiniowana.

  Przykład: `mail_from_name = 'BOK SuperLAN'`

- autoreply_subject

  Temat potwierdzenia. Tu można korzystać ze zmiennych %tid - identyfikator zgłoszenia i %subject - temat zgłoszenia. Domyślnie: "[RT#%tid] Receipt of request '%subject'".

  Przykład: `autoreply_subject = "[RT#%tid] Potwierdzenie odbioru zgłoszenia o temacie '%subject'"`

- autoreply_body

  Treść potwierdzenia. Tu można korzystać ze zmiennych: %tid - identyfikator zgłoszenia i %subject - temat zgłoszenia. Domyślnie: "Your request was registered in our system.\nTo this request was assigned ticket identifier RT#%tid.\nPlease, place string [RT#%tid] in subject field of any\nmail relating to this request.\n."

  Example: `autoreply_body = "Państwa zgłoszenie zostało zarejestrowane w naszym systemie.\nZgłoszeniu został nadany numer: RT#%tid.\nW korespondencji związanej z tym zgłoszeniem prosimy podawać w temacie ciąg znaków [RT#%tid].\n"`

- smtp_host

  Serwer SMTP, przez który ma zostać wysłana wiadomość. Domyślnie: localhost

  Przykład: `smtp_host = smtp.mydomain.pl`

- smtp_auth

  Sposób autoryzacji. Dozwolone wartości: LOGIN, PLAIN, CRAM-MD5, NTLM. Domyślnie: pusta (brak autoryzacji)

  Przykład: `smtp_auth = LOGIN`

- smtp_user

  Login do autoryzacji SMTP. Domyślnie: pusty

  Przykład: `smtp_user = admin`

- smtp_pass

  Hasło do konta zdefiniowanego w opcji smtp_user. Domyślnie: puste

  Przykład: `smtp_pass = password`

- mail_dir

  Katalog w którym zostaną zapisane załączniki. Katalog ten powinien być dostępny dla apache'a i klienta uruchamiającego lms-rtparser. Gdy nie ustawiono, załączniki zostaną utracone. Domyślnie: niezdefiniowany.

  Przykład: `mail_dir = /usr/local/lms/mail`

- tmp_dir

  Katalog tymczasowy. Domyślnie zostanie użyty katalog zdefiniowany w zmiennej systemowej lub `/tmp`.

  Przykład: `tmp_dir = /home/user/tmp`

- auto_open

  Włączenie tej opcji spowoduje, że w momencie odebrania wiadomości dotyczącej zgłoszenia zamkniętego (lub martwego) zgłoszenie to zostanie otwarte. Domyślnie: wyłączone.

  Przykład: `auto_open = 1`

- newticket_notify

  Włączenie tej opcji spowoduje wysyłanie powiadomień o nowych zgłoszeniach do użytkowników którzy mają prawa do konkretnej kolejki. Domyślnie: wyłączone.

  Przykład: `newticket_notify = 1`

- lms_url

  Do powiadomienia o nowym zgłoszeniu zostaje załączony link do tego zgłoszenia w LMS-UI, aby użytkownik mógł szybko przejść do tego zgłoszenia. Domyślnie: http://localhost/lms/.

  Przykład: `lms_url = https://lms.domena.pl/`

- include_customerinfo

  Do powiadomienia o nowym zgłoszeniu zostają załączone podstawowe dane klienta, jeżeli został on rozpoznany po adresie mailowym. Domyślnie: włączona.

  Przykład: `include_customerinfo = 0`

## 4.3.19. lms-teryt

Skrypt służący do importu i aktualizacji danych bazy TERYT. Zawiera również możliwość pobrania plików bazy z Internetu, a także procedurę przypisywania identyfikatorów TERYT do istniejących komputerów, które mają zdefiniowany adres ale nie mają przypisanego TERYTu.

Skrypt zawiera następujące opcje uruchomieniowe, które można łączyć:

- `-f, --fetch`

  Włącza procedurę pobierania (i rozpakowania) plików bazy TERYT z Internetu. Wymagane jest umożliwienie połączenia HTTP z serwerem określonych w opcji 'url' oraz zainstalowanie programu unzip.

- `-l, --list=<lista>`

  Zawęża działanie opcji importu/aktualizacji do określonych województw. Podobnie jak w opcji konfiguracyjnej 'state_list' podajemy tutaj numeryczne identyfikatory oddzielone przecinkami. Ze względu na duży rozmiar całej bazy, wskazane jest ograniczenie się tylko do wybranych województw. Identyfikatory można znaleźć w pliku TERC.xml.

  2 - dolnośląskie
  4 - kujawsko-pomorskie
  6 - lubelskie
  8 - lubuskie
  10 - łódzkie
  12 - małopolskie
  14 - mazowieckie
  16 - opolskie
  18 - podkarpackie
  20 - podlaskie
  22 - pomorskie
  24 - śląskie
  26 - świętokrzyskie
  28 - warmiśko-mazurskie
  30 - wielkopolskie
  32 - zachodniopomorskie

- `-u, --update`

  Import danych do bazy LMSa. Jeśli baza była już wcześniej importowana, nastąpi aktualizacja bazy.

- `-m, --merge`

  Przypisanie identyfikatorów TERYT dla komputerów/urządzeń, które nie zostały jaszcze przypisane, ale posiadają wpisany adres lokalizacji. Algorytm jest dość prosty i nie ma pewności, że wszystkie adresy zostaną rozpoznane.

Konfigurację tego skryptu zawiera sekcja [teryt] w pliku `lms.ini`:

- url

  Adres strony pobierania plików bazy TERYT. Domyślnie zawiera poniższy link.

  Przykład: `url = http://www.stat.gov.pl/broker/access/prefile/listPreFiles.jspa`

- dir

  Katalog w którym, są przechowywane rozpakowane pliki (xml) bazy TERYT. W tym katalogu zostaną też zapisane pobrane pliki. Domyślnie: katalog uruchomienia skryptu.

  Przykład: `dir = /var/lib/teryt`

- unzip_binary

  Lokalizacja programu unzip. Domyślnie: /usr/bin/unzip.

  Przykład: `unzip_binary = /sbin/unzip`

- state_list

  Lista identyfikatorów województw, oddzielonych przecinkami, które będą brane pod uwagę podczas importu. W celu minimalizacji rozmiaru bazy danych i czasu działania skryptu najlepiej ograniczyć się do wybranych województw.

  Przykład: `state_list = 2`

Poprzedni | Spis treści | Następny
Lista dostępnych skryptów | Początek rozdziału | Generator plików konfiguracyjnych (lms-mgc)