Module Name:    src
Committed By:   lukem
Date:           Fri Nov 22 22:21:51 UTC 2024

Modified Files:
        src/libexec/httpd: bozohttpd.8

Log Message:
bozohttpd(8): clarifications and editorial fixes

Clarify that -b also listens on an address and port
(overridden by -i address and/or -I port), as does -f.
If -i isn't given, all addresses are listened to.

Use literal instead of emphasis for Lua, paths, URLs (etc).

Add more cross-references to other options.

Split FILES into a tagged list and subsections describing
the behaviour.


To generate a diff of this commit:
cvs rdiff -u -r1.98 -r1.99 src/libexec/httpd/bozohttpd.8

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/libexec/httpd/bozohttpd.8
diff -u src/libexec/httpd/bozohttpd.8:1.98 src/libexec/httpd/bozohttpd.8:1.99
--- src/libexec/httpd/bozohttpd.8:1.98	Sat Sep  7 20:48:02 2024
+++ src/libexec/httpd/bozohttpd.8	Fri Nov 22 22:21:51 2024
@@ -1,4 +1,4 @@
-.\"	$NetBSD: bozohttpd.8,v 1.98 2024/09/07 20:48:02 rillig Exp $
+.\"	$NetBSD: bozohttpd.8,v 1.99 2024/11/22 22:21:51 lukem Exp $
 .\"
 .\"	$eterna: bozohttpd.8,v 1.101 2011/11/18 01:25:11 mrg Exp $
 .\"
@@ -26,7 +26,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd April 28, 2024
+.Dd November 22, 2024
 .Dt BOZOHTTPD 8
 .Os
 .Sh NAME
@@ -87,10 +87,22 @@ hopefully increasing its security.
 The following options are available:
 .Bl -tag -width xxxcgibin
 .It Fl b
-Enables daemon mode, where
+Enables stand-alone daemon mode, where
 .Nm
-detaches from the current terminal, running in the background and
-servicing HTTP requests.
+detaches from the current terminal and runs in the background
+(unless invoked with
+.Fl f ) ,
+listens on the appropriate IP address
+(see
+.Fl i Ar address )
+and TCP port
+(see
+.Fl I Ar port ) ,
+and services HTTP requests.
+.Nm
+does not use
+.Xr inetd 8
+in stand-alone daemon mode.
 .It Fl C Ar suffix cgihandler
 Adds a new CGI handler program for a particular file type.
 The
@@ -109,17 +121,17 @@ The
 .Ar cgibin
 directory is expected to contain the CGI programs to be used.
 .Nm
-looks for URL's in the form of
-.Em /cgi-bin/<scriptname>
+looks for URLs in the form of
+.Ql /cgi-bin/ Ns Ar scriptname
 where
-.Aq scriptname
+.Ar scriptname
 is a valid CGI program in the
 .Ar cgibin
 directory.
-In other words, all CGI URL's must begin with
-.Em \%/cgi-bin/ .
+In other words, all CGI URLs must begin with
+.Ql \%/cgi-bin/ .
 Note that the CGI/1.1 interface is available with
-.Em ~user
+.Ql ~user
 translation using
 .Fl E
 switch.
@@ -127,15 +139,13 @@ switch.
 Enables debug support.
 .It Fl E
 Enables CGI/1.1 interface for
-.Em ~user
+.Ql ~user
 translation.
 Note that enabling this support implies that users can run commands
 as the web server user.
 This may have security implications.
 .It Fl e
-Causes
-.Nm
-to not clear the environment when used with either the
+Do not clear the environment when used with either the
 .Fl t
 or
 .Fl U
@@ -143,50 +153,55 @@ options.
 .It Fl f
 Stops the
 .Fl b
-flag from detaching
+option from detaching
 .Nm
-from the tty and going into the background.
+from the tty and going into the background as part of stand-alone daemon mode.
 This implies the
 .Fl b
-flag.
+option.
 .It Fl G
 Get the
 .Nm
 version string, print it on standard output, and exit.
 .It Fl H
-Causes directory index mode to hide files and directories
-that start with a period, except for
+Changes directory index mode
+(see
+.Fl X
+option)
+to hide files and directories that start with a period
+.Pq Ql \&. ,
+except for
 .Pa .. .
-Also see
-.Fl X .
 .It Fl I Ar port
-Causes
-.Nm
-to use
+Use
 .Ar port
 instead of the default
 .Dq http
-port.
+port
+(usually 80, see
+.Xr services 5 ) .
 When used with the
 .Fl b
-option, it changes the bound port.
-Otherwise it forces redirections to use this port instead of the
-value obtained via
+or
+.Fl f
+options, this option changes the bound port.
+Otherwise this option forces redirections to use this port
+instead of the value obtained via
 .Xr getsockname 2 .
 .It Fl i Ar address
