#!/bin/bash # # webd httpd server # Copyright (c) 2006 Target Creation Ltd # dynamic_request () { export QUERY_STRING="$query" echo -e "HTTP/1.1 200 OK\r" "$filename" echo -e "\r" exit 0 } static_request() { echo -e "HTTP/1.1 200 OK\r" echo -e "Content-Type: `/usr/bin/file -bi \"$filename\"`\r" echo -e "\r" cat "$filename" echo -e "\r" } dir_list() { echo -e "HTTP/1.1 200 OK\r" echo -e "Content-Type: text/html;charset=UTF-8\r" echo -e "\r" tmpl_header; echo -e "

Listing of $url

\r" echo -e "
Details								Name
\r" echo -e "
"

	( cd "$filename"
		for f in `ls`; do
			#desc=`ls -ld "$f"`
			desc=`ls -ld "$f"`
			desc="${desc% $f}"
			href="${url%/}/$f"

			echo -e "$desc			$f"
		done
	)

	echo "
" echo -e "\r" echo -e "\r" tmpl_footer; echo -e "\r" } 404_page () { echo -e "HTTP/1.1 404 Not Found\r" echo -e "Content-Type: text/html;charset=UTF-8\r" echo -e "\r" tmpl_header; echo -e "

404: Resource Not Found

\r" echo -e "The resource you requested could not be found on this server. Please \r" echo -e "ensure you typed the address/url correctly and try again.\r" tmpl_footer; echo -e "\r" } tmpl_header () { cat "/var/www/webd/header.html" } tmpl_footer () { cat "/var/www/webd/footer.html" } base=/var/www read request while /bin/true; do read header [ "$header" == $'\r' ] && break; done url="${request#GET }" url="${url% HTTP/*}" query="${url#*\?}" url="${url%%\?*}" filename="$base$url" if [ "$query" != "$url" -a -x "$filename" ]; then dynamic_request; fi if [ -f "$filename" ]; then if [ -x "$filename" ]; then dynamic_request; fi static_request; else if [ -d "$filename" ]; then if [ -f "$filename/index.pl" ]; then filename="${filename}/index.pl" if [ -x "$filename" ]; then dynamic_request; fi static_request; else dir_list; fi else 404_page; fi fi