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:

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:

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:

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.

Notatka

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

Ostrzeżenie

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]:

4.3.8. lms-makedhcpconf

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

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:

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:

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]:

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:

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:

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:

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:

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:

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:

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

Notatka

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: