blob: 987b8a4ca01ace351f54a186e7fa8f5b562d85f6 [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
Hanno Beckera677cdd2017-10-23 15:29:31 +010038DTLS_ENABLED=$(echo " $SERVER_PARAMS" | grep " dtls=1")
39IPV6_IN_USE=$(echo " $SERVER_PARAMS" | grep " server_addr=::1" )
40
41if [ -z "$DTLS_ENABLED" ] || [ -n "$IPV6_IN_USE" ]; then
Hanno Beckerf65ca322017-10-10 14:44:57 +010042 echo " * Couldn't find DTLS enabling, or IPv6 is in use - immediate fallback to server application..."
43 if [ $VERBOSE -gt 0 ]; then
44 echo "[ $SRV_BIN $SERVER_PARAMS ]"
45 fi
46 $SRV_BIN $SERVER_PARAMS >&1 2>&1 &
47 SRV_PID=$!
48 wait $SRV_PID
49 exit 0
50fi
51
Hanno Becker22829e92017-10-23 15:28:55 +010052SERVER_PORT_ORIG=$(echo "$SERVER_PARAMS" | sed -n "s/^.*server_port=\([0-9]*\).*$/\1/p")
Hanno Beckerf65ca322017-10-10 14:44:57 +010053if [ -z "$SERVER_PORT_ORIG" ]; then
54 echo " * No server port specified - exit"
55 exit 1
56fi
57
Hanno Becker22829e92017-10-23 15:28:55 +010058SERVER_ADDR_ORIG=$(echo "$SERVER_PARAMS" | sed -n "s/^.*server_addr=\([a-zA-Z0-9\.]*\).*$/\1/p")
Hanno Beckerf65ca322017-10-10 14:44:57 +010059if [ -z "$SERVER_ADDR_ORIG" ]; then
60 echo " * No server address specified - exit"
61 exit 1
62fi
63
64echo " * Server address: $SERVER_ADDR_ORIG"
65echo " * Server port: $SERVER_PORT_ORIG"
66
67SERVER_PORT=$(( $SERVER_PORT_ORIG + 1 ))
68echo " * Intermediate port: $SERVER_PORT"
69
70TPXY_CMD=\
71"$TPXY_BIN $PROXY_PARAMS "\
72"listen_port=$SERVER_PORT_ORIG "\
73"server_port=$SERVER_PORT "\
74"server_addr=$SERVER_ADDR_ORIG "\
75"listen_addr=$SERVER_ADDR_ORIG"
76
77echo " * Start proxy in background ..."
78if [ $VERBOSE -gt 0 ]; then
79 echo "[ $TPXY_CMD ]"
80fi
81
82$TPXY_CMD >/dev/null 2>&1 &
83TPXY_PID=$!
84
85if [ $VERBOSE -gt 0 ]; then
86 echo " * Proxy ID: $TPXY_PID"
87fi
88
Hanno Becker22829e92017-10-23 15:28:55 +010089SERVER_PARAMS_NEW=$(echo "$SERVER_PARAMS" | sed -n "s/^\(.*server_port=\)[0-9]*\(.*\)$/\1$SERVER_PORT\2/p")
Hanno Beckerf65ca322017-10-10 14:44:57 +010090SRV_CMD="$SRV_BIN $SERVER_PARAMS_NEW"
91
92echo " * Starting server ..."
93if [ $VERBOSE -gt 0 ]; then
94 echo "[ $SRV_CMD ]"
95fi
96
97$SRV_CMD >&2 &
98SRV_PID=$!
99
100wait $SRV_PID
101
102stop_proxy
103return 0