xref: /minix3/libexec/httpd/bozohttpd.8 (revision 340f5e56603e4275faeb89a9aacace41ba22d661)
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