blob: d0a36609565c6e6b076e67899f52246219f58cf4 [file] [log] [blame]
Hanno Beckerf65ca322017-10-10 14:44:57 +01001#!/bin/sh
2
3set -u
4
Hanno Becker22829e92017-10-23 15:28:55 +01005MBEDTLS_BASE="$(dirname -- "$0")/../.."
6TPXY_BIN="$MBEDTLS_BASE/programs/test/udp_proxy"
Hanno Beckerf65ca322017-10-10 14:44:57 +01007SRV_BIN="$MBEDTLS_BASE/programs/ssl/ssl_server2"
8
9: ${VERBOSE:=0}
Hanno Becker22829e92017-10-23 15:28:55 +010010FULL_PARAMS=$*
11PROXY_PARAMS=${FULL_PARAMS%%" -- "*}
12SERVER_PARAMS=${FULL_PARAMS#*" -- "}
Hanno Beckerf65ca322017-10-10 14:44:57 +010013
14stop_proxy() {
15 test -n "${TPXY_PID:-}" &&
16 (
17 echo "\n * Killing proxy (pid $TPXY_PID) ..."
18 kill $TPXY_PID
19 )
20}
21
22stop_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
30cleanup() {
31 stop_server
32 stop_proxy
33 return 1
34}
35
36trap cleanup INT TERM HUP
37
38DTLS_ENABLED=$(echo "$SERVER_PARAMS" | grep -v "::1" | grep "dtls=1")
39if [ -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
48fi
49
Hanno Becker22829e92017-10-23 15:28:55 +010050SERVER_PORT_ORIG=$(echo "$SERVER_PARAMS" | sed -n "s/^.*server_port=\([0-9]*\).*$/\1/p")
Hanno Beckerf65ca322017-10-10 14:44:57 +010051if [ -z "$SERVER_PORT_ORIG" ]; then
52 echo " * No server port specified - exit"
53 exit 1
54fi
55
Hanno Becker22829e92017-10-23 15:28:55 +010056SERVER_ADDR_ORIG=$(echo "$SERVER_PARAMS" | sed -n "s/^.*server_addr=\([a-zA-Z0-9\.]*\).*$/\1/p")
Hanno Beckerf65ca322017-10-10 14:44:57 +010057if [ -z "$SERVER_ADDR_ORIG" ]; then
58 echo " * No server address specified - exit"
59 exit 1
60fi
61
62echo " * Server address: $SERVER_ADDR_ORIG"
63echo " * Server port: $SERVER_PORT_ORIG"
64
65SERVER_PORT=$(( $SERVER_PORT_ORIG + 1 ))
66echo " * Intermediate port: $SERVER_PORT"
67
68TPXY_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
75echo " * Start proxy in background ..."
76if [ $VERBOSE -gt 0 ]; then
77 echo "[ $TPXY_CMD ]"
78fi
79
80$TPXY_CMD >/dev/null 2>&1 &
81TPXY_PID=$!
82
83if [ $VERBOSE -gt 0 ]; then
84 echo " * Proxy ID: $TPXY_PID"
85fi
86
Hanno Becker22829e92017-10-23 15:28:55 +010087SERVER_PARAMS_NEW=$(echo "$SERVER_PARAMS" | sed -n "s/^\(.*server_port=\)[0-9]*\(.*\)$/\1$SERVER_PORT\2/p")
Hanno Beckerf65ca322017-10-10 14:44:57 +010088SRV_CMD="$SRV_BIN $SERVER_PARAMS_NEW"
89
90echo " * Starting server ..."
91if [ $VERBOSE -gt 0 ]; then
92 echo "[ $SRV_CMD ]"
93fi
94
95$SRV_CMD >&2 &
96SRV_PID=$!
97
98wait $SRV_PID
99
100stop_proxy
101return 0