Updated README

This commit is contained in:
Neale Pickett 2014-03-11 17:39:36 +00:00
parent eb9de7b610
commit c968d41b16
1 changed files with 35 additions and 37 deletions

72
README
View File

@ -1,8 +1,14 @@
About
=====
Eris HTTPD is a part of Dirtbags Capture The Flag
(http://dirtbags.net/ctf/). As I was adding more and more patches
against fnord 1.10 (http://www.fefe.de/), I decided to fork fnord into
a new project. Fnord's author approved of the fork.
Differences with fnord
======================
Significant differences between eris and fnord are:
* command-line arguments instead of compile-time defines
@ -12,38 +18,44 @@ Significant differences between eris and fnord are:
* elimination of user switching (you can use tcpserver -[ug])
* elimination of chroot code (you can use chroot)
* several bugfixes (sent to the fnord mail list)
* ignores Accept header (fnord does too)
* ignores Accept header (fnord also ignores it, but claims not to)
----
Usage
=====
Usage:
Start with:
tcpserver -v -RHl localhost -u 1234 -g 1234 0 80 ./httpd
tcpserver -v -RHl localhost -u 1234 -g 1234 0 80 ./eris
There are many other ways to start eris.
For example, you can run an HTTPS server using tcpsvd and sslio.
You just need something that launches eris with stdin and stdout connected to the client.
Logging
-------
Will log to stderr in the form
127.0.0.1 200 23 localhost Links_(0.96;_Unix) none /index.html
127.0.0.1 200 23 localhost Links_(0.96;_Unix) none /index.html
where 127.0.0.1 is the client IP, 200 is the HTTP exit code, 23 is the
size of the content that was served (or 0 for unsuccessful exit codes),
localhost is the Host: header (the virtual host), the next token is the
user agent with spaces replaced by underscores, the next token (none) is
the Referer HTTP header or "none" if none was given, and the rest of
each line is the decoded requested URL.
where 127.0.0.1 is the client IP, 200 is the HTTP exit code,
23 is the size of the content that was served (or 0 for unsuccessful exit codes),
localhost is the Host: header (the virtual host),
the next token is the user agent with spaces replaced by underscores,
the next token (none) is the Referer HTTP header or "none" if none was given,
and the rest of each line is the decoded requested URL.
eris does simple virtual hosting. If the Host: HTTP header is there,
Features
--------
eris does simple virtual hosting. If the `Host:` HTTP header is there,
eris will try to chdir to a directory of that name, i.e. if the client
asks for "/" on host "www.fefe.de", eris will look for
"www.fefe.de/index.html". Eris will also try the directory "default"
if no specific directory for the virtual host was there. If the
directory is a dangling symlink, eris will redirect the whole site.
Examples:
lrwxrwxrwx 1 leitner users 19 May 5 01:09 www.foo.de -> http://www.baz.de/
lrwxrwxrwx 1 leitner users 20 May 5 01:12 www.bar.de -> =http://www.baz.de/
http://www.foo.de/blub.html will be redirected to http://www.baz.de/blub.html.
http://www.bar.de/blub.html will be redirected to http://www.baz.de/.
if no specific directory for the virtual host was there.
eris implements el-cheapo HTTP ranges (only byte ranges and only of the
form x-y, not multiple ranges).
@ -53,13 +65,6 @@ content type table is compiled in, i.e. to change it, you have to change
the source code. Shouldn't be a problem because you _have_ the source
code ;)
eris implements HTTP redirection. If a file is not found, but a
dangling symlink is there under the same name, eris will issue a
redirection to the contents of that symlink. To be RFC compliant, the
symlink must point to a full URL, i.e.
ln -s ftp://foobar.math.fu-berlin.de/pub/dietlibc/dietlibc-0.11.tar.bz2 dietlibc-0.11.tar.bz2
eris will change dots at the start of file or directory names to colons
in the query before trying to answer them.
@ -67,15 +72,8 @@ eris understands and implements keep-alive connections.
eris will use sendfile on Linux to enable zero-copy TCP.
If eris is given the -a option, it look for a file named ".http-auth"
in the root of the host directory. If it's found, eris will run it as
".http-auth $host $url" with the environment variable
"HTTP_AUTHORIZATION" set to the "Authorization" header sent by the
client. If the program returns 0, access will be granted; if it
returns 1, eris will return a 401 response.
If eris is given the -c option, it will regard files
whose names end with ".cgi" as CGI programs and try to execute them.
CGI programs starting with "nph-" will be handled as no-parse-header
CGIs. Please see http://hoohoo.ncsa.uiuc.edu/cgi/interface.html for the
CGI specification.
CGIs.
Please see <http://hoohoo.ncsa.uiuc.edu/cgi/interface.html> for the CGI specification.