-Causes
+Use
 .Ar address
-to be used as the address to bind daemon mode.
-If otherwise unspecified, the address used to bind is derived from the
-.Ar myname ,
-which defaults to the name returned by
-.Xr gethostname 3 .
+as the address to bind to in stand-alone daemon mode.
+If this option is not provided, all available IP addresses
+will be listened to.
 Only the last
 .Fl i
 option is used.
 This option is only valid with the
 .Fl b
-option.
+or
+.Fl f
+options.
 .It Fl L Ar prefix script
 Adds a new Lua script for a particular prefix.
 The
@@ -199,11 +214,14 @@ Multiple
 options may be passed.
 A separate Lua state is created for each prefix.
 The Lua script can register callbacks using the
-httpd.register_handler('<name>', function) Lua function,
+.Dl httpd.register_handler('suffixpath', luafunc)
+Lua function,
 which will trigger the execution of the Lua function
-.Em function
+.Fn luafunc
 when a URL in the form
-.Em http://<hostname>/<prefix>/<name>
+.Sm off
+.Li http:// Ar hostname Li / Ar prefix Li / Ar suffixpath
+.Sm on
 is being accessed.
 The function is passed three tables as arguments, the server
 environment, the request headers, and the decoded query string
@@ -244,24 +262,28 @@ This affects the
 .Ev REMOTE_HOST
 environment variable for CGI programs and Lua scripts.
 .It Fl P Ar pidfile
-Causes
-.Nm
-to create a PID file in
+Create a PID file in
 .Ar pidfile
 when run in daemon mode with the
 .Fl b
-option.
+or
+.Fl f
+options.
 .It Fl p Ar pubdir
 Changes the default user directory for
-.Em /~user/
+.Ql /~user/
 translations from
-.Dq public_html
+.Pa public_html
 to
 .Ar pubdir .
 .It Fl q
 Quiet mode - no log entries generated.
 .It Fl R Ar readme
-When directory indexing is enabled, include the contents of the file
+When directory indexing is enabled
+(see
+.Fl X
+option),
+include the contents of the file
 .Ar readme
 in the footer of the directory index.
 .It Fl S Ar version
@@ -296,9 +318,7 @@ is normally replaced with an empty envir
 .Fl e
 option is also used.
 .It Fl U Ar username
-Causes
-.Nm
-to switch to the user and the groups of
+Switch to the user and the groups of
 .Ar username
 after initialization.
 This option, like
@@ -311,7 +331,7 @@ option is given.
 .It Fl u
 Enables the transformation of Uniform Resource Locators of
 the form
-.Em /~user/
+.Ql /~user/
 into the directory
 .Pa ~user/public_html
 (but see the
@@ -343,18 +363,21 @@ See the
 section for an example of using this option.
 .It Fl X
 Enables directory indexing.
-A directory index will be generated only when the default file (i.e.
+A directory index will be generated only when the default
+index file is not present
+(i.e.,
 .Pa index.html
-normally) is not present.
+unless changed with
+.Fl x Ar index ) .
 .It Fl x Ar index
 Changes the default file read for directories from
-.Dq index.html
+.Pa index.html
 to
 .Ar index .
 .It Fl Z Ar certificate_path privatekey_path
 Sets the path to the server certificate file and the private key file
 in PEM format.
-It also causes
+This option also causes
 .Nm
 to start SSL mode.
 .It Fl z Ar ciphers
@@ -374,18 +397,21 @@ since version 20040828, they take multip
 and 4 in the case of
 .Fl M . )
 .Ss INETD CONFIGURATION
-As
+By default
 .Nm
 uses
 .Xr inetd 8
 by default to process incoming TCP connections for HTTP requests
-(but see the
+(unless stand-alone daemon mode is enabled with the
 .Fl b
-option),
+or
+.Fl f
+options),
 .Nm
 has little internal networking knowledge.
-(Indeed, you can run it on the command line with little change of
-functionality.)
+(Indeed, you can run
+.Nm
+on the command line with little change of functionality.)
 A typical
 .Xr inetd.conf 5
 entry would be:
@@ -398,7 +424,7 @@ This would serve web pages from
 .Pa /var/www
 on both IPv4 and IPv6 ports.
 The
-.Em :600
+.Ql :600
 changes the
 requests per minute to 600, up from the
 .Xr inetd 8
@@ -467,13 +493,13 @@ While
 distributed with
 .Nx
 has support for HTTP Basic Authorization enabled by default,
