WWWdia K2.0, K2.1, K2.2

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:

Obsah

  1. Instalace
  2. Podmínky užití WWW dia
  3. Užití a omezení
  4. Samoobsluha
  5. Autoři

Instalace

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:

Samoobsluha ano/ne
Hodnota true znamená nainstalovat samoobsluhu, cokoli jiného je "ne". O samoobsluze viz níže; v podstatě však dává uživateli možnost trvale na serveru zanechat znakovou sadu. Ačkoli podle mých úvah to nepředstavuje vážné nebezpečí, některým administrátorům to nemusí vyhovovat.
Server info (údaje o serveru)
Většinou nevyžadují vysvětlení. Typická instalace se bude opírat o CGI adresář serveru, pro NCSA httpd tedy bude:
CGI_ALIAS=cgi-bin
CGI_SUFFIX=
CGI_DIR=/usr/local/etc/httpd/cgi-bin
Celá podpora se dá nainstalovat i do uživatelské stránky, pokud má povoleno spuštění CGI procedury. V takovém případě bude:
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

Directory info (údaje o adresářích)
Zatímco 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.
Programs info (údaje o programech)
Vzhledem k tomu, že CGI scénáře běží zpravidla s omezeným nastavením PATH, je zejména v BSD systémech třeba sdělit scénářům umístění některých programů. Jsou to:

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

Podmínky užití WWW dia

(původní text J. Košťála)

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:

  1. Neměnit interní názvy kódových stránek. Jednotné názvy umožní korektní odkazy mezi jednotlivými servery, WWW dia používající.
  2. Oznámit veškeré změny, směřující k vylepšení WWW dia na adresu jenik@feld.cvut.cz. To umožní zahrnout tyto změny do budoucích verzí. Zejména se to týká případného přidání další, dosud nepodporované kódové stránky.
  3. A poslední prosba: Oznamte mi na výše uvedenou adresu každé použití WWW dia. Mám v úmyslu vybudovat a udržovat stránku odkazů na tyto servery, v případě velkého rozšíření a zájmu můžeme zařídit i diskusní skupinu, ...
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.

Užití a omezení

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.

Samoobsluha

Princip činnosti

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.

Bezpečnost

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.

Pro a proti

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

Autoři

WWWdia 1.0:
Jan Košťál, in memoriam
WWWdia K2.0:
Jan Schmidt, schmidt@cs.felk.cvut.cz
WWWdia K2.1:
Jan Schmidt, schmidt@cs.felk.cvut.cz a přispěvatelé kódů z Internetu

Soubor README z balíku WWWdia do HTML převedl Ondřej Bojar.