LMS - LAN Management System 1.3-cvs

   [logo-small.png]

LMS Developers

   Copyright (c) 2001-2004 LMS Developers
     _________________________________________________________________

   Spis treci
   1. Wstp

        1.1. Czym jest LMS
        1.2. Autorzy
        1.3. Licencja
        1.4. Informacje dodatkowe

   2. Instalacja i konfiguracja

        2.1. Wstp
        2.2. Wymagania
        2.3. Instalacja LMS
        2.4. Instalacja serwera baz danych
        2.5. Konfiguracja podstawowa
        2.6. Prawa dostpu
        2.7. Upgrade

   3. Interfejs Uytkownika (LMS-UI)

        3.1. Logowanie
        3.2. Praca z LMS-UI
        3.3. Dodatki

   4. Skrypty

        4.1. Instalacja
        4.2. Lista dostpnych skryptw
        4.3. Opis i konfiguracja

   5. Generator plikw konfiguracyjnych (lms-mgc)

        5.1. Instalacja
        5.2. Konfiguracja
        5.3. Przykad zastosowania lms-mgc

   6. A.L.E.C's LMS Daemon

        6.1. Informacje podstawowe
        6.2. Moduy

   7. Dla dociekliwych

        7.1. Drzewo katalogw
        7.2. Struktura bazy danych
        7.3. Format pliku konfiguracyjnego
        7.4. Generowanie danych losowych
        7.5. Poziomy dostpu
        7.6. Ograniczenia

   Spis tabel
   4-1. Lista skryptw wykonywalnych
   6-1. Lista moduw demona almsd
   7-1. Drzewo katalogw LMS

   Spis przykadw
   4-1. Lms-notify: Przykadowy wycig 10 ostatnich operacji kasowych
   4-2. Lms-notify: Przykad szablonu
   5-1. Lms-mgc: Przykad instancji
   7-1. Format opcji konfiguracyjnych
     _________________________________________________________________

Rozdzia 1. Wstp

1.1. Czym jest LMS

   "LMS" jest skrtem od "LAN Management System". Jest to zestaw
   aplikacji w PHP, C i Perlu, uatwiajcych zarzdzanie sieciami
   osiedlowymi (popularnie zwanymi Amatorskimi Sieciami Komputerowymi),
   korzystajcych z bazy danych MySQL, PostgreSQL lub SQLite. Gwne
   zaoenia to uzyskanie jakoci usug oraz obsugi uytkownikw na
   poziomie providera z prawdziwego zdarzenia. Najbardziej podstawowe
   cechy LMS to:
     * baza danych uytkownikw (imi, nazwisko, adres, numer telefonu,
       uwagi i inne),
     * baza danych komputerw (adres IP, adres MAC),
     * baza danych sprztu sieciowego (nazwa, ilo portw),
     * generowanie mapy sieci,
     * prowadzenie prostego rachunku operacji finansowych oraz stanu
       funduszw sieci,
     * zestawienia finansowe, fakturowanie,
     * rne opaty i taryfy abonamentowe,
     * wysyanie poczt elektroniczn upomnie do uytkownikw,
     * automatyczne naliczanie opat miesicznych,
     * generowanie praktycznie jakiegokolwiek konfiga na podstawie danych
       o komputerach w bazie (przykadowe konfigi obejmuj rc.masq na
       iptables, dhcpd.conf, oidentd_masq.conf, /etc/ethers, dns prosty i
       odwrotny, htb),
     * wizualizacja statystyk wykorzystania cza.

   Cao zostaa wymylona w ramach administracji ASK NetX i tam jest
   nieustannie rozwijana i poddawana testom.

   LMS nie zastpi Ci umiejtnoci jakie powinien mie administrator.
   Jeli nie potrafisz wykona tak prostych czynno jak instalacja czy
   konfiguracja, prawdopodobnie nie bdziesz umia dostroi LMS do
   swojego systemu. Tak wic bez znajomoci systemw U*IX si nie
   obejdzie.
     _________________________________________________________________

1.2. Autorzy

1.2.1. LMS Developers

     * Kod PHP:

       ukasz 'Baseciq' Mozer
       Micha 'DziQs' Zapalski
       Radosaw 'Warden' Antoniuk
       Krzysztof 'hunter' Drewicz
       Marcin 'Lexx' Krl
       Aleksander A.L.E.C Machniak
     * Kod C:

       Aleksander 'A.L.E.C' Machniak
       Marcin 'Lexx' Krl
     * Kod Perl:

       ukasz 'Baseciq' Mozer
       Micha 'DziQs' Zapalski
       Maciej 'agaran' Pijanka
       Krzysztof 'hunter' Drewicz
     * Design:

       ukasz 'Baseciq' Mozer
     * HTML, JavaScript, CSS:

       ukasz 'Baseciq' Mozer
       Pawe 'Bob_R' Czerski
       Pawe 'sickone' Kisiela
     * Grafika:

       Piotr 'Pierzak' M.
       Grzegorz 'byko' Cichowski
       Kuba 'kflis' Flis
       ukasz 'Baseciq' Mozer
     * Support MySQL:

       Kuba 'shasta' Jankowski
       Radosaw 'Warden' Antoniuk
       Przemysaw Babiski
     * Support Postgresql i SQLite:

       Aleksander 'A.L.E.C' Machniak
     * Dokumentacja i strona WWW:

       Aleksander 'A.L.E.C' Machniak
       Kuba 'shasta' Jankowski
       Grzegorz 'JaBBaS' Dzigielewski
       ukasz 'Baseciq' Mozer
       Marcin 'Lexx' Krl
     * Betatesterzy:

       Grzegorz 'byko' Cichowski
       Radosaw 'Warden' Antoniuk
       Tomasz 'dzwonek' Dzwonkowski
       Sebastian 'Victus' Frasunkiewicz
       Kuba 'kflis' Flis
       Krystian 'UFOczek' Kochanowski
       Grzegorz 'JaBBaS' Dzigielewski
       Andrzej 'chsh' Grdziel
       Marcin 'Lexx' Krl
     _________________________________________________________________

1.2.2. Inni

   LMS zawiera fragmenty nastpujcego oprogramowania: phpMyAdmin,
   phpsysinfo, NewsPortal, procedury konwersji liczb na posta sown
   autorstwa Piotra Klebana oraz przykady kodu zawarte w Podrczniku
   PHP.
     _________________________________________________________________

1.3. Licencja

   Niniejszy program jest oprogramowaniem wolnodostpnym; moesz go
   rozprowadza dalej i/lub modyfikowa na warunkach Powszechnej Licencji
   Publicznej GNU, wydanej przez Fundacj Wolnodostpnego Oprogramowania
   - wedug wersji 2-giej tej Licencji lub ktrej z pniejszych wersji.

   Niniejszy program rozpowszechniany jest z nadziej, i bdzie on
   uyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domylnej
   gwarancji PRZYDATNOCI HANDLOWEJ albo PRZYDATNOCI DO OKRELONYCH
   ZASTOSOWA. W celu uzyskania bliszych informacji - Powszechna
   Licencja Publiczna GNU.

   Z pewnoci wraz z niniejszym programem otrzymae te egzemplarz
   Powszechnej Licencji Publicznej GNU; jeli nie - napisz do Free
   Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.

   Angielski tekst tej licencji znajduje si tutaj.
     _________________________________________________________________

1.4. Informacje dodatkowe

1.4.1. Kontakt z autorami

   Najlepiej poprzez list mailingow, na ktr mona si zapisa
   wysyajc pustego maila o temacie "subscribe lms" na adres
   ecartis@lists.rulez.pl, a maile wysya si na adres
   lms@lists.rulez.pl.
     _________________________________________________________________

1.4.2. Zgaszanie bdw i pomysw

   Aby efektywnie zgosi bd lub nowy pomys, najlepiej jest zapisa
   si na list mailingow gdzie kto z autorw bd uytkownikw bdzie
   mia szans odpowiedzie na pytania Ci nurtujce. Dostpny jest take
   dla testw BTS, gdzie mona zgasza bdy po uprzedniej rejestracji.
   Raporty z BTS id take na list mailingow, wic najlepiej si
   zapisa, zgosi bd poprzez BTS, wysa linka na list i czeka na
   rozwj wydarze. Adres BTS to http://bts.rulez.pl.
     _________________________________________________________________

1.4.3. Najnowsza wersja

   Zawsze aktualn werjs LMS mona pobra z repozytorium CVS za pomoc
   interfejsu www tutaj, lub klasycznie (dostp anonimowy, puste haso):
cvs -d :pserver:cvs@cvs.rulez.pl:/home/cvsroot login
cvs -d :pserver:cvs@cvs.rulez.pl:/home/cvsroot co lms
cvs -d :pserver:cvs@cvs.rulez.pl:/home/cvsroot logout

   Repozytorium CVS mona take przeglda przy pomocy interfejsu WWW pod
   adresem http://cvs.rulez.pl.
     _________________________________________________________________

1.4.4. Historia zmian

   Informacje o zmianach jakie zaszy w kolejnych wersjach LMS zawarte s
   w pliku ChangeLog.
     _________________________________________________________________

Rozdzia 2. Instalacja i konfiguracja

2.1. Wstp

   LMS skada si z kilku moduw, podstawowym moduem jest LMS-UI
   (interfejs uytkownika). Jest on w caoci napisany w PHP i do pracy
   wymaga bazy danych (waciwie to kady modu wymaga bazy danych). To
   wanie w LMS-UI wykonujemy wszystkie czynnoci, reszta moduw ma
   tylko za zadanie zautomatyzowa prac LMS.

   LMS to take zestaw skryptw w jzyku PERL, i to wanie te skrypty
   wymagaj aby posiada interpreter tego jzyka. Jeli bdziesz chcia
   uywa tych skryptw, musisz mie PERLa. Skrypty pozwalaj m.in. na
   comiesiczne naliczanie opat abonamentowych bd wysyanie upomnie.
   Najwikszy z nich - LMS-MGC jest skryptem, ale na tyle uniwersalnym e
   potrafi wygenerowa praktycznie dowolny plik konfiguracyjny i
   zrestartowa usug na twoim serwerze.

   Jest jeszcze A.L.E.C's LMS Daemon, napisany w jzyku C. Jest on
   przeznaczony (a waciwie jego wtyczki) do generowania plikw
   konfiguracyjnych i restartowania usug. Mona go stosowa jako
   zamiennik lub uzupenienie skryptw perlowych. Odpowiada on za to, aby
   to co zostao zmienione w LMS-UI zostao zmienione take w
   rzeczywistoci.
     _________________________________________________________________

2.2. Wymagania

2.2.1. Serwer WWW

   Poniewa LMS-UI jest napisane w PHP, niezbdny jest serwer WWW z
   interpreterem tego jzyka. Preferowanym serwerem jest Apache
   (www.apache.org).
     _________________________________________________________________

