LMS - LAN Management System

Marcin "Lexx" Król
Krzysztof "Hunter" Drewicz
Łukasz "Baseciq" Mozer

© 2003 LMS Developers

Niniejszy program jest oprogramowaniem wolnodostępnym; możesz go rozprowadzać dalej i/lub modyfikować na warunkach Powszechnej Licencji Publicznej GNU, wydanej przez Fundację Wolnodostępnego Oprogramowania - według wersji 2-giej tej Licencji lub którejś z późniejszych wersji.

Niniejszy program rozpowszechniany jest z nadzieją, iż będzie on użyteczny - jednak BEZ JAKIEJKOLWIEK GWARANCJI, nawet domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ albo PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. W celu uzyskania bliższych informacji - Powszechna Licencja Publiczna GNU.

Z pewnością wraz z niniejszym programem otrzymałeś też egzemplarz Powszechnej Licencji Publicznej GNU; jeśli nie - napisz do Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Zawartość

Przedmowa

Wersja parsowana z DocBook'a do htmla przy pomocy jade i pierwszego lepszego arkusza stylów, więc nie narzekać na brzydkeigo HTMLa. Polskie krzaczki są w ISO. Ładnego HTMLa można się spodziewać jak wyjdzie wersja 1.0 LMSa (czyli w raczej dalszej nieokreślonej przyszłości ;-) )

Sugestie słać na lexx maupa polarnet kropka org.

Rozdział 1. Na początek

Czym jest LMS

"LMS" jest skrótem od "LAN Management System". Jest to zestaw aplikacji w PHP i Perlu, ułatwiających zarządzanie sieciami osiedlowymi (popularnie zwanymi Amatorskimi Sieciami Komputerowymi), opartych o bazę danych MySQL (docelowo, do wyboru, MySQL lub PostgreSQL). Główne założenia to uzyskanie jakości usług oraz obsługi użytkowników na poziomie providera z prawdziwego zdarzenia. Najbardziej podstawowe cechy LMS to:

Całość została wymyślona w ramach administracji ASK NetX i tam jest nieustannie rozwijana i poddawana testom ;)

Co LMS może a czego nie

LMS Nie zastąpi Ci umiejętności jakie powinien mieć administrator. Jeśli nie potrafisz wykonać tak prostych czynność jak instalacja czy konfiguracja, prawdopodobnie nie będziesz umiał dostroić LMS do swojego systemu. Tak więc bez znajomości systemów U*IX się nie obejdzie.

Co wchodzi w skład LMSa

LMS składa się z kilku modułów, podstawowym modułem jest LMS-UI (User Interface). Jest on w całości napisany w PHP i do pracy wymaga bazy danych (właściwie to każdy moduł wymaga bazy danych). To właśnie w LMS-UI wykonujemy wszystkie czynności, reszta modułów ma tylko za zadanie zautomatyzować pracę LMSa.

LMS to także zestaw skryptów w języku PERL, i to właśnie te skrypty wymagają abyś posiadał interpreter tego języka. Jeśli będziesz chciał używać tych skryptów, musisz mieć PERLa. Skrypty pozwalają m.in. na comiesięczne naliczanie opłat abonamentowych bądź wysyłanie upomnień. Jest jeszcze LMS-MGC, który też jest skryptem ale na tyle uniwersalnym że potrafi wygenerować praktycznie dowolny plik konfiguracyjny, i zrestartować usługę.

Instalacja

Wymagania

Serwer WWW

Ponieważ LMS-UI jest napisane w PHP, potrzebujemy serwer WWW który będzie ten język obsługiwał. Preferowanym serwerem jest Apache www.apache.org

Interpreter PHP

Interpreter powinien być w wersji 4.2.x lub nowszej, chociaż działa też poprawnie na 4.1.x (ale ponieważ devepolerzy pracują na 4.2.3, nie można zagwarantować poprawnej pracy na starszych wersjach. PHP możemy sciągnąć ze strony www.php.net

Serwer baz danych

Preferowany to MySQL. 3.23.53 i nowszy, starszy może też działać, jeśli nie to daj nam o tym znać ;-)

