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