Autor:
Jaromφr DoleΦek,
dolecek@ics.muni.cz
Dokumentace
Zp∞t k hlavnφ strßnce
V²hody CSßΦku
Uv∞domuji si, ╛e ji╛ existujφ velmi kvalitnφ programy pro
konverzi k≤dovßnφ na WWW - a╗ u╛ je to
WWWdia pana J.Ko╣╗ßla nebo t°eba
SaCzech
od p. Pavla Satrapy,
kter² byl vzorem pro CSßΦek, nehled∞ na mno╛stvφ
jin²ch kodΘr∙.
Zßsadnφ nev²hoda WWWdia je v tom, ╛e nepodporuje relativnφ odkazy,
proto╛e na konec odkazu je v╛dy t°eba psßt °et∞zec ?__CHARSET__.
Je tedy v╛dy t°eba v ka╛dΘm odkazu uvΘst celΘ URL.
Dal╣φ nev²hodou je, ╛e umφ p°ek≤dovat jen statickΘ strßnky a nedß
se tedy pou╛φt pro p°ek≤dovßnφ nap°φklad v²stupu r∙zn²ch CGI skript∙.
SaCzech tohle v╣e odstra≥uje, ale je napsßn v Perlu a odezva
s pou╛itφm p°ek≤dovßnφ je v²razn∞ hor╣φ ne╛ bez n∞j.
Rozhodl se tedy napsat rychlej╣φ a na systΘmovΘ prost°edky mΘn∞
nßroΦnou verzi a p°epsat SaCzech 2.0 do jazyka C.
CGI CSßΦek mß v²hody SaCzechu, je ale mnohem rychlej╣φ a mocn∞j╣φ.
CSßΦek lze takΘ v p°φpad∞ pot°eby zkompilat jako FastCGI program,
Φφm╛ se podstatn∞ urychlφ jeho provoz.
U Apache se dajφ pou╛φt takΘ internφ apache moduly. V²kon
modulu je oproti CGI mnohem vy╣╣φ - nemusφ se kv∙li ka╛dΘ
strßnce spou╣t∞t samostatn² proces atd. Existujφcφ
mod_czech od InterSoftu i
i mod_html
od pana Lampy ov╣em pot°ebujφ zßsah do zdrojßk∙
serveru a jeho rekompilaci. Nejen ╛e to znesnad≥uje nasazenφ
(v╣eobecn² trend je pou╛φvßnφ DSO, tedy dynamickΘho nahrßvanßnφ
modul∙), ale m∙╛e zp∙sobit i dal╣φ problΘmy, pokud je na serveru
takΘ nap°φklad PHP Φi Apache-SSL. CSßΦek je jako jedin² schopen
vlo╛enφ jako DSO modul, bez nutnosti patchovat server a dal╣φ moduly
jako PHP Φi Apache-SSL. Je tedy velice
jednoduchΘ ho nasadit a upgrejdovat - a takΘ (v nepravd∞podobnΘm
p°φpad∞, ╛e se neosv∞dΦφ) bezbolestn∞ odstranit.
Modul na p°ek≤dovßnφ Φe╣tiny pro IIS (ISAPI filtr) existuje krom∞
CSßΦku jen jedin² - CZFILTER
od firmy Sprinx. Podle reakcφ u╛ivatel∙ je v dan² moment
(12.9.1999) CSßΦek mnohem stabiln∞j╣φ, asi dvakrßt rychlej╣φ
a narozdφl od n∞j podporuje i FrontPage extensions a provoz pod SSL.
CSßΦek nabφzφ
- mo╛nost funkce jako CGI, FastCGI nebo Apache modul, na
UN*Xu (NetBSD, Linux, Solaris, IRIX, Digital Unix), CGI a ISAPI
na MS Windows NT
- pod Apache 1.3.X mo╛nost pou╛φvat CSßΦek jako DSO modul
- on-fly kompresi dokument∙, posφlan²ch klientovi (kompresi
podporuje nap°. Netscape 4.5+, lynx, MSIE 4.0+)
- podpora META tagu pro oznaΦenφ k≤dovßnφ Φe╣tiny v dokumentu
- podporu Unicode (UTF-8)
- podporu relativnφch odkaz∙ i absolutnφch odkaz∙, automatickΘ
p°episovßnφ absolutnφch odkaz∙ pro zachovßnφ v²b∞ru k≤dovßnφ
- mo╛nost pou╛φvat r∙znΘ typy k≤dovßnφ Φe╣tiny ve zdrojov²ch textech
strßnek; je dokonce mo╛no pou╛φt vφc k≤d∙ v rßmci jednΘ strßnky
- mo╛nost k≤dovat i dynamicky vytvß°enΘ strßnky (nap°. v²sledky
r∙zn²ch skript∙)
- p°ek≤dovßnφ vstupu od klienta (data z formulß°∙) do k≤dovßnφ serveru
- mo╛nost dr╛enφ vφce verzφ (nap°φklad jazykov²ch) dokumentu
v jednom souboru
Budoucnost - verze 2.1.X a dßl
Jednou se snad splnφ i smysl existence CSßΦka
a bude standardnφ souΦßstφ ka╛dΘho
ΦeskΘho Webu, zmφr≥ujφc tak chaos v pou╛φvan²ch kodΘr∙ Φe╣tiny.
A nebo jednou (co╛ by bylo snad je╣t∞ lep╣φ) u╛ nic takovΘho
nebude t°eba - to je ale bohu╛el spφ╣ utopie :)
JakΘ jsou tedy plßny ?
- zprovoznit Apache modul pod NT -
ve verzi 2.1 CSßΦku se Apache modul pod NT sice nahraje,
ale kv∙li (zatφm) pom∞rn∞ zßhadnΘ chyb∞ je╣t∞ nenφ funkΦnφ
- dopsat plnou podporu azbuky, vΦetn∞
p°ekladu z/do latinky a Unicode
- vytvo°enφ NSAPI mutace, tj. modul do Netscape server∙
- p°elo╛it dokumentaci do angliΦtiny a aktivn∞ CSßΦek roz╣i°ovat
do ostatnφch st°edoevropsk²ch zemφ a Ruska (╛ßdn² konkrΘtnφ
termφn)
- Apache: podpora pro Apache 2.0, jakmile bude Apache 2.0 k dispozici
Hodilo by se naportovat CSßΦek na OS/2 a MacOS. Bylo by to p°inejmen╣φm
pouΦnΘ pro m∞ samΘho. Inu - a╛ bude jednou v╣echna prßce hotova ...
TakΘ by bylo dobrΘ n∞jak vyu╛φt dßvnΘho VMS portu pana BφlΘho pro plnΘ
naportovßnφ CSßΦku na tuto platformu. Nemßm ale na ╛ßdn² stroj s tφmto
operaΦnφm systΘmem p°φstup, tak╛e se to asi nezda°φ.
Mo╛nß by se takΘ hodila emulace n∞kter²ch jin²ch
oblφben²ch kodΘr∙, jako je t°eba compose.
Zp∞t
Programßtorsk² boj s windoze aneb portovßnφ CSßΦku na nov² OS
Abych popsal sv∙j boj s NT: prvnφ a nejd∙le╛it∞j╣φ je sebrat
po°ßdnou dßvku trp∞livosti. PotΘ aspo≥ 10 centimetr∙ tlustou hro╣φ k∙╛i,
n∞co k pitφ a krabiΦku pilulek proti bolenφ hlavy. A pak u╛ staΦφ jen ╣t∞stφ
;-). No ale vß╛n∞.
K≤d odpovφdajφcφ metod∞ file byl v pohod∞. JedinΘ, co bylo t°eba
zajistit, bylo predefinovßnφ str[n]casecmp na str[n]icmp().
Hor╣φ to bylo se sφ╗ovou Φßstφ. NT je bohu╛el po tΘto strßnce
neustßle pozadu. Nejvφc m∞ na╣tvalo, kdy╛ p°i pokusu o otev°enφ
streamu nad deskriptorem socketu funkce fdopen() bez udßnφ chyby
prost∞ nezvlßdla to co m∞la. Nßsledujφcφm dotazem na
ntsecurity@iss.net jsem zjistil, ╛e to opravdu je tak jak jsem
se obßval - bohu╛el Winloose NT berou socket a deskriptor souboru
jako dv∞ naprosto odli╣nΘ v∞ci a nad socketem stdio stream otev°φt nelze.
Co╛ vedlo k tomu, ╛e jsem byl nucet si sßm naimplementovat v╣echny
fce nad streamy, kterΘ jsou pro Φtenφ/zßpis dokumentu pou╛ity.
Druhß v∞c, kterß m∞ siln∞ na╣tvala byla neexistence alarm().
Pou╛φvß se nap°φklad tehdy, kdy╛ d∞lßm n∞jakou akci, kterß
se m∙╛e zablokovat na blφ╛e neurΦenou dobu (typicky sφ╗ovß komunikace);
procesu je po zadanΘm poΦtu sekund poslßn signßl SIGALRM. I
p°esto, ╛e tato funkce je souΦßstφ IEEE Std1003.1-1990 (POSIX.1),
na Windows tak n∞jak chybφ.
Mrkvosofti v╣ude prohla╣ujφ, jak jejich NT jsou POSIX-compliant
a skutek utek. Pro CGI CSßΦka tohle na╣t∞stφ p°φli╣ nevadφ - navazuje
spojenφ v╛dy na stejn² poΦφtaΦ, na kterΘm jede, tak╛e je solidnφ
╣ance, ╛e k ╛ßdn²m sφ╗ov²m problΘm∙m nedojde (ov╣em modulo
MS Windows NT Workstation a jeho omezenφ na 10 p°φchozφch TCP/IP spojenφ).
Pod MS Windows takΘ nenφ implementovßno POSIX.2 sleep() a
nejsou definovßna makra pro zji╣t∞nφ typu soboru ze struktury, vrßcenΘ
volßnφm stat().
No a to u╛ se blφ╛φm k zßv∞ru. Moje streamovΘ funkciΦky kupodivu
fungovaly. Odla∩oval jsem je rad╣φ u sebe na NetBSD, proto╛e d∞lßnφ
Φehokoli na Mrkvosoftech je (alespo≥ pro m∞) neuv∞°iteln∞ flustrujφcφ;
nesnß╣φm, kdy╛ vφm co chci ud∞lat a systΘm mi to nedovolφ ud∞lat
(nebo nedovolφ ud∞lat jednodu╣e).
Tfuj.
P°i zßv∞reΦnΘm dola∩ovßnφ jsem do╣el na zajφmavou perliΦku.
Fce stat(2)
se na NT chovß pon∞kud zvlß╣tn∞ - systΘm sice dokß╛e stat()nout
cesta\adresar, ale nedokß╛e cesta\adresar\. Tak╛e
jsem byl nucet pro NT naimplementoval mal² wrapper,
kter² p°ed volßnφm stat(2) odstranφ zßv∞reΦnΘ backslashe.
P°i ov∞°ovßnφ zkompilovatelnosti verze 2.0 na NT jsem bohu╛el op∞t narazil.
Nic netu╣e jsem mezitφm zupgrejdoval MS VC na 5.0 a najednou
nefungovalo str[i]cmp() - bylo p°ejmenovßno na
_str[i]cmp(). Fce vsnprintf() se na NT jmenuje
_vsnprintf(). Struktura stat se jmenuje _stat.
Tentokrßt m∞ nejvφc na╣tvalo to, ╛e kompilßtor standardn∞ nedefinuje
__STDC__ i p°esto, ╛e rozumφ ANSI C. Pokud se symbol
definuje, mß to vedlej╣φ efekty (n∞kterΘ fce majφ p°ed jmΘno
p°idßno _ nap°φklad), tak╛e to bylo nutnΘ obejφt jinak.
Ve╣kerΘ OS zßvislΘ v∞ci jsou v souborech compat.c
a csa_compat.h. Pokud
budete nuceni n∞co portovat na NT, doporuΦuju se na n∞ podφvat,
u╣et°φte si tak urΦit∞ mnoho starostφ. Pracoval jsem na NT serveru 4.0
s MS VC++ 4.0, tak╛e ony informace jsou v dob∞ psanφ tΘto
Φßsti (16.2.1997) vcelku aktußlnφ.
A╗ u╛ bylo naportovßnφ CSßΦku na NT jakkoli t∞╛kΘ, nynφ je prßce
hotova a CSßΦek je od nyn∞j╣ka k dispozici pro Unix i NT p°φmo z police.
Co funguje na Unixu bude v╛dy fungovat i na NT a naopak.
A co OpenVMS ? Hodilo by se jeho port takΘ n∞jak integrovat
do k≤du, ale bohu╛el nemßm p°φstup k ╛ßdnΘmu stroji s OpenVMS,
tak╛e by bylo asi dost problematickΘ lad∞nφ. Navφc mi pan
Bφl² ani nedal k dispozici svΘ zdrojovΘ k≤dy, tak╛e se nemßm
od Φeho "odpφchnout".
Port na jin² operaΦnφ systΘm zatφm nebyl pot°eba, tak╛e jsem ani
nezkoumal, jak by to bylo optφ╛nΘ. Mo╛nß by se hodil port pro NeXtStep
a pro MacOS, ale tak jako tak to nemßm kde ladit.
Co je to mutace ? Je to urΦitß forma CSßΦku, uzp∙sobenß
pro urΦitΘ prost°edφ. Momentßln∞
je CSßΦek k dispozici jako CGI, FastCGI, Apache a ISAPI mutace,
v budoucnosti se chystßm takΘ na NSAPI mutaci.
Ka╛dß mutace MUS═ implementovat n∞kolik zßkladnφch funkcφ, obvykle
v samostatnΘm souboru podle nßzvu mutace (cgi.c pro
(Fast)CGI, apache.c pro Apache modul).
Ve stejnΘm souboru je obvykle i dal╣φ k≤d, kter² danß mutace
ke svΘmu b∞hu pot°ebuje -
nap°φklad main() pro CGI CSßΦek nebo k≤d pro zapojenφ
do Apache serveru pro Apache CSßΦek.
Tyto zßkladnφ funkce pou╛φvß na mutaci nezßvislΘ jßdro CSßΦku k tomu,
aby d∞lalo to, co mß. Ve v²sledku to znamenß, ╛e jen minimßlnφ
mno╛stvφ k≤du se musφ p°episovat a upravovat v p°φpad∞, ╛e
se pφ╣e novß mutace a drtivß v∞t╣ina k≤du se sdφlφ. ZnaΦn∞
to p°izpφvß ke stabilit∞ CSßΦku - na CSßΦek jsou
v r∙zn²ch prost°edφch kladeny r∙znΘ po╛adavky a najde-li
se chyba, jejφ oprava automaticky znamenß zlep╣enφ
i pro ostatnφ mutace bez dal╣φ prßce. Navφc v∞t╣ina k≤du
je opravdu neutrßlnφ k mutaci, tak╛e i v p°φpad∞ p°idßnφ
n∞jakΘ novΘ vlastnosti tuto vlastnost zφskß bezprost°edn∞
ka╛dß mutace. Usnad≥uje to takΘ opravovßnφ chyb, proto╛e
v r∙zn²ch situacφch m∙╛e b²t pohodln∞j╣φ trasovßnφ
r∙znΘ mutace - n∞kdy je pohodln∞j╣φ t°eba CGI a n∞kdy zase
Apache CSßΦek.
I v tomto systΘmu, kde je odd∞len na mutaci zßvisl² a nezßvisl²
k≤d, je n∞kdy nutno upravovat na mutaci "nezßvisl²" k≤d proto,
aby novß mutace fungovala korektn∞. Pro Apache a CGI CSßΦek
nap°φklad platφ, ╛e je k dispozici celß odpov∞∩ (hlaviΦky i t∞lo)
najednou; u ISAPI CSßΦku to neplatφ, nenφ
tam ani zaruΦeno, ╛e najednou dostanu v╣echny hlaviΦky - k≤d,
kter² poΦφtal s p∙vodnφm chovßnφm musel tedy b²t upraven
tak, aby bylo mo╛n∞ hlaviΦky i t∞lo odpov∞di zpracovßvat
po Φßstech.
PodobnΘ zm∞ny ale nejsou p°φli╣ ΦastΘ a s postupem Φasu stßle
mΘn∞ nutnΘ. Nejvφc prßce dalo kdysi ono odd∞lenφ MD a MI
k≤du p°i psanφ Apache mutace - do tΘ doby CSßΦek fungoval
pouze jako CGI. Musel se vyseparovat k≤d, kter²
je specifick² pro CGI a stanovit interface, kter²m se
mutace zapojφ do CSßΦku. Od tΘ doby bylo provedeno n∞kolik zm∞n
interface tak, aby se je╣t∞ vφc sdφlel k≤d mezi Apache a CGI
mutacφ. To se z·roΦilo p°i psanφ ISAPI mutace, kdy jsem pak
strßvil nejvφc Φasu p°i lad∞nφ ISAPI-specifickΘho k≤du a vlastnφ jßdro
CSßΦku se m∞nilo minimßln∞.
Zp∞t
Strßnku napi╣te v k≤du, kter² odpovφdß zvolenΘmu implicitnφmu
k≤du serveru (ve skuteΦnosti k≤dovßnφ strßnky
nenφ omezeno).
Vystavte ji, jak je obvyklΘ. JedinΘ, co se zm∞nφ, bude URL, kter²m
je t°eba se odkßzat na strßnku. Jestli╛e URL strßnky bez p°ek≤dovßnφ by
bylo
http://www.kdesi.cz/cesta/stranka.html
bude URL tΘ╛e strßnky p°i po╛adavku jejφho p°ek≤dovßnφ do sedmibitovΘho
ASCII
http://www.kdesi.cz/toASCII/cesta/stranka.html
za p°edpokladu, ╛e pou╛φvßte Apache CSßΦek.
Tento odkaz v╣ak p°edpoklßdß, ╛e p°edem vφte, jak² k≤d bude u╛ivatel
vy╛adovat. To Φasto nemusφ b²t pravda. V takovΘm p°φpad∞ doporuΦuji
spustit CSßΦek v m≤du whichcode -
URL bude vypadat n∞jak takto:
http://www.kdesi.cz/whichcode/cesta/stranka.html
Na zßklad∞ externφ ╣ablony bude vygenerovßna strßnka, kde bude
u╛ivateli bude oznßmeno, ╛e cφlov² dokument obsahuje
diakritickß znamΘnka a umo╛nφ mu zvolit k≤d, kter² pova╛uje za optimßlnφ.
Druhß mo╛nost je pou╛φt toGUESS. V tomto m≤du se CSßΦek
pokusφ zjistit, jakΘ k≤dovßnφ a jazyk klient podporuje a p°esm∞ruje
klienta na URL, kterΘ odpovφdß jeho jazykov²m/k≤dovacφm schopnostem.
Momentßln∞ ka╛dΘmu klientovi z ╚eska vnutφ ISO-8859-2
(klient, kter² by nerozum∞l tomuto k≤dovßnφ se dß pova╛ovat za
nefunkΦnφ), ostatnφm pak ASCII. Pokud by m∞l u╛ivatel
tu sm∙lu, ╛e pou╛φvß nefunkΦnφho klienta, m∙╛e si typ k≤dovßnφ
pozd∞ji zm∞nit explicitn∞ p°es whichcode.
V p°φpad∞ Apache modulu a ISAPI filteru se m≤d toGUESS
pou╛φvß implicitn∞ v p°φpad∞, ╛e URL neobsahuje CSßΦek, tj.
jednß se o jednoduchΘ URL typu http://www.nekde.cz/cosi.html.
Zjednodusuje se tak URL v obvyklΘm p°φpad∞, kdy u╛ivateli uhßdnut² default
vyhovuje.
CSßΦek od verze 2.0 automaticky p°episuje odkazy v dokumentu tak, aby
se v danΘm URL op∞t objevil a zachovala se tak informace
o vybranΘm k≤dovßnφ a (jazykovΘ) variant∞ dokumentu. Jakmile tedy
zajistφte, aby dokument ╣el p°es CSßΦek, m∙╛ete dal╣φ odkazy pustit
z hlavy.
To "zaji╣t∞nφ" je problΘm jen pro (Fast)CGI CSßΦek; u Apache modulu
a ISAPI filtru jde p°es CSßΦek ka╛d² dokument. Pro (Fast)CGI
lze nap°φklad pou╛φt rozskokovou strßnku s tagem BASE, kter² zajistφ,
╛e v╣echny relativnφ odkazy jsou vzta╛eny k URL, kterΘ je tam uvedeno,
mφsto toho, pod kter²m byl dokument zφskßn.
P°φklad:
strßnka http://kdesi/~ja/moje.html m∙╛e obsahovat
znaΦku
<BASE HREF="http://kdesi/to__CHARSET__/~ja/moje.html">.
Pokud Φtenß° pou╛ije n∞kter² relativnφ link, je mu automaticky
vybrßno k≤dovßnφ a jazykovß varianta podle jeho preferencφ
a dßl se u╛ strßnky zobrazujφ v uhßdnutΘm k≤dovßnφ.
Pokud se odkazujete na jinΘ servery s CSßΦkem a chcete, aby se p°i
odkazech zachovala informace o u╛ivatelem vybranΘm k≤dovßnφ,
musφte CSßΦkovi seznam takov²ch server∙ sd∞lit. CSßΦek
pak upravuje URL v dokumentech podobn²m zp∙sobem, jako
p°i odkazech v rßmci "svΘho" serveru. Podrobn∞ji
viz popis konfiguraΦnφho p°φkazu Apache
csacekServers a stejnojmennΘho
CSßΦek p°φkazu.
Samoz°ejm∞ lze na strßnku napsat klasickou sbφrku odkaz∙ pro zobrazenφ
dokumentu v ASCII, ISO-8859-2 Φi CP1250:
<A HREF="/toASCII/">ASCII</A>
<A HREF="/toISO-8859-2/">ISO-8859-2</A>
<A HREF="/toCP1250/">CP1250</A>
Pro odkazy na servery, pou╛φvajφcφ nekompatibilnφ Φe╣tinu,
lze vyu╛φt p°φkazu CHARSET.
P°i odkazech na servery pou╛φvajφcφ SaCzech Φi WWWdia lze v textu
pou╛φt °et∞zec
__CHARSET__, kter² je (C)SßΦkem nahrazen jmΘnem v²stupnφho
k≤dovßnφ ve tvaru, kterΘmu (C)SaCzech a WWWdia rozumφ.
P°φklad pou╛itφ:
<A HREF="http://www.jinde.cz/cgi-bin/to__CHARSET__/jinacesta/str.html">odkaz</A>
Pokud strßnka projde skriptem toKEYBCS2, kter² ji p°evede do k≤du
KEYBCS2 (Kamenφci),
bude v odeslanΘm dokumentu v tΘto znaΦce uvedeno URL
<A HREF="http://www.jinde.cz/cgi-bin/toKEYBCS2/jinacesta/str.html">odkaz</A>
P°edpoklßdßm, ╛e server, urΦen² tφmto absolutnφm URL, mß instalovßn
CGI CSßΦek nebo SaCzech. M∙╛e, ale nemusφ se jednat o tent²╛ server,
kter² poskytl p∙vodnφ dokument.
Jeliko╛ jsou nßzvy k≤d∙ shodnΘ s programem WWWdia a SaCzech, mohou se na sebe
navzßjem korektn∞ odkazovat strßnky, jejich╛ servery pou╛φvajφ r∙znΘ
implementace Φe╣tiny. Absolutnφ URL, uvedenΘ v²╣e, lze pou╛φt i na strßnce,
kterß je p°ek≤dovßvßna programem WWWdia. Pot°ebujete-li naopak skoΦit ze
strßnky k≤dovanΘ pomocφ CSßΦku nebo SaCzechu na strßnku v
pomocφ WWWdia, pou╛ijte pro
tento odkaz URL
<A HREF="http://www.diaserver.cz/cgi-bin/charset/jestecesta/str.html?charset=__CHARSET__">odkaz</A>
Podobn∞ jako __CHARSET__ pro WWWdia kompatibilnφ
Φe╣tiny lze pou╛φt __LAMPACHARSET__ pro odkazy
na servery, pou╛φvajφcφ mod_html pana Lampy.
CSßΦek k≤duje pouze dokumenty typu text/plain
(Φist² text) a text/html (HTML dokument). Jinß data
p°edß beze zm∞ny.
CGI CSßΦek navφc poklßdß za "p°ek≤dovatelnΘ" soubory, konΦφcφ
na .html, .htm, .txt. O v╣echny
ostatnφ dokumenty po╛ßdß server a rozhodne se, zda dan²
dokument k≤dovat nebo ne, podle informacφ, kterΘ server
vrßtφ.
Implicitnφ v²chozφ k≤d, ve kterΘm budou psßny dokumenty, urΦuje sprßvce
serveru p°i instalaci CSßΦku. M∞lo by se jednat o k≤d, ve kterΘm
bude vytvß°ena v∞t╣ina strßnek (nejlΘpe v╣echny). Pokud autor pou╛φvß
jinΘ k≤dovßnφ, mß v zßklad∞ dv∞ mo╛nosti:
- P°evΘst strßnku do implicitnφho k≤du.
- To je mΘn∞ pohodlnΘ a navφc to komplikuje pozd∞j╣φ ·pravy na strßnce
(ka╛dß ·prava bude vy╛adovat novΘ p°ek≤dovßnφ).
- Ponechat strßnku v k≤du p∙vodnφm a vyznaΦit jej.
-
CSßΦek podporuje META tag a za°φdφ se podle informace,
kterß je tam uvedena, tj. je-li tam
<META HTTP-Equiv="Content-Type" Content="text/html; charset=windows-1250">
CSßΦek sprßvn∞ pochopφ, ╛e obsah dokumentu je v k≤dovßnφ
pou╛φvanΘm na MS Windows a za°φdφ se podle toho.
- CSßΦek podporuje takΘ jin² mechanismus vyznaΦenφ k≤dovßnφ textu -
pomocφ p°φkazu MYCHARSET.
Vhodn² je zejmΘna tehdy, pokud r∙znΘ Φßsti dokumentu
obsahujφ text v r∙znΘm k≤dovßnφ nebo chcete zachovat
kompatibilitu se SaCzechem.
┌Φinnost p°φkazu MYCHARSET, pop°. META tagu
zaΦφnß mφstem, kde byl uveden.
CSßΦek umφ na strßnce generovat li╣tu s nabφdkou k≤dovßnφ.
Slou╛φ na to specißlnφ p°φkaz BAR,
kter² zp∙sobφ, ╛e CSßΦek v danΘm mφst∞ vytvo°φ a vypφ╣e li╣tu
s nabφdkou k≤dovßnφ. V dob∞ kompilace m∙╛e b²t CSßΦek nakonfigurovßn tak,
╛e li╣tu automaticky vytvo°φ na konci ka╛dΘho HTML dokumentu.
Tvar li╣ty lze ovlivnit zadßnφm dal╣φch parametr∙ p°φkazu BAR.
P°φklad∙m pou╛itφ je v∞novßna
samostatnß strßnka.
Celkem Φastß situace na WWW serverech je, ze se dokumenty vyskytujφ
v n∞kolika verzφch, kterΘ majφ ve svΘm zßklad∞ stejn² obsah, ale z r∙zn²ch
d∙vod∙ je nelze slouΦit; jednß se nap°φklad o dv∞ jazykovΘ varianty
tΘho╛ textu, HTML strßnky upravenΘ pro specißlnφ browser atd.
Pokud se takov²ch strßnek nahromadφ vφc, zaΦφnß b²t celkem
nep°ehlednΘ, odkud a kam majφ vΘst hypertextovΘ odkazy a kde v╣ude
se mß provΘst zm∞na, kdy╛ je t°eba n∞co upravit. I p°i jistΘ automatizaci
je to nezanedbatelnΘ mno╛stvφ administrativnφ prßce navφc a bylo
by tedy vhodnΘ, aby v╣echna souvisejφcφ data (Φi texty) byly
pokud mo╛no v jednom souboru v n∞jakΘm konzistentnφm formßtu.
CSßΦek na to pou╛φvß metodu takzvan²ch Φßstφ. ╚ßst
zaΦφnß
p°φkazem PART,
jeho╛ parametr je nßzev Φßsti, bez ohledu na velkß/malß pφsmena
(tj. "CS" je pova╛ovßno za ekvivalentnφ
s "cs"). V∞ci specifickΘ pro urΦitou variantu dokumentu tedy
m∙╛ete napsat jako n∞jakou Φßst a nechat pak CSßΦek
dynamicky vybrat to "pravΘ o°echovΘ" podle p°anφ u╛ivatele.
Podprobn∞j╣φ popis viz popis p°φkazu PART,
kde naleznete i pßr p°φklad∙ pou╛itφ.
Nßsledujφcφ text platφ pouze pro (Fast)CGI CSßΦek; pokud je CSßΦek
souΦßst WWW serveru (Apache modul nebo ISAPI filter), pou╛ijφ
se bezpeΦnostnφ mechanismy danΘho serveru bez toho, ╛e by je
CSßΦek n∞jak ovliv≥oval.
P°i p°φmΘm p°edßvßnφ obsahu souboru CGI CSßΦek dßvß pozor, jestli
se na "cest∞" k n∞mu nevyskytuje n∞jak² konfiguraΦnφ soubor
(standardn∞ .htaccess). Pokud ano, o dokument po╛ßdß
server.
Bohu╛el pak nastane problΘm v tom, ╛e CGI skript∙m se
standardn∞ nep°edßvß login a heslo, kterΘ poslal klient.
P°i po╛adavku o chrßn∞n² dokument tedy CSßΦek nem∙╛e
tuto informaci poslat a p°φstup k dokumentu je v∞t╣inou
zamφtnut.
Pokud mßte zdrojov² k≤d serveru, kter² pou╛φvßte, dß se
toto chovßnφ zm∞nit, tj. p°inutit server, aby ony informace
od klienta p°edßval. SouΦßstφ distribuce je i patch pro
Apache a NCSA httpd, kter² to zajistφ.
V p°φpad∞ CGI CSßΦka nelze pou╛φt ani (mnohem mΘn∞ spolehlivou)
autorizaci p°es nßzev p°istupujφcφho poΦφtaΦe - vzhledem
k tomu, ╛e CGI CSßΦek sßm ╛ßdß o dokument, po╛adavek
nakonec p°ijde v╛dy z lokßlnφho poΦφtaΦe.
Pokud jste z p°edchozφch n∞kolika odstavc∙ zφskali pocit, ╛e
CGI CSßΦek a chrßn∞nΘ strßnky nejdou p°φli╣ dohromady,
je to sprßvn∞. Pokud to jen trochu jde, je mnohem lep╣φ pou╛φt
modul do serveru.
Vypisovßnφ konfigurace CSßΦka
Pokud CSßΦek spustφte s URL s p°ipojen²m ?csacek_info,
CSßΦek vytvo°φ a vypφ╣e krßtkou informaΦnφ HTML strßnku s popisem
konfigurace pro toto URL a seznamem zakompilovan²ch nastavenφ.
Tato vlastnost je u╛iteΦnß zejmΘna p°i upgrejdech Φi lad∞nφ konfigurace
CSßΦku pro dan² server. Tuto vlastnost lze v Φase kompilace vypnout.
Zp∞t
Apache CSßΦek
CSßΦek na Apache byl p∙vodn∞ na 1.2.4. Nynφ je primßrn∞ vyvφjen
na Apache 1.3.9 s tφm, ╛e je mo╛nΘ ho pou╛φvat i na Apache 1.1.1
i Apache 1.2.X. Nenφ nutnΘ patchovat server,
CSßΦek modul se do serveru p°idßvß jako kter²koli jin² modul.
Pod Apache 1.3.X je ho mo╛nΘ dokonce (s pomocφ axps)
zkompilovat jako DSO modul a nahrßvat do serveru dynamicky.
Apache CSßΦek jede nap°. na serveru Masarykovy
univerzity nebo na 4Web. Pokud
ho pou╛φvßte a lφbφ se vßm,
dejte mi v∞d∞t.
Apache CSßΦek se nastavuje pomocφ sady direktiv, uveden²ch
v konfiguraΦnφch souborech serveru (a╗ u╛ t∞ch "globßlnφch"
nebo .htaccess). P°esn² popis viz nφ╛e.
Lze nastavovat CSßΦek r∙zn∞ pro ka╛d² virtualnφ server nebo
adresß° - staΦφ danou direktivu uvΘst v p°φslu╣nΘ sekci
<Location> Φi <VirtualHost>.
Pokud je jako parametr direktivy °etezec obsahujφcφ mezery, je
nutnΘ jej cel² uzav°φt mezi uvozovky (viz p°φklad csacekBarDef).
P°φklad z konfigurace:
csacekEngine On
csacekDefaultCharset windows-1250
csacekIgnorePrefix /cgi-b/
csacekBarDef "ADDALWAYS=YES CS"
Apache, SSL a CSßΦek - jak to jde dohromady ?
Apache-SSL
U Apache-SSL od verze 1.17 staΦφ v souboru
apache_ssl.c zm∞nit SSL_IS_OPTIONAL na TRUE.
Apache-SSL pak bude fungovat
i bez CSßΦku, pouze se p°idß n∞kolik test∙ na obsah n∞kter²ch struktur.
Tyto testy jsou nutnΘ proto, aby CSßΦek byl schopen b∞hem svΘ prßce
doΦasn∞ "vypnout" SSL. SSL se stßle pou╛ije p°i komunikaci
s klientem, CSßΦek doΦasn²m vypnutφm dosßhne jen toho, ╛e on sßm
od jßdra Apache dostane p°edßvan² dokument nezak≤dovan².
mod_ssl
Od verze 2.1.2 funguje CSßΦek i spoleΦn∞
s mod_ssl. Nejsou t°eba
╛ßdnΘ ·pravy k≤du. A╗ ╛ije mod_ssl!
Stronghold
Nemßm k dispozici, nem∞l jsem tedy p°φle╛itost otestovat. M∞l by
v╣ak podle v╣eho b²t velmi podobn² Apache-SSL a ·prava CSßΦku tak,
aby fungoval i pod Strongholdem, by nem∞la b²t p°φli╣ slo╛itß.
Zp∞t
ISAPI CSßΦek
V rßmci v²voje webov²ch strßnek Masarykovy univerzity byl financovßn
i v²voj CSßΦku pro IIS, tj. ISAPI filtru. ISAPI CSßΦek je nynφ
dopracovßn a od verze 2.1 je k dispozici jako komerΦnφ software.
ISAPI CSßΦek p°ek≤dovßvß korektn∞
v²stup z ASP, CGI, server extensions (vΦetn∞ FP extensions) a samoz°ejm∞
statickΘ strßnky, funguje i pri provozu s SSL a je velmi rychl² -
podle namßtkov²ch test∙ asi dvakrßt rychlej╣φ ne╛ CZFILTER.
Pokud mßte zßjem ISAPI CSßΦek vyzkou╣et, je k dispozici
Φasov∞ omezenß verze,
kterß p°estane fungovat p°ibli╛n∞ po m∞sφci. Objednat CSßΦek
lze na samostatnΘ strßnce - lze
tam nalΘzt i p°esnΘ finanΦnφ podmφnky a dal╣φ podrobnosti distribuce.
ISAPI CSßΦek je konfiguruje pomocφ zßznamu v MS Windows Registry.
Jeho v∞tev je HKEY_LOCAL_MACHINE\Software\CSacek.
JednotlivΘ direktivy jsou zadßvßny jako stringovΘ hodnoty, p°esn²
seznam viz Konfigurace CSßΦka.
Zßznam v CSßΦkovskΘm klφΦi Registry platφ jako "globßlnφ". Je ale
takΘ mo╛no nastavit vlastnosti CSßΦka pro jednotlivΘ virtußlnφ servery.
Konfigurace pro ka╛d² virtußlnφ server je uvedena v podklφΦi
CSßΦek klφΦe - jako jmΘno klφΦe se pou╛ije nßzev virtußlnφho
serveru. Je mo╛no uvΘst i port, od jmΘna serveru je odd∞len dvojteΦkou.
Pokud je port uveden, konfigurace platφ jen p°i p°φstupu na tento
konkrΘtnφ port, pokud ne, platφ pro jak²koli p°φstup na dan²
virtußlnφ server.
P°φklad nßzvu podklφΦe:
www.muj.cz
www.jiny.cz:8000
V konfiguraci virtußlnφho serveru mohou b²t uvedeny v╣echny direktivy
jako v tΘ globßlnφ, jen csacekIgnorePrefix se pro virtußlnφ
servery ignoruje - v dob∞, kdy je t°eba, je╣t∞ nenφ jasnΘ, na kter²
virtußlnφ server po╛adavek p°i╣el a musφ se tedy pou╛φt globßlnφ
nastavenφ. Pro csacekServers platφ n∞co podobnΘho, ale z jinΘho
d∙vodu - op∞t se pou╛ije v╛dy to, co je nastaveno jako "globßlnφ"
(tedy to, co je nastaveno p°φmo v CSßΦek klφΦi), proto╛e
to je opravdu globßlnφ v∞c a nemß smysl to nastavovat r∙zn∞ pro ka╛d²
virtußlnφ server.
Po ka╛dΘ zm∞n∞ konfigurace je nutno p°estartovat Web server - jen tak
se zajistφ, aby CSßΦek zm∞n∞n² zßznam z registry znovu naΦetl.
Zp∞t
Konfigurace CSßΦka
N∞kterΘ vlastnosti CSßΦka lze ovlivnit vhodn²m nastavenφm.
Pro CGI CSßΦka to lze pouze v Φase kompilace (mo╛nost
run-time konfigurace nenφ pro CGI rozumnß). Chovßnφ
Apache CSßΦku a ISAPI CSßΦku lze ale pom∞rn∞ jednoduch²m zp∙sobem
ovlivnit i pozd∞ji - nastavenφm
v kofiguraci serveru (Apache)
nebo nastavenφm v registry (ISAPI).
Zde je popis jednotliv²ch direktiv:
- csacekBarDef
- Definice defaultnφho tvaru li╣ty; funguje ·pln∞ stejn∞, jako
by byl na zaΦßtku ka╛dΘho dokumentu uveden p°φkaz
BARDEF ve stejnΘm
tvaru.
Default: nic
- csacekChangeURL On nebo Off
- Nastavuje, jestli se v dokumentu odkazy upravovat tak, aby
╣ly "p°es CSßΦek".
Default: On
- csacekCompress On nebo Off
- Nastavuje, jestli se mß pou╛φt komprese nebo ne.
Default: On
- csacekDefaultCharset
- Nastavuje defaultnφ k≤dovßnφ serveru. CSßΦek bude
p°edpoklßdat, ╛e strßnka je v tomto k≤dovßnφ, pokud si
sama ne°ekne jinak. Textovß data od klienta budou p°evedeny
do tohoto k≤dovßnφ p°ed p°edßnφm dat ostatnφm modul∙m.
Default: iso-8859-2 na Unixu a windows-1250
na MS Windows
- csacekDefaultPartname
- JmΘno Φßsti, kterΘ se pou╛ije pokud nebylo zadßno p°i volßnφ
CSßΦku (tj. URL bylo typu
http://kdesi/toASCII/cosi)
Default: .cs
- csacekEngine On nebo Off
- Zapφnß CSßΦek (a'la Apachovske RewriteEngine).
Default: On
- csacekImplicitWork On nebo Off
- Pokud cφlovΘ k≤dovßnφ nenφ v URL uvedeno (URL je typu
http://kdesi/cosi/neco.html, tj. bez toXXX), CSßΦek
se pokusφ uhßdnou klientem podporovanΘ k≤dovßnφ a automaticky
do n∞j po╛adovan² dokument p°evede. Pokud se vßm
toto chovßnφ nehodφ, lze implicitnφ p°ek≤dovßnφ pomocφ
tΘto direktivy vypnout.
Default: On
- csacekIgnorePrefix
- Nastavuje prefix URL, kter² se bude ignorovat p°i
hledßnφ oznaΦenφ cφlovΘho k≤dovßnφ; defaultn∞ /cgi-bin.
Je to direktiva slou╛φcφ pouze k usnadn∞nφ p°echodu
od CGI (C)SßΦku k modulu.
Upozorn∞nφ: tuto direktivu lze pou╛φt pouze
v globßlnφ konfiguraci serveru - v Φase, kdy je
pot°eba, je╣t∞ nenφ k dispozici lokßlnφ konfigurace.
Default: /cgi-bin
- csacekServers
- Seznam "CSßΦek kompatibilnφch" server∙ -
v p°edßvan²ch HTML dokumentech se odkazy
na tyto servery automaticky upravφ tak, aby se zachovalo u╛ivatelem
pou╛φvanΘ k≤dovßnφ a jazykovß verze
JednotlivΘ nßzvy server∙ se pφ╣ou navzßjem odd∞lenΘ Φßrkou.
Je mo╛nΘ zadat i port (od jmΘna serveru odd∞len² mezerou) - pak
se budou odkazy m∞nit jen pokud URL vede na dan² port danΘho serveru.
Default: Apache - v╣echny virtußlnφ servery, ISAPI - servery,
kterΘ majφ vlastnφ konfiguraci v CSßΦek v∞tvi v registry
- csacekTemplateDir
- Adresß° se ╣ablonami - momentßln∞ pouze ╣ablonou k whichcode
(soubor whichcode_template.html).
Default: /www/csacek na UN*Xu a C:/CSacek
na MS Windows.
CSßΦek je standardn∞ "zapnut²", pokud ho chcete vypnout, je t°eba
ho explicitn∞ vypnout pomocφ csacekEngine.
Stßle se bude intern∞ z URL odstra≥ovat CSßΦkovß Φßst (tj. pokud
server bude po╛ßdßn o http://server/toASCII/dir/doc.html,
p°evede se po╛adavek intern∞ na http://server/dir/doc.html),
CSßΦek ale s dokumentem poslan²m nazpßtek klientovi nebude nic d∞lat.
Zp∞t
Seznam CSßΦkovsk²ch p°φkaz∙
P°φkazy v CSßΦku se uzavφrajφ mezi
<? a ?>. ? je pou╛ito proto, ╛e
se jedna o specißlnφ SGML "tag", urΦen² pro vklßdßnφ p°φkaz∙
jazyk∙ vlo╛en²ch (embedded) do SGML dokumentu. Kv∙li kompatibilit∞
s SaCzechem je podporovßno takΘ <!-- a -->.
P°φklad pou╛itφ:
<? BAR EN LONGNAMES=YES ?>
Obecn∞ platnß pravidla:
- p°φkaz(y) musφ b²t uzav°en(y) do dvojice
<? a ?>; je-li jich vφc, musφ b²t
navzßjem odd∞leny znakem ';' (st°ednφk)
- p°φkaz vΦetn∞ parametr∙ m∙╛e b²t na n∞kolik °ßdk∙
- ve jmΘn∞ p°φkazu nezßle╛φ na velk²ch/mal²ch pφsmenech
(tj. nap°. PART se pova╛uje za ekvivalentnφ s PaRt);
to samΘ v∞t╣inou platφ i pro parametry (pokud to tak nenφ
u konkrΘtnφho p°φkazu je to v╛dy uvedeno)
- parametry p°φkazu se vyhodnocujφ obvykl²m zp∙sobem zleva doprava;
jsou podporovßn² znaky " a ' s obvykl²m HTML v²znamem;
zßpis \x zp∙sobφ, ╛e znak x nebude chßpßn
jako specißlnφ, ani kdy╛ je (dobrΘ zejmΘna pokud mß b²t
znak " nebo ' v textu n∞kterΘho parametru)
- p°i zadßnφ vzßjemn∞ protikladn²ch parametr∙ (nap°φklad u p°φkazu
BAR), platφ poslednφ uveden²
- parametry p°φkazu majφ v╛dy p°ednost p°ed defaultnφm nastavenφm
- pokud se p°φkaz nepoznß, opφ╣e se do v²stupu, vΦetn∞
<? a ?>
P°φkazy:
- BAR, BARDEF
- csacekServers
- DOMAIN
- CHARSET
- MYCHARSET
- PART
- SET
... a popis:
V nßsledujφcφm popisu hranatΘ zßvorky oznaΦujφ Φßsti, kterΘ nemusφ
(ale mohou) b²t zadßny. U ka╛dΘho p°φkazu je uvedena
jeho syntax, jeden jednoduch² p°φklad pou╛itφ, dßle
pak krßtk² popis, co dan² p°φkaz d∞lß a potΘ p°φpadn∞ p°ehled
voleb Φi parametr∙, kterΘ m∙╛ete p°φkazu zadat. U n∞kter²ch je
uveden je╣t∞ odkaz na dal╣φ, podrobn∞j╣φ p°φklady u╛itφ.
- MYCHARSET
- Syntax:
MYCHARSET=k≤dovßnφ
- P°φklad pou╛itφ:
MYCHARSET=ISO-8859-2
- °φkß CSßΦku, ╛e nßsledujφcφ text je zapsßn v zadanΘm
k≤dovßnφ.
- m∙╛e b²t uvedeno jmΘno kterΘhokoli podporovanΘho k≤dovßnφ
- p°φkaz lze v dokumentu pou╛φt i n∞kolikrßt, vztahuje se na
n∞j omezenφ PART, DOMAIN a CHARSET
-
BAR, BARDEF
- Syntax:
BAR[DEF] [parametry]
- P°φklad pou╛itφ:
BAR LOGNAMES=YES ADDWHICH=NO SEP=" o "
- P°φkaz BAR slou╛φ k vypsßnφ li╣ty
s nabφdkou k≤dovßnφ. V li╣tΘ se objevφ seznam k≤d∙, kterΘ
CSßΦek zvlßdß a ka╛d² z nich je odkaz na aktußlnφ strßnku,
p°evedenou do p°φslu╣nΘho k≤du. Pokud je p°φkaz uveden bez parametr∙,
vypφ╣e li╣tu ve tvaru, jak bylo nastaveno p°edchozφmi p°φkazy
BAR(DEF) nebo ve tvaru jak bylo nastaveno p°i kompilaci
CSßΦku.
- BARDEF mß stejnΘ volby a parametry jako BAR,
s tφm rozdφlem, ╛e li╣tu nevypφ╣e, pouze nastavφ vnit°nφ
prom∞nnΘ CSßΦku pro pozd∞j╣φ volßnφ p°φkazu BAR.
- Parametry:
ADDALWAYS=[YES|NO]
| nastavuje, zda se mß na konci dokumentu
automaticky p°idat li╣ta (defaultn∞ se nep°ipφ╣e)
|
ADDHEADER=[YES|NO]
| nastavuje, zda bude vypsßna hlaviΦka
(HEADBARTEXT) - default je vypsat
|
ADDTAIL=[YES|NO]
| nastavuje, zda bude vypsßn zßv∞r (obsah TAILBARTEXT)
- default je vypsat
|
ADDWHICH=[YES|NO]
| nastavuje, zda se mß do li╣ty p°ipsat i odkaz na v²b∞r k≤dovßnφ
p°es standardnφ whichcode
|
CS nebo CZ
| Φeskß verze li╣ty (default)
|
DEFAULT
| nastavenφ parametr∙ li╣ty do tvaru, kter²
byl definovßn p°i instalaci CSßΦku jako standardnφ; zru╣enφ
ve╣ker²ch zm∞n proveden²ch p°edchßzejφcφmi p°φkazy BAR
nebo BARDEF
|
EN
| anglickß verze li╣ty
|
EHEADTEXT="XX"
| definice hlaviΦky li╣ty v anglickΘ verzi
|
ETAILTEXT="XX"
| definice zßv∞ru anglickΘ li╣ty
|
HEADTEXT="XX"
| definice hlaviΦky li╣ty v ΦeskΘ verzi
|
LONGNAMES=[YES|NO]
| nastavuje, zda se v linkßch na dokument pou╛ijφ dlouhß jmΘna
|
SEP="XX"
| definice odd∞lovaΦe mezi k≤dov²mi linkami (default je mezera)
|
TAILTEXT="XX"
| definice zßv∞ru ΦeskΘ li╣ty
|
WHICHCODE="XX"
| definice textu linky na v²b∞r k≤dovßnφ pomocφ whichcode
|
nßzev k≤dovßnφ="XX"
| definice textu linky na dokument v danΘm k≤dovßnφ
|
Zde je n∞kolik p°φklad∙
u╛itφ p°φkazu BAR,
pokud se u╛ tento dokument filtruje p°es CSßΦek, uvidφte pak takΘ jak ona
generovanß li╣ta vypadß.
- PART
- Syntax:
PART nßzev_Φßsti[="text"] ...
- P°φklad pou╛itφ:
PART EN
- Tφmto p°φkazem lze vyznaΦit, ve kter²ch verzφch dokumentu se mß
vypsat nßsledujφcφ text (text za tφmto p°φkazem). Pokud se pou╛ije
tvar nßzev_Φßsti="n∞jak²_text" a nßzev_Φßsti
souhlasφ s verzφ dokumentu, n∞jak²_text se vlo╛φ
do v²stupu, ani╛ by to m∞lo dopad na (ne)vypisovßnφ nßsledujφcφho
textu; tuto syntax lze velmi dob°e vyu╛φt pro vpisovßnφ
krßtk²ch, na verzi zßvisl²ch text∙ do jinak spoleΦnΘho dokumentu.
Nßzvy platnΘ Φßsti zφskßvß CSßΦek ze jmΘna, pod kter²m byl spu╣t∞n;
jestli╛e URL bylo n∞co ve tvaru:
http://server/cgi-bin/toXXX.FOO/cosi, platnß Φßst je
Φßst "FOO". Pokud CGI skript nem∞l p°φponu (URL bylo
ve tvaru http://server/cgi-bin/toXXX/cosi), tak
je platn² nßzev Φßsti "CS".
- Specißlnφ "nßzvy Φßstφ":
- ALL - nßsledujφcφ text bude vypsßn v╛dy
- OTHER - nßsledujφcφ text bude vypsßn tehdy, jestli╛e
od poslednφho PART ALL nebyl PART
volßn s platn²m parametrem nßzev_Φßsti
Zde je uveden
mal² p°φklad;
bude funkΦnφ pouze pokud se dokument u╛ filtruje p°es CSßΦek.
- DOMAIN
- Syntax:
DOMAIN oznaΦenφ_domΘny[="text"] ...
- P°φklad pou╛itφ:
DOMAIN ics.muni.cz 147.251
- Syntaxe je podobnß jako u PART. ╚ßsti dokumentu mezi
jednotliv²mi p°φkazy DOMAIN se vypφ╣φ pouze tehdy, kdy╛
vzdßlen² u╛ivatel p°istupuje z n∞kterΘ ze zadan²ch domΘn.
Ve v²╣e uvedenΘm p°φklad∞ tehdy, pokud vzdßlen² u╛ivatel p°istupuje
ze stroje v domΘn∞ ics.muni.cz nebo s IP
adresou zaΦφnajφcφ na 147.251. Lze samoz°ejm∞ zadat
i celΘ adresy. JmΘna mφsto IP adres lze pou╛φvat pouze tehdy,
provßdφ-li server p°evody IP adres na jmΘna.
P°φkaz DOMAIN nenφ urΦen k tomu, aby °φdil p°φstup
k citliv²m dat∙m; vzhledem k povaze DNS se nedß na spolehlivost
jmen Φi IP adres p°φli╣ spolehnout. DOMAIN tedy slou╛φ
spφ╣e pro selektivnφ zobrazenφ dat, kterΘ mohou b²t zajφmavΘ
jen pro urΦitou omezenou skupinu lidφ z urΦit²ch domΘn nebo adres.
- Specißlnφ "nßzvy domΘn":
- ALL - nßsledujφcφ text bude vypsßn v╛dy
- OTHER - nßsledujφcφ text bude vypsßn tehdy, jestli╛e
od poslednφho DOMAIN ALL nebyl DOMAIN
volßn s platn²m parametrem oznaΦenφ_domΘny
- CHARSET
- Syntax:
CHARSET nßzev_k≤du[="text"] ...
- P°φklad pou╛itφ:
CHARSET ASCII ISO-8859-1 KAM
- Syntax je stejnß jako u PART Φi DOMAIN.
P°φkaz CHARSET slou╛φ k °φzenφ obsahu dokumentu podle
k≤dovßnφ, do kterΘho se p°evßdφ. Jeho primßrnφ ·Φel je, aby
bylo n∞jak²m solidnφm zp∙sobem mo╛nΘ p°edßvat vybranΘ k≤dovßnφ
na servery s jin²m systΘmem Φe╣tiny, ne╛ (C)SßΦek nebo WWWdia
kompatibilnφ.
- Specißlnφ "nßzvy k≤d∙":
- ALL - nßsledujφcφ text bude vypsßn v╛dy
- OTHER - nßsledujφcφ text bude vypsßn tehdy, jestli╛e
od poslednφho CHARSET ALL nebyl CHARSET
volßn s platn²m parametrem k≤d
-
csacekServers
- Syntax:
csacekServers jmeno[:port] [jmeno[:port] ...]
- P°φklad pou╛itφ:
csacekServers www.ics.muni.cz www.moje.cz:8008
Zp∙sobφ, ╛e odkazy na zadanΘ servery budou p°episovßny
podobn²m zp∙sobem jako absolutnφ odkazy na server, na kterΘm
CSßΦek b∞╛φ. Pokud nenφ zadßn port, chßpe se to jako kter²koli
port na danΘm serveru.
Star╣φ p°φkaz csacekServer je stßle podporovßn, ale
nem∞l by u╛ b²t pou╛φvßn.
-
SET
- Syntax:
SET volba1=hodnota1 ...
- P°φklad pou╛itφ:
SET CHANGEURL=NO
- Nastavuje n∞kterΘ vlastnosti zpracovßnφ textu. RozpoznßvanΘ
parametry mohou b²t nastaveny na YES nebo NO.
- Parametry:
CHECKURL
| nastavuje, jestli se mß v nßsledujφcφm
textu u HTML znaΦek, pou╛φvajφcφch URL (A, BASE
atd.), toto URL p°episovat tak, aby vedlo p°es CSßΦek;
defaultn∞ zapnuto
|
EXECCMDS
| nastavuje, jestli se v nßsledujφcφm textu majφ provßd∞t CSßΦek p°φkazy;
i v p°φpad∞, ╛e je provßd∞nφ p°φkaz∙ vypnuto se stßle n∞kterΘ
provßd∞jφ (nap°. SET) - jinak by nebylo mo╛nΘ p°φznak
zase zapnout;
defaultn∞ zapnuto
|
Zp∞t
Historie
C-SaCzech
vznikl b∞hem dubna a zaΦßtku kv∞tna lΘta Pßn∞ tisφcφho devφtistΘho
devadesßtΘho ╣estΘho.
verze 2.1.1 (X.11.1998)
- opravena fce csa_strcasestr() aby se hledalo opravdu hledalo
nezßvisle na velk²ch/mal²ch pφsmenech ve v╣ech p°φpadech; chyba se
projevila nap°φklad tak, ╛e Apache nebo ISAPI CSßΦek URL typu
http://nekde/guess/cosi.html p°esm∞roval na
http://nekde/guessISO-8859-2/cosi.html mφsto na
http://nekde/ISO-8859-2/cosi.html.
Na╣el Jakub Rosa.
- ISAPI: opravena potencialnφ chyba p°i p°edßvßnφ chunkovan²ch dat -
pokud server posφlal hlaviΦky na n∞kolikrßt a Transfer-Encoding
nebylo a╛ v tΘ poslednφ dßvce, jßdro CSßΦku pova╛ovalo data
za nechunkovanΘ
- Apache: direktiva csacekChangeURL nynφ funguje.
Opravu poslal: Pavel
Krebs
- p°i p°episovßnφ META tagu se pou╛ijφ stejnΘ uvozovky jako byly
ve zdroji; takΘ opravena chyba ve vypisovßnφ atributu
HTTP-Equiv, kde jeho hodnota se neukonΦovala uvozovkou
- ISAPI, Apache: pokud na zaΦßtku URL byl jak²koli pod°et∞zec
guess, whichcode nebo __CHARSET__,
bralo se to chybn∞ jako oznaΦenφ cφlovΘho k≤dovßnφ/akce;
CSßΦek p°i nßslednΘm zpracovßnφ zahlßsil "Bad output
code name".
Na╣el Jakub Rosa.
- ISAPI: expirujφcφ verze psala do Event Logu °et∞zec
991026:991126 nebo podobn²; jednalo se o omylem zanechan²
ladicφ v²pis
- CGI: p°i subrequestu se nynφ pou╛φvß HTTP/1.1 a v odpov∞di serveru
se nynφ posφlajφ v╣echny hlaviΦky i tehdy, zpracovßvß-li se
HTTP/0.9 po╛adavek - nynφ HTTP/0.9 funguje proti Apache serveru
i v p°φpad∞, ╛e po╛adavek jde p°es CGI CSßΦek
- CSßΦek nynφ posφlß hlaviΦku Vary - nutnΘ proto, aby p°φpadnß
proxy ke╣ v∞d∞la, podle Φeho se odpov∞∩ m∞nφ a klient∙m nabφdla
pro n∞ vhodnou verzi dokumentu.
Na╣el Hynek Med.
- p°ek≤dovßvajφ se i chybovΘ odpov∞di od serveru
- Apache: opravena chyba p°i pou╛itφ chunked k≤dovßnφ (tj. proti HTTP/1.1
klient∙m), kdy se chunked odpov∞∩ nezakonΦovala sekvencφ
0\r\n\r\n.
Na╣el Patrik Rak.
- Apache: pou╛itφ direktivy csacekRecodeInput nynφ
nezp∙sobφ pßd serveru p°i Φtenφ konfigurace
- Apache: opraveno zacyklenφ v p°φpad∞, ╛e HTTP/1.1 klient
po╛ßdal o dokument del╣φ
ne╛ X_CSA_OUT_BUFLEN_CHUNK (tj. 8150) bajt∙
- ·prava dokumentace (INSTALL): defaultnφ RedHat konfigurace Apache pou╛φvß
direktivy ClearModuleList a AddModule,
pokud mß CSßΦek jako modul fungovat, je t°eba na p°φslu╣nΘ
mφsto p°idat direktivu AddModule mod_csacek.c,
jinak CSßΦek nenφ aktivnφ (a tedy "nefunguje")
- p°i p°episovßnφ tag∙ se pou╛ijφ uvozovky nebo apostrofy tak, jak
bylo uvedeno ve zdroji mφsto toho, aby se v╛dy
pou╛ily uvozovky - znamenß to, ╛e nap°. nßsledujφcφ
JavaScript k≤d:
val = "<A HREF='http://nekde/neco.html'>"
je platn² i po p°ek≤dovßnφ CSßΦkem
verze 2.1.0 (23.9.1998)
- CSßΦek nynφ funguje i jako ISAPI modul
- Apache: pokud je na systΘmu k dispozici apxs, modul se
s jeho pomocφ rovnou i zkompiluje
- plnß podpora HTTP/1.1 uvnit° CSßΦku, vΦetn∞ podpory Range
a chunked k≤dovßnφ; CSßΦek takΘ HTTP/1.1 klient∙m posφlß
data dokumentu pr∙b∞╛n∞, co╛ ╣et°φ pam∞╗ i Φas
- Apache, ISAPI: novß direktiva csacekImplicitWork - pokud se vypne,
CSßΦek pracuje jen v p°φpad∞, ╛e k≤dovßnφ bylo explicitn∞
urΦeno (tj. po╛adovanΘ URI bylo typu .../toXXX/...)
- Apache, ISAPI: novß direktiva csacekServers, direktiva
csacekServer zru╣ena
- p°ek≤dovßvß se cokoli, co mß Content-Type zaΦφnajφcφ
na text/ - krom∞ text/html se v╣echny
takovΘ dokumenty zpracovßvajφ jako by byly typu text/plain
- zru╣en "p°φkaz" typu <?prom∞nnß?> - praktickΘ
vyu╛itφ bylo jen pro whichcode (tam se to nynφ d∞lß jinak)
a jeho
podpora zmanenala pom∞rn∞ o dost vφc prßce p°i zpracovßnφ CSßΦek
p°φkaz∙
- p°idßna zßkladnφ podpora azbuky - CSßΦek umφ p°ek≤dovßvat mezi
KOI8-R, ISO-8859-5, windows-1251
a CP866; podpora p°evod∙ azbuka <-> latinka
a azbuka <-> Unicode bude p°idßna v 2.1.1
verze 2.0.9 (13.9.1999)
- META s oznaΦenφm k≤dovßnφ se nynφ neru╣φ, pouze se parametr
charset p°epφ╣e na sprßvnou hodnotu - MSIE na╣t∞stφ
p°i uklßdßnφ (Save) dokumentu p°i p°φpadnΘm p°evodu do jinΘho
k≤dovßnφ p°episuje i META tag
- p°ek≤dovßvßnφ dat serveru: pokud vzorek vypadß na iso-8859-1,
pokraΦuje se v hledßnφ - m∙╛e se jednat o text, kter² jen nßhodou
obsahuje platnΘ iso-8859-1 znaky, ale jednß se ve zkuteΦnosti
o text v iso-8859-2; nap°. tehdy, kdy╛ text obsahuje
jen znak '╗' - v iso-8859-1 je na stejnΘ pozici
ve znakovΘ sad∞ jeden druh apostrofu
- Apache: p°i p°ek≤dovßnφ dat od klienta se neupdejtovala hodnota
vstupnφ hlaviΦky Content-Length, co╛ mohlo
vΘst k zajφmav²m efekt∙m v p°φpad∞, ╛e tuto hodnotu n∞kater²
modul pou╛φval k urΦenφ celkovΘ dΘlky vstupnφch dat; nap°. u PHP
to vedlo k tomu, ╛e se ke vstupnφm dat∙m p°idßvalo nßhodnΘ "smetφ"
dφky moc zejmΘna Michalovi Krause
za neocenitelnou pomoc p°i zji╣╗ovßnφ, v Φem je vlastn∞ chyba
- p°idßna podpora n∞kolika dal╣φch windows znak∙: left single quotation
mark, right single quotation mark, right double quotation mark
(Petr Snajdr)
verze 2.0.8 (31.8.1999)
- star╣φ verze mod_html padala, pokud odpov∞d od CGI skriptu
neobsahovala Content-Type - CSßΦek proto posφlal
jako Content-Type posφlal text/plain
v p°φpad∞, ╛e v p∙vodnφ odpov∞di nebyl specifikovßn;
nynφ upraveno tak, aby se to d∞lalo jen u (Fast)CGI
mutace a kdy╛ opravdu CGI b∞╛φ pod serverem s mod_html
aktivnφm
- hßdanφ k≤dovßnφ a jazyka p°i implicitnφm p°ek≤dov≤nφ:
pokud klient mß sk nebo cs
mezi preferovan²mi jazyky a neposlal Accept-Charset,
po╣li mu dokument v iso-8859-2 ->
eliminuje se z velke casti potreba delat DNS lookup
- Apache-SSL: novejsi verze (minimalne od verze 1.29) uz neni treba
patchovat, staci v apache_ssl.c
nastavit SSL_IS_OPTIONAL na TRUE
- z hlaviΦek If-Modified-Since se musφ odstra≥ovat
nestandardnφ parametr length, kter² pou╛φvß MSIE -
CSßΦkem p°edan² dokument m∙╛e mφt jinou dΘlku, ne╛ je
fyzickß velikost dokumentu a zbyteΦn∞ se dokument p°edßvß znovu
i tehdy, kdy╛ se nezm∞nil
- opraven problΘm s kompilacφ pod AIX 4.2 nativnφm IBM kompilßtorem
verze 2.0.7 (13.7.1999)
- opraven nefunkΦnφ p°φkaz csacekServer:
jmΘno serveru p°i vklßdßnφ do seznamu CSßΦek serveru
nezkopφrovalo do "trvalΘ" pam∞ti a nechalo se zkopφrovanΘ
z doΦasnΘho poolu; dφky tomu se pozd∞ji p°i testovßnφ
hodnoty mohl pointr odkazovat na n∞jakΘ znovu vyu╛itΘ
mφsto a to mohlo obsahovat prakticky jakßkoli data, pravd∞podobn∞
u╛ v╣ak ne to p∙vodnφ jmΘno serveru; za urΦit²ch okolnostφ
to mohlo zp∙sobit i pßd CSßΦku
tato chyba nem∞la ╛ßdn² vliv na direktivu csacekServers
v konfiguraci serveru
- opravena starß chyba v csa_DocParts() - p°i pou╛itφ PART
ve tvaru <? PART xx=yy OTHER=neco ?>
se p°i platnΘm OTHER
jeho text vypφ╣e jen poprvΘ nebo po <? PART ALL ?>
- p°episovßnφ URL: neni-li v URL za CSßΦkem uvedeno URI, p°ipi╣ tam
URI aktußlnφho dokumentu vΦ. QUERY_STRING
- lze vyu╛φt p°i odkazu na dokument
v jinΘ jazykovΘ verzi nebo t°eba pro whichcode
(v efektu je tato zm∞na
obdoba lampovskΘho select a╛ na to, ╛e nepot°ebuje,
aby klient posφlal hlaviΦku Referer)
- cstools: opravena velmi stara chyba v cstools_guess_charset()
- pokud v textu byly n∞jakΘ CSßΦkovi neznßmΘ znaky,
p°i prochßzenφ cstools_map[] mohl Φφst za koncem pole,
co╛ v zßvislosti na OS nemuselo mφt ╛ßdn² nßsledek
nebo mohlo zp∙sobit pßd CSßΦka (objeveno p°i lad∞nφ ISAPI filtru)
- cstools: do tabulek p°idßn znak apostrof - ne ten klasick² ', ale
ten, vyskytujφcφ se v iso-8859-[12] a windows-1250 na pozici 180
- Apache: zoptimalizovßno zpracovßnφ dat p°i POST, nynφ
mΘn∞ nßroΦnΘ na pam∞╗
- komprese: dßvß se p°ednost deflate p°ed gzip
- p°ek≤dovßvßnφ dat od klienta do k≤dovßnφ serveru lze p°epφnat
konfiguraΦnφ direktivou, nastavenφ p°i kompilaci se pou╛φvß
jako default
- zoptimalizovßno p°ek≤dovßvßnφ u╛ivatelsk²ch dat
- csacek_info p°ed∞lßno, mimo jinΘ vypisuje konfiguraci platnou
pro danΘ URL, informace lΘpe set°φd∞ny
- zlep╣ena podpora p°epφnßnφ jazykovΘ varianty - pokud URL obsahuje
.../to.XX/... nebo .../toGUESS.XX/...
a u╛ivatel si vybral n∞jakΘ urΦitΘ k≤dovßnφ, ta CSßΦkovskß
Φßst se p°epφ╣e tak, aby zachoval u╛ivatel∙v v²b∞r k≤dovßnφ
- CSßΦek na MS Windows: defaultnφ kodovßnφ zm∞n∞no na windows-1250,
samoz°ejm∞ lze zm∞nit v konfiguraci (pro CGI jen p°φmou editaci
NT/NTcsa_config.h a rekompilacφ)
- User-Agent se nynφ nijak nep°enastastavuje - zbyteΦn∞
to zane°ßdφ logy
- p°ek≤dovßvßnφ dat od u╛ivatele: opravena chyba
v cstools_guess_charset(), kterß zp∙sobila,
╛e data obsahujφcφ znak "nov² °ßdek" nebo tabelßtor,
se pova╛ovala za binßrnφ a nep°ek≤dovala se
- opravena chyba v csa_setitem(): za urΦit²ch okolnostφ
se mohlo zacyklit (ned∞lalo problΘmy v souΦasnΘm k≤du, projevilo
se a╛ p°i v²voji ISAPI CSßΦka)
- whichcode_template.html: v anglickΘ verzi opraveno n∞kolik
gramatick²ch chyb
- csa_init_params(): pokud je cfg NULL, pou╛ij csa_cfg_def -
takΘ opravuje znßmou chybu CSßΦku 2.0.6, p°i kterΘ CSßΦek
hlßsil "Bad default source code name"
- Apache: opraveno p°edßvßnφ Set-Cookie, nynφ se p°edßjφ sprßvn∞
v╣echny bez duplikacφ
- zdrojov² k≤d nynφ testovßn lintem, kter² objevil n∞kolik
potencißlnφch chyb a write-only prom∞nn²ch
- opraveno csa_is_csacek_server(): nynφ opravdu funguje
p°episovßnφ URL na ostatnφ CSßΦek servery
- csa_process_headers() - mirnß optimalizace: nezpracovßvej
hlaviΦky, ktere stejn∞ nebudou p°edßny klientovi
verze 2.0.6 (24.2.1999)
- pokud nenφ v²stupnφ k≤dovßnφ urΦeno explicitn∞ a hßdß se,
pou╛ije se iso-8859-2 pro klienty, kte°φ nespecifikovali
podporovanΘ k≤dovßnφ a cht∞jφ dokument v Φe╣tin∞
- Apache: POST data se p°edßvajφ korektn∞ i v p°φpad∞, ╛e
je vypnutΘ automatickΘ p°ek≤dovßnφ u╛ivatelskΘho vstupu
do k≤dovßnφ serveru
- opravena chyba v p°evodu do Unicode (UTF-8), k≤d mφrn∞
zoptimalizovßn
- p°i p°evodu z windows-1250 do jinΘho k≤dovßnφ se p°evßdφ znaky
copyright sign, trade mark sign a
registered sign do p°φslu╣nΘ HTML/textovΘ podoby;
do p°ek≤dovacφch tabulek
p°idßna podpora pro znak multiplication sign
- zoptimalizovßno "hßdßnφ" u╛ivatelem podporovanΘho k≤dovßnφ/jazyka
(eliminovßn DNS lookup v p°φpad∞, ╛e se u╛ z hlaviΦek
uhodne podporovan² jazyk a znakovß sada),
k≤d proΦi╣t∞n a zΦiteln∞n
- zoptimalizovßn k≤d pro ·pravu URL
- zru╣en banner (byl to HTML komentß°, kter² CSßΦek vpisoval
do p°edßvan²ch HTML dokument∙)
- opravena pom∞rn∞ starß chyba ve zpracovßnφ hlaviΦek vrßcen²ch
sub-requestem - na jednom mφst∞ se kopφrovalo o jeden znak
mΘn∞ ne╛ m∞lo, tak╛e nap°φklad hodnota hlaviΦka
Content-Type: text/html; charset=iso-8859-2
se pochopila jako text/htm a dokument se pak
v∙bec nekonvertil
- komprese: kosmetickΘ zm∞ny inicializaΦnφho k≤du, ╛ßdnΘ funΦnφ
zm∞ny
- o╣et°enφ chyb klient∙: MSIE 3.0 nepou╛ije "ΦeskΘ", tj. CE
fonty pro fonty explicitn∞ definovanΘ pomocφ tagu
FONT, pokud dokument nenφ ve windows-1250;
CSßΦek nynφ p°i p°evodu do jinΘho k≤dovßnφ ne╛
windows-1250 upravuje <FONT FACE=...>
tak, aby obsahovalo nejd°φve CE variantu
- o╣et°enφ chyb klient∙: MSIE 3.0 nezobrazφ dokument, pokud
tento mß vyznaΦenΘ k≤dovßnφ v hlaviΦkßch a obsahuje
tag <!DOCTYPE> s uveden²m URL
na pou╛itΘ DTD; CSßΦek nynφ to URL odstra≥uje, aby
to fungovalo i p°es proxy
verze 2.0.5 (15.11.1998)
- patch release - stabilnφ verze, doufejme u╛ poslednφ v °ad∞ 2.0.X
- porty: pou╛itφ alloca(3) nynφ portabiln∞j╣φ, CSßΦek
nynφ funguje i na systΘmech bez (fungujφcφho) alloca(3)
- Apache: pod Apache 1.1 nynφ modul funguje
(v k≤du se pou╛φval Apachem 1.1
nepodporovan² nßvratov² k≤d 301 Moved Permanently)
- (Fast)CGI: opraveno dublovßnφ hodnoty Content-Length
p°i p°eposφlßnφ POST dat
- opraveno dublovßnφ znaku '=' v URL (chyba zavleΦena p°i oprav∞ chyby
s rovnφtkem p°i zpracovßnφ parametr∙ typu jmΘno=hodnota);
p°i tΘ p°φle╛istosti p°epsßn k≤d kolem do mnohem Φiteln∞j╣φ
podoby
- CSßΦek lze nynφ zkompilovat takΘ pod AIX 4.2; zφskal jsem
nov² p°φstup na RS6000 stroj s AIXem, tak╛e je to nynφ jedna
z podporovan²ch platforem
- CSßΦek lze nyni zkompilovat i pod HP-UX (testovßno na HP/UX 10.20
s K&R cc); bohu╛el nemßm stßl² p°φstup k systΘmu s HP/UX
verze 2.0.4 (30.10.1998)
- patch release
- jedna velmi (alespo≥ p∙l roku) starß chyba - p°i zpracovßnφ
parametru CSßΦek p°φkazu ve tvaru jmΘno=hodnota
se p°φkaz ╣patn∞ rozeznal a neprovedl pokud hodnota
nebylo v uvozovkßch a obsahovalo rovnφtko
- aby se upravoval obsah HTML tagu META, A,
BODY a FORM, musφ b²t v dokumentu opravdu
uvedeny jako HTML tag; p°edchozφ implementace umo╛≥ovala, aby byly
uvedeny i v HTML komentß°i (<!-- a -->),
co╛ mohlo n∞kdy vadit
- Apache: opraven k≤d tak, aby modul op∞t fungoval i pod Apache 1.1
- (Fast)CGI: p°i p°edßvßnφ dokumentu p°φmo ze souboru
se ╣patn∞ nastavil p°φznak, zda se jednß o HTML dokument -
byl v╛dy false (mß v²znam jen pro vypisovßnφ CSßΦek banneru)
- p°episovßnφ URL nefungovalo korektn∞, pokud p°episovanΘ URL u╛
obsahovalo CSßΦek a zaΦφnalo na csacekIgnorePrefix
(defaultn∞ /cgi-bin)
- plain UNICODE opravy: odstran∞na chyba p°i p°ek≤dovßnφ do
plain unicode (tj. klasickΘho 2B zapisu); banner a URL
p°i automatickΘm p°episu URL se nynφ p°ed vlo╛enφm
do v²stupu p°ek≤dujφ
- ·prava zachßzenφ se seznamem CSßΦek server∙ - pokud nenφ
u direktivy csacekServer zadßn port, chßpe se to jako
kter²koli port - mß v²znam pro automatickΘ p°episovßnφ URL
- Netscape a komprese: v NC 4.5b2 je chyba, kterß zp∙sobφ, ╛e
za urΦit²ch okolnostφ se mφsto dokumentu zobrazφ prßzdnß
strßnka; tento problΘm se dß obejφt nap°φklad tak, ╛e
hlaviΦka Via mß dΘlku jakΘhokoli tokenu maximßln∞
rovnu 60 bajt∙m
- Apache: opraveno zachßzenφ s hlaviΦkami Connection
a Keep-Alive, tΘm∞° nikdy by nynφ server nem∞l
posφlat klientovi po╛adavek o uzav°enφ spojenφ p°i
Keep-Alive (tj. Connection: close)
ani p°i p°edßvßnφ dynamick²ch dat
- komprese: chybn∞ se kompresovalo v╣e a ne jen text/html a text/plain;
pod Apache toto "v╣e" znamenß text/html, text/plain a dynamicky
generovanß data; za urΦit²ch okolnostφ se na zaΦßtek dat
p°ipsala inicializaΦnφ hlaviΦka komprese, ale obsah se
nekompresoval --> data se pokazila
- __LAMPACHARSET__ se nenahrazovalo sprßvnou hodnotou,
pokud se pou╛φvalo implicitnφ k≤dovßnφ (tj. kdy╛ URL bylo bez
/toXXX)
- Apache: modul ne╣lo pou╛φt pod Apache 1.3X (na jednom mφst∞
bylo pou╛ito
table_get() mφsto ap_table_get())
verze 2.0.3 (13.10.1998)
- patch release
- opravena chyba 2.0.2, kdy CSßΦek p°ek≤dovßval v╣e (a ne jen
text/html a text/plain)
- do seznamu nazvu kodovani p°idßno "ISO Latin 1" a "ISO Latin 2" -
to druhΘ je ΦastΘ (defaultnφ ?) nastavenφ preferovanΘho
jazyka v Lynxu
- cstools & Apache: chyba v k≤du m∞la za nßsledek, ╛e i °et∞zec
pouze ΦßsteΦn∞ odpovφdajφcφ nazvu k≤dovßnφ se bral jako platn²
match; CSßΦek tak mohl zbyteΦn∞ "o°ezßvat" URL p°ed p°edßnφm
requestu dßle Apache rutinßm a perfektn∞ platnΘ URL najednou
nefungovalo
- dokumentace: v Φßsti Historie u 2.0.2 p°epsßna do hßΦkovanΘ Φe╣tiny,
dodßn uzavφrajφcφ </TT> tag
- dφky pou╛itφ neinicializovanΘ prom∞nnΘ se na n∞kter²ch architekturßch/OS
mφsto strßnky jako HTML zobrazil dokument jako text spolu s Φßstφ
hlaviΦek; nynφ se v╣e zobrazuje korektn∞ kdekoli
verze 2.0.2 (11.9.1998)
- patch release
- definitivn∞ (doufejme) opraveno zacyklenφ k≤du starajφcφho se
o "nad∞jnΘ"
zbytky °et∞zce zaΦφnajφcφho na "_" v pracovnφm bufferu
- Netscape servery: "sprßvnΘ" jmΘno virtußlnφho serveru se
zφskßvalo z SERVER_URL; to m∙╛e obsahovat i Φφslo
portu, s Φφm╛ se nepoΦφtalo; nynφ se na anal²zu SERVER_URL
pou╛φvß csa_parse_url()
- Apache: Linux (a mo╛nß dal╣φ OSy): k≤d p°edpokladal, ze rewind()
ud∞lß implicitnφ lseek() na zaΦßtek souboru, i kdy╛
p°edstava stdio o streamu je, ╛e nebyl m∞n∞n - co╛ vadφ,
proto╛e se na n∞kolika mφstech zapisuje do souboru p°es deskriptor
(Apache k≤d, ne p°φmo CSßΦek) -
v²sledek byl, ╛e na Linuxu se mφsto dokumentu vrßtily ╣patnΘ
hlaviΦky a ╛ßdnΘ t∞lo;
nynφ se mφsto rewind() volß lseek(), tak╛e
to funguje korektn∞ v╣ude (a ne jen na BSD systΘmech)
- opraveno nefungujφcφ PART v p°φpad∞, ╛e jmeno CGI skriptu
m∞lo p°φponu, nepat°φcφ do PART - nap°φklad .cgi
nebo .exe (fatßlnφ na NT serverech jedoucφch pod IIS)
- cstools: opravena mapa x-mac-ce (prohozenΘ I acute a I circumflex,
╣patn² k≤d pro division sign) a cp852 (prohozenΘ I acute a I
circumflex); opraveno p°ek≤dovßnφ UTF-->8bit kodovßnφ (k≤d
nezvlßdal ciste 8bit znaky)
- Φist∞ implementovßna podpora HTTP/0.9, HTTP/0.9 klient∙m se nynφ
neposφlajφ hlaviΦky
- p°idßna podpora URL typu http:/path/, pou╛φvanΘ
Mrkvosoftem (a podporovane takΘ Netscape)
- WNT: urychlenφ kompilace pod MSVC++ pou╛itφm specißlnφch konstant
pro preprocesor
- W32: distribuΦnφ Makefile a copy_csacek.bat
nynφ funguje takΘ pod W95
- Apache: CSßΦek je nynφ defaultn∞ _zapnut²_, tj. pokud nemß
b²t aktivnφ, je ho t°eba explicitn∞ vypnout
verze 2.0.1 (21.6.1998)
- patch release
- opraveno zacyklenφ p°i urΦitΘm v²skytu ret∞zce __ v dokumentu,
problΘm s whichcode (vypisovßnφ proveden²ch p°φkaz∙ PART
do v²stupu), CGI CSßΦek lze nynφ bez problΘm∙ zkompilovat p°i
pou╛itφ metody HTTP vyzvedßvßnφ dokumentu, __CHARSET_ se nynφ
nahrazuje sprßvnou hodnotou i p°i implicitnφm hßdßnφ vystupnφho
kodovßnφ
- specialn∞ je o╣et°eno, jestli klient ╛ßdß o dokument pomocφ HEAD
a pokud ano, t∞lo se v∙bec neposφlß; Apache si to bohuzel
neo╣et°uje (alespo≥ ne ve verzi 1.2.6)
verze 2.0 (3.6.1998)
B∞hem tΘm∞° osmim∞sφΦnφ prßce byl k≤d tak°ka kompletn∞
p°epsßn a byla p°idßna podpora FastCGI a Apache. CSßΦek je
mo╛no bez problΘm∙ p°elo╛it na NetBSD, Linuxu, Solarisu,
IRIXu i MS Windows NT - a dφky nasazenφ GNU autoconf by
m∞l b²t CSßΦek bez v∞t╣φch problΘm∙ zkompilovateln²
i na kterΘmkoli jinΘm modern∞j╣φm Un*xu.
CSßΦek nynφ v╛dy posφlß hlaviΦku
Content-Length a pokud to klient zvlßdne, textovΘ dokumenty kompresuje.
Byla p°idßna podpora Unicode ve form∞ UTF-8.
Je podporovßno vyznaΦenφ k≤dovßnφ dokumentu pomocφ tagu META.
P°φkazy CSßΦku jsou nynφ
implementovßny Φist∞, s pou╛itφm lexikßlnφho analyzßtoru. Mohou
nynφ b²t na n∞kolik °ßdk∙ a m∙╛e jich b²t na jednom °ßdku i vφc.
Je takΘ mo╛nΘ, aby na jednom °ßdku byl p°φkaz a zßrove≥ HTML text.
P°i tom v╣em CSßΦek funguje rychleji -- CGI CSßΦek 2.0b1 je
p°ibli╛n∞ 1.2x - 2x rychlej╣φ ne╛ CSßΦek 1.3.5.
verze 1.3.4 (listopad 1997)
- patch release - jen opraveny chyby nalezenΘ ve verzi 1.3.3
verze 1.3.3 (Φerven 1997)
- patch release - jen opraveny chyby nalezenΘ ve verzi 1.3.2
- oznaΦenφ verze p°esunuto do samostatnΘho souboru version.h
verze 1.3.2 (·nor-b°ezen 1997)
- CSßΦek byl pln∞ naportovßn na NT
- DECODEQUERY je nynφ doporuΦenß volba
- opravena chyba, kdy se pri urΦitΘm tvaru p°φkazu BAR CSßΦek
zacyklil
- opravena chyba s p°ipisovßnφm znaku ^Q do QUERY_STRING p°i
urΦitΘ dΘlce p°edanΘho QUERY_STRING
- opravena chyba dealokace pole ve freecmdarr() (mohla se
projevit u p°φkaz∙ jako je nap°. PART, tj. t∞ch, kterΘ mohou
mφt vφc parametr∙)
- opravena chyba v connect_server() - ╣patnΘ mapovßnφ
adresy na IP adresu (projevφ se pokud CSßΦek
nebyl zkompilovßn s LOCALHOSTHACK)
- p°i kompilaci je mo╛no zadat seznam p°φpon oznaΦujφcφch
soubory, kterΘ se majφ v╛dy k≤dovat metodou http
- CSßΦek filtry byly odstran∞ny a nadßle nejsou podporovßny; pokud
bude poptßvka, snad se jednou zas objevφ v jinΘ form∞
- RESTRICTDOMAINS a MULTIPART bylo slouΦeno dohromady
pod hlaviΦkou MULTIPART
- je-li aktivnφ NOCODE, p°φkazy PART, DOMAIN
se ignorujφ
- byly roz╣φ╛eny mo╛nosti definovßnφ li╣ty s nabφdkou k≤dovßnφ
p°φmo v dokumentu; lze dynamicky m∞nit hlaviΦku ΦeskΘ
i anglickΘ verze, zßv∞r a pojmenovßnφ linky na volbu pomocφ
whichcode
- z CSßΦku byl odstran∞n k≤d, starajφcφ se o SSI; nechßvß se nynφ
zcela na stran∞ serveru
- volba NPH spolu se souvisejφcφm k≤dem je takΘ minulostφ
- pokud po╛adovanΘ URL ukazuje na adresß° a nekonΦφ na /,
CSßΦek klienta p°esm∞ruje na URL/
verze 1.3.1 (·nor 1996)
- internφ velmi chybovß verze, nebyla dßna ve°ejn∞ k dispozici
verze 1.3 (srpen-listopad 1996)
- podpora SSI a shtml
- mo╛nost vφce defaultnφch soubor∙ (tzn. soubor∙, kterΘ se
poskytnou pokud se zadß jako po╛adovan² dokument jmΘno adresß°e)
- u k≤dovan²ch dokument∙ p°edßvßn parametr "charset" u
Content-type
- podpora autorizace p°φstupu
- zavedenφ CSßΦek filtr∙
- optimalizovßny nßroky na pam∞╗ - na mnoha mφstech odstran∞ny
statickΘ buffery, nahrazeny pointry a dynamickou alokacφ
- animovanΘ GIFy z∙stßvajφ animovanΘ i po dokonΦenφ prvnφ smyΦky
- zjednodu╣ena struktura funkcφ, opraveno mnoho drobn²ch chyb,
nejd∙le╛it∞j╣φ asi sprßvn² p°enos obrßzk∙, p°edßvßnφ sprßvnΘho statutu,
fungujφcφ podpora metody POST a PUT,
zpracovßnφ hlaviΦky If-Modified-Since, ud∞lßno vφce "blbuvzdornΘ",
v╣ude kde se m∙╛e vyskytnout chyba je detekovßna a ohlß╣ena,
a mnoho dal╣φho
- mo╛nost zji╣t∞nφ zakompilovanΘ konfigurace CSßΦku (?csacek_report)
verze 1.23 (zaΦßtek Φervna 1996)
- dost chybov², doporuΦuji kdy╛ tak jen vybrat opravenou
verzi cstools.h
- podpora skript∙ volan²ch metodou POST
- lΘpe zachovßvß HTTP hlaviΦky
- opraveno chybnΘ p°ek≤dovßvßnφ n∞kter²ch znak∙
- opraven whichcode.sl
verze 1.22 (konec kv∞tna 1996)
- mo╛nost nastavenφ (tΘm∞°) jakΘhokoli tvaru automaticky generovanΘ
li╣ty s nabφdkou k≤dovßnφ p°φmo v dokumentu
- podpora vφcejazyΦn²ch dokument∙ - mo╛nost mφt v jednom
dokumentu vφc r∙zn²ch Φßstφ a dynamicky vybφrat, kterΘ zobrazit
verze 1.21 (konec kv∞tna 1996)
- souΦßstφ automaticky generovanΘ li╣ty s nabφdkou k≤dovßnφ
m∙╛e b²t i mo╛nost p°epnout k≤dovßnφ pomocφ p∙vodnφho
whichcode.
- opraveno ╣patnΘ pou╛φvßnφ metody FILE (koliduje s definicφ
FILE ve stdio.h); nßzvy metod jsou nynφ op∞t mal²mi
pφsmeny
verze 1.2 (konec kv∞tna 1996)
- automatickΘ vlo╛enφ li╣ty s nabφdkou k≤dovßnφ
- k≤dovacφ tabulky roz╣φ°eny o v∞t╣inu ostatnφch znak∙ s diakritikou (i nap°. a se st°φ╣kou apod.)
- opraven whichcode.src, aby vytvo°en² whichcode
byl zpracovateln² i bashem
verze 1.1 (kv∞ten 1996)
- opraveno ╣patnΘ nahrazovßnφ °et∞zce __CHARSET__
p°i metod∞ http
- k≤dovacφ tabulky roz╣φ°eny o slovenskΘ znaky
- chybovΘ hlß╣ky jsou "systΘmov∞j╣φ" - v hlaviΦce vracφ
(po vzoru SaCzechu 2.1) i Status s platn²m k≤dem.
- __CHARSET__ rozpoznßvßn i v HTML hlaviΦkßch p°i metod∞ http
(umo╛≥uje zachovßnφ k≤du i v obrßzcφch s klikou)
- lze p°ek≤dovat i parametry, zadanΘ programu (obsah prom∞nnΘ
QUERY_STRING)
- zdokonaleno rozhodovßnφ, kterß metoda se mß pou╛φt p°i guess
tak, ╛e metoda http se pou╛ije i tehdy, kdy╛
po╛adovanΘ URL obsahuje CGISUFFIX.
verze 1.0 (kv∞ten 1996)
- mo╛nost zφskßvat k≤dovanΘ dokumenty prost°ednictvφm HTTP
- podpora HTTP hlaviΦek Last-Modified, Content-Size
a If-Modified-Since p°i zpracovßnφ soubor∙
- mo╛nost opat°it konverznφ sadu p°φponou (nap°. .cgi) pokud
to systΘm vy╛aduje
- p°i metod∞ HTTP nebo GUESS je volanΘmu
skriptu p°edßvßn i dotaz (QUERY_STRING)
- korektnφ chovßnφ p°i chybn∞ zadanΘm URL (neexistujφcφ soubor)
- je mo╛no pou╛φvat vφce jmen k≤d∙ (aliasy)
- souΦßstφ distribuce je which.src s p°φklady k≤d∙
Zp∞t
This page is part of documentation of
C-SaCzech.
It has been created and is maintained by
Jaromφr DoleΦek,
dolecek@ics.muni.cz
$Id: csacek.html,v 1.70 2000/01/24 12:36:11 dolecek Exp $