2.2.2. Interpreter PHP

   Interpreter powinien by w wersji 4.2.x lub nowszej, chocia dziaa
   te poprawnie na 4.1.x (ale poniewa developerzy pracuj na 4.2.3, nie
   mona zagwarantowa poprawnej pracy na starszych wersjach. PHP mona
   cign ze strony www.php.net.
     _________________________________________________________________

2.2.3. Serwer baz danych

   LMS nie bdzie dziaa prawidowo na wersjach MySQL starszych od
   3.23.xx

   LMS wsppracuje take z PostgreSQL w wersji 7.3.x lub nowszych.

   Wykorzystanie bazy SQLite dla LMS'a jest w fazie testw. Jedyn
   przetestowan wersj jest wersja 2.8.11.
     _________________________________________________________________

2.2.4. Biblioteka Smarty

   LMS-UI do pracy wymaga jeszcze biblioteki Smarty
   (http://smarty.php.net) w wersji 2.5.0 lub wyszej.
     _________________________________________________________________

2.2.5. Perl

   O ile dla LMS-UI wystarczy to co powyej, to eby mie dziaajcy
   LMS-MGC i reszt skryptw potrzebujemy take Perla i moduy do niego
   czyli:
     * perl waciwy i jego podstawowe moduy (POSIX, GetOpt::Long);
     * Net::SMTP;
     * Config::IniFiles;
     * DBI;
     * DBD-mysql (Jeli masz zamiar uywa mysql'a);
     * DBD-Pg (Jeli masz zamiar uywa postgres'a);
     * DBD-SQLite (Jeli masz zamiar uywa baz SQLite);
     _________________________________________________________________

2.2.6. Kompilator jzyka C

   Jeli chcesz uruchomi A.L.E.C's LMS Daemon bdziesz potrzebowa
   dziaajcy kompilator jzyka C, gdy jest on dostarczany wycznie w
   postaci kodu rdowego.
     _________________________________________________________________

2.3. Instalacja LMS

   LMS w postaci archiwum tar.gz mona pobra ze strony domowej projektu
   (www.lms.rulez.pl), a nastpnie rozpakowa i umieci w wybranym
   katalogu (np. /var/www/lms ) dostpnym dla serwera www:
$ cd /var/www
$ wget http://lms.rulez.pl/download/stable/lms-x.x.x.tar.gz
$ tar zxf lms-x.x.x.tar.gz

   Dostpne s dwa rodzaje paczek z LMS - zawierajce bibliotek Smarty
   (lms-x.x.x+libs.tar.gz) i bez niej. Jeeli nie skorzystae z wersji
   archiwum zawierajcej biblioteki, pobierz j i umie w katalogu lib.
$ cd /var/www/lms/lib
$ wget http://smarty.php.net/distributions/Smarty-2.6.0.tar.gz
$ tar zxf Smarty-2.6.0.tar.gz
$ mv Smarty-2.6.0/libs Smarty

   Notatka

   Pooenie wszystkich katalogw moesz zmieni w sekcji [directories]
   pliku lms.ini.

   Pliki z konfiguracj (sample/lms.ini i sample/lms-mgc.ini) umie w
   katalogu /etc/lms.

   Skrypty wykonywalne z katalogu bin najlepiej przenie do katalogu
   /usr/sbin.

   Ostrzeenie

   Serwer www musi mie prawo odczytu pliku lms.ini oraz prawa odczytu i
   zapisu do katalogu backup. Stanowi to potencjalne obnienie poziomu
   bezpieczestwa systemu.
     _________________________________________________________________

2.4. Instalacja serwera baz danych

2.4.1. MySQL

2.4.1.1. Wstp

   Ta bardzo popularna baza jest dostpna z wikszoci dystrybucji
   Linuksa. Jeeli jednak bdziesz musia j zainstalowa samodzielnie,
   zacznij od cignicia rde z www.mysql.org.
     _________________________________________________________________

2.4.1.2. Instalacja serwera MySQL

   Po rozpakowaniu, wejd do katalogu z naszym MySQL i wydaj kolejno
   polecenia:
$ ./configure --prefix=/usr/local/mysql
$ make
$ make install
$ /usr/local/mysql/bin/mysql_install_db
$ chown mysql -R /usr/local/mysql/var
$ /usr/local/mysql/bin/safe_mysqld &
$ /usr/local/mysql/bin/mysqladmin -u root password nowe_haso
     _________________________________________________________________

2.4.1.3. Utworzenie bazy danych

   Konieczne to jest jeeli uruchamiasz LMS po raz PIERWSZY. Jeeli
   uaktualniasz LMS z poprzedniej wersji, odpowiednie adnotacje co naley
   zrobi z baz danych s w pliku ChangeLog. Tak wic, wejd do katalogu
   w ktrym masz LMS'a i uruchom shell mysql'a:
mysql -u[tutaj wpisz uytkownika z penym dostpem do bazy] -p
Enter password:[podaj haso]
mysql> create database lms;
mysql> grant usage on lms.* to lms@localhost;
mysql> grant select,insert,update,delete,create on lms.* to lms@localhost identified by 'haslo';
mysql> flush privileges;
mysql> use lms;
mysql> source doc/lms.mysql;
     _________________________________________________________________

2.4.1.4. Konfiguracja LMS (lms.ini)

   Poniewa MySQL jest domyln baz dla LMS'u, konfiguracja ogranicza
   si do podania w sekcji [database] pliku /etc/lms/lms.ini hasa i
   uytkownika:
user     = lms
password = haso_z_pkt.3

   Po takim zabiegu, o ile LMS'owi uda si nawiza poczenie do bazy
   danych, mona ju bez problemu dosta si do systemu. Jeeli jednak w
   bazie danych nie ma adnego konta administratora, jedyn rzecz jak
   zobaczysz bdzie formularz dodania administratora. Jeeli podasz
   prawidowe dane administratora, LMS przeniesie Ci na stron logowania
   gdzie od razu bdziesz mg uy nowo utworzonego konta.

   Zatrzymaj si tutaj i dodaj co do crona, tak dla witego spokoju:
12 4 3,10,17,21,28 * * /usr/bin/mysqldump -u lms --password=Twoje-super-tajne-haso \
                    --add-drop-table --add-locks lms > backups/lms-auto-"$(date +%s)".sql

   Spowoduje to wykonywanie o 4:12 rano, kadego 3, 10, 17, 21 i 28 dnia
   miesica automagicznie zrzutu danych z mysqla.
     _________________________________________________________________

2.4.2. PostgreSQL

2.4.2.1. Wstp

   LMS jest testowany na PostgreSQL 7.3.4 i nowszych, ale poniewa adne
   skomplikowane waciwoci tej bazy nie s wykorzystywane, nie powinno
   by problemw z innymi wersjami. Jeeli nie masz zainstalowanego
   serwera PostgreSQL, najlepszym rozwizaniem bdzie wasnorczna
   kompilacja ze rde dostpnych na stronie www.postgresql.org.
     _________________________________________________________________

2.4.2.2. Instalacja

   Jest to wersja skrcona instalacji, wicej informacji znajdziesz w
   dokumentacji postgresa. Po cigniciu i rozpakowaniu wejd do
   katalogu gwnego i wpisz kolejno ponisze polecenia.
$ ./configure --enable-locale
$ gmake
$ su
$ gmake install
$ adduser postgres
$ mkdir /usr/local/pgsql/data
$ chown postgres /usr/local/pgsql/data
$ su - postgres
$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 &
     _________________________________________________________________

2.4.2.3. Utworzenie bazy danych

   Majc uruchomiony serwer moesz przystpi do tworzenia bazy o nazwie
   'lms', ktrej wacicielem bdzie uytkownik z loginem 'lms'.
$ /usr/local/pgsql/bin/createuser -d -A -P lms
$ /usr/local/pgsql/bin/createdb -E LATIN2 -U lms lms
$ /usr/local/pgsql/bin/psql -d lms -U lms -f /lms/doc/lms.pgsql
     _________________________________________________________________

2.4.2.4. Konfiguracja LMS (lms.ini)

   Dla systemu LMS domylnym serwerem baz danych jest MySQL, dlatego w
   sekcji [database] pliku /etc/lms/lms.ini naley ustawi nastpujce
   opcje:
type     = postgres
user     = lms
password = haso_podane_przy_tworzeniu_uytkownika_lms

   Notatka

   Haso jest wymagane w zalenoci od konfiguracji autentykacji
   uytkownikw postgresa w /usr/local/pgsql/data/pg_hba.conf. Domylnie
   haso nie jest wymagane.

   Po takim zabiegu, o ile LMS'owi uda si nawiza poczenie do bazy
   danych, mona ju bez problemu dosta si do systemu. Jeeli jednak w
   bazie danych nie ma adnego konta administratora, jedyn rzecz jak
   zobaczysz bdzie formularz dodania administratora.
     _________________________________________________________________

2.4.3. SQLite

2.4.3.1. Wstp

   Ta jednoplikowa baza jest chwalona za swoj szybko, wg autorw
   okrelan na 2-3 krotnie szybsz od MySQL. Poza tym przy odpowiedniej
   konfiguracji umoliwia wczytanie caej bazy do pamici RAM przez co
   osigany jest znaczny wzrost wydajnoci. Poniej przedstawiono krtki
   opis instalacji. rda mona pobra z www.sqlite.org.

   Na obecn chwil z SQLite nie wsppracuje demon almsd.
     _________________________________________________________________

2.4.3.2. Instalacja SQLite

   Opisano tutaj sposb instalacji bibliotek SQLite oraz dodanie obsugi
   tej bazy do PHP (PHP w wersji 5.0 ma wbudowan obsug SQLite). Po
   rozpakowaniu rde, wejd do katalogu z SQLite i wydaj kolejno
   polecenia (cieki przykadowe):
$ ./configure
$ make
$ make install
$ ldconfig
$ pear download http://pecl.php.net/get/SQLite-1.0.2.tgz
$ pear install SQLite-1.0.2.tgz

   Nastpnie w pliku php.ini ustaw:
extension=sqlite.so

   Istnieje rwnie moliwo wkompilowania obsugi SQLite w PHP przy
   pomocy opcji --with-sqlite.
     _________________________________________________________________

2.4.3.3. Utworzenie bazy danych

   Konieczne to jest jeeli uruchamiasz LMS po raz PIERWSZY. Tak wic,
   wejd do katalogu w ktrym masz LMS'a i uruchom shell sqlite'a:
$ sqlite -init doc/lms.sqlite /usr/local/lms/lms.db
sqlite> .exit
$ chown 99.98 /usr/local/lms/lms
     _________________________________________________________________

2.4.3.4. Konfiguracja LMS (lms.ini)

   Jednym z ogranicze SQLite jest brak autentykacji uytkownikw,
   dlatego konfiguracja ogranicza si do podania typu oraz cieki do
   pliku bazy. W sekcji [database] pliku /etc/lms/lms.ini podajemy:
type     = sqlite
database = /usr/local/lms/lms.db

   Po takim zabiegu, mona ju bez problemu dosta si do systemu. Jeeli
   jednak w bazie danych nie ma adnego konta administratora, jedyn
   rzecz jak zobaczysz bdzie formularz dodania administratora.
     _________________________________________________________________

2.5. Konfiguracja podstawowa

   Gwnym plikiem konfiguracyjnym LMS jest lms.ini, ktry naley
   umieci w katalogu /etc/lms lub w katalogu gwnym LMS'a. Zawiera on
   zmienne konfiguracyjne LMS-UI oraz wszystkich skryptw wykonywalnych z
   wyjtkiem LMS-MGC.

   Notatka

   Pamitaj o usuniciu rednikw na pocztku linii z ustawianym
   parametrem konfiguracyjnym.
     _________________________________________________________________

2.5.1. Sekcja [database] - ustawienia bazy danych

     * type
       Typ bazy danych. Aktualnie w 100% supportowany jest 'mysql', ale
       jak na razie nie wida wikszych problemw z 'postgres' i
       'sqlite'. Domylnie: mysql
       Przykad: type = mysql
     * host
       Host gdzie zainstalowana jest baza danych. Najczciej, localhost,
       ale mona tutaj wstawi cokolwiek (ip, domena, cieka do gniazda
       w formacie 'localhost:/path/to/socket'). Domylnie: localhost
       Przykad: host = localhost
     * user
       Uytkownik do bazy danych. W wielu wypadkach (jeeli postpowae
       zgodnie ze wskazwkami w dokumentacji) bdzie to 'lms'. Jeeli
       chcesz uywa konta uprzywilejowanego, prawdopodobnie wpiszesz
       'root' (MySQL na wikszoci *nixw), 'mysql' (na PLD) bd
       'postgres' (PostgreSQL). Domylnie: mysql
       Przykad: user = lms
     * password
       Haso do bazy danych. Domylnie puste.
       Przykad: password = password
     * database
       Nazwa bazy danych (a w przypadku SQLite cieka do pliku bazy),
       domylnie lms.
       Przykad: database = lms
     _________________________________________________________________

2.5.2. Sekcja [directories] - ustawienia katalogw

     * sys_dir
       Katalog systemowy. Jest to miejsce gdzie jest caa zawarto UI
       LMS'a, czyli index.php, grafiki, templejty i reszta. Domylnie,
       index.php stara si sam odnale w filesystemie uywajc getcwd(),
       ale lepiej by byo gdyby mu powiedzie gdzie jest:
       Przykad: sys_dir = /var/www/htdocs/lms/
     * modules_dir
       Katalog z "moduami" LMS'a. Czyli zawarto katalogu modules.
       Domylnie jest to podkatalog modules w sys_dir.
       Przykad: modules_dir = /usr/share/lms/modules/
     * lib_dir
       Katalog z "bibliotekami" LMS'a. Czyli zawarto katalogu lib.
       Domylnie to podkatalog lib w sys_dir.
       Przykad: lib_dir = /usr/share/lms/lib/
     * backup_dir
       Katalog z kopiami zapasowymi bazy danych - miejsce gdzie LMS
       zapisuje zrzuty z bazy. Domylnie jest to podkatalog 'backups'.
       Przykad: backup_dir = /var/backup/lms/

       Ostrzeenie

   Jeli katalog z kopiami zapasowymi bdzie osigalny z poziomu WWW, to
   kady bez autoryzacji bdzie mia do nich dostp.
     * smarty_dir
       Katalog z bibliotek Smarty - domylnie podkatalog Smarty w
       lib_dir.
       Przykad: smarty_dir = /usr/lib/php/Smarty
     * smarty_compile_dir
       Katalog kompilacji Smartyego. Miejsce gdzie Smarty kompiluje
       szablony. Domylnie to templates_c w katalogu sysdir.
       Przykad: smarty_compile_dir = /var/smarty/compile/lms
     * smarty_templates_dir
       Katalog z szablonami ktrymi Smartiego. Domylnie to podkatalog
       templates z sys_dir'a.
       Przykad: smarty_templates_dir = /usr/share/lms/templates
     _________________________________________________________________

2.5.3. Sekcja [phpui] - ustawienia interfejsu

     * allow_from (opcjonalny)
       Lista sieci i adresw IP ktre maj dostp do LMS. Jeeli puste,
       kady adres IP ma dostp do LMS'a, jeeli wpiszemy tutaj list
       adresw bd klas adresowych, LMS odrzuci bdem HTTP 403 kadego
       niechcianego uytkownika.
       Przykad: allow_from = 192.168.0.0/16, 213.25.209.224/27,
       213.241.77.29
     * timeout
       Timeout sesji www. Po tym czasie (w sekundach) uytkownik zostanie
       wylogowany jeeli nie podejmie adnej akcji. Domylnie 600 sekund.
       Przykad: timeout = 900

       Ostrzeenie

   Nie ma moliwoci ustawienia braku timeoutu. Jeeli ustawisz t
   warto na zero, nie bdziesz mg korzysta z LMS!
     * userlist_pagelimit
       Limit wywietlanych pozycji na stronie w licie uytkownikw.
       Domylnie brak limitu.
       Przykad: userlist_pagelimit = 10
     * nodelist_pagelimit
       Limit wywietlanych pozycji na stronie w licie komputerw.
       Domylnie brak limitu.
       Przykad: nodelist_pagelimit = 10
     * balancelist_pagelimit
       Limit wywietlanych pozycji na stronie na rachunku uytkownika.
       Domylnie: 100.
       Przykad: balancelist_pagelimit = 50
     * invoicelist_pagelimit
       Limit wywietlanych pozycji na stronie w licie faktur. Domylnie:
       100
       Przykad: invoicelist_pagelimit = 50
     * reload_type
       Typ reloadu. Dozwolone wartoci:
       exec - wywoywanie jakiej komendy (najczciej co przez sudo,
       jaki skrypt lub co, konfigurowalny poniej)
       sql - zrobienie wpisw w SQL'u (te mona ustawi konkretne query
       SQL'a)
       Domylna warto to 'sql'.
       Przykad: reload_type = exec
     * reload_execcmd
       Komenda do wykonania podczas reloadu jeeli reload_type jest
       ustawione na 'exec'. Domylnie /bin/true. String ten puszczany do
       komendy system() wic proponuj rozwag i pomylenie co si robi i
       jak :) Generalnie redniki powinny by parsowane przez bash'a, ale
       z paru wzgldw LMS sam dzieli poniszy cig pod wzgldem
       rednikw i wykonuje komendy pojedynczo.
       Przykad: reload_execcmd = "sudo /usr/bin/reload_lms.sh"
     * reload_sqlquery
       Zapytanie SQL wykonywane podczas reloadu, jeli reload_type = sql.
       Domylnie zapytanie wrzuca do tabeli timestamps warto '_force'.
       W zapytaniu mona uy '%TIME%' jako podstawki pod aktualny
       timestamp unixowy. UWAGA! Znak rednika jest traktowany jako
       separator kwerend, tzn. oddzielajc znakiem rednika moesz wpisa
       kilka zapyta SQL.
       Przykad: reload_sqlquery = "INSERT INTO reload VALUES
       ('1','%TIME%')"
     * force_ssl
       Wymuszanie SSL'a. Ustawienie tej zmiennej na 1 spowoduje e LMS
       bdzie wymusza poczenie SSL powodujc redirect do
       'https://'.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI] przy kadej
       prbie dostpu bez SSL. Domylnie wyczone.
       Przykad: force_ssl = 0
     * allow_mac_sharing
       Przyzwolenie na dodawanie rekordw komputerw z adresami MAC ju
       istniejcymi (nie sprawdza czy jaki inny komputer posiada taki
       adres MAC). Domylnie wyczone
       Przykad: allow_mac_sharing = 1
     * smarty_debug
       Wczenie konsoli debugowej Smartyego, przydatne do ledzenia
       wartoci przekazywanych z PHP do Smartyego. Domylnie wyczone.
       Przykad: smarty_debug = 1
     * debug_email
       Adres e-mail do debugowania - pod ten adres bd szy wiadomoci
       wysyane z sekcji 'Mailing' LMS'a, zamiast do waciwych
       uytkownikw.
       Przykad: debug_email = root@localhost
     * default_zip, default_city, default_address
       Domylny kod pocztowy, miasto, ulica, stosowane podczas wstawiania
       nowego uytkownika. Przydatne gdy mamy do wpisania wielu
       uytkownikw z tej samej ulicy.
       Przykad: default_zip = 39-300
     * use_current_payday
       Okrela, czy ma by uyty aktualny dzie miesica jako dzie
       zapaty zamiast najczciej uywanego. Domylnie wyczone.
       Przykad: use_current_payday = 1
     _________________________________________________________________

2.6. Prawa dostpu

2.6.1. Idea

   LMS ma moliwo zdefiniowania do 256 regu dostpu do systemu. Kada
   z nich moe zabrania, bd pozwala na dostp do konkretnych moduw.
   Kademu administratorowi mona przydzieli dowoln kombinacj regu
   dostpu.

   Domylnie zdefiniowanych jest osiem regu dostpu.
     * peen dostp
     * odczyt wszystkich danych
     * podczanie i odczanie komputerw
     * manipulowanie finansami
     * przeadowywanie konfiguracji
     * manipulowanie danymi uytkownikw
     * manipulowanie danymi komputerw
     * dostp do statystyk
     * dostp do korespondencji seryjnej
     * brak dostpu do modyfikacji i zakadania kont administratorw
     * brak dostpu

   Siedem z nich zezwala na dostp do moduw oraz jedna zabrania. Moduy
   do ktrych administrator ma zawsze dostp to: welcome, copyrights,
   logout, chpasswd (przy czym chpasswd umoliwia tylko zmian wasnego
   hasa), dostp do reszty jest zdefiniowany reguami.
   Notatka

   Jeli nie ustawimy administratorowi adnej reguy dostpu, to LMS
   domylnie przydzieli mu reguk 0, czyli peen dostp.
     _________________________________________________________________

2.6.2. Jak to dziaa?

   Decyzja czy uytkownik ma prawo dostpu do moduu czy nie przebiega
   nastpujco:
   - najpierw sprawdzana jest lista moduw, do ktrych zawsze ma si
   dostp,
   - potem nastpuje sprawdzenie czy modu pasuje do regu w
   poszczeglnych poziomach, do ktrych administrator ma dostp,
   - na kocu podejmowana jest decyzja czy uytkownik ma uprawnienia by
   do moduu si dobra. Jeeli modu si zaapa na ktrykolwiek poziom,
   ktry zabrania dostpu, dostp zostanie zabroniony nawet jeeli
   administrator ma ustawiony poziom, ktry pozwala na dostp do moduu
   (np. kto ma peny dostp oraz brak dostpu do moduu dodawania
   komputerw, nie bdzie on mg si odwoa do tego moduu). Jeeli
   modu pasuje do poziomu, ktry pozwala na dostp do danego moduu LMS
   zezwala na dalsz prac. Jeeli natomiast modu si nie "zaapa" na
   aden poziom rwnie zostanie mu wywietlony komunikat o braku
   dostpu.
     _________________________________________________________________

2.7. Upgrade

   Uaktualnienie LMS'a przebiega w dwch etapach. Najpierw utwrz katalog
   z plikami nowej wersji (nie zaleca si nadpisywania starych plikw
   nowymi), nastpnie trzeba dokona zmian w bazie.

   Dla uatwienia migracji danych w katalogu /doc przygotowano pliki
   UPGRADE-1.0-1.3.mysql i UPGRADE-1.0-1.3.pgsql dla przejcia od wersji
   1.0 do wersji 1.3 oraz UPGRADE-1.2-1.3.mysql i UPGRADE-1.2-1.3.pgsql
   przy migracji od wersji 1.2 do biecej. W nich znajdziesz krtki opis
   jak przeprowadzi aktualizacj w zalenoci od stosowanej bazy danych.

   Notatka

   W wersjach wyszych od 1.0.x biblioteka ADOdb nie jest wymagana, mona
   skasowa odpowiedni katalog z katalogu /lib
     _________________________________________________________________

Rozdzia 3. Interfejs Uytkownika (LMS-UI)

   LMS'owy Interfejs Uytkownika to panel administracyjny do tworzenia i
   zarzdzania baz uytkownikw i komputerw dostpny za pomoc
   przegldarki internetowej. Umoliwia wprowadzanie danych komputerw,
   przypisanie ich do uytkownikw i sieci. Definiowanie opat i
   zarzdzanie finansami sieci, Szybkie wyszukiwanie danych o
   uytkownikach i ich sprzcie. Sporzdzanie korespondencji seryjnej do
   uytkownikw, definiowanie praw dostpu dla administratorw i ich
   hase. Ponadto daje moliwo przegldania statystyk wykorzystania
   cza, a take tworzenia kopii bazy danych oraz zarzdzania
   konfiguracj usug na serwerze . LMS-UI posiada take wiele innych
   moliwoci, ktre w tym rozdziale zostan opisane.
     _________________________________________________________________

3.1. Logowanie

   Po wpisaniu w przegldarce adresu do strony z lms'em, powita ci ekran
   logowania. Musisz poda waciwy login oraz haso. Hasa w bazie
   danych przechowywane s w formie zaszyfrowanej.

   Jeeli jest to twoje pierwsze logowanie i nie masz jeszcze zaoonego
   konta, zostaniesz przekierowany do moduu tworzenia kont
   administratorw. W tym momencie bdziesz mia tylko dostp do tego
   jednego moduu.
     _________________________________________________________________

3.2. Praca z LMS-UI

   Po zalogowaniu do LMS'a zobaczysz panel powitalny, na ktrym znajduj
   si podstawowe informacje na temat naszego systemu: wersj LMS i jego
   skadnikw, wersj jdra i uptime serwera, ilo uytkownikw i
   komputerw w bazie oraz ich stan (podczony/odczony), liczb
   zaduonych i kwota oraz przydatne lms'owe linki.

   Z menu po lewej stronie wybierasz interesujcy ci modu. Moesz
   rwnie dokona zmiany hasa, wylogowa si lub szybko przej do
   informacji o uytkowniku i komputerze podajc ich numery.
     _________________________________________________________________

3.2.1. Uytkownicy

   Po wejciu do panelu 'Uytkownicy' ukae si lista uytkownikw, ktr
   moesz filtrowa wedug wybranych kryteriw lub sortowa klikajc na
   nazwie kolumny.

   Kliknicie na wybranym uytkowniku spowoduje przejcie do panelu z
   informacjami szczegowymi o nim i przypisanych mu komputerach,
   taryfach oraz operacjach finansowych. Tam te moesz modyfikowa dane
   uytkownika, definiowa opaty abonamentowe i zaksigowa wpat lub
   obcienie jego rachunku.

   W menu znajdujcym si u gry okna masz do wyboru opcje:
     * Lista - Wywietlenie listy uytkownikw, tej ktra pokazuje si po
       wejciu do panelu 'Uytkownicy'.
     * Odczeni - Wywietlenie listy uytkownikw odczonych.
     * Zadueni - Wywietlenie listy uytkownikw zaduonych.
     * Nowy - Dodawanie nowego uytkownika.
     * Szukaj - Wyszukiwanie uytkownikw wg zadanych kryteriw.
     * Wydruki - Listy oraz bilansy uytkownikw, w formacie przyjaznym
       dla drukarki z moliwoci definiowania filtrw i sortowania

   Ikona arwki suy do zmiany statusu (podczony/odczony)
   wszystkich komputerw przypisanych danemu uytkownikowi.

   Notatka

   Do automatycznego odczania komputerw uytkownikw, ktrych bilans
   jest poniej zadanej wartoci suy skrypt lms-cutoff.
     _________________________________________________________________

3.2.2. Komputery

   Panel ten suy do zarzdzania komputerami i umoliwia: przegldanie
   listy komputerw, wyszukiwania komputerw o danej nazwie, IP lub
   MAC'u, dodawanie nowych lub usuwanie ju wpisanych do bazy komputerw,
   a take podgld i zmian informacji o nich. Zmiany statusu komputera
   'wczony/wyczony' dokonuje si klikniciem na ikon arwki w
   odpowiedniej linii.

   Grne menu udostpnia nastpujce moduy:
     * Lista - Wywietlenie listy komputerw, tej ktra pokazuje si po
       wejciu do panelu 'Komputery'. List mona sortowa klikajc na
       nazwie kolumny.
     * Nowy - Dodawanie nowego komputera.

   Notatka

   Aby wyszuka komputery w swojej sieci moesz skorzysta z programu
   nbtscan. Jeli jest on zainstalowany w systemie, po naciniciu
   'Skanuj' zobaczysz list znalezionych komputerw.

       Notatka

   Aby doda komputer musisz mie sie i uytkownika, ktrym go
   przypiszesz.
     * Szukaj - Wyszukiwanie komputerw wedug zadanych kryteriw.
     * Wydruki - Wywietlenie list komputerw, w formacie przyjaznym dla
       drukarki z moliwoci definiowania filtrw i sortowania.
     _________________________________________________________________

3.2.3. Osprzt sieciowy

   W panelu przeznaczonym do ewidencji sprztu mona przeglda list
   urzdze sieciowych, zawierajc ich nazwy i symbole, pooenie i
   opis, a ponadto ilo dostpnych portw. Kliknicie na wybranym
   urzdzeniu spowoduje wywietlenie informacji szczegowych o nim.
   Moliwe jest definiowanie pocze urzdze i komputerw oraz
   generowanie graficznej mapy caej sieci.

   W tym panelu moesz skorzysta z menu:
     * Lista - Wywietlenie listy urzdze, tej ktra pokazuje si po
       wejciu do panelu 'Urzdzenia sieciowe'. List mona sortowa
       klikajc na nazwie kolumny.
     * Nowe - Dodawanie nowego urzdzenia.
     * Mapa - Generowanie mapy sieci (pocze sieciowych). Moesz
       zdefiniowa ktre urzdzenie jest nadrzdne w stosunku do
       pozostaych.
     _________________________________________________________________

3.2.4. Sieci IP

   Tutaj definiujesz dane swojej sieci tj. klas adresow, domen, DNS'y,
   bram, zakres DHCP. Na licie dostpna jest rwnie ilo zajtych i
   dostpnych adresw. Jeeli LMS suy ci do zarzdzania wieloma
   sieciami lub dzielisz jedn sie na podsieci, albo korzystasz z
   rnych klas adresowych tutaj jest to moliwe.

   Modyfikowanie waciwoci sieci nastpuje w module dostpnym po
   wybraniu sieci z listy lub bezporednio po klikniciu ikony 'Edytuj'.
   Menu udostpnia dwie opcje:
     * Lista - Wywietlenie listy sieci. tej ktra pokazuje si po
       wejciu do panelu 'Sieci IP'.
     * Nowa sie - Dodawanie sieci.
     _________________________________________________________________

3.2.5. Taryfy i Finanse

   Jest to waciwie wiele moduw umoliwiajcych zarzdzanie finansami
   sieci.

   Masz moliwo definiowania taryf abonamentowych, opat (zlece)
   staych, ksigowania operacji finansowych, przegldanie bilansu i
   historii rachunku oraz sporzdzanie faktur. A oto wszystkie dostpne
   moduy:
     * Lista taryf - Wywietlenie listy taryf. tej ktra pokazuje si po
       wejciu do panelu 'Taryfy i finanse'. Klikajc wybran taryf na
       licie zostaniesz przeniesiony do moduu 'Informacje o taryfie',
       gdzie moesz edytowa jej parametry lub zamienia uytkownikom
       taryfy.
     * Nowa taryfa - Definiowanie nowej taryfy.
     * Lista opat - Wywietlenie listy opat. Klikajc wybran opat na
       licie zostaniesz przeniesiony do moduu 'Informacje o opacie',
       gdzie moesz edytowa jej parametry lub zaksigowa dan opat w
       bazie operacji finansowych.
     * Nowa opata - Definiowanie nowej opaty staej.
     * Bilans finansowy - Historia operacji finansowych z podsumowaniem
       przychodu, rozchodu, wpat i zobowiza uytkownikw.
     * Nowa operacja - Wprowadzanie nowych operacji finansowych. Moliwe
       jest zaksigowanie tej samej wpaty lub obcienia wielu
       uytkownikom rwnoczenie.

   Notatka

   Do naliczania staych opat abonamentowych najlepiej wykorzystywa
   skrypt lms-payments lub demona almsd, ktre potrafi rwnoczenie
   wystawia faktury.
     * Lista faktur - lista wystawionych faktur z moliwoci wydruku
       wybranych faktur oraz rejestru sprzeday za dany okres.
     * Nowa faktura - Rczne wystawianie faktur dla wybranego
       uytkownika.
     * Wydruki - wydruk rnych zestawie finansowych.
     _________________________________________________________________

3.2.6. Mailing

   Mailing, czyli Korespondencja Seryjna umoliwia wysyanie wiadomoci
   do grupy uytkownikw twojej sieci. Podajesz dane nadawcy, tre
   wiadomoci oraz wybierasz grup do ktrej zostanie wysany e-mail.

   Notatka

   Serwer musi by odpowiednio skonfigurowany do uycia funkcji mail().
   Notatka

   Do automatycznego wysyania upomnie do uytkownikw zalegajcych z
   opatami mona wykorzysta skrypt lms-notify lub moduy notify i
   ggnotify demona almsd.
     _________________________________________________________________

3.2.7. Przeadowanie

   Kliknicie na menu 'Przeadowanie' spowoduje przeadowanie
   konfiguracji i usug zdefiniowanych dla generatora plikw
   konfiguracyjnych LMS-MGC lub demona almsd. Wicej informacji
   znajdziesz w rozdziaach dotyczcych LMS-MGC oraz demona.
     _________________________________________________________________

3.2.8. Bazy danych

   Z panelu 'Bazy danych' moesz zarzdza kopiami awaryjnymi danych z
   bazy lms'a. Kopia bazy to plik tekstowy z zawartoci wszystkich tabel
   w bazie, zapisywany w katalogu zdefiniowanym w sekcji [directories]
   lms.ini zmienn backup_dir.

   Notatka

   Domylnie kopie zapisywane s w katalogu lms/backups dostpnym przez
   przegldark, dlatego dobrze byo by przenie go w inne miejsce.

   Sporzdzone kopie mona w kadej chwili przeglda, usuwa lub
   zapisywa na lokalnym dysku.
     _________________________________________________________________

3.2.9. Administratorzy

   Panel 'Administratorzy' suy do zarzdzania kontami administratorw,
   zmiany hase oraz definiowania praw dostpu. Na pierwszym widoku jest
   lista administratorw z datami ostatniego logowania. Kliknicie na
   pozycji z listy spowoduje wywietlenie informacji szczegowych o
   danym koncie, w tym o zdefiniowanych prawach dostpu. W kadej chwili
   moliwa jest zmiana danych i uprawnie za pomoc przycisku 'Edytuj'.
   Aby zaoy nowe konto administratora skorzystaj z grnego menu
   'Nowy'.
     _________________________________________________________________

3.2.10. Statystyki

   Interfejs do przegldania statystyk wykorzystania cza w postaci
   prostych wykresw jest dostpny w menu 'Statystyki'. Przed
   wygenerowaniem wykresu moesz zdefiniowa parametry okrelajce okres
   jaki ma by brany pod uwag, ograniczy do jednej sieci (jeli masz
   ich wicej), iloci komputerw oraz posortowa odpowiednio wyniki (na
   przykad wedug downloadu). Korzystajc z grnego menu moesz szybko
   wygenerowa statystyki z ostatniej godziny, ostatniego dnia, ostatnich
   30 dni lub ostatniego roku.

   Notatka

   Zapisem danych do bazy zajmuje si skrypt lms-traffic, albo demon
   almsd.

   W zalenoci od wybranej przez uytkownika czstotliwoci zapisu, moe
   nastpi szybki przyrost danych w bazie, co spowoduje zwikszenie
   czasu oczekiwania na rysowanie wykresw. Z tego powodu w oknie
   'Kompaktowanie bazy danych' udostpniono moliwo zmniejszenia
   rozmiarw bazy bez utraty danych. Wybierajc poziom dokadnoci
   danych, dane zostan urednione w nastpujcy sposb:
     * Poziom Niski: dane z poprzedniego dnia i starsze, zostan
       urednione do jednego dnia, czyli jeli do bazy zapisywane byy z
       czstotliwoci 10 minut, to 6*24 wpisw zostanie zastpione
       jednym.
     * Poziom redni: dane starsze ni miesic zostan urednione do
       jednego dnia.
     * Poziom Wysoki: dane starsze ni miesic zostan urednione do
       jednej godziny.

   Ostrzeenie

   Kompaktowanie bazy danych jest procesem nieodwracalnym.

   Menu panelu 'Statystyki' obejmuje:
     * Filtr - gwne okno do wprowadzania parametrw wykresw oraz do
       kompaktowania bazy danych.
     * Ostatnia godzina - statystyki z ostatniej godziny dla wszystkich
       sieci.
     * Ostatni dzie - statystyki z ostatniego dnia dla wszystkich sieci.
     * Ostatnie 30 dni - statystyki z ostatnich 30 dni dla wszystkich
       sieci.
     * Ostatni rok - statystyki z ostatnich 365 dni dla wszystkich sieci.
     _________________________________________________________________

3.3. Dodatki

3.3.1. Faktury

   LMS umoliwia wystawianie faktur automatycznie i rcznie. Rczne
   wystawienie dowolnej faktury jest moliwe z menu 'Nowa faktura' w
   panelu 'Taryfy i finanse'. Automatyczne wystawianie faktur wymaga
   wczenia tej opcji podczas przypisywania taryf uytkownikom. W takim
   wypadku zapisem faktur do bazy zajmuje si skrypt lms-payments lub
   demon almsd

   Do poprawnego dziaania i tworzenia wydrukw wymagane jest ustawienie
   podstawowych opcji w sekcji [invoices] lms.ini:
     * number_template
       Wzorzec numeru faktury. Dostpne zmienne wzorca to: '%N' - numer
       kolejny w roku, '%M' - miesic wystawienia, '%Y' - rok
       wystawienia. Domylnie: %N/LMS/%Y
       Przykad: number_template = %N/%Y
     * header
       Dane sprzedawcy. Domylnie: pusty. Mona uy cigu "\n" aby
       oddzieli linie od siebie.
       Przykad: header = "SuperNet ISP\nul.Nowa 15\n12-000 Wchock\n"
     * footer
       Stopka faktury - np. dane sprzedawcy. Domylnie: pusta. Stopka
       zostanie umieszczona na dole faktury, ma czcionk. Podobnie jak
       i w przypadku opcji header, mona uy cigu "\n" aby oddzieli
       linie od siebie.
       Przykad: footer = "Blokowa Sie Komputerowa K-27 w Mielcu,
       tel.555-23-23, bla bla"
     * default_author
       Domylna osoba wystawiajca faktur. Domylnie: puste
       Przykad: default_author = "specjalista d/s fakturowania"

   Ponadto dostpne s zmienne:
     * cplace
       Miejsce wystawienia faktury. Domylnie: puste.
       Przykad: cplace = Warszawa
     * template_file
       Szablon faktury, ktry powinien znajdowa si w katalogu
       templates. Domylnie: invoice.html.
       Przykad: template_file = invoice-mynet.html
     * content_type
       Content-type dla faktury. Jeeli wpiszesz tutaj
       'application/octet-stream' to przegldarka zechce wysa plik do
       zapisania na dysku, zamiast go wywietli. Przydatne jeli uywasz
       wasnego templejta, ktry wygeneruje np.rtf'a lub xls'a.
       Domylnie: 'text/html; charset=iso-8859-2'
       Przykad: content_type = application/octet-stream
     * attachment_name
       Mona poda nazw pliku, jako ktry ma zosta zapisany gotowy
       wydruk. Domylnie: pusta.
       Przykad: attachment_name = faktura.xls

   Wygenerowane faktury mona obejrze w dwojaki sposb: albo poprzez
   ikonk drukarki na wykazie bilansu finansowego (oglnego bd
   pojedynczego uytkownika), albo poprzez 'Lista faktur' z menu 'Taryfy
   i finanse'. W przypadku listy faktur, moliwe jest take filtrowanie
   faktur do wydruku. Wynikowy dokument HTML zawiera oryginay i kopie,
   ktre s oddzielone znacznikami podziau strony poprzez CSS. Tak wic
   kada nowoczesna przegldarka zgodna z CSS powinna bezproblemowo
   drukowa faktury adnie podzielone na strony. Funkcja ta bya
   testowana na przegldarkach Microsoft Internet Explorer 6.0, Opera
   7.02 oraz Mozilla 1.3.

   Notatka

   Praktycznie kada przegldarka internetowa ma moliwo konfiguracji
   wydruku, gdzie mona wyczy funkcje takie jak drukowanie stopki i
   nagwka, czy te adresu na wydruku.
   Ostrzeenie

   W bazie danych zapisywane s kwoty brutto.
     _________________________________________________________________

3.3.2. "Moje konto"

   W katalogu contrib/customer znajduje si przykad rozwizania, dziki
   ktremu kady uytkownik twojej sieci moe sprawdzi wasny bilans
   finansowy.

   Skrypt sprawdza spod jakiego adresu jest danie i wywietla bilans i
   informacje o uytkowniku, ktry jest wacicielem komputera o tym
   adresie. Pliki naley skopiowa w dowolne miejsce i wystawi pod
   adresem dostpnym dla kadego uytkownika, a nastpnie ustawi
   poprawn ciek do lms.ini w pliku index.php.
     _________________________________________________________________

3.3.3. Panel SQL

3.3.3.1. Wstp

   W katalogu contrib/sqlpanel znajdziesz modu, dziki ktremu bdziesz
   mia moliwo bezporedniego dostpu do bazy danych poprzez zadawanie
   zapyta SQL. Wyniki wywietlane s w formie tabeli. Ponadto podawany
   jest czas wykonania zapytania.
     _________________________________________________________________

3.3.3.2. Instalacja

   Instalacja polega na skopiowaniu plikw w odpowiednie miejsca w
   drzewie katalogw lms'a. Plik sql.php skopiuj do katalogu modules, a
   pliki sql.html i adminheader.html do katalogu templates. Po tej
   czynnoci dostp do moduu bdzie moliwy z menu Administratorzy->SQL.
     _________________________________________________________________

Rozdzia 4. Skrypty

4.1. Instalacja

   Jeli chcesz ustawi konfiguracj ktrego ze skryptw, robi si to w
   odpowiedniej sekcji lms.ini. Same skrypty przenie z katalogu
   /lms/bin/ do katalogu /usr/sbin. Po przeniesieniu musisz je jeszcze
   dopisa do crontaba tak, aby byy uruchamiane automatycznie, wanie
   wtedy kiedy tego chcesz.

   Przykadowo, wpis w crontabie dla skryptu lms-payments (wykonywanego
   codziennie o godzinie 00:01) powinien wyglda nastpujco:
1 0 * * *       /usr/sbin/lms-payments 1 > /dev/null

   Po wicej informacji moesz sign do man crontab

   Wikszo lms'owych skryptw posiada dodatkowe opcje uruchomieniowe:
-C plik     pooenie i nazwa alternatywnego pliku lms.ini, domylnie /etc/lms/lms.ini
-q          wykonanie skryptu bez wywietlania komunikatw
-h          pomoc (a w zasadzie to tylko listing opcji)
-v          informacja o wersji skryptu
     _________________________________________________________________

4.2. Lista dostpnych skryptw

   Tabela 4-1. Lista skryptw wykonywalnych
   Nazwa Opis
   lms-notify Korespondencja seryjna do uytkownikw sieci
   lms-notify-sms Powiadamianie o zalegociach sms'em
   lms-cutoff Odczanie uytkownikw zaduonych
   lms-etherdesc Generowanie pliku dla iptraf zawierajcego pary MAC
   adres - nazwa hosta
   lms-payments Naliczanie opat okresowych (abonamentowych) z
   fakturowaniem
   lms-traffic Zapis statystyk wykorzystania cza
   lms-traffic-logiptables Wsppraca lms-traffic z iptables
   lms-makearp Tworzenie tablicy ARP (/etc/ethers)
   lms-makedhcpconf Konfiguracja serwera DHCP(/etc/dhcpd.conf)
   lms-makeiptables Konfiguracja firewalla iptables
   lms-makeipchains Konfiguracja firewalla ipchains
   lms-makeiodenconf Konfiguracja oident
   lms-makeopenbsdpf Konfiguracja firewalla dla systemu OpenBSD
   lms-sendinvoices Wysyanie faktur do uytkownikw
   lms-updatewarnings Ostrzeenia dla uytkownikw zaduonych
     _________________________________________________________________

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 pieniki. Pozwala on na napisanie
   kilku[-nastu] plikw tekstowych (w iso-8859-2) i traktowania ich jako
   szablonw do mailingu.
     _________________________________________________________________

4.3.1.1. Szablony

   W szablonach mona uywa nastpujcych zmiennych:
     * %date-m - zostanie zastpione aktualnym miesicem, liczc od 1
       poprzedzone 0, np. 02
     * %date-y - zostanie zastpione aktualnym rokiem, np 2003
     * %saldo - zostanie zastpione aktualnym saldem uytkownika, np. 535
     * %abonament - zostanie zastpione kwot abonamentu jaka jest do
       danego uytkownika przypisana, np. 107
     * %b - saldo z zanegowanym znakiem, np. 107
     * %B - saldo z prawdziwym znakiem, np. -107
     * %last_10_in_a_table - wycig ostatnich 10 operacji kasowych na
       koncie uytkownika, np:

   Przykad 4-1. Lms-notify: Przykadowy wycig 10 ostatnich operacji
   kasowych
Data       | Opis                                                 | Warto
-----------+------------------------------------------------------+---------
2003-02-02 | Abonament za miesic 2003/02                         |  107.00
2003-02-01 | Wpata                                               | -107.00
2003-02-01 | Abonament za miesic 2003/02                         |  107.00
2003-02-01 | Wpata                                               | -321.00
2003-01-31 | Abonament za miesic 2003/01                         |  107.00
2003-01-31 | Abonament za miesic 2003/01                         |  107.00
2003-01-31 | Abonament za miesic 2003/01                         |  107.00
-----------+------------------------------------------------------+---------

   Przykad 4-2. Lms-notify: Przykad szablonu
UWAGA! Ta wiadomo zostaa wygenerowana automatycznie.

Uprzejmie informujemy i na Pani/Pana koncie figuruje zalego w opatach za
internet w wysokoci %B z.

Jeeli porozumieli si ju Pastwo z administratorami w kwestii opaty za
biecy miesic czyli %date-m %date-y roku, prosimy o
zignorowanie tej wiadomoci.

W wypadku gdy uwaaj Pastwo i zalego ta jest nieporozumieniem prosimy o
jak najszybszy kontakt.

Wszelkie informacje na temat Pastwa rozlicze mog Pastwo znale pod
adresem http://www.naszasiec.pl/mojekonto/

Jeeli chcieliby Pastwo uregulowa zalegoci prosimy o kontakt:

Dzia Rozlicze ASK NaszaSiec

Gerwazy Regua
telefon: 0-509031337
e-mail: gerwazy@staff.naszasiec.pl

Gwidon Mniejwany
telefon: 0-606666666
e-mail: gwidonm@naszasiec.pl

ps. zaczamy ostatnie 10 operacji jakie zostao zarejestrowane przez nasz
system bilingowy na Pastwa koncie:

kwota operacji | typ operacji | data

%last_10_in_a_table

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

4.3.1.2. Konfiguracja

   Konfiguracj dla lms-notify mona ustali w pliku lms.ini w sekcji
   [notify]. Moesz tam ustawi nastpujce parametry:
     * limit (opcjonalny)
       Pozwala na ustalenie limitu bilansu, poniej ktrego do
       uytkownika zostanie wysany e-mail z upomnieniem. Domylnie limit
       = 0
       Przykad: limit = -20
     * mailsubject (wymagany)
       Pozwala na ustalenie tematu e-maila wysyanego do uytkownika.
       Mona uywa podstawie znanych z szablonw (%B, %b, %date-y,
       %date-m, %last_10_in_a_table). Domylnie: nie ustawione.
       Przykad: mailsubject = Informacje o zalegociach w opatach za
       internet
     * mailtemplate (wymagany)
       Pozwala na wskazanie szablonu wiadomoci, ktra zostanie wysana
       do uytkownika. Wicej o szablonach tutaj. Domylnie: nie
       ustawione.
       Przykad: mailtemplate = /etc/lms/notifytemplate.txt
     * mailfrom
       Adres e-mail z ktrego zostanie wysany e-mail. Prosz pamita,
       e na niektrych MTA (np. exim) konto to musi istnie w systemie.
       Domylnie nieustawione
       Przykad: mailfrom = staff@domain.pl
     * mailfname
       Nazwa nadawcy maila
       Przykad: mailfname = Administratorzy
     * smtp_server
       Serwer SMTP, przez ktry ma zosta wysana wiadomo. Domylnie:
       127.0.0.1
       Przykad: smtp_server = smtp.mydomain.pl
     * debug_email (opcjonalny)
       Adres e-mail do debugowania. Gdy ustawiony, caa poczta zostaje
       wysana na dany email zamiast do uytkownikw. Przydatne do
       debugowania i sprawdzania czy wszystko dziaa OK. Domylnie: nie
       ustawiony.
       Przykad: debug_email = lexx@domain.pl
     _________________________________________________________________

4.3.2. lms-notify-sms

   lms-notify-sms to odpowiednik lms-notify, sucy do wysyania smsw.
   Do wysyania wiadomoci potrzebna jest komrka Nokii oraz
   oprogramowanie, ktre naley pobra z (www.gnokii.org) i zainstalowa
   w systemie.

   Konfiguracj dla lms-notify-sms mona ustali w pliku lms.ini w sekcji
   [notify-sms], a masz do dyspozycji nastpujce opcje:
     * limit (opcjonalny)
       Pozwala na ustalenie limitu bilansu poniej ktrego do uytkownika
       zostanie wysany sms z upomnieniem. Domylnie: 0
       Przykad: limit = -20
     * smstemplate (wymagany)
       Szablon wiadomoci. Domylnie: nie ustawione.
       Przykad: smstemplate = /etc/lms/smstemplate.txt
     _________________________________________________________________

4.3.3. lms-cutoff

   Skrypt pozwala na odczenie (a raczej zmian w bazie danych stanu
   komputerw na wyczony) uytkownikw ktrych bilans jest poniej
   zadanej wartoci. Waciwe odczanie powinno by realizowane przez
   generator plikw konfiguracyjnych.

   Konfiguracj dla lms-cutoff moemy ustali w pliku lms.ini w sekcji
   [cutoff]. Moemy tam ustawi nastpujce parametry:
     * limit (opcjonalny)
       Pozwala na ustalenie limitu bilansu poniej ktrego do bazy danych
       zostanie zapisany stan odczony. Domylnie: 0
       Przykad: limit = -20
     _________________________________________________________________

4.3.4. lms-payments

   Skrypt sucy do naliczania opat abonamentowych przypisanych
   uytkownikom oraz opat staych. Ponadto zapisuje dane do faktur. Aby
   dziaa poprawnie powinien by uruchamiany codziennie.

   Skrypt ten udostpnia dwie opcje do fakturowania, ktre mona ustawi
   w sekcji [payments] pliku lms.ini:
     * deadline (opcjonalny)
       Pozwala na ustalenie terminu patnoci w dniach. Domylnie: 14
       Przykad: deadline = 7
     * paytype (opcjonalny)
       Okrela rodzaj patnoci. Domylnie: 'PRZELEW'
       Przykad: paytype = 'GOTWKA'
     _________________________________________________________________

4.3.5. lms-traffic

   Skrypt suy do logowania informacji o iloci danych pobranych i
   wysanych przez kady komputer w sieci lokalnej. W bazie danych
   zapisywana jest ilo danych w bajtach, numer komputera z bazy lms i
   znacznik czasu. Od uytkownika zaley w jakich odstpach dane bd
   odczytywane. Poniewa dane odczytywane s z pliku utworzonego przez
   uytkownika, nie ma znaczenia z jakiego rda pochodz, moe to by
   iptables, ipchains lub program zewntrzny np. ipfm.

   Przegldanie wykresw wykorzystania cza oraz definiowanie filtrw
   dostpne jest z gwnego menu 'Statystyki'.
     _________________________________________________________________

4.3.5.1. Instalacja

   Przed uruchomieniem lms-traffic naley zadba o utworzenie pliku z
   danymi. Zawarto pliku powinna mie nastpujcy format:
<adres IP> <n_spacji> <upload> <n_spacji> <download>
<adres IP> <n_spacji> <upload> <n_spacji> <download>
...

   Skrypt tworzcy statystyki naley uruchamia z tak sam
   czstotliwoci co lms-traffic.

   Notatka

   Przykad takiego skryptu dla iptables znajduje si w pliku
   /sample/traffic_ipt.sh.

   Nastpnie instalujemy skrypt dopisujc do crontaba. Oprcz
   standardowych opcji wiersza polece moliwe jest zdefiniowanie
   lokalizacji pliku z logiem
-f=/plik        pooenie i nazwa pliku ze statystykami domylnie /var/log/traffic.log

   Ostrzeenie

   Czstotliwo zapisywania danych do bazy ustala uytkownik. Ustawienie
   jej poniej 10 minut, moe spowodowa szybki przyrost iloci rekordw
   w bazie danych, a co za tym idzie zwikszy czas oczekiwania na
   wywietlenie wynikw.
     _________________________________________________________________

4.3.6. lms-traffic-logiptables

   Skrypt suy do logowania informacji o iloci danych pobranych i
   wysanych przez kady komputer z sieci lokalnej, na podstawie
   licznikw iptables. Dane sczytuje z firewalla, tworzc jednoczenie
   odpowiednie reguy. Zatem, nie jest konieczne rczne tworzenie regu
   iptables. Dane zapisywane s do pliku o formacie wymaganym przez
   lms-traffic.

   Konfiguracj naley umieci w sekcji [traffic-logiptables]:
     * logfile
       Lokalizacja pliku na dane. Domylnie: niezdefiniowana.
       Przykad: logfile = /var/log/traffic.log
     * outfile
       Lokalizacja skryptu z reguami iptables. Domylnie:
       /etc/rc.d/rc.stat
       Przykad: outfile = /etc/rc.d/rc.stat
     * iptables_binary
       Lokalizacja programu iptables. Domylnie: /usr/sbin/iptables
       Przykad: iptables_binary = /usr/local/sbin/iptables
     * wan_interfaces
       Nazwy interfejsw, na ktrych dane maj by zliczane. Domylnie:
       niezdefiniowane.
       Przykad: wan_interfaces = eth0
     * local_ports
       Lista portw (rdowych i docelowych) dla zliczanych pakietw.
       Domylnie: niezdefiniowane.
       Przykad: local_ports = 80
     * script_owneruid
       UID waciciela skryptu okrelonego w 'outfile'. Domylnie: 0
       (root).
       Przykad: script_owneruid = 0
     * script_ownergid
       GID waciciela skryptu okrelonego w 'outfile'. Domylnie: 0
       (root).
       Przykad: script_ownergid = 0
     * script_permission
       Uprawnienia skryptu okrelonego w 'outfile'. Domylnie: 700
       (rwx------).
       Przykad: script_permission = 700
     _________________________________________________________________

4.3.7. lms-makeiptables, lms-makeipchains

   Para skryptw sucych do generowania plikw zawierajcych reguy
   firewalla. Do utworzonego pliku moesz doczy inne wczeniej
   utworzone pliki, a w kocu nada mu odpowiednie uprawnienia. Skrypty
   nie uruchamiaj wygenerowanych plikw.

   Konfiguracj dla tych skryptw moesz ustali w pliku lms.ini w sekcji
   [iptables] (i odpowiednio [ipchains]). Oba skrypty posiadaj te same
   opcje:
     * networks
       Lista nazw sieci (oddzielonych spacjami), ktre maj by
       uwzgldnione podczas generowania pliku firewalla. Jeli nie
       ustawiono, zostanie stworzony konfig dla wszystkich sieci.
       Przykad: networks = public-custa public-custb
     * iptables_binary (ipchains_binary)
       Lokalizacja programu iptables (ipchains). Domylnie:
       /usr/sbin/iptables (/usr/sbin/ipchains)
       Przykad: iptables_binary = /usr/local/sbin/iptables
     * script_file
       Plik, do ktrego zapisujemy reguy firwalla. Domylnie:
       /etc/rc.d/rc.masq
       Przykad: script_file = /etc/rc.d/rc.firewall
     * pre_script
       Plik wykonywany PO wyczyszczeniu reguek, ale PRZED ustawieniem
       nowych. Domylnie: niezdefiniowany.
       Przykad: pre_script = /etc/rc.d/rc.masq-pre
     * post_script
       Plik wykonywany PO ustawieniu reguek. Domylnie: niezdefiniowany.
       Przykad: post_script = /etc/rc.d/rc.masq-post
     * forward_to
       Lista sieci, dla ktrych wczamy forwarding. Moliwe wartoci: ""
       - peny forward, "dowolny cig" - wycz forward, "siec1 siec2" -
       lista sieci z wczonym forwardingiem. Domylnie: peny forward.
       Przykad: forward_to = public-custa public-custb
     * script_owneruid
       UID waciciela pliku. Domylnie: 0 (root).
       Przykad: script_owneruid = 0
     * script_ownergid
       GID waciciela pliku. Domylnie: 0 (root).
       Przykad: script_ownergid = 0
     * script_permission
       Uprawnienia pliku skryptu. Domylnie: 700 (rwx------).
       Przykad: script_permission = 700
     * snat_address
       Adres SNAT. Jeli nie ustawiono, dla hostw z adresami publicznymi
       bdzie uyte "-j MASQUERADE". Jeli ustawiono zostanie uyte "-j
       SNAT --to xxx.xxx.xxx.xxx". Dotyczy lms-makeiptables. Domylnie:
       nie ustawiony.
       Przykad: snat_address = 123.123.123.123
     * tcp_redirect_ports (udp_redirect_ports)
       Konfiguracja przekierowa w formie port_rdowy:port_docelowy dla
       przekierowa na lokaln maszyn dla pocze wychodzcych. Dotyczy
       lms-makeipchains. Domylnie: nie ustawione.
       Przykad: tcp_redirect_ports = 80:3128 25:25
     _________________________________________________________________

4.3.8. lms-etherdesc

   Skrypt sucy do generowania pliku zawierajcego MAC adresy oraz
   nazwy hostw 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 [ethers] w pliku lms.ini:
     * networks
       Lista nazw sieci (oddzielonych spacjami), ktre maj by
       uwzgldnione podczas generowania pliku. Jeli nie ustawiono,
       zostanie stworzony konfig dla wszystkich sieci.
       Przykad: networks = public-custa public-custb
     * etherdesc_owneruid
       UID waciciela pliku. Domylnie: 0 (root).
       Przykad: etherdesc_owneruid = 0
     * etherdesc_file
       Lokalizacja pliku. Domylnie: /var/lib/iptraf/ethernet.desc.
       Przykad: etherdesc_file = /etc/ethernet.desc
     * etherdesc_ownergid
       GID waciciela pliku. Domylnie: 0 (root).
       Przykad: etherdesc_ownergid = 0
     * etherdesc_permission
       Uprawnienia pliku skryptu. Domylnie: 600 (rw-------).
       Przykad: etherdesc_permission = 600
     _________________________________________________________________

4.3.9. lms-sendinvoices

   Skrypt suy do wysyania poczt elektroniczn faktur, jako
   zacznikw do wiadomoci. Faktury generowane s na podstawie szablonu
   dostpnego w lms-ui, dlatego wymagane jest podanie uytkownika i hasa
   do interfejsu www lms-ui.

   W odrnieniu od pozostaych skrytpw ten wymaga dodatkowych moduw
   perla: Data::Dumper, LWP::UserAgent, MIME::Entity.

   Konfiguracj naley umieci w sekcji [sendinvoices]:
     * lms_url
       Adres do lms-ui. Domylnie: http://localhost/lms/
       Przykad: lms_url = http://lms.mynet.pl
     * lms_user
       Login administratora. Domylnie: pusty
       Przykad: lms_user = admin
     * lms_password
       Haso do lms-ui. Domylnie: puste
       Przykad: lms_password = moje_haso
     * debug_email
       Konto pocztowe do testw. Domylnie: niezdefiniowane.
       Przykad: debug_email = admin@mynet.pl
     * sender_name
       Nadawca listu. Domylnie: niezdefiniowany.
       Przykad: sender_name = ASK MyNet
     * sender_email
       Adres nadawcy listu. Domylnie: niezdefiniowany.
       Przykad: sender_email = admin@mynet.pl
     * tmp_dir
       Lokalizacja katalogu tymczasowego. Jeli nie podano katalog
       odczytywany jest ze zmiennej rodowiskowej 'TMP' lub przyjmowany
       jest katalog '/tmp'.
       Przykad: tmp_dir = /home/user/tmp
     _________________________________________________________________

4.3.10. lms-updatewarnings

   Skrypt automatycznie wcza ostrzeenia (czyli ustawia odpiwedni
   flag w bazie danych) wszystkim komputerom uytkownika z saldem
   mniejszym ni kwota okrelona parametrem 'limit'. Reguy firewalla
   przekierowujce na stron z ostrzeeniem naley wygenerowa innym
   skryptem.

   Konfiguracj dla lms-updatewarnings moemy ustali w pliku lms.ini w
   sekcji [warnings]. Moemy tam ustawi:
     * limit (opcjonalny)
       Pozwala na ustalenie limitu bilansu. Domylnie: 0
       Przykad: limit = -20
     _________________________________________________________________

Rozdzia 5. Generator plikw konfiguracyjnych (lms-mgc)

   LMS-MGC to "magiczny" generator plikw konfiguracyjnych. Przy
   odrobinie wysiku mona stworzy przy jego pomocy dowolnego rodzaju
   plik konfiguracyjny (np. generujcy odpowiednie strefy dla DNS)
     _________________________________________________________________

5.1. Instalacja

   Lms-mgc posiada wasny plik konfiguracyjny: lms-mgc.ini. Jego
   instalacja polega na przeniesieniu do katalogu /usr/sbin. Uruchomienie
   generatora mona wykona na dwa sposoby: wpisa do crona (np. co
   godzin)
0 * * * *       /usr/sbin/lms-mgc 1 > /dev/null

   albo z poziomu LMS skorzysta z menu "Przeadowanie". Druga metoda
   wymaga uycia sudo. Niestety, jedyne wyjcie by umoliwi uruchomienie
   lms-mgc, to dopisanie uytkownika do sudo, a nastpnie ustawienie w
   sekcji [phpui] lms.ini:

   reload_type = exec

   reload_execcmd = sudo /usr/sbin/lms-mgc

   Lms-mgc posiada nastpujce opcje uruchomienia:
-C, --config-file=/path/lms-mgc.ini alternatywny plik konfiguracyjny
                                    (default: /etc/lms/lms-mgc.ini);
-i, --instances=name                nazwa (lub numer) instancji do uruchomienia, bez czytania
                                    konfiguracji z lms-mgc.ini, np. -i "name1 name2"
-h, --help                          wywietla pomoc;
-v, --version                       wywietla numer wersji;
-q, --quiet                         tylko komunikaty o bdach;
-d, --debug                         informacje szczegowe dla kadego IP;
     _________________________________________________________________

5.2. Konfiguracja

   Konfiguracj dla LMS-MGC przeprowadza si w pliku lms-mgc.ini
     _________________________________________________________________

5.2.1. Sekcja [database] - ustawienia bazy danych

     * type
       Typ bazy danych. Aktualnie w 100% supportowany jest 'mysql', ale
       jak narazie nie wida wikszych problemw z 'postgres'. Domylnie:
       mysql
       Przykad: type = mysql
     * host
       Host gdzie zainstalowana jest baza danych. Najczciej, localhost,
       ale mona tutaj wstawi cokolwiek (ipek, domena, path to socketa w
       formacie 'localhost:/path/to/socket'). Domylnie: localhost
       Przykad: host = localhost
     * user
       Uytkownik do bazy danych. W wielu wypadkach (jeeli postpowae
       zgodnie ze wskazwkami w doc/INSTALL) bdzie to 'lms'. Jeeli
       chcesz uywa konta uprzywilejowanego, prawdopodobnie wpiszesz
       'root' (MySQL na wikszoci *nixw), 'mysql' (na PLD) bd
       'postgres' (PostgreSQL). Domylnie: root
       Przykad: user = mysql
     * password
       Haso do bazy danych. Domylnie puste.
       Przykad: password = tajne_haslo
     * database
       Nazwa bazy danych, domylnie lms.
       Przykad: database = lms
     _________________________________________________________________

5.2.2. Sekcja [mgc] - lista instancji

   Waciwa konfiguracja dotyczca generatorw poszczeglnych plikw
   konfiguracyjnych jest umieszczana w sekcji [mgc] i pochodnych. W samej
   sekcji [mgc] moemy uy nastpujcego parametru:
     * instances
       Lista "instancji" oddzielona spacjami.
       Przykad: instaces = dhcp firewall squid

   Notatka

   Zmienn instances mona take umieci w sekcji dowolnej instancji.
   Patrz niej.
     _________________________________________________________________

5.2.3. Sekcja [mgc:xxx] - konfiguracja instancji

   Kada instancja ma swoj nazw i jej konfiguracj tworzy si
   umieszczajc sekcj o nazwie [mgc:nazwa], czyli przykadowo:
   [mgc:mydaemon]

   W samych instancjach moemy uywa nastpujcych opcji
   konfiguracyjnych:
     * instances
       Zmienna, w ktrej moesz poda list innych instancji, aby
       nastpnie wywoywa mgc poleceniem 'lms-mgc -i sekcja' zamiast
       'lms-mgc -i "sekcja1 sekcja2 sekcja3"'. Jeli zostanie uyta,
       wszystkie pozostae zmienne tej sekcji zostan zignorowane.
       Przykad: instances = dns1 dns2 dns3
     * outfile
       Definiuje plik do ktrego ma by zapisany wynik dziaania biecej
       instancji (jeeli ta zmienna bdzie nie ustawiona, instancja si
       zakoczy)
       Przykad: outfile = /etc/somefile
     * append
       Pozwala ustawi aby wynik dziaania instancji nie nadpisywa pliku
       wynikowego, lecz zosta dopisany na jego kocu
       Przykad: append = 1
     * outfile_perm
       Pozwala na ustawienie praw dostpu do pliku wyjciowego (domylnie
       600)
       Przykad: outfile_perm = 700
     * outfile_owner
       Pozwala na ustawienie waciciela pliku wyjciowego (domylnie 0)
       Przykad: outfile_owner = 0

       Ostrzeenie

   Waciciel musi by podany numerycznie!
     * outfile_group
       Pozwala na ustawienie grupy pliku wyjciowego (domylnie 0)
       Przykad: outfile_group = 0

       Ostrzeenie

   Grupa musi by podana numerycznie!
     * header_file
       Pozwala na umieszczenie w pliku wynikowym zawartoci innego pliku
       jako nagwek (domylnie nie ustawione)
       Przykad: header_file = /etc/lms/myservice_header
     * header
       Pozwala na umieszczenie w pliku wynikowym zawartoci zmiennej jako
       nagwka (domylnie puste)
       Przykad: header = option1 = bla\noption2 = blabla

       Notatka

   Znak \n zosta tu uyty jako separator linii. Kocowe \n nie jest
   wymagane.
     * networks
       Pozwala ustali ktre z naszych sieci bd uwzgldniane w pliku
       konfiguracyjnym (domylnie wszystkie)
       Przykad: networks = cust1-publ cust2-publ cust3-priv

   Teraz mgc pobiera kolejne sieci i wykonuje w kko nastpujce
   czynnoci:
     * network_header
       Generuje nagwek dla kadej sieci (domylnie puste):
       Przykad: network_header = network %ADDR/%MASK { # Config section
       for %NAME
     * dst_networks
       Pozwala ustawi sieci docelowe, czyli takie dla ktrych bdzie
       przetwarzany parametr: dst_network_header (domylnie wszystkie):
       Przykad: dst_networks = main coalloc
     * dst_network_header
       Pozwala ustawi nagwek dla sieci docelowych
       Przykad: dst_network_header = \tallow to %DADDR/%DMASK;
     * network_body
       Parametr jest przetwarzany po wysaniu nagwkw dla sieci, a
       przed rozpoczciem analizy adresw IP
       Przykad: network_body = \tnodes {

   Teraz MGC rozpocznie przetwarzanie kolejnych adresw IP. Robi to w
   dosy specyficzny sposb. Tzn. oblicza kolejny adres IP i kolejno
   sprawdza:
     * allnodes
       Pozwala na ustawienie reguki przetwarzanej dla kadego kolejnego
       adresu IP.
       Przykad: allnodes = ??
     * allexistnodes
       Pozwala na ustawienie reguki przetwarzanej dla kadego kolejnego
       adresu IP ktry jest uywany.
       Przykad: allexistnodes = ??
     * ignore
       Pozwala na ustawienie listy adresw w postaci adres/prefix lub
       adres/maska oddzielanej spacjami dla ktrej ma by ignorowane
       generowanie
       Przykad: ignore = ??
     * grantednode_publ
       Jest przetwarzana gdy dany adres komputer z danym adresem IP
       istnieje, ale w lms-ui ma status "podczony" (reguka
       przetwarzana dla adresw publicznych)
       Przykad: grantednode_publ = \t\tnode %NAME (%IP/%MAC) unique %ID;
     * grantednode_prv
       Jest przetwarzana gdy dany adres komputer z danym adresem IP
       istnieje, ale w lms-ui ma status "podczony" (reguka
       przetwarzana dla adresw prywatnych)
       Przykad: grantednode_prv = \t\tnode %NAME (%IP/%MAC) unique %ID;
     * deniednode_publ
       Jest przetwarzana gdy dany adres komputer z danym adresem IP
       istnieje, ale w lms-ui ma status "odczony" (reguka przetwarzana
       dla adresw publicznych)
       Przykad: deniednode_publ = node %NAME (%IP/%MAC) unique %ID deny;
     * deniednode_prv
       Jest przetwarzana gdy dany adres komputer z danym adresem IP
       istnieje, ale w lms-ui ma status "odczony" (reguka przetwarzana
       dla adresw prywatnych)
       Przykad: deniednode_prv = node %NAME (%IP/%MAC) unique %ID deny;
     * dhcpnode_publ
       Jest przetwarzana gdy dany adres IP zawiera si w klasie DHCP
       (reguka przetwarzana dla adresw publicznych)
       Przykad: dhcpnode_publ = node unknown (%IP) reject;
     * dhcpnode_prv
       Jest przetwarzana gdy dany adres IP zawiera si w klasie DHCP
       (reguka przetwarzana dla adresw prywatnych)
       Przykad: dhcpnode_prv = node unknown (%IP) reject;
     * freeip_publ
       Jest przetwarzana gdy dany adres IP nie jest przypisany do adnego
       komputera (reguka przetwarzana dla adresw publicznych)
       Przykad: freeip_publ = node unknown (%IP) lock_as_unused;
     * freeip_prv
       Jest przetwarzana gdy dany adres IP nie jest przypisany do adnego
       komputera (reguka przetwarzana dla adresw prywatnych)
       Przykad: freeip_prv = node unknown (%IP) lock_as_unused;
     * default_publ
       Reguka domylna. Jest przetwarzana gdy adres nie zostanie
       przetworzony przez adn reguk grantednode lub deniednode
       (reguka przetwarzana dla adresw publicznych)
       Przykad: default_publ = node unknown (%IP) lock_as_intruder;
     * default_prv
       Reguka domylna. Jest przetwarzana gdy adres nie zostanie
       przetworzony przez adn reguk grantednode lub deniednode
       (reguka przetwarzana dla adresw prywatnych)
       Przykad: default_publ = node unknown (%IP) lock_as_intruder;

       Notatka

   lms-mgc sam rozpoznaje ktry adres naley do klasy publicznej, a ktry
   do prywatnej.
     * network_footer
       Pozwala na ustawienie stopki dla wanie przetwarzanej sieci
       Przykad: network_footer = ??
     * footer_file
       Pozwala na umieszczenie w pliku wynikowym zawartoci innego pliku
       jako stopka (domylnie nie ustawione)
       Przykad: footer_file = /etc/lms/myservice_footer
     * footer
       Pozwala na umieszczenie w pliku wynikowym zawartoci zmiennej jako
       stopki (domylnie puste)
       Przykad: footer = # End.
     * post_exec
       Komenda do wywoania po wygenerowaniu pliku konfiguracyjnego
       Przykad: post_exec = killall -HUP mydaemon
     _________________________________________________________________

5.2.4. Zmienne konfiguracyjne

   W opcjach konfiguracyjnych mona uywa nastpujcych zmiennych:
     * %IP - zostanie rozwinite do adresu IP
     * %ID - ID sieci w bazie
     * %MAC - zostanie rozwinite do adresu MAC karty sieciowej
     * %OWNER - waciciel komputera
     * %NAME - nazwa sieci duymi znakami
     * %name - nazwa sieci maymi znakami
     * %UPRATE - limit transferu dla danych wychodzcych
     * %DOWNRATE - limit transferu dla danych przychodzcych
     * %1 %2 %3 %4 - kolejne oktety (od lewej) adresu IP
     * %ADDR - adres sieci
     * %GATE - brama sieci
     * %DNS - serwer DNS tej sieci
     * %DOMAIN - domena tej sieci
     * %WINS - adres serwera WINS dla tej sieci
     * %DHCPS - pierwszy adres DHCP tej sieci
     * %DHCPE - ostatni adres DHCP tej sieci
     * %DATE - data w formacie YYYYMMDD;
     * %TIME - czas w formacie HHMM;
     * %TIMES - czas w formacie HHMMSS;
     * %UTIME - czas w formacie unix timestamp;
     _________________________________________________________________

5.3. Przykad zastosowania lms-mgc

   Konfiguracja i zasada dziaania lms-mgc moe si wydawa do zawia,
   dlatego posuymy si przykadem. Poniej przedstawiono sposb
   generowania i uruchamiania firewalla ipchains (bardzo prostego).

   Przykad 5-1. Lms-mgc: Przykad instancji

   Zacznij od utworzenia nowej sekcji mgc w lms-mgc.ini, nazywajc j
   'ipchains' i stwrz w tej sekcji prost maskarad per adres IP z lanu:
[mgc:ipchains]
outfile           = /etc/rc.d/rc.masq
outfile_perm      = 700
header            = #!/bin/sh\n/sbin/ipchains -F\n/sbin/ipchains -X\n/sbin/ipchains -P forward DENY
grantednode_priv  = /sbin/ipchains -A forward -s %IP -j MASQ
post_exec         = /etc/rc.d/rc.masq

   Dopiszmy take do sekcji gwnej mgc informacj eby mgc uruchamia t
   sekcj:
[mgc]
instances         = ipchains

   Teraz prba odpalenia lms-mgc powinna zaowocowa wygenerowaniem
   /etc/rc.d/rc.masq, oraz jego odpaleniem.
     _________________________________________________________________

Rozdzia 6. A.L.E.C's LMS Daemon

6.1. Informacje podstawowe

   Napisany w jzyku C program ma uatwia zarzdzanie usugami. Sam
   demon odpowiada za uruchamianie odpowiednich moduw na danie
   uytkownika. Moduy natomiast, su do tworzenia plikw
   konfiguracyjnych na podstawie danych z bazy LMS'a oraz restartowania
   odpowiednich usug na serwerze.

   Dlaczego taka nazwa? Wikszo kodu demona napisa jeden z developerw
   - Aleksander 'A.L.E.C' Machniak, niemniej naley take podkreli
   udzia Marcina 'Lexx' Krla. Program zawiera fragmenty kodu autorstwa
   Mateusza 'mteg' Golicza oraz korzysta z biblioteki iniparser Nicolasa
   Devillarda. Jeli Ty masz ochot napisa jaki modu lub poprawi
   funkcjonalno demona jak najbardziej do tego zachcam.
     _________________________________________________________________

6.1.1. Wymagania

   A.L.E.C's LMS Daemon potrzebuje:
     * instalacji interfejsu uytkownika LMS-UI
     * libmysqlclient (tj. penej instalacji MySQL'a lub odpowiedniego
       pakietu) lub libpq w przypadku bazy PostgreSQL
     * libdl (to w kadej dzisiejszej dystrybucji jest)
     * kompilatora jzyka C
     _________________________________________________________________

6.1.2. Instalacja

   Przed kompilacj naley przy pomocy skryptu ./configure ustali opcje
   przedstawione na poniszym listingu (w nawiasach podano wartoci
   domylne opcji):
  --help                pomoc
  --enable-debug0       logowanie zapyta SQL (wyczone)
  --enable-debug1       logowanie zdarze (wyczone)
  --with-pgsql          gdy korzystamy z bazy PostgreSQL (wyczone)
  --with-mysql          gdy korzystamy z bazy MySQL (wczone)
  --prefix=DIR          katalog instalacyjny demona (/usr/local/bin)
  --libdir=DIR          lokalizacja bibliotek bazy danych (/usr/lib)
  --incdir=DIR          lokalizacja plikw nagwkowych bazy danych (/usr/include)

   Zatem wymagane jest okrelenie bazy z jakiej bdziemy korzysta
   (-with-mysql lub -with-pgsql) oraz pooenia bibliotek dostarczanych
   wraz z baz (--incdir, --libdir).
# ./configure --with-pgsql --libdir=/usr/local/pgsql/lib --incdir=/usr/local/pgsql/include

   Nastpnie kompilacja i instalacja (umieszczenie demona w katalogu
   okrelonym zmienn --prefix):
# make && make install

   Na koniec skompilowane moduy (pliki z rozszerzeniem .so), znajdujce
   si w katalogu modules/nazwa_moduu przenie do dowolnego katalogu.
   Ich lokalizacj bdziesz okrela w pliku konfiguracyjnym.
     _________________________________________________________________

6.1.3. Konfiguracja

   Przykadowy konfig demona i moduw zawarto w pliku lms.ini.sample.
   Poniszy listing przedstawia podstawowe opcje dla demona (konfiguracj
   moduw omwiono w osobnych rozdziaach ich dotyczcych):
[database]
host            = localhost     # nazwa lub ip hosta, domylnie: localhost
user            = lms           # nazwa uytkownika, domylnie: lms
password        = mypasswd      # haso do bazy, domylnie: puste
database        = lms           # nazwa bazy, domylnie: lms
port            = 0             # numer portu, domylnie: 0

[lmsd]
sleeptime       = 30            # okrela odstp czasu (w sekundach) jak czsto ma
                                # by sprawdzane danie reloadu, domylnie: 30
instances       = hosts oident firewall       # lista instancji moduw

   Notatka

   Lista instancji skada si z nazw instancji oddzielonych spacj.
   Instancja to nazwa sekcji w pliku konfiguracyjnym.

   W sekcji dotyczcej instancji, oprcz parametrw konfiguracji moduw,
   umieszcza si opcje podstawowe, jak na poniszym listingu:
[nazwa_instancji]
module = /cieka/nazwa_moduu.so
info = "Opcjonalny opis moduu"
     _________________________________________________________________

6.1.4. Uruchomienie

   Program moesz uruchamia jako demona pracujcego w tle (opcja '-b').
   Wtedy przeadowanie konfiguracji i usug jest dokonywane na danie,
   przy uyciu menu 'Przeadowanie' w LMS-UI. Opcja 'sleeptime' (-s)
   okrela okres midzy odczytami bazy. Gdy demon wykryje danie
   wykonania reloadu, wywoa moduy okrelone opcj 'instances' z
   lms.ini. Na przykad:
# almsd -b

   Innym sposobem uruchomienia jest jednorazowy reload w wykorzystaniem
   crona. Z tego sposobu naley korzysta uruchamiajc moduy takie jak
   'payments' 'notify' 'traffic'. W tym wypadku musisz stworzy osobny
   plik konfiguracyjny dla kadego moduu (zawierajcy rwnie opcje dla
   demona) i poda go demonowi przy pomocy opcji '-c'. Przykadowy wpis
   do crontab'a wyglda nastpujco:
  1 0 * * *    /usr/local/bin/almsd -q -c /etc/lms/payments.lms.ini

   Poniszy listing przedstawia dostpne opcje linii polece programu:
  -c    cieka do pliku konfiguracyjnego (domylnie: /etc/lms/lms.ini)
  -b    uruchomienie w tle
  -s    czas w sek. midzy odczytami tabeli 'reload' (domylnie: 30)
  -q    wykonaj reload i zakocz
  -h    wywietla opcje linii polece
     _________________________________________________________________

6.2. Moduy

   Sam demon potrafi tylko uruchamia moduy i to one odwalaj ca
   robot. Wikszo moduw jest przeznaczona do okrelonego
   zastosowania, jedynie 'hostfile' mona uywa do rnych konfigw
   (usug), np. rnych typw firewalli. Przykady konfiguracji demona i
   moduw zawiera plik daemon/lms.ini.sample. Parametry konfiguracyjne
   moduw umieszcza si w sekcjach instancji je wywoujcych.
     _________________________________________________________________

6.2.1. Lista dostpnych moduw

   Tabela 6-1. Lista moduw demona almsd
   Nazwa Opis
   dhcp Konfiguracja serwera dhcpd
   cutoff Odczanie uytkownikw z zalegociami w opatach
   dns Konfiguracja serwera dns
   ethers Tworzenie pliku /etc/ethers
   hostfile Modu uniwersalny (np. tworzenie regu iptables)
   notify Powiadamianie uytkownikw o zalegociach w opatach poczt
   elektroniczn
   ggnotify Powiadamianie uytkownikw o zalegociach w opatach przez
   gadu-gadu
   payments Naliczanie opat abonamentowych
   oident Konfiguracja oident
   tc Tworzenie regu HTB
   traffic Statystyki wykorzystania cza
     _________________________________________________________________

6.2.2. Payments

6.2.2.1. Opis

   Modu nalicza opaty abonamentowe uytkownikw oraz opaty stae.
   Naley go uruchamia codziennie. Opaty naliczane na podstawie
   przypisanych uytkownikowi taryf zapisywane s do bazy wraz z
   komentarzem okrelonym zmienn 'comment'. Po naliczeniu opat tworzone
   s faktury. Komentarz do opaty staej to zlepek skadajcy si z jej
   nazwy oraz wierzyciela. Na kocu usuwane s z bazy nieaktualne
   obcienia uytkownikw.
     _________________________________________________________________

6.2.2.2. Konfiguracja

   Dla tego moduu s dostpne nastpujce zmienne kofiguracyjne:
     * comment
       Komentarz do operacji. '%period' zostanie zamienione na daty od-do
       nalenego abonamentu, np. '10.10.2003 - 09.11.2003', a '%tariff'
       na nazw odpowiedniej taryfy. Domylnie: 'Abonament wg taryfy:
       '%tariff' za okres: %period'.
       Przykad: comment = 'Abonament miesiczny za okres %period'
     * up_payments
       "Naliczanie z gry", czyli czy okres w komentarzu ma by liczony
       do przodu, czy do tyu w stosunku do daty naliczenia opaty.
       Domylnie: yes.
       Przykad: up_payments = no
     * expiry_days
       Okrela liczb dni od daty wyganicia przypisanych uytkownikowi
       zobowiza, po ktrej dane tego zobowizania zostan usunite z
       bazy. Przy ustawieniu na '0' dane zostan usunite natychmiast po
       dacie, do ktrej obowizywao zobowizanie. Domylnie: 30.
       Przykad: expiry_days = 365
     * deadline
       Termin patnoci podany w dniach. Domylnie: 14.
       Przykad: deadline = 21
     * paytype
       Rozdzaj patnoci. Domylnie: 'PRZELEW'.
       Przykad: paytype = 'GOTWKA'
     _________________________________________________________________

6.2.3. Notify

6.2.3.1. Opis

   Modu 'notify' suy do informowania uytkownikw o zalegociach w
   opatach za pomoc poczty elektronicznej. Aktualne saldo uytkownika
   porwnywane jest ze zmienn 'limit', jeli jest nisze - wiadomo
   zostaje wysana. Tre wiadomoci pobierana jest z przygotowanego
   szablonu, w ktrym mona stosowa nastpujce zmienne:
     * %saldo - aktualne saldo uytkownika
     * %name - imi uytkownika
     * %lastname - nazwisko/nazwa uytkownika
     * %last_10_in_a_table - wycig ostatnich 10 operacji na kocie
       uytkownika
     _________________________________________________________________

6.2.3.2. Konfiguracja

   Poniej przedstawiono dostpne opcje konfiguracyjne moduu 'notify':
     * mailtemplate
       Lokalizacja pliku z szablonem wiadomoci. Domylnie: pusty
       Przykad: mailtemplate = modules/notify/sample/mailtemplate
     * file
       Lokalizacja pliku tymczasowego. Domylnie: /tmp/mail
       Przykad: file = /tmp/mail.txt
     * command
       Polecenie powoki wysyajce e-maila. '%address' zostanie
       zastpione adresem e-mail uytkownika. Domylnie: 'mail %address
       -s "Inf. o zalegociach w opatach" < /tmp/mail'.
       Przykad: command = 'mail %address -s "musisz zapaci, bo jak
       nie..." < /tmp/mail.txt'
     * limit
       Wiadomo o zalegociach zostaje wysana jeli saldo uytkownika
       spadnie poniej kwoty okrelonej zmienn limit. Domylnie: 0
       Przykad: limit = -20
     * debug_mail
       Okrela adres na ktry zostan wysane wszystkie wiadomoci,
       przydatne podczas testw. Domylnie: puste.
       Przykad: debug_mail = localhost@moja.net
     _________________________________________________________________

6.2.4. Ggnotify

6.2.4.1. Opis

   Odpowiednik moduu 'notify' sucy do wysyania wiadomoci gadu-gadu.
   Aktualne saldo uytkownika porwnywane jest ze zmienn 'limit', jeli
   jest nisze - wiadomo zostaje wysana. Tre wiadomoci pobierana
   jest z przygotowanego szablonu, w ktrym mona stosowa zmienne takie
   jak dla moduu 'notify' (moe to by te ten sam szablon).

   Modu wymaga zainstalowanej biblioteki libgadu oraz rde programu
   ekg. Odpowiednie cieki do nich naley ustawi w
   modules/ggnotify/Makefile przed kompilacj moduu.
     _________________________________________________________________

6.2.4.2. Konfiguracja

   Podobnie jak w 'notify' masz do dyspozycji nastpujce zmienne:
     * ggtemplate
       Lokalizacja pliku z szablonem wiadomoci. Domylnie: pusty.
       Przykad: ggtemplate = modules/ggnotify/sample/mailtemplate
     * uin
       Identyfikator gadu-gadu uytkownika wysyajcego wiadomoci.
       Domylnie: pusty.
       Przykad: uin = 1234567
     * password
       Haso dla konta okrelonego zmienn 'uin'. Domylnie: puste.
       Przykad: password = "moje_trudne__haso"
     * limit
       Wiadomo o zalegociach zostaje wysana jeli saldo uytkownika
       spadnie poniej kwoty okrelonej zmienn limit. Domylnie: 0
       Przykad: limit = -20
     * debug_uin
       Jeli ustawione, na to konto zostan wysane wszystkie wiadomoci.
       Domylnie: puste.
       Przykad: debug_uin = 7654321
     _________________________________________________________________

6.2.5. Cutoff

6.2.5.1. Opis

   Cutoff zmienia na 'odczony' status komputerw uytkownikom, ktrzy
   maj na koncie zalegoci wiksze ni okrelony limit. Ten modu nie
   zajmuje si fizycznym blokowaniem dostpu do sieci. Naley pamita
   aby uruchamia go przed moduami takimi jak np. 'hostfile'. Wana jest
   kolejno instancji na licie w zmiennej 'instances'. Modu 'cutoff'
   najlepiej uruchamia codziennie.
     _________________________________________________________________

6.2.5.2. Konfiguracja

   Modu 'cutoff' posiada tylko jeden parametr:
     * limit
       Odczenie nastpuje jeli saldo uytkownika spadnie poniej kwoty
       okrelonej t zmienn. Domylnie: 0.
       Przykad: limit = -20
     _________________________________________________________________

6.2.6. Dhcp

6.2.6.1. Opis

   Modu zarzdzajcy serwerem DHCP, tworzy plik konfiguracyjny oraz
   restartuje usug. Zmienna 'command' umoliwia rwnie wykonywanie
   innych czynnoci (programw).
     _________________________________________________________________

6.2.6.2. Konfiguracja

   Wikszo parametrw konfiguracyjnych odpowiada fragmentom pliku
   konfiguracyjnego dhcpd, ktre w typowych zastosowaniach nie wymagaj
   zmiany:
     * file
       Okrela lokalizacj pliku konfiguracyjnego serwera dhcp.
       Domylnie: /tmp/dhcpd.conf.
       Przykad: file = /etc/dhcpd.conf
     * command
       Polecenie wykonywane po utworzeniu pliku konfiguracyjnego.
       Domylnie: pusta.
       Przykad: command = 'killall -HUP dhcpd'
     * begin
       Nagwek pliku. Domylnie: "shared-network LMS {".
       Przykad: begin = "shared-network LMS {"
     * end
       Stopka pliku. Domylnie: "}".
       Przykad: end = "\n}"
     * subnet_start
       Nagwek podsieci. '%a' - nazwa, '%m' - maska. Domylnie: "subnet
       %a netmask %m {\ndefault-lease-time 86400;\nmax-lease-time
       86400;".
       Przykad: subnet_start = "subnet %a netmask %m {default-lease-time
       3600;"
     * subnet_end
       Stopka podsieci. Domylnie: "}".
       Przykad: subnet_end = '\t}'
     * subnet_gateway
       Brama podsieci. '%i' zostanie zamienione na adres ip. Domylnie:
       'option routers %i;'.
       Przykad: subnet_gateway = "option routers %i"
     * subnet_dns
       DNS'y podsieci. '%i - adresy dns'w. Domylnie: "option
       domain-name-servers %i;".
       Przykad: subnet_dns = "option domain-name-servers 192.168.0.1"
     * subnet_domain
       Nazwa domenowa podsieci. '%n' - nazwa. Domylnie: "option
       domain-name %n;".
       Przykad: subnet_domain = "option domain-name test.%n;"
     * subnet_wins
       Serwery wins. '%i' - adres ip serwera. Domylnie: "option
       netbios-name-servers %i;".
       Przykad: subnet_wins = ""
     * subnet_range
       Zakres adresw podsieci. '%s' - adres pocztkowy, '%e' - koniec
       zakresu. Domylnie: "range %s %e;".
       Przykad: subnet_range = "range %s %e;"
     * host
       Parametry hostw, gdzie '%n' - nazwa hosta, '%m' - MAC, '%i' -
       adres ip. Domylnie: "\thost %n {\n\t\thardware ethernet %m;
       fixed-address %i; \n\t}".
       Przykad: host = "host %n {hardware ethernet %m; fixed-address
       %i;}"
     _________________________________________________________________

6.2.7. Hostfile

6.2.7.1. Opis

   Modu 'hostfile' jest do uniwersalnym narzdziem. Poniewa wykonuje
   ptl po wszystkich komputerach w bazie rozrniajc ich status
   (odczony/podczony), dlatego moliwe jest tworzenie np. regu
   dowolnego firewalla, czy te pliku /etc/hosts. Dane zapisuje do pliku
   i nastpnie wykonuje okrelone polecenie powoki.
     _________________________________________________________________

6.2.7.2. Konfiguracja

   W opcjach 'grantedhost' i 'deniedhost' mona stosowa specjalne
   zmienne, ktre podczas zapisu do pliku zostan zastpione '%i' -
   adresem ip, '%m' - mac adresem, '%n' - nazw komputera, '%domain' -
   domen, '%net' - nazw sieci. Poniej opcje udostpniane przez ten
   modu
     * file
       Lokalizacja pliku tymczasowego. Domylnie: /tmp/hostfile
       Przykad: file = /etc/rc.d/rc.firewall
     * command
       Polecenie powoki wyk. po utworzeniu pliku 'file'. Domylnie:
       puste
       Przykad: command = '/bin/sh /etc/rc.d/rc.firewall'
     * begin
       Nagwek pliku tymczasowego. Domylnie: "/usr/sbin/iptables -F
       FORWARD\n"
       Przykad: begin = "IPT=/usr/sbin/iptables \n$IPT -F FORWARD\n"
     * end
       Stopka pliku tymczasowego. Domylnie: "/usr/sbin/iptables -A
       FORWARD -J REJECT\n"
       Przykad: end = "$IPT -A FORWARD -J REJECT\n"
     * grantedhost
       Tekst dla hosta podczonego. Domylnie: "/usr/sbin/iptables -A
       FORWARD -s %i -m mac --mac-source %m -j ACCEPT\n"
       Przykad: grantedhost = "$IPT -A FORWARD -s %i -m mac --mac-source
       %m -j ACCEPT\n"
     * deniedhost
       Tekst dla hosta odczonego. Domylnie: "/usr/sbin/iptables -A
       FORWARD -s %i -m mac --mac-source %m -j REJECT\n"
       Przykad: deniedhost = "$IPT -A FORWARD -s %i -m mac --mac-source
       %m -j REJECT\n"
     * networks
       Lista nazw sieci, ktre maj by brane pod uwag. Domylnie: pusta
       (wszystkie sieci).
       Przykad: networks = "lan1 lan2"
     * skip_dev_ips
       Jeli ustawiona na tak (yes, true) pominite zostan adresy
       urzdze sieciowych. Domylnie: tak
       Przykad: skip_dev_ips = no
     _________________________________________________________________

6.2.8. Traffic

6.2.8.1. Opis

   'Traffic' to odpowiednik perlowego lms-traffic, zapisujcy do bazy
   statystyki wykorzystania cza z pliku utworzonego przez uytkownika.
   Plik taki powinien mie format: ip_hosta upload download . Wicej
   informacji (w tym jak utworzy taki plik) mona znale w rozdziale
   dotyczcym lms-traffic.
     _________________________________________________________________

6.2.8.2. Konfiguracja

   Jedyny dostpny parametr jest jednoczenie obowizkowy:
     * file
       Lokalizacja pliku ze statystykami firewalla. Domylnie:
       /var/log/traffic.log
       Przykad: file = /tmp/log
     _________________________________________________________________

6.2.9. Tc (HTB)

6.2.9.1. Opis

   Do pliku okrelonego opcj 'file' zapisywane s dane dotyczce uploadu
   i downloadu dla komputerw okrelonego w taryfach, w formacie: upload,
   download, numer_ip_hosta_lub_ich_lista.

   Tak przygotowany plik mona wykorzysta w skrypcie tworzcym reguy
   htb. Przykadowy skrypt htb.sh zamieszczono w katalogu
   modules/tc/sample. Opcja 'command' jest odpowiedzialna za uruchomienie
   takiego skryptu.
     _________________________________________________________________

6.2.9.2. Konfiguracja

   Ten modu zawiera standardowe parametry:
     * file
       Lokalizacja pliku tymczasowego. Domylnie: /tmp/tc.dat.
       Przykad: file = /tmp/htb.data
     * command
       Polecenie powoki wykonywane po utworzeniu pliku. Domylnie:
       "/bin/sh sample/htb.sh < /tmp/tc.dat".
       Przykad: command = "/bin/bash modules/tc/sample/htb.sh <
       /tmp/tc.dat"
     _________________________________________________________________

6.2.10. Dns

6.2.10.1. Opis

   Modu do konfiguracji stref serwera 'named' jest jednym z bardziej
   skomplikowanych. Tworzy dla kadej sieci pliki stref oraz odpowiednie
   wpisy w named.conf w oparciu o szablony tych plikw. Przykadowe
   szablony znajduj si w katalogu /modules/dns/sample.
     _________________________________________________________________

6.2.10.2. Konfiguracja

     * forward-patterns
       Katalog z szablonami stref. Domylnie: forward.
       Przykad: forward-patterns = /dns/patterns/forward
     * reverse-patterns
       Katalog z szablonami stref odwrotnych. Domylnie: reverse.
       Przykad: reverse-patterns = /dns/patterns/revers
     * generic-forward
       Szablon domylny. Zostanie wykorzystany jeli w katalogu
       okrelonym 'forward-patterns' nie bdzie pliku odpowiadajcego
       nazwie domenowej sieci. Domylnie:
       modules/dns/sample/forward/generic.
       Przykad: generic-forward = /dns/patterns/forward
     * generic-reverse
       Szablon domylny. Zostanie wykorzystany jeli w katalogu
       okrelonym 'reverse-patterns' nie bdzie pliku odpowiadajcego
       numerowi IP sieci. Domylnie: modules/dns/sample/reverse/generic.
       Przykad: generic-reverse = /dns/patterns/forward
     * forward-zones
       Katalog na pliki wynikowe stref. Domylnie:
       modules/dns/sample/out/forward.
       Przykad: forward-zones = /dns/forward
     * reverse-zones
       Katalog na pliki wynikowe stref odwrotnych. Domylnie:
       modules/dns/sample/out/reverse.
       Przykad: reverse-zones = /dns/reverse
     * host-reverse
       Linia w pliku strefy odw. odpowiadajca kademu komputerowi w dane
       sieci. Domylnie: "%n IN A %i\n".
       Przykad: host-reverse = "\t %n IN A %i\n"
     * host-forward
       Linia w pliku strefy odpowiadajca kademu komputerowi w danej
       sieci. Domylnie: "%c IN PTR %n.%d.\n".
       Przykad: host-forward = "\t %c IN PTR %n.%d.\n"
     * conf-pattern
       Lokalizacja szablonu gwnego pliku konfiguracyjnego serwera.
       Domylnie: modules/dns/sample/named.conf.
       Przykad: conf-pattern = /dns/patterns/named.conf
     * conf-output
       Lokalizacja gwnego pliku konfiguracyjnego serwera. Domylnie:
       /tmp/named.conf.
       Przykad: conf-output = /etc/named.conf
     * conf-forward-entry
       Wpis dla kadej strefy w gwnym pliku konfiguracyjnym. Domylnie:
       'zone "%n" {\ntype master;\n file "forward/%n"; \nnotify yes; \n};
       \n'.
       Przykad: conf-forward-entry = 'zone "%n" { \n\ttype master;
       \n\tfile "forward/%n"; \n\tnotify yes; \n}; \n'
     * conf-reverse-entry
       Wpis dla kadej strefy odw. w gwnym pliku konfiguracyjnym.
       Domylnie: 'zone "%c.in-addr.arpa" { \ntype master; \nfile
       "reverse/%i"; \nnotify yes; \n}; \n'.
       Przykad: conf-revers-entry = 'zone "%c.in-addr.arpa" { \n\ttype
       master; \n\tfile "reverse/%i"; \n\tnotify yes; \n}; \n'
     * command
       Polecenie wykonywane po utworzeniu plikw konf. Domylnie: puste.
       Przykad: command = ""
     _________________________________________________________________

