Annotation of src/libexec/httpd/bozohttpd.8, Revision 1.65.4.1
1.65.4.1! martin 1: .\" $NetBSD: bozohttpd.8,v 1.74 2018/11/23 08:11:20 mrg Exp $
1.3 mrg 2: .\"
1.32 mrg 3: .\" $eterna: bozohttpd.8,v 1.101 2011/11/18 01:25:11 mrg Exp $
1.1 tls 4: .\"
1.65.4.1! martin 5: .\" Copyright (c) 1997-2018 Matthew R. Green
1.1 tls 6: .\" All rights reserved.
7: .\"
8: .\" Redistribution and use in source and binary forms, with or without
9: .\" modification, are permitted provided that the following conditions
10: .\" are met:
11: .\" 1. Redistributions of source code must retain the above copyright
12: .\" notice, this list of conditions and the following disclaimer.
13: .\" 2. Redistributions in binary form must reproduce the above copyright
14: .\" notice, this list of conditions and the following disclaimer in the
15: .\" documentation and/or other materials provided with the distribution.
16: .\"
17: .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18: .\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19: .\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20: .\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21: .\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
22: .\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23: .\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
24: .\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
25: .\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26: .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27: .\" SUCH DAMAGE.
28: .\"
1.65.4.1! martin 29: .Dd November 19, 2018
1.50 mrg 30: .Dt BOZOHTTPD 8
1.9 joerg 31: .Os
1.1 tls 32: .Sh NAME
1.50 mrg 33: .Nm bozohttpd
1.1 tls 34: .Nd hyper text transfer protocol version 1.1 daemon
35: .Sh SYNOPSIS
36: .Nm
1.60 agc 37: .Op Fl EGHVXefhnsu
1.1 tls 38: .Op Fl C Ar suffix cgihandler
1.41 wiz 39: .Op Fl I Ar port
1.39 mbalmer 40: .Op Fl L Ar prefix script
1.1 tls 41: .Op Fl M Ar suffix type encoding encoding11
1.26 jmmv 42: .Op Fl P Ar pidfile
1.32 mrg 43: .Op Fl S Ar server_software
1.65.4.1! martin 44: .Op Fl T Ar type timeout
1.55 kamil 45: .Op Fl U Ar username
1.32 mrg 46: .Op Fl Z Ar cert privkey
47: .Op Fl c Ar cgibin
48: .Op Fl i Ar address
1.15 wiz 49: .Op Fl p Ar pubdir
1.6 jnemeth 50: .Op Fl t Ar chrootdir
1.1 tls 51: .Op Fl v Ar virtualroot
52: .Op Fl x Ar index
1.57 christos 53: .Op Fl z Ar ciphers
1.1 tls 54: .Ar slashdir
55: .Op Ar myname
56: .Sh DESCRIPTION
57: The
58: .Nm
59: program reads a
60: .Em HTTP
61: request from the standard input, and sends a reply to the standard output.
62: Besides ~user translation and virtual hosting support (see below), all file
63: requests are from
64: .Ar slashdir
65: directory.
66: The server uses
67: .Ar myname
68: as its name, which defaults to the local hostname, obtained from
69: .Xr gethostname 3
70: (but see the
71: .Fl v
72: option for virtual hosting.)
73: .Nm
1.21 mrg 74: writes logs to
1.22 wiz 75: .Xr syslog 3
76: using the ftp facility (but see the
1.21 mrg 77: .Fl s
78: option for testing.)
79: .Nm
1.1 tls 80: is designed to be small, simple and relatively featureless,
81: hopefully increasing its security.
1.7 wiz 82: .Ss OPTIONS
1.1 tls 83: The following options are available:
84: .Bl -tag -width xxxcgibin
85: .It Fl b
1.28 jmmv 86: Enables daemon mode, where
1.1 tls 87: .Nm
88: detaches from the current terminal, running in the background and
89: servicing HTTP requests.
90: .It Fl C Ar suffix cgihandler
1.28 jmmv 91: Adds a new CGI handler program for a particular file type.
1.1 tls 92: The
93: .Ar suffix
94: should be any normal file suffix, and the
95: .Ar cgihandler
96: should be a full path to an interpreter.
97: This option is the only way to enable CGI programs that exist
98: outside of the cgibin directory to be executed.
99: Multiple
100: .Fl C
101: options may be passed.
102: .It Fl c Ar cgibin
1.28 jmmv 103: Enables the CGI/1.1 interface.
1.1 tls 104: The
105: .Ar cgibin
106: directory is expected to contain the CGI programs to be used.
107: .Nm
108: looks for URL's in the form of
1.65.4.1! martin 109: .Em /cgi-bin/<scriptname>
1.1 tls 110: where
1.14 mrg 111: .Aq scriptname
1.1 tls 112: is a valid CGI program in the
113: .Ar cgibin
114: directory.
115: In other words, all CGI URL's must begin with
116: .Em \%/cgi-bin/ .
1.54 shm 117: Note that the CGI/1.1 interface is available with
1.1 tls 118: .Em ~user
1.54 shm 119: translation using
120: .Fl E
121: switch.
1.1 tls 122: .It Fl e
1.28 jmmv 123: Causes
1.1 tls 124: .Nm
125: to not clear the environment when used with either the
126: .Fl t
127: or
128: .Fl U
129: options.
1.14 mrg 130: .It Fl f
1.28 jmmv 131: Stops the
1.14 mrg 132: .Fl b
133: flag from
134: .Nm
135: detaching from the tty and going into the background.
1.60 agc 136: .It Fl G
137: Get the
138: .Nm
139: version string, print it on standard output, and exit.
1.1 tls 140: .It Fl H
1.28 jmmv 141: Causes directory index mode to hide files and directories
1.1 tls 142: that start with a period, except for
143: .Pa .. .
144: Also see
145: .Fl X .
146: .It Fl I Ar port
1.28 jmmv 147: Causes
1.30 mrg 148: .Nm
149: to use
1.1 tls 150: .Ar port
1.30 mrg 151: instead of the default
1.1 tls 152: .Dq http
153: port.
1.30 mrg 154: When used with the
1.1 tls 155: .Fl b
1.30 mrg 156: option, it changes the bound port.
157: Otherwise it forces redirections to use this port instead of the
158: value obtained via
159: .Xr getsockname 2 .
1.28 jmmv 160: .It Fl i Ar address
161: Causes
1.1 tls 162: .Ar address
1.35 pgoyette 163: to be used as the address to bind daemon mode.
1.1 tls 164: If otherwise unspecified, the address used to bind is derived from the
165: .Ar myname ,
166: which defaults to the name returned by
167: .Xr gethostname 3 .
1.13 mrg 168: Only the last
169: .Fl i
170: option is used.
1.28 jmmv 171: This option is only valid with the
172: .Fl b
173: option.
1.41 wiz 174: .It Fl L Ar prefix script
175: Adds a new Lua script for a particular prefix.
176: The
177: .Ar prefix
178: should be an arbitrary text, and the
179: .Ar script
180: should be a full path to a Lua script.
181: Multiple
182: .Fl L
183: options may be passed.
184: A separate Lua state is created for each prefix.
185: The Lua script can register callbacks using the
186: httpd.register_handler('<name>', function) Lua function,
187: which will trigger the execution of the Lua function
188: .Em function
189: when a URL in the form
190: .Em http://<hostname>/<prefix>/<name>
191: is being accessed.
192: The function is passed three tables as arguments, the server
193: environment, the request headers, and the decoded query string
1.63 abhinav 194: plus any data that was sent as application/x-www-form-urlencoded.
1.1 tls 195: .It Fl M Ar suffix type encoding encoding11
1.28 jmmv 196: Adds a new entry to the table that converts file suffixes to
1.1 tls 197: content type and encoding.
198: This option takes four additional arguments containing
199: the file prefix, its
200: .Dq Content-Type ,
1.7 wiz 201: .Dq Content-Encoding ,
1.1 tls 202: and
203: .Dq Content-Encoding
204: for HTTP/1.1 connections, respectively.
1.7 wiz 205: If any of these are a single dash
206: .Pq Dq - ,
207: the empty string is used instead.
1.1 tls 208: Multiple
209: .Fl M
210: options may be passed.
211: .It Fl n
1.28 jmmv 212: Stops
1.1 tls 213: .Nm
214: from doing IP address to name resolution of hosts for setting the
215: .Ev REMOTE_HOST
216: variable before running a CGI program.
217: This option has no effect without the
218: .Fl c
219: option.
1.26 jmmv 220: .It Fl P Ar pidfile
1.28 jmmv 221: Causes
1.26 jmmv 222: .Nm
1.65.4.1! martin 223: to create a PID file in
1.26 jmmv 224: .Ar pidfile
225: when run in daemon mode with the
226: .Fl b
227: option.
1.1 tls 228: .It Fl p Ar pubdir
1.28 jmmv 229: Changes the default user directory for
1.1 tls 230: .Em /~user/
231: translations from
232: .Dq public_html
233: to
234: .Ar pubdir .
235: .It Fl S Ar server_software
1.28 jmmv 236: Sets the internal server version to
1.1 tls 237: .Ar server_software .
238: .It Fl s
1.28 jmmv 239: Forces logging to be set to stderr always.
1.65.4.1! martin 240: .It Fl T Ar type timeout
! 241: Set the timeout for
! 242: .Ar type
! 243: to
! 244: .Ar timeout .
! 245: The valid values of
! 246: .Ar type
! 247: are
! 248: .Dq initial timeout ,
! 249: .Dq header timeout ,
! 250: and
! 251: .Dq request timeout .
! 252: The default values are 30 seconds, 10 seconds and 600 seconds, respectively.
1.1 tls 253: .It Fl t Ar chrootdir
1.28 jmmv 254: Makes
1.1 tls 255: .Nm
1.28 jmmv 256: chroot to the specified directory
1.1 tls 257: before answering requests.
258: Every other path should be specified relative
259: to the new root, if this option is used.
260: Note that the current environment
261: is normally replaced with an empty environment with this option, unless the
262: .Fl e
263: option is also used.
264: .It Fl U Ar username
1.28 jmmv 265: Causes
1.1 tls 266: .Nm
267: to switch to the user and the groups of
268: .Ar username
269: after initialization.
270: This option, like
271: .Fl t
272: above, causes
273: .Nm
274: to clear the environment unless the
275: .Fl e
276: option is given.
277: .It Fl u
1.28 jmmv 278: Enables the transformation of Uniform Resource Locators of
1.1 tls 279: the form
280: .Em /~user/
1.16 mbalmer 281: into the directory
1.1 tls 282: .Pa ~user/public_html
283: (but see the
284: .Fl p
285: option above).
1.54 shm 286: .It Fl E
287: Enables CGI/1.1 interface for
288: .Em ~user
289: translation.
290: Note that enabling this support implies that users can run
291: commands as web server user, this may have security implications.
1.1 tls 292: .It Fl V
1.61 mrg 293: Sets the backup virtual host directory to the
294: .Ar slashdir
295: argument.
1.1 tls 296: If no directory exists in
297: .Ar virtualroot
298: for the request, then
299: .Ar slashdir
300: will be used.
1.65.4.1! martin 301: The default behavior is to return 404 (Not Found.)
1.1 tls 302: .It Fl v Ar virtualroot
1.28 jmmv 303: Enables virtual hosting support.
1.1 tls 304: Directories in
305: .Ar virtualroot
306: will be searched for a matching virtual host name, when parsing
307: the HTML request.
308: If a matching name is found, it will be used
309: as both the server's real name,
310: .Op Ar myname ,
311: and as the
312: .Ar slashdir .
313: See the
314: .Sx EXAMPLES
315: section for an example of using this option.
316: .It Fl X
1.28 jmmv 317: Enables directory indexing.
1.1 tls 318: A directory index will be generated only when the default file (i.e.
319: .Pa index.html
320: normally) is not present.
321: .It Fl x Ar index
1.28 jmmv 322: Changes the default file read for directories from
1.1 tls 323: .Dq index.html
324: to
325: .Ar index .
1.57 christos 326: .It Fl z Ar ciphers
327: Sets the list of SSL ciphers (see
328: .Xr SSL_CTX_set_cipher_list 3 ) .
1.1 tls 329: .It Fl Z Ar certificate_path privatekey_path
1.28 jmmv 330: Sets the path to the server certificate file and the private key file
1.65.4.1! martin 331: in PEM format.
1.6 jnemeth 332: It also causes
1.4 mrg 333: .Nm
334: to start SSL mode.
1.1 tls 335: .El
336: .Pp
337: Note that in
338: .Nm
339: versions 20031005 and prior that supported the
340: .Fl C
341: and
342: .Fl M
343: options, they took a single space-separated argument that was parsed.
344: since version 20040828, they take multiple options (2 in the case of
345: .Fl C
346: and 4 in the case of
347: .Fl M . )
1.7 wiz 348: .Ss INETD CONFIGURATION
1.1 tls 349: As
350: .Nm
351: uses
352: .Xr inetd 8
353: by default to process incoming TCP connections for HTTP requests
354: (but see the
355: .Fl b
356: option),
357: .Nm
358: has little internal networking knowledge.
1.58 mrg 359: (Indeed, you can run it on the command line with little change of
360: functionality.)
1.1 tls 361: A typical
362: .Xr inetd.conf 5
363: entry would be:
364: .Bd -literal
1.3 mrg 365: http stream tcp nowait:600 _httpd /usr/libexec/httpd httpd /var/www
366: http stream tcp6 nowait:600 _httpd /usr/libexec/httpd httpd /var/www
1.1 tls 367: .Ed
368: .Pp
369: This would serve web pages from
370: .Pa /var/www
371: on both IPv4 and IPv6 ports.
372: The
373: .Em :600
374: changes the
375: requests per minute to 600, up from the
376: .Xr inetd 8
377: default of 40.
378: .Pp
379: Using the
380: .Nx
381: .Xr inetd 8 ,
382: you can provide multiple IP-address based HTTP servers by having multiple
383: listening ports with different configurations.
1.7 wiz 384: .Ss NOTES
1.1 tls 385: This server supports the
386: .Em HTTP/0.9 ,
1.7 wiz 387: .Em HTTP/1.0 ,
1.1 tls 388: and
389: .Em HTTP/1.1
1.4 mrg 390: standards.
391: Support for these protocols is very minimal and many optional features are
392: not supported.
1.1 tls 393: .Pp
394: .Nm
1.43 mrg 395: can be compiled without
396: CGI support (NO_CGIBIN_SUPPORT),
397: user transformations (NO_USER_SUPPORT),
398: directory index support (NO_DIRINDEX_SUPPORT),
399: daemon mode support (NO_DAEMON_MODE),
400: dynamic MIME content (NO_DYNAMIC_CONTENT),
1.64 abhinav 401: Lua support (NO_LUA_SUPPORT),
1.43 mrg 402: and SSL support (NO_SSL_SUPPORT)
403: by defining the listed macros when building
1.1 tls 404: .Nm .
1.65.4.1! martin 405: .Ss HTTP BASIC AUTHORIZATION
1.1 tls 406: .Nm
1.65.4.1! martin 407: has support for HTTP Basic Authorization.
1.3 mrg 408: If a file named
409: .Pa .htpasswd
410: exists in the directory of the current request,
411: .Nm
412: will restrict access to documents in that directory
413: using the RFC 2617 HTTP
414: .Dq Basic
415: authentication scheme.
416: .Pp
417: Note:
418: This does not recursively protect any sub-directories.
419: .Pp
420: The
421: .Pa .htpasswd
422: file contains lines delimited with a colon containing
1.65.4.1! martin 423: user names and passwords hashed with
1.3 mrg 424: .Xr crypt 3 ,
425: for example:
426: .Bd -literal
1.6 jnemeth 427: heather:$1$pZWI4tH/$DzDPl63i6VvVRv2lJNV7k1
1.3 mrg 428: jeremy:A.xewbx2DpQ8I
429: .Ed
430: .Pp
431: On
432: .Nx ,
433: the
434: .Xr pwhash 1
435: utility may be used to generate hashed passwords.
1.4 mrg 436: .Pp
1.6 jnemeth 437: While
1.4 mrg 438: .Nm
439: distributed with
440: .Nx
1.65.4.1! martin 441: has support for HTTP Basic Authorization enabled by default,
1.11 mrg 442: in the portable distribution it is excluded.
1.4 mrg 443: Compile
444: .Nm
445: with
446: .Dq -DDO_HTPASSWD
1.6 jnemeth 447: on the compiler command line to enable this support.
1.14 mrg 448: It may require linking with the crypt library, using
1.4 mrg 449: .Dq -lcrypt .
1.7 wiz 450: .Ss SSL SUPPORT
1.1 tls 451: .Nm
1.57 christos 452: has support for TLSv1.1 and TLSv1.2 protocols that are included by
1.6 jnemeth 453: default.
454: It requires linking with the crypto and ssl library, using
1.1 tls 455: .Dq -lcrypto -lssl .
456: To disable SSL SUPPORT compile
457: .Nm
458: with
459: .Dq -DNO_SSL_SUPPORT
460: on the compiler command line.
1.33 elric 461: .Ss COMPRESSION
462: .Nm
1.63 abhinav 463: supports a very basic form of compression.
1.33 elric 464: .Nm
1.34 wiz 465: will serve the requested file postpended with
466: .Dq Pa .gz
467: if it exists, it is readable, the client requested gzip compression, and
1.33 elric 468: the client did not make a ranged request.
1.8 wiz 469: .Sh FILES
470: .Nm
471: looks for a couple of special files in directories that allow certain features
472: to be provided on a per-directory basis.
473: In addition to the
474: .Pa .htpasswd
1.65.4.1! martin 475: used by HTTP basic authorization,
1.8 wiz 476: if a
477: .Pa .bzdirect
478: file is found (contents are irrelevant)
479: .Nm
480: will allow direct access even with the
481: .Fl r
482: option.
483: If a
484: .Pa .bzredirect
485: symbolic link is found,
486: .Nm
487: will perform a smart redirect to the target of this symlink.
488: The target is assumed to live on the same server.
1.54 shm 489: If target starts with slash then absolute redirection is performed,
490: otherwise it's handled as relative.
1.8 wiz 491: If a
492: .Pa .bzabsredirect
493: symbolic link is found,
494: .Nm
1.65.4.1! martin 495: will redirect to the absolute URL pointed to by this symlink.
1.8 wiz 496: This is useful to redirect to different servers.
1.54 shm 497: Two forms of redirection are supported - symbolic link without schema will use
498: .Em http://
499: as default i.e. link to
500: .Em NetBSD.org
501: will redirect to
502: .Em http://NetBSD.org/
503: Otherwise provided schema will be used i.e. symbolic link to
504: .Em ftp://NetBSD.org/
1.65.4.1! martin 505: will redirect to the provided URL.
! 506: If a
! 507: .Pa .bzremap
! 508: file is found at the root of a (virtual) server, it is expected to contain
! 509: rewrite mappings for URLs.
! 510: .Pp
! 511: These remappings are performed internally in the server before authentication
! 512: happens and can be used to hide implementation details, like the CGI handler
! 513: specific suffix for non cgi scripts in authorized directories.
! 514: .Pp
! 515: The map file consists of lines two paths separated by a colon, where the left
! 516: side needs to exactly match a (sub) path of the request and will be replaced
! 517: by the right side.
! 518: .Pp
! 519: The first match always wins.
! 520: .Pp
! 521: A
! 522: .Pa .bzremap
! 523: file could look like this:
! 524: .Bd -literal
! 525: /nic/update:/auth-dir/updipv4.pl
! 526: .Ed
! 527: .Pp
! 528: The remap file should be short, access to it is slow and needs to happen
! 529: on each request.
! 530: If a request path needs to include a colon
! 531: .Pq Li \&:
! 532: character, it can be escaped
! 533: with a backslash
! 534: .Pq Li \e
! 535: The right hand side of the colon is always used verbatim, no escape sequences
! 536: are interpreted.
1.8 wiz 537: .Sh EXAMPLES
538: To configure set of virtual hosts, one would use an
539: .Xr inetd.conf 5
540: entry like:
541: .Bd -literal
542: http stream tcp nowait:600 _httpd /usr/libexec/httpd httpd -v /var/vroot /var/www
543: .Ed
544: .Pp
545: and inside
546: .Pa /var/vroot
547: create a directory (or a symlink to a directory) with the same name as
548: the virtual host, for each virtual host.
1.45 mrg 549: Lookups for these names are done in a case-insensitive manner, and may
550: include the port number part of the request, allowing for distinct
551: virtual hosts on the same name.
1.8 wiz 552: .Pp
553: To use
554: .Nm
555: with PHP, one must use the
556: .Fl C
557: option to specify a CGI handler for a particular file type.
1.25 reed 558: Typically this will be like:
1.8 wiz 559: .Bd -literal
1.59 mrg 560: httpd -C .php /usr/pkg/bin/php-cgi /var/www
1.8 wiz 561: .Ed
1.65.4.1! martin 562: .Pp
! 563: Note that a plain script interpreter can not be used directly as a cgihandler,
! 564: as there are no command line options passed from
! 565: .Nm
! 566: to avoid security issues.
! 567: .Pp
! 568: If no CGI-aware wrapper exists, a simple shell script like the following
! 569: might do.
! 570: .Pp
! 571: It would be invoked like:
! 572: .Bd -literal
! 573: httpd -C .pl /www-scripts/bin/run.perl /var/www
! 574: .Ed
! 575: and the script could look like:
! 576: .Bd -literal
! 577: #! /bin/sh
! 578:
! 579: if [ -r "$SCRIPT_FILENAME" -a -x "$SCRIPT_FILENAME" ]; then
! 580: exec /usr/pkg/bin/perl "$SCRIPT_FILENAME"
! 581: fi
! 582:
! 583: exit 1
! 584: .Ed
1.1 tls 585: .Sh SEE ALSO
586: .Xr inetd.conf 5 ,
587: .Xr inetd 8
588: .Sh HISTORY
589: .Nm
1.50 mrg 590: was first written in perl, based on another perl http server
1.1 tls 591: called
592: .Dq tinyhttpd .
593: It was then rewritten from scratch in perl, and then once again in C.
1.12 wiz 594: From
1.3 mrg 595: .Dq bozohttpd
1.11 mrg 596: version 20060517, it has been integrated into
597: .Nx .
1.1 tls 598: The focus has always been simplicity and security, with minimal features
599: and regular code audits.
1.4 mrg 600: This manual documents
601: .Nm
1.65.4.1! martin 602: version 20181123.
1.1 tls 603: .Sh AUTHORS
1.41 wiz 604: .An -nosplit
1.1 tls 605: .Nm
1.41 wiz 606: was written by
607: .An Matthew R. Green
608: .Aq Mt mrg@eterna.com.au .
1.1 tls 609: .Pp
610: The large list of contributors includes:
611: .Bl -dash
612: .It
1.41 wiz 613: .An Marc Balmer
614: .Aq Mt mbalmer@NetBSD.org
1.39 mbalmer 615: added Lua support for dynamic content creation
616: .It
1.41 wiz 617: .An Christoph Badura
618: .Aq Mt bad@bsd.de
1.4 mrg 619: provided Range: header support
620: .It
1.41 wiz 621: .An Sean Boudreau
622: .Aq Mt seanb@NetBSD.org
1.24 wiz 623: provided a security fix for virtual hosting
1.23 mrg 624: .It
1.41 wiz 625: .An Julian Coleman
626: .Aq Mt jdc@coris.org.uk
1.1 tls 627: provided an IPv6 bugfix
628: .It
1.41 wiz 629: .An Chuck Cranor
630: .Aq Mt chuck@research.att.com
1.1 tls 631: provided cgi-bin support fixes, and more
632: .It
1.43 mrg 633: .An Alistair G. Crooks
634: .Aq Mt agc@NetBSD.org
1.50 mrg 635: cleaned up many internal interfaces, made
636: .Nm
637: linkable as a library and provided the Lua binding.
1.43 mrg 638: .It
1.41 wiz 639: .An DEGROOTE Arnaud
640: .Aq Mt degroote@NetBSD.org
1.11 mrg 641: provided a fix for daemon mode
642: .It
1.41 wiz 643: .An Andrew Doran
644: .Aq Mt ad@NetBSD.org
1.1 tls 645: provided directory indexing support
646: .It
1.41 wiz 647: .An Per Ekman
648: .Aq Mt pek@pdc.kth.se
1.1 tls 649: provided a fix for a minor (non-security) buffer overflow condition
650: .It
1.41 wiz 651: .An Roland Dowdeswell
652: .Aq Mt elric@NetBSD.org
1.37 mrg 653: added support for serving gzipped files and better SSL handling
654: .It
1.41 wiz 655: .An Jun-ichiro itojun Hagino, KAME
656: .Aq Mt itojun@iijlab.net
1.1 tls 657: provided initial IPv6 support
658: .It
1.41 wiz 659: .An Martin Husemann
660: .Aq Mt martin@NetBSD.org
1.65.4.1! martin 661: provided .bzabsredirect and .bzredir support, and fixed various
! 662: redirection issues
1.1 tls 663: .It
1.41 wiz 664: .An Arto Huusko
665: .Aq Mt arto.huusko@pp2.inet.fi
1.11 mrg 666: provided fixes cgi-bin
667: .It
1.41 wiz 668: .An Roland Illig
669: .Aq Mt roland.illig@gmx.de
1.1 tls 670: provided some off-by-one fixes
671: .It
1.41 wiz 672: .An Zak Johnson
673: .Aq Mt zakj@nox.cx
1.11 mrg 674: provided cgi-bin enhancements
675: .It
1.41 wiz 676: .An Nicolas Jombart
677: .Aq Mt ecu@ipv42.net
1.65.4.1! martin 678: provided fixes for HTTP basic authorization support
1.1 tls 679: .It
1.41 wiz 680: .An Antti Kantee
681: .Aq Mt pooka@NetBSD.org
1.65.4.1! martin 682: provided fixes for HTTP basic authorization support
1.37 mrg 683: .It
1.41 wiz 684: .An Thomas Klausner
685: .Aq Mt wiz@NetBSD.org
1.1 tls 686: provided many fixes and enhancements for the man page
687: .It
1.49 mrg 688: .An Mateusz Kocielski
689: .Aq Mt shm@NetBSD.org
1.53 wiz 690: fixed memory leaks, various issues with userdir support,
1.52 shm 691: information disclosure issues, added support for using CGI handlers
1.59 mrg 692: with directory indexing, found several security issues and provided
693: various other fixes.
1.49 mrg 694: .It
1.43 mrg 695: .An Arnaud Lacombe
696: .Aq Mt alc@NetBSD.org
697: provided some clean up for memory leaks
698: .It
1.41 wiz 699: .An Johnny Lam
700: .Aq Mt jlam@NetBSD.org
1.1 tls 701: provided man page fixes
702: .It
1.65 mrg 703: .An Dennis Lindroos
704: .Aq Mt denafcm@gmail.com
705: provided a cgi-bin fix
706: .It
1.41 wiz 707: .An Julio Merino
708: .Aq Mt jmmv@NetBSD.org
1.37 mrg 709: Added the
710: .Fl P
1.54 shm 711: option (pidfile support) and provided some man page fixes.
1.37 mrg 712: .It
1.41 wiz 713: .An Luke Mewburn
714: .Aq Mt lukem@NetBSD.org
1.7 wiz 715: provided many various fixes, including cgi-bin fixes and enhancements,
1.65.4.1! martin 716: HTTP basic authorization support and much code clean up
1.1 tls 717: .It
1.45 mrg 718: .An Rajeev V. Pillai
719: .Aq Mt rajeev_v_pillai@yahoo.com
720: provided several fixes for virtual hosting
721: .It
1.41 wiz 722: .An Jeremy C. Reed
723: .Aq Mt reed@NetBSD.org
1.4 mrg 724: provided several clean up fixes, and man page updates
725: .It
1.41 wiz 726: .An Scott Reynolds
727: .Aq Mt scottr@NetBSD.org
1.1 tls 728: provided various fixes
729: .It
1.41 wiz 730: .An Tyler Retzlaff
731: .Aq Mt rtr@eterna.com.au
1.4 mrg 732: provided SSL support, cgi-bin fixes and much other random other stuff
1.1 tls 733: .It
1.41 wiz 734: .An rudolf
735: .Aq Mt netbsd@eq.cz
1.23 mrg 736: provided minor compile fixes and a CGI content map fix
737: .It
1.41 wiz 738: .An Steve Rumble
739: .Aq Mt rumble@ephemeral.org
1.1 tls 740: provided the
741: .Fl V
742: option.
743: .It
1.41 wiz 744: .An Thor Lancelot Simon
745: .Aq Mt tls@NetBSD.org
1.37 mrg 746: enhanced cgi-bin support.
747: .It
1.41 wiz 748: .An Joerg Sonnenberger
749: .Aq Mt joerg@NetBSD.org
1.11 mrg 750: implemented If-Modified-Since support
751: .It
1.41 wiz 752: .An ISIHARA Takanori
753: .Aq Mt ishit@oak.dti.ne.jp
1.1 tls 754: provided a man page fix
755: .It
1.41 wiz 756: .An Holger Weiss
757: .Aq Mt holger@CIS.FU-Berlin.DE
1.65.4.1! martin 758: provided http authorization fixes
1.11 mrg 759: .It
1.41 wiz 760: .Aq Mt xs@kittenz.org
1.1 tls 761: provided chroot and change-to-user support, and other various fixes
1.11 mrg 762: .It
1.41 wiz 763: Coyote Point provided various CGI fixes.
1.1 tls 764: .El
765: .Pp
766: There are probably others I have forgotten (let me know if you care)
1.11 mrg 767: .Pp
768: Please send all updates to
769: .Nm
770: to
1.41 wiz 771: .Aq Mt mrg@eterna.com.au
1.36 ryoon 772: for inclusion in future releases.
1.1 tls 773: .Sh BUGS
774: .Nm
1.27 mbalmer 775: does not handle HTTP/1.1 chunked input from the client yet.
CVSweb <webmaster@jp.NetBSD.org>