Štìpán Roh
Verze 0.3.1
Revize dokumentu 1.2 (17.5.2009)
Motto: 's' jako stupid.
shttpd je urèen vesmìs k osobnímu použití. Mùže ho spustit i obyèejný
uživatel, i když musí používat èísla portù vìtší jak 1024. Podporuje
rozumnou podmnožinu HTTP/1.0 a HTTP/1.1 (bez virtuálních serverù,
podmínìných GET a persistentních spojení). Umí pouze statické stránky, žádná
dynamika (SSI, PHP a spol.). Z toho plyne, že zvládá pouze metody GET, HEAD,
OPTIONS a TRACE. Také nepodporuje žádné moduly.
Ke svému bìhu potøebuje konfiguraèní soubor. Standardnì je to shttpd.cfg v
aktuálním adresáøi, ale jméno se dá zmìnit parametrem -f (viz shttpd -?).
Práce serveru se ukonèí pomocí Ctrl-C (pracuje-li na popøedí) nebo posláním
nìkterého ze signálù SIGINT, SIGHUP, SIGTERM.
Bez podpory vláken (dá se zjistit pomocí shttpd -?) zvládá pouze jeden
požadavek najednou. Jsou-li zakompilována vlákna, tak se vlákna vytváøí tak
dlouho než obslouží všechny požadavky nebo než poèet bìžících vláken dosáhne
zadaného limitu.
Poznámky se uvozují znakem '#'. Konfiguraèní soubor se skládá z øádkù tvaru
<jméno_promìnné> <hodnota>. Øetìzcové hodnoty se uvádí v uvozovkách - v
nich je možno používat i sekvence zaèínající na '\' ('"' znak uvozovky, '\'
znak zpìtné lomítko, 'n' znak nová øádka, 't' znak tabulátor, 'r' znak posun
vozíku alias CR).
Použitelné promìnné :
- min_threads
- poèet vláken, které existují po celou dobu bìhu serveru (úèinkuje pouze pøi zakompilované podpoøe vláken); implicitnì : 4
- max_threads
- maximální poèet souèasnì existujících vláken (není-li zakompilována podpora vláken, tak urèuje pouze max. poèet èekajících požadavkù); implicitnì : 16
- port
- TCP/IP port, na kterém má server naslouchat požadavkùm (standardní HTTP port je 80); implicitnì : 8080
- access_log
- jméno souboru, do kterého se mají ukládat informace o spojeních - má øádky formátu : "[datum a èas] adresa odkud "první øádka požadavku" stavový kód délka pøenesných dat" Zadáte-li jako jméno '-' bez uvozovek, nebude se zapisovat nikam; implicitnì : "access_log.shttpd"
- error_log
- jméno souboru, do kterého se mají ukládat ruzné hlášky serveru - informaèní i chybové. Zadáte-li jako jméno '-' bez uvozovek, nebude se zapisovat nikam; implicitnì : "error_log.shttpd"
- log_level
- nejnižší úroveò hlášek, které se mají zapisovat do error logu. Možné hodnoty jsou (od nejnižší k nejvyšší) : LOG_LEVEL_INFO, LOG_LEVEL_WARN, LOG_LEVEL_ERR, LOG_LEVEL_SYS, LOG_LEVEL_MAX (nebude se zapisovat nic); implicitnì : LOG_LEVEL_INFO
- error_log_stderr
- 1, pakliže se na stderr (standardní chybový výstup) má zapisovat to samé, co do error logu - 0 jinak; implicitnì : 1
- doc_root
- adresáø s dokumenty k zobrazení. Musí na konci mít znak lomítko '/'; implicitnì : "html/"
- remote_names
- 1, pakliže se do access logu ukládá jmenná adresa - 0 pro èíselnou adresu (pøeklad z èíselné na jmennou mùže zdržovat); implicitnì : 1
- status_page
- má složitìjší formát <stavový kód> <øetìzec>, který pøiøazuje HTML odpovìï urèitému stavovému kódu (napø. 404, což je Not Found). Zadáte-li jako øetìzec '-' bez uvozovek, pošle se pouze HTTP hlavièka Status s prázdným tìlem. První sekvence '%s' v øetìzci se nahradí jménem dokumentu, ke kterému se daná chyba vztahuje; implicitnì : všechny chyby generované serverem jsou definovány (jsou to 301, 400, 403, 404, 405, 505).
- index_file
- jaký soubor má server hledat, když obdrží požadavek na adresáø bez jména souboru; implicitnì : "index.html"
- media_type
- media (MIME) typ, který se má vracet v odpovìdi, nejde-li zjistit z typu posílaných dat; implicitnì : "text/plain"
- media_config
- jméno souboru s definicí media (MIME) typu. Zadáte-li jako jméno '-' bez uvozovek, tak se žádný nenaète. Soubor má øádky formátu : "media (MIME) typ [pøípona1 pøípona2 ...]" popøípadì s komentáøovými øádky zaèínajícími '#'. Pøípony jsou bez úvodní teèky. Tento soubor slouží k rozeznání typu odesílaných souborù na základì jejich pøípony; implicitnì : "mime.types"
Zmìny z verze 0.3 na verzi 0.3.1 (17.5.2009)
- BEZPEÈNOSTNÍ OPRAVA: zamezení volného procházení adresáøù
Zmìny z verze 0.2 na verzi 0.3 (3.10.2000)
- pøi vracení obsahu klientovi se data kopírují po blocích
- ukládání délky pøenesených dat do access_logu
- ignorování signálu SIGPIPE, který zpùsoboval ukonèení bìhu serveru pøi pøerušení spojení ze strany klienta pøi pøenosu dat
- posílání sekvence CR LF na konci øádkù (dle RFC 2068)
- dokumentace ve formátu aft
Zmìny z verze 0.1 (5.1.2000) na verzi 0.2 (25.2.2000)
- pøidání configure
- dodìlání generování kódu 301 Moved Permanently
- oprava chyb
- IRIX 6.5 : do logu vypisuje špatnì IP adresu - zøejmì chybná systémová implementace fce inet_ntoa()
- IRIX 6.5 : "Segmentation fault" pøi ukonèení serveru zkompilovaného s vlákny a bez ladících informací
- Obsluha podmínìných GET (generování kódu 304).
- Generování Expires hlavièky.
- Generování Last-Modified hlavièky.
- Generování stavové stránky serveru.
- Lepší využití doèasných vláken.
- Dynamická velikost výstupních bufferù.
- Persistentní spojení.
- Virtuální servery.
- Dynamické stránky a moduly.
Štìpán Roh <src@post.cz>
This document was generated using AFT v5.096