6.2.11. Ethers

6.2.11.1. Opis

   Modu tworzcy konfiguracj tablicy ARP systemu. Ustawiajc opcj
   'dummy_macs' mona sprawi, aby komputerom odczonym zosta
   przypisany mac-adres 00:00:00:00:00:00.
     _________________________________________________________________

6.2.11.2. Konfiguracja

   Tutaj s tylko standardowe opcje:
     * file
       Lokalizacja pliku wynikowego. Domylnie: /tmp/ethers.
       Przykad: file = /etc/ethers
     * command
       Polecenie powoki wykonywane po wygenerowaniu konfiga. Domylnie:
       puste.
       Przykad: command = "arp -f /etc/ethers"
     * dummy_macs
       Jeli ustawimy na 'yes', to komputerom odczonym zostanie
       przypisany mac-adres '00:00:00:00:00:00'. Domylnie: "no".
       Przykad: dummy_macs = yes
     _________________________________________________________________

6.2.12. Oident

6.2.12.1. Opis

   Modu do konfiguracji oidentd. W zasadzie mona to zrobi moduem
   'hostfile', ale tutaj masz ju gotowe ustawienia domylne.
     _________________________________________________________________

6.2.12.2. Konfiguracja

   A oto parametry moduu 'oident'
     * begin
       Tekst wstawiany na pocztku pliku. Domylnie: puste.
       Przykad: begin = "#Generowany automatycznie\n"
     * end
       Tekst wstawiany na kocu pliku. Domylnie: puste.
       Przykad: end = ""
     * host
       Linia tekstu dla kadego komputera. Domylnie: "%i\t%n\tUNIX".
       Przykad: host = "%i %n WINDOWS"
     * file
       Tekst wstawiany na pocztku pliku. Domylnie: /tmp/oidentd.conf.
       Przykad: file = /etc/identd.conf
     * networks
       Lista nazw sieci do uwzgldnienia. Domylnie: pusta (wszystkie
       sieci).
       Przykad: networks = 'lan1 lan2'
     * command
       Polecenie do wykonania po utworzeniu pliku. Domylnie: puste.
       Przykad: command = "killall -HUP midentd"
     _________________________________________________________________

