Hanno Becker | f65ca32 | 2017-10-10 14:44:57 +0100 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | set -u |
| 4 | |
Hanno Becker | 22829e9 | 2017-10-23 15:28:55 +0100 | [diff] [blame^] | 5 | MBEDTLS_BASE="$(dirname -- "$0")/../.." |
| 6 | TPXY_BIN="$MBEDTLS_BASE/programs/test/udp_proxy" |
Hanno Becker | f65ca32 | 2017-10-10 14:44:57 +0100 | [diff] [blame] | 7 | SRV_BIN="$MBEDTLS_BASE/programs/ssl/ssl_server2" |
| 8 | |
| 9 | : ${VERBOSE:=0} |
Hanno Becker | 22829e9 | 2017-10-23 15:28:55 +0100 | [diff] [blame^] | 10 | FULL_PARAMS=$* |
| 11 | PROXY_PARAMS=${FULL_PARAMS%%" -- "*} |
| 12 | SERVER_PARAMS=${FULL_PARAMS#*" -- "} |
Hanno Becker | f65ca32 | 2017-10-10 14:44:57 +0100 | [diff] [blame] | 13 | |
| 14 | stop_proxy() { |
| 15 | test -n "${TPXY_PID:-}" && |
| 16 | ( |
| 17 | echo "\n * Killing proxy (pid $TPXY_PID) ..." |
| 18 | kill $TPXY_PID |
| 19 | ) |
| 20 | } |
| 21 | |
| 22 | stop_server() { |
| 23 | test -n "${SRV_PID:-}" && |
| 24 | ( |
| 25 | echo "\n * Killing server (pid $SRV_PID) ..." |
| 26 | kill $SRV_PID >/dev/null 2>/dev/null |
| 27 | ) |
| 28 | } |
| 29 | |
| 30 | cleanup() { |
| 31 | stop_server |
| 32 | stop_proxy |
| 33 | return 1 |
| 34 | } |
| 35 | |
| 36 | trap cleanup INT TERM HUP |
| 37 | |
| 38 | DTLS_ENABLED=$(echo "$SERVER_PARAMS" | grep -v "::1" | grep "dtls=1") |
| 39 | if [ -z "$DTLS_ENABLED" ]; then |
| 40 | echo " * Couldn't find DTLS enabling, or IPv6 is in use - immediate fallback to server application..." |
| 41 | if [ $VERBOSE -gt 0 ]; then |
| 42 | echo "[ $SRV_BIN $SERVER_PARAMS ]" |
| 43 | fi |
| 44 | $SRV_BIN $SERVER_PARAMS >&1 2>&1 & |
| 45 | SRV_PID=$! |
| 46 | wait $SRV_PID |
| 47 | exit 0 |
| 48 | fi |
| 49 | |
Hanno Becker | 22829e9 | 2017-10-23 15:28:55 +0100 | [diff] [blame^] | 50 | SERVER_PORT_ORIG=$(echo "$SERVER_PARAMS" | sed -n "s/^.*server_port=\([0-9]*\).*$/\1/p") |
Hanno Becker | f65ca32 | 2017-10-10 14:44:57 +0100 | [diff] [blame] | 51 | if [ -z "$SERVER_PORT_ORIG" ]; then |
| 52 | echo " * No server port specified - exit" |
| 53 | exit 1 |
| 54 | fi |
| 55 | |
Hanno Becker | 22829e9 | 2017-10-23 15:28:55 +0100 | [diff] [blame^] | 56 | SERVER_ADDR_ORIG=$(echo "$SERVER_PARAMS" | sed -n "s/^.*server_addr=\([a-zA-Z0-9\.]*\).*$/\1/p") |
Hanno Becker | f65ca32 | 2017-10-10 14:44:57 +0100 | [diff] [blame] | 57 | if [ -z "$SERVER_ADDR_ORIG" ]; then |
| 58 | echo " * No server address specified - exit" |
| 59 | exit 1 |
| 60 | fi |
| 61 | |
| 62 | echo " * Server address: $SERVER_ADDR_ORIG" |
| 63 | echo " * Server port: $SERVER_PORT_ORIG" |
| 64 | |
| 65 | SERVER_PORT=$(( $SERVER_PORT_ORIG + 1 )) |
| 66 | echo " * Intermediate port: $SERVER_PORT" |
| 67 | |
| 68 | TPXY_CMD=\ |
| 69 | "$TPXY_BIN $PROXY_PARAMS "\ |
| 70 | "listen_port=$SERVER_PORT_ORIG "\ |
| 71 | "server_port=$SERVER_PORT "\ |
| 72 | "server_addr=$SERVER_ADDR_ORIG "\ |
| 73 | "listen_addr=$SERVER_ADDR_ORIG" |
| 74 | |
| 75 | echo " * Start proxy in background ..." |
| 76 | if [ $VERBOSE -gt 0 ]; then |
| 77 | echo "[ $TPXY_CMD ]" |
| 78 | fi |
| 79 | |
| 80 | $TPXY_CMD >/dev/null 2>&1 & |
| 81 | TPXY_PID=$! |
| 82 | |
| 83 | if [ $VERBOSE -gt 0 ]; then |
| 84 | echo " * Proxy ID: $TPXY_PID" |
| 85 | fi |
| 86 | |
Hanno Becker | 22829e9 | 2017-10-23 15:28:55 +0100 | [diff] [blame^] | 87 | SERVER_PARAMS_NEW=$(echo "$SERVER_PARAMS" | sed -n "s/^\(.*server_port=\)[0-9]*\(.*\)$/\1$SERVER_PORT\2/p") |
Hanno Becker | f65ca32 | 2017-10-10 14:44:57 +0100 | [diff] [blame] | 88 | SRV_CMD="$SRV_BIN $SERVER_PARAMS_NEW" |
| 89 | |
| 90 | echo " * Starting server ..." |
| 91 | if [ $VERBOSE -gt 0 ]; then |
| 92 | echo "[ $SRV_CMD ]" |
| 93 | fi |
| 94 | |
| 95 | $SRV_CMD >&2 & |
| 96 | SRV_PID=$! |
| 97 | |
| 98 | wait $SRV_PID |
| 99 | |
| 100 | stop_proxy |
| 101 | return 0 |