Subject: Re: CVS commit: src/libexec/httpd
To: None <tech-userlevel@netbsd.org>
From: Karsten Kruse <tecneeq@gmx.net>
List: tech-userlevel
Date: 10/17/2007 00:08:23
Mindaugas R. schrieb:
>> Update of /cvsroot/src/libexec/httpd
What i needed a thousand times in base (read: before pkgsrc was there) was
a webbrowser. I think w3m is a BSD licensed one.
>> Import of bozohttpd for its originally intended purpose: a small (~30k)
>> simple run-from-inetd httpd suitable for small systems (and some large
>> ones).
This httpd works fine with NetBSD and is only ~1,5 k:
#!/bin/sh -e
# httpd.sh - Very small webserver
# Karsten Kruse 2004 2005 www.tecneeq.de
# Idea from httpd.ksh www.shelldorado.com
#
# 1) Save this file as /usr/sbin/httpd.sh
# 2) Put this into /etc/inetd.conf:
# 80 stream tcp nowait nobody /usr/sbin/httpd.sh
# 3) Let inetd reread it's configuration:
# /etc/rc.d/inetd reload
# 4) Set the document root
root=${HTTP_DOC_ROOT:-/home/httpd/htdocs/}
gettype(){
case "$1" in
*.xhtml|*.html|*.htm|*.XHTML|*.HTML|*.HTM) type="text/html" ;;
esac
echo ${type:-$(file -i "$1" | awk '{print $2}' | sed 's/;//')}
}
while read line ; do
[ "$line" = "$(printf \r\n)" ] && break # end of request header
[ -z $requestline ] && requestline="$line" && break
done
set -- $requestline
doc="$root/$2"
[ -d "$doc" ] && doc="$doc/index.html"
if [ "$1" != GET ] ; then
printf "HTTP/1.0 501 Not implemented\r\n\r\n501 Not implemented\r\n"
elif expr "$doc" : '.*/\.\./.*' >/dev/null ; then
printf "HTTP/1.0 400 Bad Request\r\n\r\n400 Bad Request\r\n"
elif [ ! -f "$doc" ] ; then
printf "HTTP/1.0 404 Not Found\r\n\r\n404 Not Found\r\n"
elif [ ! -r "$doc" ] ; then
printf "HTTP/1.0 403 Forbidden\r\n\r\n403 Forbidden\r\n"
elif [ -r "$doc" -a -f "$doc" ] ; then
printf "HTTP/1.0 200 OK\r\nContent-type: $(gettype "$doc")\r\n"
printf "Content-Length: $(wc -c < "$doc")\r\n\r\n"
exec cat "$doc"
else
printf "HTTP/1.0 500 Server Error\r\n\r\n500 Server Error\r\n"
fi
# eof
MFG,
Karsten Kruse
--
()
<\/> GPL-guy: "Argh, they used my code! :-/"
_/\_ BSD-guy: "Cool, they used my code! :-)"