Rozdzia 7. Dla dociekliwych

7.1. Drzewo katalogw

   Tabela 7-1. Drzewo katalogw LMS
      Nazwa                       Opis
     backups           Kopie zapasowe bazy danych
       bin            Skrypty wykonywalne lms-...
     contrib    Dodatki stworzone przez uytkownikw LMS
     daemon               A.L.E.C's LMS Daemon
      devel        Skrypty przydatne dla developerw
       doc                    Dokumentacja
       img         Obrazki do Interfejsu Uytkownika
       lib      LMS'owy zbir bibliotek PHP oraz Smarty
     modules         Moduy Interfejsu Uytkownika
     sample        Przykadowe skrypty i inne dodatki
    templates  Temlejty Smarty dla Interfejsu Uytkownika
   templates_c              Pliki tymczasowe
     _________________________________________________________________

7.2. Struktura bazy danych

   Poniej przedstawiono ogln struktur bazy danych LMS. Bardziej
   szczegowe informacje o typach danych, ograniczeniach nakadanych na
   pola oraz wartoci domylne zawarte s w plikach lms.mysql oraz
   lms.pgsql w katalogu /doc.
     _________________________________________________________________

7.2.1. Administratorzy ('admins')

   id - identyfikator
   login - login
   name - nazwa (nazwisko i imi)
   email - adres admina
   rights - prawa dostpu
   passwd - haso logowania
   lastlogindate - data ostatniego logowania
   lastloginip - adres IP, z ktrego nastpio ostatnie logowanie
   failedlogindate - data ostatniej nieudanej prby logowania
   failedloginip - adres IP, z ktrego prbowano si zalogowa
     _________________________________________________________________

