#! /bin/sh set -euf # TODO Cache-Control [RFC 2616, Section 14.9] # TODO Accept-Encoding: gzip,deflate # TODO Keep-Alive: 300 # TODO Connection: keep-alive Server='htgen' Request="$(sed 's/\r$//;/^$/q')" date="`date '+%Y-%m-%d %H:%M:%S'`" ## ## Parse request. ## Request_Line= eval "$(echo "$Request" | sed -rn ' 1{s^([a-zA-Z]+) ([a-zA-Z0-9?&+*/.-]+) HTTP/([0-9]+\.[0-9]+)$\ Request_Line="&"\ Method="\1"\ Request_URI="\2"\ HTTP_Version="\3"\ p;t;i\ Request_Line= # invalid request q } s/^Host: ([a-zA-Z0-9?+&/:.-]+)$/Host="\1"/p ')" ## ## Log request. ## # TODO real logging cat>&2<&2 # TODO Date: `date --utc` case "$Host" in src.mine.nu:42380|src.mine.nu|vix|vix:42380|localhost:42380) case "${Method-Invalid-Request}" in GET|HEAD) case "$Request_URI" in /style5.css) body_type=file body=~/public_html$Request_URI cat<&2 exit