
LMS - LAN Management System 1.1.5 Amaonet

   [logo-small.png]

The LMS Developers

   Copyright (c) 2003 The 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

   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. lms-notify
        4.4. lms-cutoff
        4.5. lms-payments
        4.6. lms-traffic

   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. Poziomy dostpu
        7.5. Ograniczenia

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

   Spis rysunkw
   3-1. LMS-UI: Logowanie
   3-2. LMS-UI: Panel gwny
   3-3. LMS-UI: Uytkownicy
   3-4. LMS-UI: Komputery
   3-5. LMS-UI: Osprzt sieciowy
   3-6. LMS-UI: Sieci IP
   3-7. LMS-UI: Taryfy i finanse
   3-8. LMS-UI: Bazy danych
   3-9. LMS-UI: Administratorzy
   3-10. Statystyki wykorzystania cza- filtr
   3-11. Statystyki wykorzystania cza - wykres

   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 lub PostgreSQL. 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),
     * prowadzenie prostego rachunku operacji finansowych oraz stanu
       funduszw sieci,
     * rne 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
     * Kod C:

       Mateusz 'mteg' Golicz
       Aleksander 'A.L.E.C' Machniak
     * 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:

       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.
   Jest jeszcze LMS-MGC, ktry te 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 devepolerzy pracuj na 4.2.3, nie
   mona zagwarantowa poprawnej pracy na starszych wersjach. PHP mona
   scign ze strony www.php.net.
     _________________________________________________________________

2.2.3. Serwer baz danych

   Preferowany to MySQL. 3.23.53 i nowszy. Starszy moe te dziaa,
   jeli nie to daj nam o tym zna.

   LMS wsppracuje take z PostgreSQL. Zaleca si instalacj wersji 7.3
   lub nowszych, aczkolwiek nie powinno by problemw z wersjami od 7.2.3
   poczwszy.
     _________________________________________________________________

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);
     _________________________________________________________________

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

   Po pobraniu ze strony www.lms.rulez.pl rozpakuj archiwum:
$ tar zxvf lms-x.x.x.tar.gz

   a nastpnie przenie pliki z LMS-UI do katalogu osigalnego z poziomu
   serwera www (np. /var/www/lms).

   Jeeli nie skorzystae z wersji zawierajcej bibliotek Smarty,
   pobierz j i umie w katalogu lib.

   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. Jeeli podasz
   prawidowe dane administratora, LMS przeniesie Ci na stron logowania
   gdzie od razu bdzisz mg uy nowo utworzonego konta.
     _________________________________________________________________

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 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 (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: root
       Przykad: user = lms
     * password
       Haso do bazy danych. Domylnie puste.
       Przykad: password = password
     * database
       Nazwa bazy danych, 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 sekudnach) 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 pronuje rozwag i pomylenie co si robi i
       jak :) Generalnie redniki powinny by parsowane przez bash'a, ale
       z paru zgldw LMS sam dzieli poniszy cig pod wzgldem rednikw
       i wykonuje komendy pojedyczo.
       Przykad: reload_execcmd = "sudo /usr/bin/reload_lms.sh"
     * reload_sqlquery
       Query SQL'a. Generalnie, LMS przy nie ustawionym swoim wasnym
       QUERY robi dziwne rzeczy, ktre ja ju wymyliem. Chwilowo pewnie
       wogle nie kompatybilne z mteg'owym demonikiem, ale pracujemy nad
       uzgodnieniem formatu. Jak kto bardzo chce, to mona uy '%TIME%'
       jako podstawki pod aktualny timestamp unixowy. UWAGA! Znak
       rednika jest traktowany jako separator kwerend. Tj. oddzielajc
       znakiem rednika moesz wpisa kilka komend MySQL'a.
       Przykad: reload_sqlquery = "INSERT INTO reload VALUES
       ('1','%TIME%')"
     * force_ssl
       Wymuszanie SSL'a. Ustawinie 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 email bd szy maile
       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
     * 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), dostep 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.
     _________________________________________________________________

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 tworzenie kopii bazy danych oraz zarzdzanie skryptami
   wykonywalnymi.
     _________________________________________________________________

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.

   Rysunek 3-1. LMS-UI: Logowanie
   [login-small.png] 
     _________________________________________________________________

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.

   Rysunek 3-2. LMS-UI: Panel gwny
   [welcome-small.png] 
     _________________________________________________________________

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 oraz
   operacjach finansowych. Tam te moesz zaksigowa wpat lub
   obcienie jego rachunku.

   W menu znajdujcym si u gry okna masz do wyboru opcje: filtrowania
   listy, dodawania nowych uytkownikw, wyszukiwania w bazie wg zadanych
   kryteriw oraz wydruku listy.

   Ikona arwki suy do zmiany statusu (podczony/odczony)
   uytkownikw.

   Notatka

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

   Rysunek 3-3. LMS-UI: Uytkownicy
   [users-small.png] 
     _________________________________________________________________

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. W grnym menu dostpna
   jest opcja wydruku listy. Zmiany statusu komputera
   'wczony/wyczony' dokonuje si klikniciem na ikon arwki w
   odpowiedniej linii.

   Notatka

   Aby doda nowy komputer musisz wczeniej utworzy uytkownika oraz
   sie, ktrym go przypiszesz.

   Rysunek 3-4. LMS-UI: Komputery
   [nodes-small.png] 
     _________________________________________________________________

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.

   Rysunek 3-5. LMS-UI: Osprzt sieciowy
   [netdev-small.png] 
     _________________________________________________________________