7.2.2. Uytkownicy ('users')

   id - identyfikator
   lastname - nazwa/nazwisko
   name - imi
   status - podczony/odczony
   email - adres poczty internetowej
   phone1 - telefon
   phone2 - telefon
   phone3 - telefon
   gguin - identyfikator gadu-gadu
   address - adres (ulica, nr domu, nr lokalu)
   zip - kod pocztowy
   city - nazwa miasta
   nip - numer identyfikacji podatkowej NIP
   pesel - numer PESEL
   info - dodatkowe informacje
   creationdate - czas utworzenia wpisu
   moddate - czas modyfikacji
   creatorid - identyfikator administratora tworzcego wpis
   modid - identyfikator administratora dokonujcego zmian danych
   deleted - usunity z bazy (0/1)
     _________________________________________________________________

7.2.3. Sieci ('networks')

   id - identyfikator
   name - nazwa sieci
   address - adres IP
   mask - maska
   interface - interfejs (np. eth1)
   gateway - adres IP bramy
   dns - adres IP serwera nazw
   dns2 - adres IP zapasowego serwera nazw
   domain - domena
   wins - adres serwera WINS
   dhcpstart - pocztek zakresu DHCP
   dhcpend - koniec zakresu DHCP
     _________________________________________________________________

7.2.4. Komputery i adresy IP urzdze sieciowych ('nodes')

   id - identyfikator
   name - nazwa
   mac - adres MAC
   ipaddr - adres IP
   ownerid - identyfikator waciciela ('0' - dla adresu urzdzenia)
   creationdate - znacznik czasu utworzenia wpisu
   moddate - znacznik czasu ostatniej modyfikacji
   creatorid - identyfikator administratora tworzcego wpis
   modid - identyfikator administratora
   netdev - identyfikator urzdzenia sieciowego do ktrego jest
   podczony komputer
   access - podczony/odczony (1/0)
     _________________________________________________________________

