WWWdia je soubor programů, který podporuje čtení WWW dokumentů s českou diakritikou v různých kódech. Dokumenty jsou uloženy na serveru v tzv. základním kódování (běžně ISO8859-2
, ale může být libovolné) a překládají se při transportu k uživateli. Bližší diskuse je v souboru INTRO.
WWWdia pracuje s unixovými servery (ověřeny NCSA httpd 1.3 a CERN). O přenesení pod VMS se uvažuje.
Původní verze WWWdia-1.0 je dílem zesnulého Jana Košťála z A1 BBS FEL. Verze K2.0 vznikla ze zkušeností z provozu na serverech sdružení OMICRON a katedry počítačů FEL. Má tato rozšíření a úpravy:
Instalační sada obsahuje hlavní adresář a dva podadresáře. V hlavním adresáři jsou soubory pro překlad kódu a údržbu systému. Podadresář cgiutils
obsahuje obecně užitečné podpůrné programy, které se dají nainstalovat i samostatně. Podadresář ss
obsahuje soubory specifické pro kódovou samoobsluhu.
Všechny potřebné konfigurační parametry jsou soustředěny do Makefile v hlavním adresáři. Proměnné jsou rozděleny do několika skupin:
CGI_ALIAS=cgi-bin
CGI_SUFFIX=
CGI_DIR=/usr/local/etc/httpd/cgi-bin
CGI_ALIAS=~our_user
CGI_SUFFIX=.cgi
CGI_DIR=/home/our_user/public_html
Pozn.: Takto budu vkládat své poznámky, pramenící především z praktických zkušeností. Nuže: při pokusu o použití v uživatelské stránce nainstalovaný WWWdia (ale i jiné programy) na našem serveru narážejí na chybu v globálně instalovaném skriptu cgiwrap
, který umožňuje spouštění skriptů instalovaných právě v uživatelských stránkách, neboť k těmto uživatelským skriptům se dostanou značně pochroumané proměnné prostředí a uživatelské skripty nejsou schopny např. nalézt požadovaný soubor.
Ondřej Bojar
CGI_ALIAS
udává, jak se na CGI scénáře má odvolávat URL, CGI_DIR
udává jejich umístění z hlediska souborového systému.
CGI_UTILS
je adresář pro podpůrné programy. Podpůrné programy a scénáře mohou být kdekoli, NCSA server je mívá v /usr/local/etc/http/support
. Tento adresář nemusí být zahrnut v $PATH
.
USR_UTILS
obsahují prostředky pro práci s textem a údržbu. Adresář by tedy měl být v $PATH
.
TR_DIR
je adresář s abecedami. Na serverech s nainstalovanou samooobsluhou se s ním pracuje přes setuid programy, není tedy třeba právo veřejného zápisu.
PATH
, je zejména v BSD systémech třeba sdělit scénářům umístění některých programů. Jsou to:
mail
(běžný agent)
wc
(počítání slov, resp. znaků)
m4
(makroprocesor) (pod SunOS je třeba používat /usr/5bin/m4
, verze /bin/m4
není osmibitová). Makroprocesor m4
se používá jak při běhu, tak k instalaci. Jeho vestavěná makra však kolidují jak s texty programů, tak hlavně s texty dokumentů. Proto se musí "oddefinovat", k čemuž slouží sady příznaků M4_BLD_FLAGS
(instalace) a M4_RUN_FLAGS
(chod).
Další text Makefile by již nemělo být zapotřebí upravovat. Příkazem
make
se programy přeloží, resp. zmodifikují, příkazem
make install
se nainstalují. Příkaz
make clean
smaže veškeré vygenerované soubory. Tento příkaz je nutný i tehdy, změníme-li své rozhodnutí ohledně samoobsluhy.
Pozn: Soubory Makefile
nejsou kompatibilní s naší (pravděpodobně zastaralou) verzí programu make
. Byl jsem nucen: 1) rozlámat všechny příkazy install
do více řádků tak, aby každý příkaz instaloval právě jeden soubor a ne skupinu souborů 2) odstranit příkazy chmod
a změnu provést ručně 3) u starší verze WWWdia K2.0 ve všech skriptech použít jako interpret ksh
místo původního sh
WWW dia je určen pro zcela volné použití, ovšem pro optimální využití v širokém síťovém prostředí je vhodné dodržovat následující postupy:
Poznámka: Na Jana Košťála už není a nebude žádná adresa, elektronická ani jiná. Záležitosti kolem verze K2 vyřizuje tedy schmidt@cs.felk.cvut.cz. Verze je značena K, aby jeho kolegové z A1 BBS FEL měli možnost WWWdia vyvíjet po svém.
Předpokládejme, že máme soubor
/path/file.html
s diakritikou. Dále předpokládejme, že podpora je nainstalována pod CGI_ALIAS
cgi-bin, jak je běžné. Potom správný odkaz na tento soubor je
http://server/cgi-bin/charset/path/file.html?charset=__CHARSET__
Pokud máme souborů takto provázaných více, uživatel musí vybrat kódování jen jednou. /path
může být i ve tvaru /~user
. Cesta k dokumentu se musí zadávat vždy celá (musí začínat lomítkem). To platí i o odkazech na dokumenty bez diakritiky, jako jsou jiné texty a obrázky. Bohužel, /path/file
nemůže znamenat spuštění CGI procedury.
Pozn: Diskusi o adresování dalších odkazů z překódovávaného dokumentu uvádím ve srovnání CGI-skriptů.
Pro konverzi dokumentů do bázového kódování serveru je určen scénář cstobase
:
cstobase -c <code> [input-file [output-file]]
kde <code>
je některá z přípon souborů abeceda.*
. Chybí-li specifikace výstupu, užije se standardní výstup. Chybí-li specifikace vstupu, užije se standardní vstup (scénář pak funguje jako filtr). Chybí-li parametry vůbec, scénář vypíše formát volání spolu s dostupnými kódy. Přidá-li se nový soubor abeceda.xxx
, není třeba scénář rekonfigurovat.
Pro ověření, zda daný dokument neobsahuje nepřeložitelné znaky je určen scénář cscheck
:
cscheck -c <code> [input-file]
kde <code>
je některá z přípon souborů abeceda.*
. Chybí-li specifikace vstupu, užije se standardní vstup. Chybí-li parametry vůbec, scénář vypíše formát volání spolu s dostupnými kódy. Přidá-li se nový soubor abeceda.xxx
, není třeba scénář rekonfigurovat. Scénář hlásí "Code OK
" nebo "n characters out of code
" na chybový výstup.
Znaková sada se dá zrušit příkazem
rmabc <code>
Změníme-li množinu znakových sad, je možné nabídkový dokument přegenerovat
genoffer
Kódová samoobsluha dává možnost si abecedy "stáhnout" pomocí HTTP. Dokument, který nám vzdálený server zašle, uložíme do souboru a zadáme příkaz
recvabc <soubor>
Na serverech, kde je nainstalována samoobsluha, tak může učinit kdokoli, na ostatních jen vlastník adresáře s abecedami (TR_DIR
).
Jak příkazy rmabc
a recvabc
, tak samoobsluha regeneraci nabídky provádějí automaticky.
Usoudí-li uživatel, že mu nevyhovuje žádná z nabízených abeced, ačkoli jeho klient diakritiku podporuje, má možnost použít samoobsluhu.V takovém případě dostane formulář, kde vyplní patřičné znaky, název abecedy a platformu. Kontroluje se - zda jméno obsahuje znaky přípustné pro jméno souboru - zda abeceda se stejným jménem již neexistuje - zda abeceda není shodná s některou již existující - zda jsou vyplněny všechny položky. Pokud kontroly projdou, vygenerují se příslušné soubory a regeneruje se soubor s nabídkou abeced. Administrátor serveru je upozorněn emailem.
CGI scénář pracuje zpravidla pod jiným UID, než jsou adresáře serveru. Často je to uživatel "nobody". Proto musí být programy, kopírující informační soubory nové abecedy a nabídkový dokument tzv. setuid programy a musí mít stejného vlastníka jako adresář, kam zapisují (TR_DIR
v konfiguraci). Nemusí to být zrovna root. Aby se tyto programy nestaly dírou do systému, mají pevně (při překladu) nakonfigurovám adresář a výstupní soubor. Kromě toho mají vnitřně omezenu velikost výstupního souboru na 100 resp. 3000 byte.
Kódová samoobsluha byla vytvořena pro řešení obtížných situací, zejména ve styku s Čechy v cizině, kteří často používají nestandrdní nástroje. Z výše uvedeného textu je zřejmé, že masové používání by mohlo vést k různým názvům téže abecedy na různých serverech, což je nežádoucí. Bylo by tedy dobré informovat veřejnost co nejšíře, vyskytne-li se nové kódování.
Soubor README z balíku WWWdia do HTML převedl Ondřej Bojar.