LMS-UI oraz LMS-MGC powinien także działać z postgresql, jednak ta konfiguracja jest narazie w fazie testów.

Biblioteki: Smarty i ADOdb

LMS-UI do pracy wymaga jeszcze bibliotek Smarty (http://smarty.php.net) w wersji 2.5.0 lub wyższej oraz ADOdb (http://php.weblogs.com/ADOdb) w wersji 2.90 lub wyższej.

Perl

O ile dla LMS-UI wystarczy to co powyżej, to żeby mieć działający LMS-MGC, lub resztę skryptów potrzebujemy także perla i moduły do niego czyli:

Sciągamy LMSa

Nota redaktorska: Opis sciągania wersji CVSowej przy wydaniu stabilnym jest IMHO bezsensowny, ale teraz niech zostanie.

LMSa możemy sciągnąć ze strony domowej projektu (lms.rulez.pl), lub bezpośrednio z CVS:

lexx@troll:~$ wget http://cvs.rulez.pl/viewcvs.cgi/lms/lms.tar.gz?tarball=1

jeśli chcemy sciągnąć przez interfejs webowy lub jeśli mamy CVS możemy wykonać komendę:

lexx@troll:~$ cvs -d :pserver:cvs@cvs.rulez.pl:/home/cvsroot get lms

Umieszczamy LMS na dysku

Jeśli ściągneliśmy archwiwum to je teraz rozpakowujemy, a następnie przenosimy pliki z lms-ui do katalogu osiągalnego z poziomy przeglądarki www (np. /var/www/lms). Pliki z konfiguracją umieszczamy w katalogu /etc/lms).

Biblioteki

Jeśli jesteśmy w katalogu z LMSem, to musimy ściągnąc biblioteki. Najpierw ściągamy Smarty:

lexx@troll:~$ cd /var/www/lms
lexx@troll:~$ cd lib	
lexx@troll:~$ wget http://smarty.php.net/distributions/Smarty-2.5.0.tar.gz
lexx@troll:~$ tar -xzf Smarty-2.5.0.tar.gz
lexx@troll:~$ mv Smarty-2.5.0/libs Smarty

Teraz ADOdb:

lexx@troll:~$ wget http://phplens.com/lens/dl/adodb320.tgz
lexx@troll:~$ tar -xzf adodb320.tgz

Konfiguracja

Po ściągnięciu i zainstalowaniu LMSa musimy jeszcze ustawić dwie rzeczy. Bazę danych, oraz podstawowe opcje w lms.ini

MySQL

lexx@troll:~$ mysql -u [Użytkownik z pełnym dostępem do bazy] -p
Enter password: [Hasło]
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 '[Tajne Hasło]';
mysql> flush privileges;
mysql> use lms;
mysql> source doc/lms.mysql;

lms.ini

Sekcja [database] - ustawienia bazy danych

Sekcja [directories] - ustawienia katalogów

Prawa dostępu

LMS ma możliwość zdefiniowania do 256 reguł dostępu do systemu. Każda z nich może zabraniać, bądź pozwalać na dostęp do konkretnych modułów. Każdemu adminowi można przydzielić dowolną kombinację reguł dostępu.

Domyślnie zdefiniowanych jest osiem reguł dostępu. Siedem z nich zezwala na dostęp do modułów oraz jedna zabrania.

Moduły do których administrator ma zawsze dostęp to: welcome, copyrights, logout, chpasswd (przy czym chpasswd umożliwia tylko zmianę własnego hasła), dostep do reszty jest zdefiniowany regułami. Jeśli nie ustawimy administratorowi żadnej reguły dostępu, to LMS domyślnie przydzieli mu regułkę 0 czyli pełen dostęp.

Bezpieczeństwo

Dostęp do lms-ui powinien być możliwy tylko po SSL (co zresztą można wymusić flagą force_ssl w lms.ini), a katalog z kopiami zapasowymi baz danych powinien zostać przeniesiony do katalogu gdzie serwer WWW nie ma dostępu (np. /var/backup/lms), bo inaczej do plików z kopiami zapasowymi bazy będzie się można dostać z poziomu www bez autoryzacji.