7.2.5. Sprzt sieciowy ('netdevices')

   id - identyfikator
   name - nazwa
   location - lokalizacja
   description - opis
   producer - producent
   model - model
   serialnumber - numer seryjny
   ports - ilo portw
     _________________________________________________________________

7.2.6. Poczenia sieciowe ('netlinks')

   id - identyfikator
   src - jeden koniec
   dst- drugi koniec
     _________________________________________________________________

7.2.7. Operacje finansowe ('cash')

   id - identyfikator
   time - znacznik czasu zaksigowania operacji
   adminid - identyfikator administratora dokonujcego operacji
   type - typ operacji (przychd, rozchd, wpata, obcienie)
   value - warto w zotych
   userid - identyfikator uytkownika ('0' - jeli nie dotyczy)
   invoiceid - identyfikator faktury obejmujcej dan operacj
   comment - opis operacji
     _________________________________________________________________

7.2.8. Taryfy ('tariffs')

   id - identyfikator
   name - nazwa
   value - kwota
   taxvalue - wysoko podatku w procentach
   pkwiu - numer PKWiU
   uprate - ograniczenie szybkoci transferu danych wychodzcych
   downrate - ograniczenie szybkoci transferu danych przychodzcych
   description - opis
     _________________________________________________________________

7.2.9. Opaty stae ('payments')

   id - identyfikator
   name - nazwa
   value - kwota
   creditor - nazwa wierzyciela
   period - typ okresu naliczania: co tydzie/co miesic/co kwarta/co
   rok (0/1/2/3)
   at - dzie naliczenia
   description - opis
     _________________________________________________________________

