1*340f5e56SDavid van Moolenbroek.\" $NetBSD: bozohttpd.8,v 1.53 2015/08/13 12:30:08 wiz Exp $ 2*340f5e56SDavid van Moolenbroek.\" 3*340f5e56SDavid van Moolenbroek.\" $eterna: bozohttpd.8,v 1.101 2011/11/18 01:25:11 mrg Exp $ 4*340f5e56SDavid van Moolenbroek.\" 5*340f5e56SDavid van Moolenbroek.\" Copyright (c) 1997-2015 Matthew R. Green 6*340f5e56SDavid van Moolenbroek.\" All rights reserved. 7*340f5e56SDavid van Moolenbroek.\" 8*340f5e56SDavid van Moolenbroek.\" Redistribution and use in source and binary forms, with or without 9*340f5e56SDavid van Moolenbroek.\" modification, are permitted provided that the following conditions 10*340f5e56SDavid van Moolenbroek.\" are met: 11*340f5e56SDavid van Moolenbroek.\" 1. Redistributions of source code must retain the above copyright 12*340f5e56SDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer. 13*340f5e56SDavid van Moolenbroek.\" 2. Redistributions in binary form must reproduce the above copyright 14*340f5e56SDavid van Moolenbroek.\" notice, this list of conditions and the following disclaimer in the 15*340f5e56SDavid van Moolenbroek.\" documentation and/or other materials provided with the distribution. 16*340f5e56SDavid van Moolenbroek.\" 17*340f5e56SDavid van Moolenbroek.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18*340f5e56SDavid van Moolenbroek.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19*340f5e56SDavid van Moolenbroek.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20*340f5e56SDavid van Moolenbroek.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21*340f5e56SDavid van Moolenbroek.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22*340f5e56SDavid van Moolenbroek.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 23*340f5e56SDavid van Moolenbroek.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 24*340f5e56SDavid van Moolenbroek.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25*340f5e56SDavid van Moolenbroek.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26*340f5e56SDavid van Moolenbroek.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27*340f5e56SDavid van Moolenbroek.\" SUCH DAMAGE. 28*340f5e56SDavid van Moolenbroek.\" 29*340f5e56SDavid van Moolenbroek.Dd May 1, 2015 30*340f5e56SDavid van Moolenbroek.Dt BOZOHTTPD 8 31*340f5e56SDavid van Moolenbroek.Os 32*340f5e56SDavid van Moolenbroek.Sh NAME 33*340f5e56SDavid van Moolenbroek.Nm bozohttpd 34*340f5e56SDavid van Moolenbroek.Nd hyper text transfer protocol version 1.1 daemon 35*340f5e56SDavid van Moolenbroek.Sh SYNOPSIS 36*340f5e56SDavid van Moolenbroek.Nm 37*340f5e56SDavid van Moolenbroek.Op Fl CIMPSZciptvx 38*340f5e56SDavid van Moolenbroek.Op Fl C Ar suffix cgihandler 39*340f5e56SDavid van Moolenbroek.Op Fl I Ar port 40*340f5e56SDavid van Moolenbroek.Op Fl L Ar prefix script 41*340f5e56SDavid van Moolenbroek.Op Fl M Ar suffix type encoding encoding11 42*340f5e56SDavid van Moolenbroek.Op Fl P Ar pidfile 43*340f5e56SDavid van Moolenbroek.Op Fl S Ar server_software 44*340f5e56SDavid van Moolenbroek.Op Fl Z Ar cert privkey 45*340f5e56SDavid van Moolenbroek.Op Fl c Ar cgibin 46*340f5e56SDavid van Moolenbroek.Op Fl i Ar address 47*340f5e56SDavid van Moolenbroek.Op Fl p Ar pubdir 48*340f5e56SDavid van Moolenbroek.Op Fl t Ar chrootdir 49*340f5e56SDavid van Moolenbroek.Op Fl v Ar virtualroot 50*340f5e56SDavid van Moolenbroek.Op Fl x Ar index 51*340f5e56SDavid van Moolenbroek.Ar slashdir 52*340f5e56SDavid van Moolenbroek.Op Ar myname 53*340f5e56SDavid van Moolenbroek.Sh DESCRIPTION 54*340f5e56SDavid van MoolenbroekThe 55*340f5e56SDavid van Moolenbroek.Nm 56*340f5e56SDavid van Moolenbroekprogram reads a 57*340f5e56SDavid van Moolenbroek.Em HTTP 58*340f5e56SDavid van Moolenbroekrequest from the standard input, and sends a reply to the standard output. 59*340f5e56SDavid van MoolenbroekBesides ~user translation and virtual hosting support (see below), all file 60*340f5e56SDavid van Moolenbroekrequests are from 61*340f5e56SDavid van Moolenbroek.Ar slashdir 62*340f5e56SDavid van Moolenbroekdirectory. 63*340f5e56SDavid van MoolenbroekThe server uses 64*340f5e56SDavid van Moolenbroek.Ar myname 65*340f5e56SDavid van Moolenbroekas its name, which defaults to the local hostname, obtained from 66*340f5e56SDavid van Moolenbroek.Xr gethostname 3 67*340f5e56SDavid van Moolenbroek(but see the 68*340f5e56SDavid van Moolenbroek.Fl v 69*340f5e56SDavid van Moolenbroekoption for virtual hosting.) 70*340f5e56SDavid van Moolenbroek.Nm 71*340f5e56SDavid van Moolenbroekwrites logs to 72*340f5e56SDavid van Moolenbroek.Xr syslog 3 73*340f5e56SDavid van Moolenbroekusing the ftp facility (but see the 74*340f5e56SDavid van Moolenbroek.Fl s 75*340f5e56SDavid van Moolenbroekoption for testing.) 76*340f5e56SDavid van Moolenbroek.Nm 77*340f5e56SDavid van Moolenbroekis designed to be small, simple and relatively featureless, 78*340f5e56SDavid van Moolenbroekhopefully increasing its security. 79*340f5e56SDavid van Moolenbroek.Ss OPTIONS 80*340f5e56SDavid van MoolenbroekThe following options are available: 81*340f5e56SDavid van Moolenbroek.Bl -tag -width xxxcgibin 82*340f5e56SDavid van Moolenbroek.It Fl b 83*340f5e56SDavid van MoolenbroekEnables daemon mode, where 84*340f5e56SDavid van Moolenbroek.Nm 85*340f5e56SDavid van Moolenbroekdetaches from the current terminal, running in the background and 86*340f5e56SDavid van Moolenbroekservicing HTTP requests. 87*340f5e56SDavid van Moolenbroek.It Fl C Ar suffix cgihandler 88*340f5e56SDavid van MoolenbroekAdds a new CGI handler program for a particular file type. 89*340f5e56SDavid van MoolenbroekThe 90*340f5e56SDavid van Moolenbroek.Ar suffix 91*340f5e56SDavid van Moolenbroekshould be any normal file suffix, and the 92*340f5e56SDavid van Moolenbroek.Ar cgihandler 93*340f5e56SDavid van Moolenbroekshould be a full path to an interpreter. 94*340f5e56SDavid van MoolenbroekThis option is the only way to enable CGI programs that exist 95*340f5e56SDavid van Moolenbroekoutside of the cgibin directory to be executed. 96*340f5e56SDavid van MoolenbroekMultiple 97*340f5e56SDavid van Moolenbroek.Fl C 98*340f5e56SDavid van Moolenbroekoptions may be passed. 99*340f5e56SDavid van Moolenbroek.It Fl c Ar cgibin 100*340f5e56SDavid van MoolenbroekEnables the CGI/1.1 interface. 101*340f5e56SDavid van MoolenbroekThe 102*340f5e56SDavid van Moolenbroek.Ar cgibin 103*340f5e56SDavid van Moolenbroekdirectory is expected to contain the CGI programs to be used. 104*340f5e56SDavid van Moolenbroek.Nm 105*340f5e56SDavid van Moolenbroeklooks for URL's in the form of 106*340f5e56SDavid van Moolenbroek.Em /cgi-bin/\*[Lt]scriptname\*[Gt] 107*340f5e56SDavid van Moolenbroekwhere 108*340f5e56SDavid van Moolenbroek.Aq scriptname 109*340f5e56SDavid van Moolenbroekis a valid CGI program in the 110*340f5e56SDavid van Moolenbroek.Ar cgibin 111*340f5e56SDavid van Moolenbroekdirectory. 112*340f5e56SDavid van MoolenbroekIn other words, all CGI URL's must begin with 113*340f5e56SDavid van Moolenbroek.Em \%/cgi-bin/ . 114*340f5e56SDavid van MoolenbroekNote that the CGI/1.1 interface is not available with 115*340f5e56SDavid van Moolenbroek.Em ~user 116*340f5e56SDavid van Moolenbroektranslation. 117*340f5e56SDavid van Moolenbroek.It Fl e 118*340f5e56SDavid van MoolenbroekCauses 119*340f5e56SDavid van Moolenbroek.Nm 120*340f5e56SDavid van Moolenbroekto not clear the environment when used with either the 121*340f5e56SDavid van Moolenbroek.Fl t 122*340f5e56SDavid van Moolenbroekor 123*340f5e56SDavid van Moolenbroek.Fl U 124*340f5e56SDavid van Moolenbroekoptions. 125*340f5e56SDavid van Moolenbroek.It Fl f 126*340f5e56SDavid van MoolenbroekStops the 127*340f5e56SDavid van Moolenbroek.Fl b 128*340f5e56SDavid van Moolenbroekflag from 129*340f5e56SDavid van Moolenbroek.Nm 130*340f5e56SDavid van Moolenbroekdetaching from the tty and going into the background. 131*340f5e56SDavid van Moolenbroek.It Fl H 132*340f5e56SDavid van MoolenbroekCauses directory index mode to hide files and directories 133*340f5e56SDavid van Moolenbroekthat start with a period, except for 134*340f5e56SDavid van Moolenbroek.Pa .. . 135*340f5e56SDavid van MoolenbroekAlso see 136*340f5e56SDavid van Moolenbroek.Fl X . 137*340f5e56SDavid van Moolenbroek.It Fl I Ar port 138*340f5e56SDavid van MoolenbroekCauses 139*340f5e56SDavid van Moolenbroek.Nm 140*340f5e56SDavid van Moolenbroekto use 141*340f5e56SDavid van Moolenbroek.Ar port 142*340f5e56SDavid van Moolenbroekinstead of the default 143*340f5e56SDavid van Moolenbroek.Dq http 144*340f5e56SDavid van Moolenbroekport. 145*340f5e56SDavid van MoolenbroekWhen used with the 146*340f5e56SDavid van Moolenbroek.Fl b 147*340f5e56SDavid van Moolenbroekoption, it changes the bound port. 148*340f5e56SDavid van MoolenbroekOtherwise it forces redirections to use this port instead of the 149*340f5e56SDavid van Moolenbroekvalue obtained via 150*340f5e56SDavid van Moolenbroek.Xr getsockname 2 . 151*340f5e56SDavid van Moolenbroek.It Fl i Ar address 152*340f5e56SDavid van MoolenbroekCauses 153*340f5e56SDavid van Moolenbroek.Ar address 154*340f5e56SDavid van Moolenbroekto be used as the address to bind daemon mode. 155*340f5e56SDavid van MoolenbroekIf otherwise unspecified, the address used to bind is derived from the 156*340f5e56SDavid van Moolenbroek.Ar myname , 157*340f5e56SDavid van Moolenbroekwhich defaults to the name returned by 158*340f5e56SDavid van Moolenbroek.Xr gethostname 3 . 159*340f5e56SDavid van MoolenbroekOnly the last 160*340f5e56SDavid van Moolenbroek.Fl i 161*340f5e56SDavid van Moolenbroekoption is used. 162*340f5e56SDavid van MoolenbroekThis option is only valid with the 163*340f5e56SDavid van Moolenbroek.Fl b 164*340f5e56SDavid van Moolenbroekoption. 165*340f5e56SDavid van Moolenbroek.It Fl L Ar prefix script 166*340f5e56SDavid van MoolenbroekAdds a new Lua script for a particular prefix. 167*340f5e56SDavid van MoolenbroekThe 168*340f5e56SDavid van Moolenbroek.Ar prefix 169*340f5e56SDavid van Moolenbroekshould be an arbitrary text, and the 170*340f5e56SDavid van Moolenbroek.Ar script 171*340f5e56SDavid van Moolenbroekshould be a full path to a Lua script. 172*340f5e56SDavid van MoolenbroekMultiple 173*340f5e56SDavid van Moolenbroek.Fl L 174*340f5e56SDavid van Moolenbroekoptions may be passed. 175*340f5e56SDavid van MoolenbroekA separate Lua state is created for each prefix. 176*340f5e56SDavid van MoolenbroekThe Lua script can register callbacks using the 177*340f5e56SDavid van Moolenbroekhttpd.register_handler('<name>', function) Lua function, 178*340f5e56SDavid van Moolenbroekwhich will trigger the execution of the Lua function 179*340f5e56SDavid van Moolenbroek.Em function 180*340f5e56SDavid van Moolenbroekwhen a URL in the form 181*340f5e56SDavid van Moolenbroek.Em http://<hostname>/<prefix>/<name> 182*340f5e56SDavid van Moolenbroekis being accessed. 183*340f5e56SDavid van MoolenbroekThe function is passed three tables as arguments, the server 184*340f5e56SDavid van Moolenbroekenvironment, the request headers, and the decoded query string 185*340f5e56SDavid van Moolenbroekplus any data that was send as application/x-www-form-urlencoded. 186*340f5e56SDavid van Moolenbroek.It Fl M Ar suffix type encoding encoding11 187*340f5e56SDavid van MoolenbroekAdds a new entry to the table that converts file suffixes to 188*340f5e56SDavid van Moolenbroekcontent type and encoding. 189*340f5e56SDavid van MoolenbroekThis option takes four additional arguments containing 190*340f5e56SDavid van Moolenbroekthe file prefix, its 191*340f5e56SDavid van Moolenbroek.Dq Content-Type , 192*340f5e56SDavid van Moolenbroek.Dq Content-Encoding , 193*340f5e56SDavid van Moolenbroekand 194*340f5e56SDavid van Moolenbroek.Dq Content-Encoding 195*340f5e56SDavid van Moolenbroekfor HTTP/1.1 connections, respectively. 196*340f5e56SDavid van MoolenbroekIf any of these are a single dash 197*340f5e56SDavid van Moolenbroek.Pq Dq - , 198*340f5e56SDavid van Moolenbroekthe empty string is used instead. 199*340f5e56SDavid van MoolenbroekMultiple 200*340f5e56SDavid van Moolenbroek.Fl M 201*340f5e56SDavid van Moolenbroekoptions may be passed. 202*340f5e56SDavid van Moolenbroek.It Fl n 203*340f5e56SDavid van MoolenbroekStops 204*340f5e56SDavid van Moolenbroek.Nm 205*340f5e56SDavid van Moolenbroekfrom doing IP address to name resolution of hosts for setting the 206*340f5e56SDavid van Moolenbroek.Ev REMOTE_HOST 207*340f5e56SDavid van Moolenbroekvariable before running a CGI program. 208*340f5e56SDavid van MoolenbroekThis option has no effect without the 209*340f5e56SDavid van Moolenbroek.Fl c 210*340f5e56SDavid van Moolenbroekoption. 211*340f5e56SDavid van Moolenbroek.It Fl P Ar pidfile 212*340f5e56SDavid van MoolenbroekCauses 213*340f5e56SDavid van Moolenbroek.Nm 214*340f5e56SDavid van Moolenbroekto create a pid file in 215*340f5e56SDavid van Moolenbroek.Ar pidfile 216*340f5e56SDavid van Moolenbroekwhen run in daemon mode with the 217*340f5e56SDavid van Moolenbroek.Fl b 218*340f5e56SDavid van Moolenbroekoption. 219*340f5e56SDavid van Moolenbroek.It Fl p Ar pubdir 220*340f5e56SDavid van MoolenbroekChanges the default user directory for 221*340f5e56SDavid van Moolenbroek.Em /~user/ 222*340f5e56SDavid van Moolenbroektranslations from 223*340f5e56SDavid van Moolenbroek.Dq public_html 224*340f5e56SDavid van Moolenbroekto 225*340f5e56SDavid van Moolenbroek.Ar pubdir . 226*340f5e56SDavid van Moolenbroek.It Fl r 227*340f5e56SDavid van MoolenbroekForces pages besides the 228*340f5e56SDavid van Moolenbroek.Dq index.html 229*340f5e56SDavid van Moolenbroek(see the 230*340f5e56SDavid van Moolenbroek.Fl X 231*340f5e56SDavid van Moolenbroekoption) page to require that the Referrer: header be present and 232*340f5e56SDavid van Moolenbroekrefer to this web server, otherwise a redirect to the 233*340f5e56SDavid van Moolenbroek.Dq index.html 234*340f5e56SDavid van Moolenbroekpage will be returned instead. 235*340f5e56SDavid van Moolenbroek.It Fl S Ar server_software 236*340f5e56SDavid van MoolenbroekSets the internal server version to 237*340f5e56SDavid van Moolenbroek.Ar server_software . 238*340f5e56SDavid van Moolenbroek.It Fl s 239*340f5e56SDavid van MoolenbroekForces logging to be set to stderr always. 240*340f5e56SDavid van Moolenbroek.It Fl t Ar chrootdir 241*340f5e56SDavid van MoolenbroekMakes 242*340f5e56SDavid van Moolenbroek.Nm 243*340f5e56SDavid van Moolenbroekchroot to the specified directory 244*340f5e56SDavid van Moolenbroekbefore answering requests. 245*340f5e56SDavid van MoolenbroekEvery other path should be specified relative 246*340f5e56SDavid van Moolenbroekto the new root, if this option is used. 247*340f5e56SDavid van MoolenbroekNote that the current environment 248*340f5e56SDavid van Moolenbroekis normally replaced with an empty environment with this option, unless the 249*340f5e56SDavid van Moolenbroek.Fl e 250*340f5e56SDavid van Moolenbroekoption is also used. 251*340f5e56SDavid van Moolenbroek.It Fl U Ar username 252*340f5e56SDavid van MoolenbroekCauses 253*340f5e56SDavid van Moolenbroek.Nm 254*340f5e56SDavid van Moolenbroekto switch to the user and the groups of 255*340f5e56SDavid van Moolenbroek.Ar username 256*340f5e56SDavid van Moolenbroekafter initialization. 257*340f5e56SDavid van MoolenbroekThis option, like 258*340f5e56SDavid van Moolenbroek.Fl t 259*340f5e56SDavid van Moolenbroekabove, causes 260*340f5e56SDavid van Moolenbroek.Nm 261*340f5e56SDavid van Moolenbroekto clear the environment unless the 262*340f5e56SDavid van Moolenbroek.Fl e 263*340f5e56SDavid van Moolenbroekoption is given. 264*340f5e56SDavid van Moolenbroek.It Fl u 265*340f5e56SDavid van MoolenbroekEnables the transformation of Uniform Resource Locators of 266*340f5e56SDavid van Moolenbroekthe form 267*340f5e56SDavid van Moolenbroek.Em /~user/ 268*340f5e56SDavid van Moolenbroekinto the directory 269*340f5e56SDavid van Moolenbroek.Pa ~user/public_html 270*340f5e56SDavid van Moolenbroek(but see the 271*340f5e56SDavid van Moolenbroek.Fl p 272*340f5e56SDavid van Moolenbroekoption above). 273*340f5e56SDavid van Moolenbroek.It Fl V 274*340f5e56SDavid van MoolenbroekSets the default virtual host directory to 275*340f5e56SDavid van Moolenbroek.Ar slashdir . 276*340f5e56SDavid van MoolenbroekIf no directory exists in 277*340f5e56SDavid van Moolenbroek.Ar virtualroot 278*340f5e56SDavid van Moolenbroekfor the request, then 279*340f5e56SDavid van Moolenbroek.Ar slashdir 280*340f5e56SDavid van Moolenbroekwill be used. 281*340f5e56SDavid van MoolenbroekThe default behaviour is to return 404 (Not Found.) 282*340f5e56SDavid van Moolenbroek.It Fl v Ar virtualroot 283*340f5e56SDavid van MoolenbroekEnables virtual hosting support. 284*340f5e56SDavid van MoolenbroekDirectories in 285*340f5e56SDavid van Moolenbroek.Ar virtualroot 286*340f5e56SDavid van Moolenbroekwill be searched for a matching virtual host name, when parsing 287*340f5e56SDavid van Moolenbroekthe HTML request. 288*340f5e56SDavid van MoolenbroekIf a matching name is found, it will be used 289*340f5e56SDavid van Moolenbroekas both the server's real name, 290*340f5e56SDavid van Moolenbroek.Op Ar myname , 291*340f5e56SDavid van Moolenbroekand as the 292*340f5e56SDavid van Moolenbroek.Ar slashdir . 293*340f5e56SDavid van MoolenbroekSee the 294*340f5e56SDavid van Moolenbroek.Sx EXAMPLES 295*340f5e56SDavid van Moolenbroeksection for an example of using this option. 296*340f5e56SDavid van Moolenbroek.It Fl X 297*340f5e56SDavid van MoolenbroekEnables directory indexing. 298*340f5e56SDavid van MoolenbroekA directory index will be generated only when the default file (i.e. 299*340f5e56SDavid van Moolenbroek.Pa index.html 300*340f5e56SDavid van Moolenbroeknormally) is not present. 301*340f5e56SDavid van Moolenbroek.It Fl x Ar index 302*340f5e56SDavid van MoolenbroekChanges the default file read for directories from 303*340f5e56SDavid van Moolenbroek.Dq index.html 304*340f5e56SDavid van Moolenbroekto 305*340f5e56SDavid van Moolenbroek.Ar index . 306*340f5e56SDavid van Moolenbroek.It Fl Z Ar certificate_path privatekey_path 307*340f5e56SDavid van MoolenbroekSets the path to the server certificate file and the private key file 308*340f5e56SDavid van Moolenbroekin pem format. 309*340f5e56SDavid van MoolenbroekIt also causes 310*340f5e56SDavid van Moolenbroek.Nm 311*340f5e56SDavid van Moolenbroekto start SSL mode. 312*340f5e56SDavid van Moolenbroek.El 313*340f5e56SDavid van Moolenbroek.Pp 314*340f5e56SDavid van MoolenbroekNote that in 315*340f5e56SDavid van Moolenbroek.Nm 316*340f5e56SDavid van Moolenbroekversions 20031005 and prior that supported the 317*340f5e56SDavid van Moolenbroek.Fl C 318*340f5e56SDavid van Moolenbroekand 319*340f5e56SDavid van Moolenbroek.Fl M 320*340f5e56SDavid van Moolenbroekoptions, they took a single space-separated argument that was parsed. 321*340f5e56SDavid van Moolenbroeksince version 20040828, they take multiple options (2 in the case of 322*340f5e56SDavid van Moolenbroek.Fl C 323*340f5e56SDavid van Moolenbroekand 4 in the case of 324*340f5e56SDavid van Moolenbroek.Fl M . ) 325*340f5e56SDavid van Moolenbroek.Ss INETD CONFIGURATION 326*340f5e56SDavid van MoolenbroekAs 327*340f5e56SDavid van Moolenbroek.Nm 328*340f5e56SDavid van Moolenbroekuses 329*340f5e56SDavid van Moolenbroek.Xr inetd 8 330*340f5e56SDavid van Moolenbroekby default to process incoming TCP connections for HTTP requests 331*340f5e56SDavid van Moolenbroek(but see the 332*340f5e56SDavid van Moolenbroek.Fl b 333*340f5e56SDavid van Moolenbroekoption), 334*340f5e56SDavid van Moolenbroek.Nm 335*340f5e56SDavid van Moolenbroekhas little internal networking knowledge. 336*340f5e56SDavid van Moolenbroek(Indeed, you can run it on the command line with little change of functionality.) 337*340f5e56SDavid van MoolenbroekA typical 338*340f5e56SDavid van Moolenbroek.Xr inetd.conf 5 339*340f5e56SDavid van Moolenbroekentry would be: 340*340f5e56SDavid van Moolenbroek.Bd -literal 341*340f5e56SDavid van Moolenbroekhttp stream tcp nowait:600 _httpd /usr/libexec/httpd httpd /var/www 342*340f5e56SDavid van Moolenbroekhttp stream tcp6 nowait:600 _httpd /usr/libexec/httpd httpd /var/www 343*340f5e56SDavid van Moolenbroek.Ed 344*340f5e56SDavid van Moolenbroek.Pp 345*340f5e56SDavid van MoolenbroekThis would serve web pages from 346*340f5e56SDavid van Moolenbroek.Pa /var/www 347*340f5e56SDavid van Moolenbroekon both IPv4 and IPv6 ports. 348*340f5e56SDavid van MoolenbroekThe 349*340f5e56SDavid van Moolenbroek.Em :600 350*340f5e56SDavid van Moolenbroekchanges the 351*340f5e56SDavid van Moolenbroekrequests per minute to 600, up from the 352*340f5e56SDavid van Moolenbroek.Xr inetd 8 353*340f5e56SDavid van Moolenbroekdefault of 40. 354*340f5e56SDavid van Moolenbroek.Pp 355*340f5e56SDavid van MoolenbroekUsing the 356*340f5e56SDavid van Moolenbroek.Nx 357*340f5e56SDavid van Moolenbroek.Xr inetd 8 , 358*340f5e56SDavid van Moolenbroekyou can provide multiple IP-address based HTTP servers by having multiple 359*340f5e56SDavid van Moolenbroeklistening ports with different configurations. 360*340f5e56SDavid van Moolenbroek.Ss NOTES 361*340f5e56SDavid van MoolenbroekThis server supports the 362*340f5e56SDavid van Moolenbroek.Em HTTP/0.9 , 363*340f5e56SDavid van Moolenbroek.Em HTTP/1.0 , 364*340f5e56SDavid van Moolenbroekand 365*340f5e56SDavid van Moolenbroek.Em HTTP/1.1 366*340f5e56SDavid van Moolenbroekstandards. 367*340f5e56SDavid van MoolenbroekSupport for these protocols is very minimal and many optional features are 368*340f5e56SDavid van Moolenbroeknot supported. 369*340f5e56SDavid van Moolenbroek.Pp 370*340f5e56SDavid van Moolenbroek.Nm 371*340f5e56SDavid van Moolenbroekcan be compiled without 372*340f5e56SDavid van MoolenbroekCGI support (NO_CGIBIN_SUPPORT), 373*340f5e56SDavid van Moolenbroekuser transformations (NO_USER_SUPPORT), 374*340f5e56SDavid van Moolenbroekdirectory index support (NO_DIRINDEX_SUPPORT), 375*340f5e56SDavid van Moolenbroekdaemon mode support (NO_DAEMON_MODE), 376*340f5e56SDavid van Moolenbroekdynamic MIME content (NO_DYNAMIC_CONTENT), 377*340f5e56SDavid van MoolenbroekLua suport (NO_LUA_SUPPORT), 378*340f5e56SDavid van Moolenbroekand SSL support (NO_SSL_SUPPORT) 379*340f5e56SDavid van Moolenbroekby defining the listed macros when building 380*340f5e56SDavid van Moolenbroek.Nm . 381*340f5e56SDavid van Moolenbroek.Ss HTTP BASIC AUTHORISATION 382*340f5e56SDavid van Moolenbroek.Nm 383*340f5e56SDavid van Moolenbroekhas support for HTTP Basic Authorisation. 384*340f5e56SDavid van MoolenbroekIf a file named 385*340f5e56SDavid van Moolenbroek.Pa .htpasswd 386*340f5e56SDavid van Moolenbroekexists in the directory of the current request, 387*340f5e56SDavid van Moolenbroek.Nm 388*340f5e56SDavid van Moolenbroekwill restrict access to documents in that directory 389*340f5e56SDavid van Moolenbroekusing the RFC 2617 HTTP 390*340f5e56SDavid van Moolenbroek.Dq Basic 391*340f5e56SDavid van Moolenbroekauthentication scheme. 392*340f5e56SDavid van Moolenbroek.Pp 393*340f5e56SDavid van MoolenbroekNote: 394*340f5e56SDavid van MoolenbroekThis does not recursively protect any sub-directories. 395*340f5e56SDavid van Moolenbroek.Pp 396*340f5e56SDavid van MoolenbroekThe 397*340f5e56SDavid van Moolenbroek.Pa .htpasswd 398*340f5e56SDavid van Moolenbroekfile contains lines delimited with a colon containing 399*340f5e56SDavid van Moolenbroekusernames and passwords hashed with 400*340f5e56SDavid van Moolenbroek.Xr crypt 3 , 401*340f5e56SDavid van Moolenbroekfor example: 402*340f5e56SDavid van Moolenbroek.Bd -literal 403*340f5e56SDavid van Moolenbroekheather:$1$pZWI4tH/$DzDPl63i6VvVRv2lJNV7k1 404*340f5e56SDavid van Moolenbroekjeremy:A.xewbx2DpQ8I 405*340f5e56SDavid van Moolenbroek.Ed 406*340f5e56SDavid van Moolenbroek.Pp 407*340f5e56SDavid van MoolenbroekOn 408*340f5e56SDavid van Moolenbroek.Nx , 409*340f5e56SDavid van Moolenbroekthe 410*340f5e56SDavid van Moolenbroek.Xr pwhash 1 411*340f5e56SDavid van Moolenbroekutility may be used to generate hashed passwords. 412*340f5e56SDavid van Moolenbroek.Pp 413*340f5e56SDavid van MoolenbroekWhile 414*340f5e56SDavid van Moolenbroek.Nm 415*340f5e56SDavid van Moolenbroekdistributed with 416*340f5e56SDavid van Moolenbroek.Nx 417*340f5e56SDavid van Moolenbroekhas support for HTTP Basic Authorisation enabled by default, 418*340f5e56SDavid van Moolenbroekin the portable distribution it is excluded. 419*340f5e56SDavid van MoolenbroekCompile 420*340f5e56SDavid van Moolenbroek.Nm 421*340f5e56SDavid van Moolenbroekwith 422*340f5e56SDavid van Moolenbroek.Dq -DDO_HTPASSWD 423*340f5e56SDavid van Moolenbroekon the compiler command line to enable this support. 424*340f5e56SDavid van MoolenbroekIt may require linking with the crypt library, using 425*340f5e56SDavid van Moolenbroek.Dq -lcrypt . 426*340f5e56SDavid van Moolenbroek.Ss SSL SUPPORT 427*340f5e56SDavid van Moolenbroek.Nm 428*340f5e56SDavid van Moolenbroekhas support for SSLv2, SSLv3, and TLSv1 protocols that is included by 429*340f5e56SDavid van Moolenbroekdefault. 430*340f5e56SDavid van MoolenbroekIt requires linking with the crypto and ssl library, using 431*340f5e56SDavid van Moolenbroek.Dq -lcrypto -lssl . 432*340f5e56SDavid van MoolenbroekTo disable SSL SUPPORT compile 433*340f5e56SDavid van Moolenbroek.Nm 434*340f5e56SDavid van Moolenbroekwith 435*340f5e56SDavid van Moolenbroek.Dq -DNO_SSL_SUPPORT 436*340f5e56SDavid van Moolenbroekon the compiler command line. 437*340f5e56SDavid van Moolenbroek.Ss COMPRESSION 438*340f5e56SDavid van Moolenbroek.Nm 439*340f5e56SDavid van Moolenbroeksupports a very basic form compression. 440*340f5e56SDavid van Moolenbroek.Nm 441*340f5e56SDavid van Moolenbroekwill serve the requested file postpended with 442*340f5e56SDavid van Moolenbroek.Dq Pa .gz 443*340f5e56SDavid van Moolenbroekif it exists, it is readable, the client requested gzip compression, and 444*340f5e56SDavid van Moolenbroekthe client did not make a ranged request. 445*340f5e56SDavid van Moolenbroek.Sh FILES 446*340f5e56SDavid van Moolenbroek.Nm 447*340f5e56SDavid van Moolenbroeklooks for a couple of special files in directories that allow certain features 448*340f5e56SDavid van Moolenbroekto be provided on a per-directory basis. 449*340f5e56SDavid van MoolenbroekIn addition to the 450*340f5e56SDavid van Moolenbroek.Pa .htpasswd 451*340f5e56SDavid van Moolenbroekused by HTTP basic authorisation, 452*340f5e56SDavid van Moolenbroekif a 453*340f5e56SDavid van Moolenbroek.Pa .bzdirect 454*340f5e56SDavid van Moolenbroekfile is found (contents are irrelevant) 455*340f5e56SDavid van Moolenbroek.Nm 456*340f5e56SDavid van Moolenbroekwill allow direct access even with the 457*340f5e56SDavid van Moolenbroek.Fl r 458*340f5e56SDavid van Moolenbroekoption. 459*340f5e56SDavid van MoolenbroekIf a 460*340f5e56SDavid van Moolenbroek.Pa .bzredirect 461*340f5e56SDavid van Moolenbroeksymbolic link is found, 462*340f5e56SDavid van Moolenbroek.Nm 463*340f5e56SDavid van Moolenbroekwill perform a smart redirect to the target of this symlink. 464*340f5e56SDavid van MoolenbroekThe target is assumed to live on the same server. 465*340f5e56SDavid van MoolenbroekIf a 466*340f5e56SDavid van Moolenbroek.Pa .bzabsredirect 467*340f5e56SDavid van Moolenbroeksymbolic link is found, 468*340f5e56SDavid van Moolenbroek.Nm 469*340f5e56SDavid van Moolenbroekwill redirect to the absolute url pointed to by this symlink. 470*340f5e56SDavid van MoolenbroekThis is useful to redirect to different servers. 471*340f5e56SDavid van Moolenbroek.Sh EXAMPLES 472*340f5e56SDavid van MoolenbroekTo configure set of virtual hosts, one would use an 473*340f5e56SDavid van Moolenbroek.Xr inetd.conf 5 474*340f5e56SDavid van Moolenbroekentry like: 475*340f5e56SDavid van Moolenbroek.Bd -literal 476*340f5e56SDavid van Moolenbroekhttp stream tcp nowait:600 _httpd /usr/libexec/httpd httpd -v /var/vroot /var/www 477*340f5e56SDavid van Moolenbroek.Ed 478*340f5e56SDavid van Moolenbroek.Pp 479*340f5e56SDavid van Moolenbroekand inside 480*340f5e56SDavid van Moolenbroek.Pa /var/vroot 481*340f5e56SDavid van Moolenbroekcreate a directory (or a symlink to a directory) with the same name as 482*340f5e56SDavid van Moolenbroekthe virtual host, for each virtual host. 483*340f5e56SDavid van MoolenbroekLookups for these names are done in a case-insensitive manner, and may 484*340f5e56SDavid van Moolenbroekinclude the port number part of the request, allowing for distinct 485*340f5e56SDavid van Moolenbroekvirtual hosts on the same name. 486*340f5e56SDavid van Moolenbroek.Pp 487*340f5e56SDavid van MoolenbroekTo use 488*340f5e56SDavid van Moolenbroek.Nm 489*340f5e56SDavid van Moolenbroekwith PHP, one must use the 490*340f5e56SDavid van Moolenbroek.Fl C 491*340f5e56SDavid van Moolenbroekoption to specify a CGI handler for a particular file type. 492*340f5e56SDavid van MoolenbroekTypically this will be like: 493*340f5e56SDavid van Moolenbroek.Bd -literal 494*340f5e56SDavid van Moolenbroekhttpd -C .php /usr/pkg/bin/php /var/www 495*340f5e56SDavid van Moolenbroek.Ed 496*340f5e56SDavid van Moolenbroek.Sh SEE ALSO 497*340f5e56SDavid van Moolenbroek.Xr inetd.conf 5 , 498*340f5e56SDavid van Moolenbroek.Xr inetd 8 499*340f5e56SDavid van Moolenbroek.Sh HISTORY 500*340f5e56SDavid van Moolenbroek.Nm 501*340f5e56SDavid van Moolenbroekwas first written in perl, based on another perl http server 502*340f5e56SDavid van Moolenbroekcalled 503*340f5e56SDavid van Moolenbroek.Dq tinyhttpd . 504*340f5e56SDavid van MoolenbroekIt was then rewritten from scratch in perl, and then once again in C. 505*340f5e56SDavid van MoolenbroekFrom 506*340f5e56SDavid van Moolenbroek.Dq bozohttpd 507*340f5e56SDavid van Moolenbroekversion 20060517, it has been integrated into 508*340f5e56SDavid van Moolenbroek.Nx . 509*340f5e56SDavid van MoolenbroekThe focus has always been simplicity and security, with minimal features 510*340f5e56SDavid van Moolenbroekand regular code audits. 511*340f5e56SDavid van MoolenbroekThis manual documents 512*340f5e56SDavid van Moolenbroek.Nm 513*340f5e56SDavid van Moolenbroekversion 20150501. 514*340f5e56SDavid van Moolenbroek.Sh AUTHORS 515*340f5e56SDavid van Moolenbroek.An -nosplit 516*340f5e56SDavid van Moolenbroek.Nm 517*340f5e56SDavid van Moolenbroekwas written by 518*340f5e56SDavid van Moolenbroek.An Matthew R. Green 519*340f5e56SDavid van Moolenbroek.Aq Mt mrg@eterna.com.au . 520*340f5e56SDavid van Moolenbroek.Pp 521*340f5e56SDavid van MoolenbroekThe large list of contributors includes: 522*340f5e56SDavid van Moolenbroek.Bl -dash 523*340f5e56SDavid van Moolenbroek.It 524*340f5e56SDavid van Moolenbroek.An Marc Balmer 525*340f5e56SDavid van Moolenbroek.Aq Mt mbalmer@NetBSD.org 526*340f5e56SDavid van Moolenbroekadded Lua support for dynamic content creation 527*340f5e56SDavid van Moolenbroek.It 528*340f5e56SDavid van Moolenbroek.An Christoph Badura 529*340f5e56SDavid van Moolenbroek.Aq Mt bad@bsd.de 530*340f5e56SDavid van Moolenbroekprovided Range: header support 531*340f5e56SDavid van Moolenbroek.It 532*340f5e56SDavid van Moolenbroek.An Sean Boudreau 533*340f5e56SDavid van Moolenbroek.Aq Mt seanb@NetBSD.org 534*340f5e56SDavid van Moolenbroekprovided a security fix for virtual hosting 535*340f5e56SDavid van Moolenbroek.It 536*340f5e56SDavid van Moolenbroek.An Julian Coleman 537*340f5e56SDavid van Moolenbroek.Aq Mt jdc@coris.org.uk 538*340f5e56SDavid van Moolenbroekprovided an IPv6 bugfix 539*340f5e56SDavid van Moolenbroek.It 540*340f5e56SDavid van Moolenbroek.An Chuck Cranor 541*340f5e56SDavid van Moolenbroek.Aq Mt chuck@research.att.com 542*340f5e56SDavid van Moolenbroekprovided cgi-bin support fixes, and more 543*340f5e56SDavid van Moolenbroek.It 544*340f5e56SDavid van Moolenbroek.An Alistair G. Crooks 545*340f5e56SDavid van Moolenbroek.Aq Mt agc@NetBSD.org 546*340f5e56SDavid van Moolenbroekcleaned up many internal interfaces, made 547*340f5e56SDavid van Moolenbroek.Nm 548*340f5e56SDavid van Moolenbroeklinkable as a library and provided the Lua binding. 549*340f5e56SDavid van Moolenbroek.It 550*340f5e56SDavid van Moolenbroek.An DEGROOTE Arnaud 551*340f5e56SDavid van Moolenbroek.Aq Mt degroote@NetBSD.org 552*340f5e56SDavid van Moolenbroekprovided a fix for daemon mode 553*340f5e56SDavid van Moolenbroek.It 554*340f5e56SDavid van Moolenbroek.An Andrew Doran 555*340f5e56SDavid van Moolenbroek.Aq Mt ad@NetBSD.org 556*340f5e56SDavid van Moolenbroekprovided directory indexing support 557*340f5e56SDavid van Moolenbroek.It 558*340f5e56SDavid van Moolenbroek.An Per Ekman 559*340f5e56SDavid van Moolenbroek.Aq Mt pek@pdc.kth.se 560*340f5e56SDavid van Moolenbroekprovided a fix for a minor (non-security) buffer overflow condition 561*340f5e56SDavid van Moolenbroek.It 562*340f5e56SDavid van Moolenbroek.An Roland Dowdeswell 563*340f5e56SDavid van Moolenbroek.Aq Mt elric@NetBSD.org 564*340f5e56SDavid van Moolenbroekadded support for serving gzipped files and better SSL handling 565*340f5e56SDavid van Moolenbroek.It 566*340f5e56SDavid van Moolenbroek.An Jun-ichiro itojun Hagino, KAME 567*340f5e56SDavid van Moolenbroek.Aq Mt itojun@iijlab.net 568*340f5e56SDavid van Moolenbroekprovided initial IPv6 support 569*340f5e56SDavid van Moolenbroek.It 570*340f5e56SDavid van Moolenbroek.An Martin Husemann 571*340f5e56SDavid van Moolenbroek.Aq Mt martin@NetBSD.org 572*340f5e56SDavid van Moolenbroekprovided .bzabsredirect support, and fixed various redirection issues 573*340f5e56SDavid van Moolenbroek.It 574*340f5e56SDavid van Moolenbroek.An Arto Huusko 575*340f5e56SDavid van Moolenbroek.Aq Mt arto.huusko@pp2.inet.fi 576*340f5e56SDavid van Moolenbroekprovided fixes cgi-bin 577*340f5e56SDavid van Moolenbroek.It 578*340f5e56SDavid van Moolenbroek.An Roland Illig 579*340f5e56SDavid van Moolenbroek.Aq Mt roland.illig@gmx.de 580*340f5e56SDavid van Moolenbroekprovided some off-by-one fixes 581*340f5e56SDavid van Moolenbroek.It 582*340f5e56SDavid van Moolenbroek.An Zak Johnson 583*340f5e56SDavid van Moolenbroek.Aq Mt zakj@nox.cx 584*340f5e56SDavid van Moolenbroekprovided cgi-bin enhancements 585*340f5e56SDavid van Moolenbroek.It 586*340f5e56SDavid van Moolenbroek.An Nicolas Jombart 587*340f5e56SDavid van Moolenbroek.Aq Mt ecu@ipv42.net 588*340f5e56SDavid van Moolenbroekprovided fixes for HTTP basic authorisation support 589*340f5e56SDavid van Moolenbroek.It 590*340f5e56SDavid van Moolenbroek.An Antti Kantee 591*340f5e56SDavid van Moolenbroek.Aq Mt pooka@NetBSD.org 592*340f5e56SDavid van Moolenbroekprovided fixes for HTTP basic authorisation support 593*340f5e56SDavid van Moolenbroek.It 594*340f5e56SDavid van Moolenbroek.An Thomas Klausner 595*340f5e56SDavid van Moolenbroek.Aq Mt wiz@NetBSD.org 596*340f5e56SDavid van Moolenbroekprovided many fixes and enhancements for the man page 597*340f5e56SDavid van Moolenbroek.It 598*340f5e56SDavid van Moolenbroek.An Mateusz Kocielski 599*340f5e56SDavid van Moolenbroek.Aq Mt shm@NetBSD.org 600*340f5e56SDavid van Moolenbroekfixed memory leaks, various issues with userdir support, 601*340f5e56SDavid van Moolenbroekinformation disclosure issues, added support for using CGI handlers 602*340f5e56SDavid van Moolenbroekwith directory indexing and provided various other fixes. 603*340f5e56SDavid van Moolenbroek.It 604*340f5e56SDavid van Moolenbroek.An Arnaud Lacombe 605*340f5e56SDavid van Moolenbroek.Aq Mt alc@NetBSD.org 606*340f5e56SDavid van Moolenbroekprovided some clean up for memory leaks 607*340f5e56SDavid van Moolenbroek.It 608*340f5e56SDavid van Moolenbroek.An Johnny Lam 609*340f5e56SDavid van Moolenbroek.Aq Mt jlam@NetBSD.org 610*340f5e56SDavid van Moolenbroekprovided man page fixes 611*340f5e56SDavid van Moolenbroek.It 612*340f5e56SDavid van Moolenbroek.An Julio Merino 613*340f5e56SDavid van Moolenbroek.Aq Mt jmmv@NetBSD.org 614*340f5e56SDavid van MoolenbroekAdded the 615*340f5e56SDavid van Moolenbroek.Fl P 616*340f5e56SDavid van Moolenbroekoption. 617*340f5e56SDavid van Moolenbroek.It 618*340f5e56SDavid van Moolenbroek.An Luke Mewburn 619*340f5e56SDavid van Moolenbroek.Aq Mt lukem@NetBSD.org 620*340f5e56SDavid van Moolenbroekprovided many various fixes, including cgi-bin fixes and enhancements, 621*340f5e56SDavid van MoolenbroekHTTP basic authorisation support and much code clean up 622*340f5e56SDavid van Moolenbroek.It 623*340f5e56SDavid van Moolenbroek.An Rajeev V. Pillai 624*340f5e56SDavid van Moolenbroek.Aq Mt rajeev_v_pillai@yahoo.com 625*340f5e56SDavid van Moolenbroekprovided several fixes for virtual hosting 626*340f5e56SDavid van Moolenbroek.It 627*340f5e56SDavid van Moolenbroek.An Jeremy C. Reed 628*340f5e56SDavid van Moolenbroek.Aq Mt reed@NetBSD.org 629*340f5e56SDavid van Moolenbroekprovided several clean up fixes, and man page updates 630*340f5e56SDavid van Moolenbroek.It 631*340f5e56SDavid van Moolenbroek.An Scott Reynolds 632*340f5e56SDavid van Moolenbroek.Aq Mt scottr@NetBSD.org 633*340f5e56SDavid van Moolenbroekprovided various fixes 634*340f5e56SDavid van Moolenbroek.It 635*340f5e56SDavid van Moolenbroek.An Tyler Retzlaff 636*340f5e56SDavid van Moolenbroek.Aq Mt rtr@eterna.com.au 637*340f5e56SDavid van Moolenbroekprovided SSL support, cgi-bin fixes and much other random other stuff 638*340f5e56SDavid van Moolenbroek.It 639*340f5e56SDavid van Moolenbroek.An rudolf 640*340f5e56SDavid van Moolenbroek.Aq Mt netbsd@eq.cz 641*340f5e56SDavid van Moolenbroekprovided minor compile fixes and a CGI content map fix 642*340f5e56SDavid van Moolenbroek.It 643*340f5e56SDavid van Moolenbroek.An Steve Rumble 644*340f5e56SDavid van Moolenbroek.Aq Mt rumble@ephemeral.org 645*340f5e56SDavid van Moolenbroekprovided the 646*340f5e56SDavid van Moolenbroek.Fl V 647*340f5e56SDavid van Moolenbroekoption. 648*340f5e56SDavid van Moolenbroek.It 649*340f5e56SDavid van Moolenbroek.An Thor Lancelot Simon 650*340f5e56SDavid van Moolenbroek.Aq Mt tls@NetBSD.org 651*340f5e56SDavid van Moolenbroekenhanced cgi-bin support. 652*340f5e56SDavid van Moolenbroek.It 653*340f5e56SDavid van Moolenbroek.An Joerg Sonnenberger 654*340f5e56SDavid van Moolenbroek.Aq Mt joerg@NetBSD.org 655*340f5e56SDavid van Moolenbroekimplemented If-Modified-Since support 656*340f5e56SDavid van Moolenbroek.It 657*340f5e56SDavid van Moolenbroek.An ISIHARA Takanori 658*340f5e56SDavid van Moolenbroek.Aq Mt ishit@oak.dti.ne.jp 659*340f5e56SDavid van Moolenbroekprovided a man page fix 660*340f5e56SDavid van Moolenbroek.It 661*340f5e56SDavid van Moolenbroek.An Holger Weiss 662*340f5e56SDavid van Moolenbroek.Aq Mt holger@CIS.FU-Berlin.DE 663*340f5e56SDavid van Moolenbroekprovided http authorisation fixes 664*340f5e56SDavid van Moolenbroek.It 665*340f5e56SDavid van Moolenbroek.Aq Mt xs@kittenz.org 666*340f5e56SDavid van Moolenbroekprovided chroot and change-to-user support, and other various fixes 667*340f5e56SDavid van Moolenbroek.It 668*340f5e56SDavid van MoolenbroekCoyote Point provided various CGI fixes. 669*340f5e56SDavid van Moolenbroek.It 670*340f5e56SDavid van Moolenbroek.An Julio Merino 671*340f5e56SDavid van Moolenbroekadded pidfile support and provided some man page fixes. 672*340f5e56SDavid van Moolenbroek.El 673*340f5e56SDavid van Moolenbroek.Pp 674*340f5e56SDavid van MoolenbroekThere are probably others I have forgotten (let me know if you care) 675*340f5e56SDavid van Moolenbroek.Pp 676*340f5e56SDavid van MoolenbroekPlease send all updates to 677*340f5e56SDavid van Moolenbroek.Nm 678*340f5e56SDavid van Moolenbroekto 679*340f5e56SDavid van Moolenbroek.Aq Mt mrg@eterna.com.au 680*340f5e56SDavid van Moolenbroekfor inclusion in future releases. 681*340f5e56SDavid van Moolenbroek.Sh BUGS 682*340f5e56SDavid van Moolenbroek.Nm 683*340f5e56SDavid van Moolenbroekdoes not handle HTTP/1.1 chunked input from the client yet. 684