Skip to content

Instantly share code, notes, and snippets.

@safchain
Last active December 15, 2015 14:39
Show Gist options
  • Save safchain/5276151 to your computer and use it in GitHub Desktop.
Save safchain/5276151 to your computer and use it in GitHub Desktop.
ShellWebServer, a tiny Web server written in Shell
#!/bin/sh
# global
if [ -z "$DOCUMENT_ROOT" ]
then
DOCUMENT_ROOT=/var/www
fi
# private vars
_request=""
mkfifo /tmp/.shellwebserver.$$
echo "Shell Web Server Started"
while (true); do
nc -l -p 80 < /tmp/.shellwebserver.$$ | while read request; do
if [ -z "$_request" ]
then
_request=$request
fi
if [ "$request" == $'\r' ]
then
_url="${_request#GET }"
_url="${_url% HTTP/*}"
_filename="$DOCUMENT_ROOT$_url"
if [ -d $_filename ]
then
_filename="$_filename/index.html"
fi
if [ -f "$_filename" ]; then
echo -e "HTTP/1.1 200 OK\r"
echo -e "Content-Type: `/usr/bin/file -bi \"$_filena
echo -e "\r"
cat "$_filename"
else
echo -e "HTTP/1.1 404 Not Found\r"
echo -e "Content-Type: text/html\r"
echo -e "\r"
echo -e "404 Not Found\r"
echo -e "Not Found The requested resource was not fo
echo -e "\r"
fi
break
fi
done > /tmp/.shellwebserver.$$
done
rm /tmp/.shellwebserver.$$
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment