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