Számláló és statisztika készítése Novell Web Serveren

Már a hálózat mûködésének legelsõ napjaiban felmerült az igény, hogy indítsunk számlálót. Szerettük volna látni: mekkora a forgalmunk. Majd arra is kiváncsiak lettünk, hogy kik látogatnak. Mindkét problémára több megoldást is kerestünk (más szerver, PERL, CGI, stb), de végül is úgy döntöttünk, hogy ezt magunk írjuk meg.

Számláló

A számláló elkészítésére a megoldást Novell SSI utasításokkal találtuk meg. Ez a következõ utasítás beillesztését jelenti a letoltendõ oldalba:


 <!--#COUNT FILE="counter.txt"-->

Ez létrehoz az illetõ oldal könyvtárában egy "counter.txt" nevû file-t, amiben ASCII módon tárolja a számot. Az utasítás végrehajtásakor ezt a számot automatikusan eggyel növeli, és ezen utasítás helyén már a léptetett szám áll. Természetesen ez már formázható, és a kivánt módon megjeleníthetõ. A baj csak az, hogy a szerver alapállapotban ezt az SSI utasítást csak azokon a file-okon végzi el, aminek a kiterjesztése SSI. Ennek a problémának a megoldását többféleképpen is meg lehet oldani:

  1. A WEBMGR segítségével ezt engedélyeztetni kell a HTM kiterjesztésre is (ennek hátránya, hogy akkor minden HTM lap letöltése hosszabb ideig tart)
  2. Meg kell oldani, hogy mindenképpen letöltõdjön az SSI kiterjesztésû lap

Mi a második utat követtük. Letöltéskor (www.felsobuki.sulinet.hu) indul az index.htm automatikusan. Ez egy egyszerû, gyorsan letöltõdõ oldal, ami közli, hogy mi fog jönni. Ez tölti aztán be automatikusan az index.ssi-t, amit a fejbe írt


 META HTTP-EQUIV="Refresh" CONTENT="1; URL=http://www.felsobuki.sulinet.hu/index.ssi"

sor 1 másodpercen belül végez el. Itt az 1-es természetesen más számra is kicserélhetõ, akkor annyi másodpercen belül történik a töltés. Ha ide 0-t írunk, akkor egybõl megtörténik a töltés.

Látogatói adatok tárolása

Ha már ilyen szépen megy a látogatók számlálása, jött az igény a látogatók nyílvántartásáera is. Ismét az SSI utasításokkal oldottuk meg a feladatot. Ez a következõ sorok HTML oldalba beillesztésével tehetjük meg:


 <!--#APPEND FILE="guest.txt" LINE="&&REMOTE_HOST&& (&&REMOTE_ADDR&&) : &&DATE_LOCAL&& <&&HTTP_USER_AGENT&&>"-->
 <!--#CONFIG TIMEFMT="%Y. %m. %d."-->
 <!--#FLASTMOD FILE="index.htm"-->

ahol, az elsõ sor a "guest.txt" file-ban tárolja a látogatók adatait, jól kielemezhetõ határolókkal (":" és "<>"). A második és harmadik sor pedig megjeleníti az index.htm file módosítási idejét. Ezt fel lehet használni az utolsó módosítás idejének kijelzésére. Ezt az idõt (mivel az oldal már hosszú ideje nem változott) a felhasználói adatokat feldolgozó program változtatja automatikusan, így követhetõ az utolsó feldolgozási idõ. A probléma ismét az, hogy ezt a szervernek kell elõállítani, így a kiterjesztésének SSI-nek kell lennie. Ez nálunk az index.ssi file-ban található, ezt úgyis átalakítja a szerver.

A használt file-ok nevei

A statisztika tárolására használt file-ok neveinek megválasztása még a program elsõ verzióira vezethetõ vissza. Semmiféle logikai kapcsolat nincs a nevek adása és a cél között. A file-ok a WEB szerver kiindulási könyvtárában vannak (sys:\web\docs), de tetszõleges helyre is helyezhetõk (ekkor a hivatkozások korrigálandók!):

 Név

 Feladat
 bongesz0.txt  A böngészõk adatai az aktuális hónapban
 bongesz1.txt  A böngészõk összesített adatai
 darab.txt  A látogató gépek adatai IP cím, látogatási idõpont és szám szerint
 guest.txt  A még fel nem dolgozott látogatói adatok
 g.txt  A feldolgozás ideje alatti segédfile
 oprendsz.txt  Az operációs rendszer adatai az aktuális hónapban
 opr1.txt  Az operációs rendszer összesített adatai
 orszagok.txt  Az országok adatai az aktuális hónapban
 orsz1.txt  Az országok összesített adatai
 osszes.txt  Az adott hó, már feldolgozott adatai

