mirror of https://github.com/nealey/eris.git
Add -. option
This commit is contained in:
parent
dcb83f3e47
commit
b4cb8c1e96
10
eris.c
10
eris.c
|
@ -75,6 +75,7 @@
|
||||||
int doauth = 0;
|
int doauth = 0;
|
||||||
int docgi = 0;
|
int docgi = 0;
|
||||||
int doidx = 0;
|
int doidx = 0;
|
||||||
|
int nochdir = 0;
|
||||||
int redirect = 0;
|
int redirect = 0;
|
||||||
int portappend = 0;
|
int portappend = 0;
|
||||||
|
|
||||||
|
@ -244,7 +245,7 @@ parse_options(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
|
|
||||||
while (-1 != (opt = getopt(argc, argv, "acdhkprv"))) {
|
while (-1 != (opt = getopt(argc, argv, "acdhkprv."))) {
|
||||||
switch (opt) {
|
switch (opt) {
|
||||||
case 'a':
|
case 'a':
|
||||||
doauth = 1;
|
doauth = 1;
|
||||||
|
@ -255,6 +256,9 @@ parse_options(int argc, char *argv[])
|
||||||
case 'd':
|
case 'd':
|
||||||
doidx = 1;
|
doidx = 1;
|
||||||
break;
|
break;
|
||||||
|
case '.':
|
||||||
|
nochdir = 1;
|
||||||
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
portappend = 1;
|
portappend = 1;
|
||||||
break;
|
break;
|
||||||
|
@ -264,6 +268,7 @@ parse_options(int argc, char *argv[])
|
||||||
case 'v':
|
case 'v':
|
||||||
printf(FNORD "\n");
|
printf(FNORD "\n");
|
||||||
exit(0);
|
exit(0);
|
||||||
|
case 'h':
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Usage: %s [OPTIONS]\n",
|
fprintf(stderr, "Usage: %s [OPTIONS]\n",
|
||||||
argv[0]);
|
argv[0]);
|
||||||
|
@ -271,6 +276,7 @@ parse_options(int argc, char *argv[])
|
||||||
fprintf(stderr, "-a Enable authentication\n");
|
fprintf(stderr, "-a Enable authentication\n");
|
||||||
fprintf(stderr, "-c Enable CGI\n");
|
fprintf(stderr, "-c Enable CGI\n");
|
||||||
fprintf(stderr, "-d Enable directory listing\n");
|
fprintf(stderr, "-d Enable directory listing\n");
|
||||||
|
fprintf(stderr, "-. Serve out of ./ (no vhosting)\n");
|
||||||
fprintf(stderr, "-p Append port to hostname directory\n");
|
fprintf(stderr, "-p Append port to hostname directory\n");
|
||||||
fprintf(stderr, "-r Enable symlink redirection\n");
|
fprintf(stderr, "-r Enable symlink redirection\n");
|
||||||
fprintf(stderr, "-v Print version and exit\n");
|
fprintf(stderr, "-v Print version and exit\n");
|
||||||
|
@ -711,7 +717,7 @@ handle_request()
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Try to change into the appropriate directory */
|
/* Try to change into the appropriate directory */
|
||||||
{
|
if (! nochdir) {
|
||||||
char fn[PATH_MAX];
|
char fn[PATH_MAX];
|
||||||
|
|
||||||
if (host) {
|
if (host) {
|
||||||
|
|
14
test.sh
14
test.sh
|
@ -110,6 +110,13 @@ title "Logging busybox"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
H "Options"
|
||||||
|
|
||||||
|
title "-."
|
||||||
|
printf 'GET /eris HTTP/1.0\r\n\r\n' | $HTTPD -. 2>/dev/null | grep -q 'HTTP/1.. 200 OK' && pass || fail
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
H "Tomfoolery"
|
H "Tomfoolery"
|
||||||
|
|
||||||
title "Non-header"
|
title "Non-header"
|
||||||
|
@ -150,7 +157,7 @@ title "ANSI C Date"
|
||||||
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Sun Feb 27 12:12:12 2030\r\n\r\n' | $HTTPD 2>/dev/null | grep -q 'HTTP/1.. 304 ' && pass || fail
|
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: Sun Feb 27 12:12:12 2030\r\n\r\n' | $HTTPD 2>/dev/null | grep -q 'HTTP/1.. 304 ' && pass || fail
|
||||||
|
|
||||||
title "ims persist"
|
title "ims persist"
|
||||||
printf 'GET / HTTP/1.0\r\nIf-Modified-Since: %s\r\n\r\nGET / HTTP/1.0\r\n\r\n' | $HTTPD 2>/dev/null | d | grep -q 'HTTP/1.. 304.*HTTP/1.. 200'
|
printf 'GET / HTTP/1.1\r\nIf-Modified-Since: %s\r\n\r\nGET / HTTP/1.0\r\n\r\n' "$ims" | $HTTPD 2>/dev/null | d | grep -q 'HTTP/1.. 304.*HTTP/1.. 200' && pass || fail
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -214,6 +221,11 @@ printf 'GET / HTTP/1.0\r\nHost: empty\r\n\r\n' | $HTTPD_IDX 2>/dev/null | grep -
|
||||||
title "CGI output bare newlines"
|
title "CGI output bare newlines"
|
||||||
printf 'GET /a.cgi HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | d | grep -q '#%#%' && pass || fail
|
printf 'GET /a.cgi HTTP/1.0\r\n\r\n' | $HTTPD_CGI 2>/dev/null | d | grep -q '#%#%' && pass || fail
|
||||||
|
|
||||||
|
## Note: fnord gets a pass on this since it only claims to be an HTTP/1.0
|
||||||
|
## server. Eris is not 1.1 compliant either, but it at least tries to fake it. You
|
||||||
|
## should consider how much of HTTP/1.1 you want before deploying either. In practice,
|
||||||
|
## with browsers, both seems sufficient. Some tools, notably httperf, fail
|
||||||
|
## with fnord.
|
||||||
# 3. Should process both requests; instead drops second
|
# 3. Should process both requests; instead drops second
|
||||||
title "Multiple requests in one packet"
|
title "Multiple requests in one packet"
|
||||||
printf 'GET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\n' | $HTTPD 2>/dev/null | grep -c '^HTTP/1.' | grep -q 2 && pass || fail
|
printf 'GET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\nGET / HTTP/1.1\r\nHost: a\r\nConnection: keep-alive\r\n\r\n' | $HTTPD 2>/dev/null | grep -c '^HTTP/1.' | grep -q 2 && pass || fail
|
||||||
|
|
Loading…
Reference in New Issue