LMS 1.0-cvs (1.143/1.19) na PLD
Witajcie !
Jeszcze raz gratuluje pomyslu i zycze powodzenia w dalszej realizacji.
To co mnie nurtuje to obsluga programu na PLD Linux. Jak wiecie dystrybucja ta jest ONBOOT=IPv6_ready ;) dlatego m.in. komputer uzytkownika identyfikowamy jest w postaci <::ffff:IPv4> np w access_log od apache mozna znalezc wpisy :ffff:192.168.0.2 co skutecznie paralizuje dzialanie programu, bo kiedy uzytkownik z dopisanym adresem IP klika "Stan konta" to wyswietla sie informacja, ze "z tym uzytkownikiem nie sa zwiazane zadne operacje kasowe", chociaz takie operacje byly juz wykonywane.
Tymczasowo poradzilem sobie i przez phpmyadmin w tabeli (?!) "nodes" i rekordzie "ipaddr" poprawilem wpis z 192.168.0.2 na ::ffff:192.168.0.2. Oczywiscie rozszerzylem varchar(16) w "ipaddr" do varchar(20) zeby to wszystko sie zmiescilo. Wtedy "Stan konta" dziala.
Jednak nie zalatwia to sprawy, bo komplikuje sie przy cutoff kiedy trzeba odpowiednio ustawic w moim przypadku ipchains. Przeciez nie bedzie podlaczal `ipchains -I forward -j MASQ -s ::ffff:192.168.0.2 -d 0/0`, bo taki zapis nie zadziala.
Moje propozycje to:
1) stworzyc jakas dodatkowa tabele z prefixem ::ffff: ktory bedzie dodawany do "ipaddr" tylko na czas sprawdzania stanu konta przez uzytkownika
lub:
2) ustawic sprawdzenie konta na podstawie adresu MAC uzytkownika
Myslalem, ze calkowicie pomoze mozliwosc, aby "Stan konta" sprawdzany byl przez $REMOTE_HOST, ale tu potrzeba troche wiecej kombinacji, a mianowicie:
1) ustawic w konfigu od apache HostnameLookups On 2) stworzyc pliki strefy dla LANu z nazwami komputerow, a takze pliki strefy odwrotnej; chodzi oto, zeby w access_log komputer uzytkownika widziany byl w postaci hostname, a nie IP czyli np :
komp1.lan - - [10/Mar/2003:10:12:03 +0100] "GET /lms/index.php?m=balanceview HTTP/1.1" 200 2031
3) w tabeli "nodes" rozszerzyc varchar do powiedzmy 30 - varchar(30), a w "ipaddr" zamiast adresu IP wpisac nazwe komputera z nameda czyli w tym przypadku komp1.lan
4) w $sys_dir/modules/balanceview.php ustawic zamiast REMOTE_ADDR -> REMOTE_HOST:
---- balanceview.php ----
if(isset($_SERVER[HTTP_X_FORWARDED_FOR])) $ipaddr = $_SERVER[HTTP_X_FORWARDED_FOR]; else
// $ipaddr = $_SERVER[REMOTE_ADDR]; Zamiast REMOTE_ADDR -> REMOTE_HOST $ipaddr = $_SERVER[REMOTE_HOST];
---- CUT ----
Pozwoli to na sprawdzenie stanu uzytkownika, ale niestety znowu bedzie powodowalo komplikacje w przypadku cutoff. Studiowalem /usr/sbin/lms-mgc i zauwazylem, ze program rozbija adres IP na pojedyncze czesci (%1 %2 %3 %4) i dlatego nie zadzialaja instances przy `ipchains -I forward -s %IP -j MASQ` kiedy $ipaddr="komp1.lan".
I tu od razu nasuwa sie propozycja, aby w przyszlych wersjach podczas wypelniania formularza, ktory tworzy nowego uzytkownika byla mozliwosc na wpisywanie w rubryce "Adres IP" nazwy komputera, a nie tylko i wylacznie adresu IP.
Proponuje rowniez zobaczyc jak dziala webalizer, ktory tworzy przeciez statystyki z access_log, bo kiedy wybieramy opcje, ktora pokazuje hosty jakie sie do nas laczyly to pokazuje "normalne" adresy ip. Nie wiem jak to rozwiazali. Kiedys przepuszczalo sie logi apache przez awk ;)
Chcialbym rowniez zaproponowac, aby w przyszlych wersjach w menu "Uzytkownicy" znalazlo sie cos na wzor .bash_history. Taka mala statystyka, ktora informowala by kiedy dany uzytkownik sprawdzal "stan konta".
Mam rowniez uwage co do pliku INSTALL.
---- INSTALL ----
Po drugie: interpreter PHP.
Tutaj wymagania sš trochę wyższe. Wielce prawdopodobne jest iż LMS pójdzie na każdym PHP 4.2.x które będzie miało obsługę sesji, wyrażeń regularnych i mysql'a.
---- CUT ----
Te sformulowanie dla poczatkujacego uzytkownika moze byc bardzo zawile. Oczywiscie mozna powiedziec, ze jak nie rozumie o co w tym chodzi to lepiej niech sie przesiadze na windows, ale chyba nie oto chodzi. Niech po prostu tak jak jest lista modulow do perla, ktore trzeba zainstalowac - niech pojawi sie taka lista dla php.
Stworzylem taka liste:
php-mysql php-pcre php-posix
To samo tyczy sie $sys_dir/contrib/lms.spec
Dodalbym oprocz
` Requires: php-posix `
takze pozostale moduly.
Zdaje sobie sprawe, ze jest to nadal projekt, ale mysle, ze moje uwagi sie przydadza i z niecierpliwoscia czekam na stabilna wersje.
Apeluje do developerow o pomoc w rozwiazaniu problemu identyfikacji komputera w access_log na PLD.
Na koniec zalaczam uzywane oprogramowanie i plik /etc/lms/lms-mgc.ini, ktorego uzywam w swoim systemie.
Linux zatorze 2.2.22 #1 Tue Oct 1 20:06:29 UTC 2002 i586 Pentium_75_-_200 unknown GNU/Linux
apache-1.3.27-3, php-4.2.3-8, php-mysql-4.2.3-8, php-posix-4.2.3-8, php-pcre-4.2.3-8
---- /etc/lms/lms-mgc.ini ----
[mgc] instances = ipchains
[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
Pozdrawiam !
---- Jakub Urbaniak, kuba@ski.slupsk.pl GSM: +48 504 406 131, UIN:2924443, (MydelkoFA@IRCNet) http://www.ski.slupsk.pl
uczestnicy (1)
-
Jakub Urbaniak