7.2.10. Powizania ('assignments')

   id - identyfikator
   tariffid - identyfikator taryfy
   userid - identyfikator uytkownika
   period - typ okresu
   at - dzie naliczania
   datefrom - data obowizywania zobowizania
   dateto - data obowizywania zobowizania
   invoice - okrela czy ma by wystawiana faktura (1 - tak, 0 - nie)
     _________________________________________________________________

7.2.11. Faktury ('invoices')

   id - identyfikator
   number - numer w roku
   cdate - data wystawienia
   paytime - termin patnoci (ilo dni)
   paytype - rodzaj patnoci (przelew/gotwka/etc.)
   customerid - identyfikator uytkownika-nabywcy
   name - nazwa (nazwisko i imi) nabywcy
   address - adres nabywcy
   nip - nip nabywcy
   pesel - PESEL nabywcy
   zip - kod pocztowy nabywcy
   phone - telefon nabywcy
   city - miasto nabywcy
   finished - pole okrelajce zamknicie faktury (0/1)
     _________________________________________________________________

7.2.12. Faktury - cd. ('invoicecontents')

   invoiceid - identyfikator faktury
   value - kwota pozycji
   taxvalue - wysoko podatku w procentach
   pkwiu - numer PKWiU
   content - uyta jednostka (najczciej 'szt.')
   count - ilo
   description - opis
   tariffid - identyfikator taryfy
     _________________________________________________________________