3.2.4. Sieci IP

   Tutaj definiujesz dane swojej sieci tj. klas adresow, domen, DNS'y,
   Gateway, zakres DHCP. Na licie dostpna jest rwnie ilo zajtych i
   dostepnych 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.

   Rysunek 3-6. LMS-UI: Sieci IP
   [networks-small.png] 
     _________________________________________________________________

3.2.5. Taryfy i Finanse

   Jest to waciwie wiele moduw umoliwiajcych zarzdzanie finansami
   sieci.

   Masz moliwo definiowania taryf abonamentowych i okrelenia kwoty
   abonamentu oraz ogranicze upstream, downstream wykorzystywanych
   pniej podczas generowania plikw konfiguracyjnych.

   Dostpny z grnego menu 'Bilans Finansowy' to historia rachunku z
   podsumowaniem przychodu i rozchodu. 'Nowa Operacja' umoliwia
   zaksigowanie nowych wpat i obcie uytkownikw lub wydatkw i
   przychodw sieci.

   Rysunek 3-7. LMS-UI: Taryfy i finanse
   [tariffs-small.png] 
     _________________________________________________________________

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 polecam. skrypt lms-notify.
     _________________________________________________________________

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.

   Rysunek 3-8. LMS-UI: Bazy danych
   [db-small.png] 
     _________________________________________________________________

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'.

   Rysunek 3-9. LMS-UI: Administratorzy
   [admins-small.png] 
     _________________________________________________________________

3.3. Dodatki

3.3.1. Faktury

   LMS umoliwia wystawianie faktur. Wczenia tej opcji dokonuje si
   podczas przypisywania taryf uytkownikom. Aktualnie w LMS nie ma
   moliwoci rcznego wystawiania faktur. 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: seller = "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"

   Wygenerowane faktury mona obejrze w dwojaki sposb: albo poprzez
   ikonk drukarki na wykazie bilansu finansowego (oglnego bd
   pojedyczego uytkownika), albo poprzez 'Lista faktur' z menu
   '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 przegldarka 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. 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, dlatego naley
   go zainstalowa aby mie w bazie dane do wykresw.

   W zalenoci od wybranej przez uytkownika czstotliwoci, 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.

   Rysunek 3-10. Statystyki wykorzystania cza- filtr
   [stats-small.png] 

   Rysunek 3-11. Statystyki wykorzystania cza - wykres
   [statbars-small.png] 
     _________________________________________________________________

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-cutoff            Odczanie uytkownikw zaduonych
        lms-payments       Naliczanie opat okresowych (abonamentowych)
         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
     _________________________________________________________________

4.3. lms-notify

4.3.1. Szablony

   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.

   W plikach 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
bierzcy 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
email: gerwazy@staff.naszasiec.pl

Gwidon Mniejwany
telefon: 0-606666666
email: 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.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 email z upomnieniem. Domylnie limit = 0
       Przykad: limit = -20
     * mailsubject (wymagany)
       Pozwala na ustalenie tematu emaila wysyanego do uytkownika.
       Mona uywa podstawie znanych z szablonw (%B, %b, %date-y,
       %date-m, %last_10_in_a_table). Domylnie nieustawione.
       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 nieustawione
       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 email do debugowania. Gdy ustawiony, caa poczta zostaje
       wysana na dany email zamiast do uytkownikw. Przydatne do
       debugowania i sprawdzania czy wszystko dziaa OK. Domylnie
       nieustawiony.
       Przykad: debug_email = lexx@domain.pl
     _________________________________________________________________