Rozdział 2. LMS UI (User Interface)

Tutaj będzie opis LMS-UI

Konfiguracja.

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

Rozdział 3. LMS-MGC

LMS-MGC to "magiczny" generator plików konfiguracyjnych. Przy odrobinie wysiłku możemy stworzyć przy jego pomocy dowolnego rodzaju plik konfiguracyjny (np. generujący odpowiednie strefy dla DNS)

Konfigurację dla LMS-MGC możemy ustalić w pliku lms-mgc.ini, kótry jest podzielony na kilka sekcji. Podstawowe opcje możemy ustawić w sekcji [database]:

Właściwa konfiguracja dotycząca generatorów poszczególnych plików konfiguracyjnych jest umieszczana w sekcji mgc i pochodnych. W samej sekcji mgc możemy użyć następującego parametru:

Teraz, każda instancja ma swoją nazwę i jej konfigruację tworzy się umieszczając sekcję o nazwie [mgc:nazwa], czyli przykładowo: [mgc:mydaemon]

W samych instancjach możemy używać następujących opcji konfiguracyjnych:

Oprócz tego w części opcji konfiguracyjnych możemy używać następujących zmiennych:

Rozdział 4. Skrypty

Instalacja

Jeśli chcemy ustawić konfigurację któregoś ze skryptów, robimy to w odpowiedniej sekcji lms.ini. Same skrypty przenosimy do katalogu /usr/sbin. Po przeniesieniu musimy je jeszcze dopisać do crontaba tak, aby były uruchamiane automatycznie właśnie wtedy kiedy tego chcemy.

Pamiętaj że przeważnie będziesz chciał aby te skrypty były uruchamiane tylko raz w miesiącu (no chyba że chcesz naliczać użytkownikom opłaty kilka razy w miesiącu.)

Przykładowo, jeśli chcielibyśmy aby opłata abonamentowa była naliczana uzytkownikom 5 dnia każdego miesiąca o godzinie 1:20, przykładowy wpis w crontab powinien wyglądać tak:

20 1 5 * *       /usr/sbin/lms-eachmonth

Po więcej informacji możesz sięgnąć do man crontab

lms-notify

Szablony

lms-notify jest dobrym sposobem przypominania ludziom o tym że do pracy sieci i łącz konieczne są ich pieniążki. Pozwala on na napisanie kilku[-nastu] plików tekstowych [w iso-8859-2] i traktowania ich jako szablonów do mailingu.

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

Przykładowy wyciąg 10 ostatnich operacji kasowych

Data       | Opis                                                 | Wartość
-----------+------------------------------------------------------+---------
2003-02-02 | Abonament za miesiąc 2003/02                         |  107.00
2003-02-01 | Wpłata                                               | -107.00
2003-02-01 | Abonament za miesiąc 2003/02                         |  107.00
2003-02-01 | Wpłata                                               | -321.00
2003-01-31 | Abonament za miesiąc 2003/01                         |  107.00
2003-01-31 | Abonament za miesiąc 2003/01                         |  107.00
2003-01-31 | Abonament za miesiąc 2003/01                         |  107.00
-----------+------------------------------------------------------+---------

Przykład szablonu:

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

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

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

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

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

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

Dział Rozliczeń ASK NaszaSiec

Gerwazy Reguła
telefon: 0-509031337
email: gerwazy@staff.naszasiec.pl

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

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

kwota operacji | typ operacji | data

%last_10_in_a_table

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

Konfiguracja

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

lms-cutoff

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

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

lms-eachmonth

Skrypt po uruchomieniu nalicza użytkownikom opłatę abonamentową. Aby działał poprawnie powinien być uruchamiany tylko raz w miesiącu (o ile użytkownicy wnoszą opłaty co miesiąc). Skrypt ten nie posiada żadnych opcji konfiguracyjnych.