#! /usr/bin/env bash
# source: proxy.sh
# Copyright Gerhard Rieger and contributors (see file CHANGES)
# Published under the GNU General Public License V.2, see file COPYING

# perform primitive simulation of a proxy server.
# accepts and answers correct HTTP CONNECT requests on stdio, and tries to
# establish the connection to the given server.
# it is required for socats test.sh
# for TCP, use this script like:
# socat TCP-L:8080,reuseaddr,fork EXEC:"proxy.sh",nofork

# 20130622  GR allow hostnames, not only IP addresses

if [ -z "$SOCAT" ]; then
    if type socat >/dev/null 2>&1; then
	SOCAT=socat
    else
	SOCAT="./socat"
    fi
fi

if   [ $(echo "x\c") = "x" ]; then E=""
elif [ $(echo -e "x\c") = "x" ]; then E="-e"
else
    echo "cannot suppress trailing newline on echo" >&2
    exit 1
fi
ECHO="echo $E"
CR=$($ECHO "\r")
#echo "CR=$($ECHO "$CR\c" |od -c)" >&2

case `uname` in
HP-UX|OSF1)
    # their cats are too stupid to work with unix domain sockets
    CAT="$SOCAT -u stdin stdout"
    ;;
*)
    CAT=cat
    ;;
esac

SPACES=" "
while [ -n "$1" ]; do
    case "$1" in
    -w) n="$2"; while [ "$n" -gt 0 ]; do SPACES="$SPACES "; n=$((n-1)); done
	shift ;;
    #-s) STAT="$2"; shift ;;
    esac
    shift
done

badrequest () {
    $ECHO "HTTP/1.0${SPACES}500 Bad Request$CR"
    $ECHO "$CR"
}

# read and parse HTTP request
read m a h
#echo "\"$m\" \"$a\" \"$h\"" >&2
if [ "$m" != 'CONNECT' ]; then
    badrequest; exit 1
fi
if [[ "$a" == [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+ ]]; then
    : go on below
elif [[ "$a" == [0-9a-zA-Z-.][0-9a-zA-Z-.]*:[0-9][0-9]* ]]; then
    : go on below
else
    badrequest; exit 1
fi

if [[ "$h" == HTTP/1.[01][[:space:]]* ]]; then
    : go on below
else
    badrequest; exit 1
fi

# read more headers until empty line
while [ "$l" != "$CR" ]; do
    read l
done

# send status
$ECHO "HTTP/1.0${SPACES}200 OK$CR"
# send empty line
$ECHO "$CR"

# perform proxy (relay) function
$SOCAT $SOCAT_OPTS - tcp:$a || {
    $ECHO "HTTP/1.0${SPACES}500 Failed to connect to $a$CR"
    $ECHO $CR
}