-in the portable distribution it is excluded.
+in the portable distribution this feature is disabled.
 Compile
 .Nm
 with
 .Dq -DDO_HTPASSWD
 on the compiler command line to enable this support.
-It may require linking with the crypt library, using
+This may require linking with the crypt library, using
 .Dq -lcrypt .
 .Ss BLOCKLIST SUPPORT
 On
@@ -491,13 +517,13 @@ Upon occurrence,
 reports two HTTP status codes to
 .Xr blocklistd 8
 as failures:
-.Em 401
+.Er 401
 (``Unauthorized'')
 and
-.Em 403
+.Er 403
 (``Forbidden'') .
 Of these,
-.Em 401
+.Er 401
 is the one received upon authorization failure with the
 HTTP Basic Authorization mechanism.
 A successful authorization decreases the counter kept by
@@ -505,7 +531,7 @@ A successful authorization decreases the
 .Pp
 Note that the implementation of the HTTP Basic Authorization mechanism
 uses a redirection; a status code
-.Em 401
+.Er 401
 is always initially received.
 Therefore, a single authorization failure of
 .Pa .htpasswd
@@ -517,7 +543,7 @@ due to the decrease of the failure count
 .Nm
 has support for TLSv1.1 and TLSv1.2 protocols that are included by
 default.
-It requires linking with the crypto and ssl library, using
+This requires linking with the crypto and ssl library, using
 .Dq -lcrypto -lssl .
 To disable SSL SUPPORT compile
 .Nm
@@ -539,34 +565,50 @@ if it exists, it is readable, the client
 the client did not make a ranged request.
 .Sh FILES
 .Nm
-looks for a couple of special files in directories that allow certain features
-to be provided on a per-directory basis.
-The
-.Pa .htpasswd
-file is used by HTTP basic authorization.
-If a
-.Pa .bzredirect
-symbolic link is found,
+processes specific files in each directory that
+enables certain features on a per-directory basis.
+These per-directory files are:
+.Bl -tag -width .htpasswd
+.It Pa .bzabsredirect
+Symbolic link to the absolute URL pointed to by this symlink.
+This is useful to redirect to different servers.
+See
+.Sx SYMBOLIC LINK REDIRECTION .
+.It Pa .bzredirect
+Symbolic link to URL for
 .Nm
-will perform a smart redirect to the target of this symlink.
+to perform a smart redirect to the target of this symlink.
 The target is assumed to live on the same server.
 If target starts with slash then absolute redirection is performed,
-otherwise it's handled as relative.
-If a
-.Pa .bzabsredirect
-symbolic link is found,
-.Nm
-will redirect to the absolute URL pointed to by this symlink.
-This is useful to redirect to different servers.
-Two forms of redirection are supported - symbolic link without schema will use
-.Em http://
-as default i.e. link to
-.Em NetBSD.org
+otherwise it is handled as relative.
+See
+.Sx SYMBOLIC LINK REDIRECTION .
+.It Pa .bzremap
+Used by rewrite mappings; see
+.Sx REWRITE MAPPINGS .
+.It Pa .htpasswd
+Used by HTTP basic authorization; see
+.Sx HTTP BASIC AUTHORIZATION .
+.El
+.Ss SYMBOLIC LINK REDIRECTION
+Two forms of redirection are supported:
+.Bl -enum
+.It
+A symbolic link without schema will use
+.Li http://
+as default.
+E.g., a symbolic link to
+.Pa NetBSD.org
 will redirect to
-.Em http://NetBSD.org/
-Otherwise provided schema will be used i.e. symbolic link to
-.Em ftp://NetBSD.org/
-will redirect to the provided URL.
+.Lk http://NetBSD.org/ .
+.It
+A symbolic link with a schema uses the provided schema.
+E.g., a symbolic link to
+.Pa ftp://NetBSD.org/
+will redirect to
+.Lk ftp://NetBSD.org/ .
+.El
+.Ss REWRITE MAPPINGS
 If a
 .Pa .bzremap
 file is found at the root of a (virtual) server, it is expected to contain
@@ -592,10 +634,10 @@ file could look like this:
 The remap file should be short, access to it is slow and needs to happen
 on each request.
 If a request path needs to include a colon
-.Pq Li \&:
+.Pq Ql \&:
 character, it can be escaped
 with a backslash
-.Pq Li \e
+.Pq Ql \e
 The right hand side of the colon is always used verbatim, no escape sequences
 are interpreted.
 .Sh EXAMPLES
@@ -646,9 +688,9 @@ fi
 
 exit 1
 .Ed
-
 .Sh SEE ALSO
 .Xr inetd.conf 5 ,
+.Xr services 5 ,
 .Xr inetd 8
 .Sh HISTORY
 .Nm

Reply via email to