blob: 415f883995d23091a74a5eb63cdbeaa1400304ba [file] [log] [blame]
Hanno Beckerf65ca322017-10-10 14:44:57 +01001#!/bin/sh
2
3set -u
4
5MBEDTLS_BASE="$(pwd)/$(dirname $0)/../../"
6TPXY_BIN="$MBEDTLS_BASE/test/udp_proxy"
7SRV_BIN="$MBEDTLS_BASE/programs/ssl/ssl_server2"
8
9: ${VERBOSE:=0}
10VERBOSE=1
11
12PARAM_SEP="^(.*)--(.*)$"
13PROXY_PARAMS=$(echo $@ | sed -n -r "s/$PARAM_SEP/\1/p")
14SERVER_PARAMS=$(echo $@ | sed -n -r "s/$PARAM_SEP/\2/p")
15
16stop_proxy() {
17 test -n "${TPXY_PID:-}" &&
18 (
19 echo "\n * Killing proxy (pid $TPXY_PID) ..."
20 kill $TPXY_PID
21 )
22}
23
24stop_server() {
25 test -n "${SRV_PID:-}" &&
26 (
27 echo "\n * Killing server (pid $SRV_PID) ..."
28 kill $SRV_PID >/dev/null 2>/dev/null
29 )
30}
31
32cleanup() {
33 stop_server
34 stop_proxy
35 return 1
36}
37
38trap cleanup INT TERM HUP
39
40DTLS_ENABLED=$(echo "$SERVER_PARAMS" | grep -v "::1" | grep "dtls=1")
41if [ -z "$DTLS_ENABLED" ]; then
42 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
52SERVER_PORT_ORIG=$(echo "$SERVER_PARAMS" | sed -n -r "s/^.*server_port=([0-9]+).*$/\1/p")
53if [ -z "$SERVER_PORT_ORIG" ]; then
54 echo " * No server port specified - exit"
55 exit 1
56fi
57
58SERVER_ADDR_ORIG=$(echo "$SERVER_PARAMS" | sed -n -r "s/^.*server_addr=([a-zA-Z0-9\.]+).*$/\1/p")
59if [ -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
89SERVER_PARAMS_NEW=$(echo $SERVER_PARAMS | sed -n -r "s/^(.*server_port=)[0-9]+(.*)$/\1$SERVER_PORT\2/p")
90SRV_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