Minden file egyszerû ASCII formátumú (mint a TXT kiterjesztés mutatja), szövegszerkesztõvel olvasható, írható. Kézzel módosítani nem célszerû, kezelését a programok automatikusan végzik.

Látogatói adatok feldolgozása

Az adatok feldolgozása az elsõ idõkben kézzel történt, annak minden mellékhatásával (elszámolás, unalom...) együtt. Szükségessé vált egy program, ami ezen adatokból kigyûjti a lényeget, különszedi az országokat, operációs rendszereket, böngészõket. Célunk volt még az aktuális hó, és az összesített látogatók megmutatása is. Ezt egy Delphi 3.0-val készült program végzi, aminek a neve STATISZT.EXE

A program által ellátott feladatok:

A program használatához be kell állítani a STATISZT.INI file-t a program könyvtárában, amit a program indulásakor beolvas. Elsõ indításkor létrehozza ezt a file-t, amit tetszõleges - formátum alkalmazása nélkül mûködõ - szövegszerkesztõ segítségével lehet megszerkeszteni. Az általunk használt ini file a következõ:



    
[WebSite]
IP=195.199.73.109
Path=w:\

[Date]
Year=2000
Month=APR

[Local]
IP1=195.199.73.108
IP2=195.199.73.107
IP3=
IP4=

[Nets]
1=.matav.net
2=.elender.hu
3=.at-2742.netway.at
4=.datanet.hu
5=.inktomisearch.com
6=.externet.hu
7=.bdtf.hu
8=.deltav.hu
9=.aol.com
10=.alarmix.net

AZ IP a szerver címe, aminek nem szabad szerepelnie a nyilvántartásban. Ugyanígy az IP1, IP2 ... a helyi címeket jelentik (nálunk a modemes IP-k ezek), amelyek szintén nem szerepelhetnek a nyilvántartásban. A PATH tartalmazza a statisztikai file-ok elérését. Ez a könnyebb kezelés érdekében külön meghajtón van (amit csak a rendszergazda lát). A YEAR és MONTH az aktuális hónap adatai, innen tudja a program, ha hónapváltás következik be. A NETS kulcsszó alatt pedig a "sokgépes címek" kezelését segíti. Például a MATÁV-nál elõfizetõk minden híváskor más és más IP számot kapnak. Ez rengeteg egyedi gép nyilvántartását követelné. Az 1=.matav.net azt írja elõ, hogy minden olyan gépet, melyben a ".matav.net" elõfordul egy gépnek kell tekinteni. Ez a lista további számokkal (11, 12, ...) bõvíthetõ.

A program használata nagyon egyszerû, csak el kell indítani. Tevékenységének minden mozzanatát kiírja. Tapasztalat szerint vannak esetek, amikor egy ilyen nyilvántartási file-t nem lehet megváltoztatni (a WEB szerver zárolja?). Ilyen esetekre felkészülve a hibás file mûvelet hibajelzését kiírja, és ismét meg lehet próbálkozni vele, illetve akár kézzel (Norton vagy Intézõ felhasználásával) segíteni lehet a programnak.

Statisztika kiírása

Meg lehetne oldani azt is, hogy a STATISZT.EXE készítse el a szükséges adatfile-ok html-es verzióit is (fix néven), és a szükséges helyen ezeket a WEB szerver küldené. Ezzel szemben mi a NETBASIC program mellett döntöttünk, ez a LISTA.BAS program. A programot a "sys:\netbasic\web" helyre kell másolni. Ez a program kiírja az összes adatot. A program hívása a különbözõ feladatra a következõ:

 Feldolgozás elõtti adatok:  http://www.....sulinet.hu/netbasic/lista.bas/latogato
 Országok adatai:  http://www.....sulinet.hu/netbasic/lista.bas/orszag
 Böngészõk adatai:  http://www.....sulinet.hu/netbasic/lista.bas/bongeszo
 Operációs rendszer adatai:  http://www.....sulinet.hu/netbasic/lista.bas/op
 IP adatok:  http://www.....sulinet.hu/netbasic/lista.bas/ip
 Adott hónap adatai:

 http://www.....sulinet.hu/netbasic/lista.bas?200003

ahol a 2000 év 3. hónap adatai kellenek. Fontos a bevezetõ 0!
Még nemlétezõ hónap esetén az osszes.txt-t írja ki.

Programok letöltése

A programok "végterméke" megtekinthetõ a <www.felsobuki.sulinet.hu> címen, majd a szükséges lépések sorban <magyar> nyelv választás, <információk> továbblépés. Ekkor látható lesz a programok kimeneti képe.

A programok letölthetõk az 
ftp://ftp.sulinet.hu/support/novell/nwweb31/statiszt.zip
vagy az
ftp://ftp.felsobuki.sulinet.hu/fnpg_sk/statiszt.zip  
címrõl.

 

Szoldatics József
(szolda@mail.felsobuki.sulinet.hu)
2000 november 6.