4.4. 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 limit = 0
       Przykad: limit = -20
     _________________________________________________________________

4.5. lms-payments

   Skrypt po uruchomieniu nalicza uytkownikom opat abonamentow. Aby
   dziaa poprawnie powinien by uruchamiany codziennie.

   Skrypt ten nie posiada adnych opcji konfiguracyjnych.
     _________________________________________________________________

4.6. 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.6.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.
     _________________________________________________________________

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
     _________________________________________________________________

5.2.3. Sekjca [mgc:xxx] - konfiguracja instancji

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

   W samych instancjach moemy uywa nastpujcych opcji
   konfiguracyjnych:
     * outfile
       Definiuje plik do ktrego ma by zapisany wynik dziaania
       bierzcej instancji (jeeli ta zmienna 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 zawaroci 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 seperator 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 zawaroci 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

   Na pocztku naley w pliku konfiguracyjnym LMS-UI (standardowo
   /etc/lms/lms.ini) ustawi typ reloadu obsugiwany przez demona:
reload_type     = sql
reload_sqlquery = "INSERT INTO reload VALUES('reload')"

   Notatka

   Struktura tabeli 'reload' jest dowolna, zatem musisz zadba o
   odpowiedni insert.

   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
                                # ma by sprawdzana tabela 'reload', 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,
   przez wpis do tabeli 'reload'. Opcja 'sleeptime' (-s) okrela okres
   midzy odczytami tej tabeli. Gdy do tabeli 'reload' zostan zapisane
   dowolne dane (przy pomocy menu 'Przeadowanie' w LMS-UI) demon wykona
   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 reg 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 reg HTB
   traffic Statystyki wykorzystania cza
     _________________________________________________________________

6.2.2. Payments

6.2.2.1. Opis

   Modu nalicza uytkownikom opaty abonamentowe. 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.
     _________________________________________________________________

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
     _________________________________________________________________

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 wszyskie 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. reg
   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. 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"
     _________________________________________________________________

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
       okreslonym '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 oidend. W zasadzie mona to zrobi moduem
   'hostfile', ale w 'oident' masz moliwo okrelenia dla ktrych sieci
   ma by tworzony konfig.
     _________________________________________________________________

6.2.12.2. Konfiguracja

   A oto parametry moduu 'oident'
     * begin
       Tekst wstawiany na pocztku pliku. Domylnie: puste.
       Przykad: begin = "#Generowany utomatycznie\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 sieci do uwzgldnienia. Domylnie: "192.168.0.0/16
       10.0.0.0/8".
       Przykad: networks = 192.168.1.0/24
     * command
       Polecenie do wykonania po utworzeniu pliku. Domyslnie: 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 Uytkownka
       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 domyslne 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
   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
     _________________________________________________________________

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 ('nodes')

   id - identyfikator
   name - nazwa
   mac - adres MAC
   ipaddr - adres IP
   ownerid - identyfikator waciciela (uytkownika)
   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/odaczony
     _________________________________________________________________

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 (przychw, 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 - warto netto w zotych
   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. Powizania ('assignments')

   id - identyfikator
   tariffid - identyfikator taryfy
   userid - identyfikator uytkownika
   period - okres (ilo dni)
   at - dzie naliczania
   invoice - okrela czy ma by wystawiana faktura (1 - tak, 0 - nie)
     _________________________________________________________________

7.2.10. Faktury ('invoices')

   id - identyfikator
   number - numer w roku
   cdate - data wystawienia
   paytime - czas zapaty (ilo dni)
   customerid - identyfikator uytkownika-nabywcy
   name - nazwa (nazwisko i imi) nabywcy
   address - adres nabywcy
   nip - nip nabywcy
   zip - kod pocztowy nabywcy
   phone - telefon nabywcy
   city - miasto nabywcy
   finished - pole okrelajce zamknicie faktury
     _________________________________________________________________

7.2.11. 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.12. Znaczniki czasu ('timestamps')

   time - czas ostatniej modyfikacji
   tablename - nazwa tabeli
     _________________________________________________________________

7.2.13. Statystyki wykorzystania cza ('stats')

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

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. 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
   poprostu 64-znakowa (256-bitowa) liczba hexadecymalna. 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.5. Ograniczenia

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

7.5.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.5.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
            spkojnie, 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 wielkoc 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)