7.2.13. Historia ('timestamps')

   time - czas ostatniej modyfikacji
   tablename - nazwa tabeli
     _________________________________________________________________

7.2.14. Statystyki wykorzystania cza ('stats')

   nodeid - numer komputera
   dt - znacznik czasu
   upload - ilo danych wysanych, w bajtach
   download - ilo danych odebranych, w bajtach
     _________________________________________________________________

7.2.15. Informacje o bazie danych ('dbinfo')

   keytype - typ
   keyvalue - warto
     _________________________________________________________________

7.3. Format pliku konfiguracyjnego

   W pliku konfiguracyjnym LMS'a (standardowo /etc/lms/lms.ini) mona
   ustawia parametry LMS-UI, daemona almsd oraz skryptw perlowych
   (LMS_MGC). Przy czym format wartoci parametrw dla skryptw perlowych
   podlega wikszym restrykcjom.
     _________________________________________________________________

7.3.1. Komentarze

   Programy parsujce plik konfiguracyjny pomijaj wszystkie linie
   zaczynajce si znakiem '#' lub ';'. Komentarze poprzedzone jednym z
   tych znakw mona take wstawia w tej samej linii co sekcje i opcje.
     _________________________________________________________________

7.3.2. Sekcje, klucze, wartoci

   Opcje konfiguracyjne pogrupowane s w sekcje. Nazw sekcji, skadajc
   si z liter i/lub cyfr naley zamkn w nawiasy kwadratowe. Ich nazwy
   powinny by unikalne.

   Sekcje i parametry umieszcza si w osobnych liniach. Parametry
   skadaj si z klucza i wartoci. Klucz to nazwa parametru
   konfiguracyjnego skadajca si z liter i/lub cyfr. W tej samej linii
   co klucz, po znaku rwnoci, umieszcza si warto parametru. Jeli
   warto zawiera znaki specjalne naley j obj w apostrofy lub
   cudzysw.

   Przykad 7-1. Format opcji konfiguracyjnych
[sekcja]
klucz = warto
zmienna1 = "jaki tekst"
para_metr = 'zmienna "para_metr" w apostrofach'

[sekcja_1]                              #tu mona komentowa
klucz = "tekst ze znakami \t i ;"       ; tu te mona komentowa
; a to jest komentarz na ca lini
key = "A.L.E.C's LMS Daemon is the best"
# opcja = wyczona
     _________________________________________________________________

7.3.3. Zmienne dla skryptw perlowych

   Konfiguracja skryptw perlowych, z uwagi na zastosowanie moduu
   Config::IniFiles, ma pewne ograniczenia. Komentarze mog by wstawiane
   tylko i wycznie w nowej linii. Wartoci zmiennych nie obejmuje si w
   apostrofy lub cudzysw, a s one czytane od znaku rwnoci do koca
   wiersza. Dlatego wanie nie mona umieszcza komentarzy w jednej
   linii z parametrami.
     _________________________________________________________________

7.4. Generowanie danych losowych

   Dla osb chccych szybko sprawdzi jak dziaa LMS przygotowalimy
   modu 'genfake', sucy do tworzenia bazy zawierajcej przykadowe
   dane.

   Aby wygenerowa dane naley, po zalogowaniu si w LMS'ie wywoa adres
   http://twoj.serwer.net/lms/?m=genfake, okreli ilu uytkownikw ma
   zosta stworzonych i nacisn ENTER. To wszystko. Ewentualne bdy
   bazy danych, spowodowane ograniczeniami unikalnoci niektrych danych,
   mona zignorowa.
   Notatka

   Dla prawidowego wygenerowania zalenoci, modu 'genfake' naley
   uruchamia na pustej, nowoutworzonej bazie.
   Ostrzeenie

   Wszystkie dane (oprcz danych administratorw) zostan usunite z
   bazy.
     _________________________________________________________________

7.5. Poziomy dostpu

   W sumie tutaj to wytumacz bardziej dla developerw, gdy osoby
   korzystajce z LMS raczej nie bd zainteresowane.

   Oryginalnie poziomy dostpu miay by definiowane poprzez rne
   litery. Byo to zaoenie z czasw LMS-0.4, lecz nigdy nie
   wykorzystane. Z racji tego, e weszo to do 1.0, dugo si gowiem
   jak wykorzysta 64-znakowego stringa. Ot w kolumnie rights jest po
   prostu 64-znakowa (256-bitowa) liczba heksadecymalna. Kady jej znak
   moe opisa maksymalnie cztery bity kombinacji (4*64 = 256 - std
   ilo moliwych poziomw). Tak wic wczenie jakiego poziomu dostpu
   powoduje ustawienie w tej liczbie odpowiedniego bitu. I tak jeeli
   "peen dostp" ma pozycj 0 w lib/accesstable.php, zostanie ustawiony
   bit 0, czyli bdzie to liczba 1. Wic poziomy mog mie numery od 0 do
   255. Nie jest to finalne ograniczenie. Stosujc wicej liter i znakw
   mona rozszerzy ilo moliwych kombinacji do przynajmniej 6 bitw na
   znak, co da nam 384 kombinacje.
     _________________________________________________________________

7.6. Ograniczenia

   Kady system ma ograniczenia. Pewne wynikaj z uytego silnika SQL
   (DBMS) inne za z zaoe [prawie] wiadomie podjtych przez
   developerw. Nasz system takowe posiada:
     _________________________________________________________________

7.6.1. Wynikajce z naszego projektu

   Ilo pienidzy (tabela 'cash'). Pieniki (od lms-1.1) przechowujemy
   jako 32 bitow liczb cakowit i w zwizku z tym za 8 lat bdziecie
   nas nie lubi posiadajc okoo 5000 uytkownikw.
     _________________________________________________________________

7.6.2. Wynikajce z uywanego DMBS

     * MySQL
          + Rozmiar bazy danych:
            Jak mwi dokumentacja do MySQL'a (rozdzia: Table size,
            paragraf "How Big Can MySQL Tables Be?"), MySQL wersja 3.22
            by ograniczony do 4 GB na tabelk. W wersji za 3.23 zostao
            to podniesione do 8 milionw terabajtw (czyli 2^63 bajtw).
            Jednak warto zauway e rne systemy operacyjne maj limity
            nakadane przez systemy plikw, najczciej jest to 2 lub 4
            GB.
          + Ilo rekordw:
            Prawdziwe informacje na temat limitw uzyskamy dopiero po
            wydaniu polecenia: (w interpreterze polece mysql)
mysql> show table status;

...| Avg_row_length | Data_length | Max_data_length | Index_length |
...|             44 |       24136 |      4294967295 |        19456 |
            Zauwaymy e miejsca wystarczy na okoo 175 000 razy tyle ile
            mamy aktualnie wpisw w tabelce. (czyt.: moesz spa
            spokojnie, chyba e planujesz posiadanie ponad 100000
            uytkownikw :-)
     * PostgreSQL
          + Rozmiar bazy danych:
            PostgreSQL zapisuje dane w porcjach po 8 kB. Liczba tych
            blokw jest ograniczona do 32-bitowej liczby cakowitej ze
            znakiem, dajc maksymaln wielko tabeli wynoszc 16
            terabajtw. Z uwagi na ograniczenia systemw operacyjnych
            dane przechowywane s w wielu plikach o wielkoci 1 GB kady.
          + Ilo rekordw:
            PostgreSQL nie narzuca ograniczenia na liczb wierszy w
            dowolnej tabeli. Jednak funkcja COUNT zwraca 32-bitow liczb
            cakowit, a zatem dla tabel zawierajcych ponad dwa miliardy
            wierszy wynik tej funkcji bdzie nieprawidowy. (Informacja
            dot. PostgreSQL 7.1)
