Update the documentation to reflect the new flag-centric usage - quark - quark … | |
git clone git://git.suckless.org/quark | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit a20136fa18dba7fd44812be235010a4517aef783 | |
parent 444b8f5b32d0263f1a20e18eb3044bfeed334361 | |
Author: Laslo Hunhold <[email protected]> | |
Date: Mon, 5 Mar 2018 09:51:29 +0100 | |
Update the documentation to reflect the new flag-centric usage | |
Diffstat: | |
M http.c | 2 +- | |
M main.c | 8 ++++---- | |
M quark.1 | 125 ++++++++++++++++++++++-------… | |
M util.h | 2 +- | |
4 files changed, 96 insertions(+), 41 deletions(-) | |
--- | |
diff --git a/http.c b/http.c | |
@@ -336,7 +336,7 @@ http_send_response(int fd, struct request *r) | |
return http_send_status(fd, (errno == … | |
S_FORBIDDEN : … | |
} | |
- vhostmatch = s.vhost[i].name; | |
+ vhostmatch = s.vhost[i].chost; | |
break; | |
} | |
} | |
diff --git a/main.c b/main.c | |
@@ -94,10 +94,10 @@ static void | |
usage(void) | |
{ | |
const char *opts = "[-u user] [-g group] [-n num] [-d dir] [-l] " | |
- "[-i index] [-v vhost] ... [-m map] ..."; | |
+ "[-i file] [-v vhost] ... [-m map] ..."; | |
- die("usage: %s -h host -p port %s\n" | |
- " %s -U socket [-p port] %s", argv0, | |
+ die("usage: %s -h host -p port %s\n" | |
+ " %s -U file [-p port] %s", argv0, | |
opts, argv0, opts); | |
} | |
@@ -170,7 +170,7 @@ main(int argc, char *argv[]) | |
sizeof(struct vhost)))) { | |
die("reallocarray:"); | |
} | |
- if (!(s.vhost[s.vhost_len - 1].name = strtok(tok, " ")) || | |
+ if (!(s.vhost[s.vhost_len - 1].chost = strtok(tok, " ")) || | |
!(s.vhost[s.vhost_len - 1].regex = strtok(NULL, " ")) || | |
!(s.vhost[s.vhost_len - 1].dir = strtok(NULL, " ")) || | |
!(s.vhost[s.vhost_len - 1].prefix = strtok(NULL, " ")) || | |
diff --git a/quark.1 b/quark.1 | |
@@ -1,65 +1,120 @@ | |
-.Dd 2018-02-05 | |
+.Dd 2018-03-05 | |
.Dt QUARK 1 | |
+.Os suckless.org | |
.Sh NAME | |
.Nm quark | |
-.Nd simple web server | |
+.Nd simple static web server | |
.Sh SYNOPSIS | |
.Nm | |
-.Op Fl l | L | |
-.Op Fl v | V | |
-.Oo | |
-.Oo | |
-.Op Fl h Ar host | |
-.Op Fl p Ar port | |
-.Oc | |
-| | |
-.Op Fl U Ar sockfile | |
-.Oc | |
+.Fl h Ar host | |
+.Fl p Ar port | |
+.Op Fl u Ar user | |
+.Op Fl g Ar group | |
+.Op Fl n Ar num | |
.Op Fl d Ar dir | |
+.Op Fl l | |
+.Op Fl i Ar file | |
+.Oo Fl v Ar vhost Oc ... | |
+.Oo Fl m Ar map Oc ... | |
+.Nm | |
+.Fl U Ar file | |
+.Op Fl p Ar port | |
.Op Fl u Ar user | |
.Op Fl g Ar group | |
+.Op Fl n Ar num | |
+.Op Fl d Ar dir | |
+.Op Fl l | |
+.Op Fl i Ar file | |
+.Oo Fl v Ar vhost Oc ... | |
+.Oo Fl m Ar map Oc ... | |
.Sh DESCRIPTION | |
.Nm | |
-is a simple HTTP GET only web server that can be multiplexed using | |
-UNIX-domain sockets. | |
+is a simple HTTP GET/HEAD-only web server for static content. | |
.Sh OPTIONS | |
.Bl -tag -width Ds | |
.It Fl d Ar dir | |
Serve | |
.Ar dir | |
after chrooting into it. | |
-.It Fl l | |
-Disable directory listing. | |
-.It Fl L | |
-Enable directory listing. | |
+The default is ".". | |
.It Fl g Ar group | |
-Set group ID to the ID of | |
-.Ar group | |
-when dropping privileges. | |
+Set group ID when dropping privileges, and in socket mode the group of the | |
+socket file, to the ID of | |
+.Ar group . | |
+The default is "nogroup". | |
.It Fl h Ar host | |
Use | |
.Ar host | |
as the server hostname. | |
+.It Fl i Ar file | |
+Set | |
+.Ar file | |
+as the directory index. | |
+The default is "index.html". | |
+.It Fl l | |
+Enable directory listing. | |
+.It Fl m Ar map | |
+Add the target prefix mapping rule specified by | |
+.Ar map , | |
+which has the form | |
+.Qq Pa chost from to , | |
+where each element is separated with whitespace. | |
+.Pp | |
+The prefix | |
+.Pa from | |
+of all matching targets, especially only of those requests for the canonical | |
+virtual host | |
+.Pa chost | |
+when virtual hosts are specified, is then replaced with | |
+.Pa to . | |
+If no virtual hosts are given, | |
+.Pa chost | |
+is ignored. | |
+.It Fl n Ar num | |
+Set the maximum number of threads to | |
+.Ar num . | |
+The default is 512. | |
.It Fl p Ar port | |
-Listen on port | |
+In host mode, listen on port | |
.Ar port | |
for incoming connections. | |
-.It Fl u Ar user | |
-Set user ID to the ID of | |
-.Ar user | |
-when dropping privileges. | |
-.It Fl U Ar sockfile | |
-Create the UNIX-domain socket file | |
-.Ar sockfile , | |
+In socket mode, use | |
+.Ar port | |
+for constructing proper virtual host | |
+redirects on non-standard ports. | |
+.It Fl U Ar file | |
+Create the UNIX-domain socket | |
+.Ar file , | |
listen on it for incoming connections and remove it on exit. | |
-Its user and group owners are equal to the user and group IDs used for dropping | |
-privileges to. | |
-.It Fl v | |
-Disable virtual hosts. | |
-.It Fl V | |
-Enable virtual hosts. | |
+.It Fl u Ar user | |
+Set user ID when dropping privileges, | |
+and in socket mode the user of the socket file, | |
+to the ID of | |
+.Ar user . | |
+The default is "nobody". | |
+.It Fl v Ar vhost | |
+Add the virtual host specified by | |
+.Ar vhost , | |
+which has the form | |
+.Qq Pa chost regex dir prefix , | |
+where each element is separated with whitespace. | |
+.Pp | |
+A request matching the virtual host regular expression | |
+.Pa regex | |
+(see | |
+.Xr regex 3) | |
+is redirected to the canonical host | |
+.Pa chost , | |
+if they differ, using the directory | |
+.Pa dir | |
+as the root directory, optionally prefixing the target with | |
+.Pa prefix . | |
+If any virtual hosts are specified, all requests on non-matching | |
+hosts are discarded. | |
.El | |
.Sh CUSTOMIZATION | |
.Nm | |
can be customized by creating a custom config.h from config.def.h and | |
(re)compiling the source code. This keeps it fast, secure and simple. | |
+.Sh AUTHORS | |
+.An Laslo Hunhold Aq Mt [email protected] | |
diff --git a/util.h b/util.h | |
@@ -10,7 +10,7 @@ | |
/* main server struct */ | |
struct vhost { | |
- char *name; | |
+ char *chost; | |
char *regex; | |
char *dir; | |
char *prefix; |