#!/bin/sh HTTP="localhost:8080" CLIENT_PORT="9020" SERVER_PORT="9021" sub_test () { echo "STARTING - $VER $CIPHER" ./tunala -listen localhost:$CLIENT_PORT -proxy localhost:$SERVER_PORT \ -cacert CA.pem -cert A-client.pem -server 0 \ -dh_special standard -v_peer -v_strict \ $VER -cipher $CIPHER 1> tc1.txt 2> tc2.txt & ./tunala -listen localhost:$SERVER_PORT -proxy $HTTP \ -cacert CA.pem -cert A-server.pem -server 1 \ -dh_special standard -v_peer -v_strict \ $VER -cipher $CIPHER 1> ts1.txt 2> ts2.txt & # Wait for the servers to be listening before starting the wget test DONE="no" while [ "$DONE" != "yes" ]; do L1=`netstat -a | egrep "LISTEN[\t ]*$" | grep ":$CLIENT_PORT"` L2=`netstat -a | egrep "LISTEN[\t ]*$" | grep ":$SERVER_PORT"` if [ "x$L1" != "x" ]; then DONE="yes" elif [ "x$L2" != "x" ]; then DONE="yes" else sleep 1 fi done HTML=`wget -O - -T 1 http://localhost:$CLIENT_PORT 2> /dev/null | grep ""` if [ "x$HTML" != "x" ]; then echo "OK - $CIPHER ($VER)" else echo "FAIL - $CIPHER ($VER)" killall tunala exit 1 fi killall tunala # Wait for the servers to stop before returning - otherwise the next # test my fail to start ... (fscking race conditions) DONE="yes" while [ "$DONE" != "no" ]; do L1=`netstat -a | egrep "LISTEN[\t ]*$" | grep ":$CLIENT_PORT"` L2=`netstat -a | egrep "LISTEN[\t ]*$" | grep ":$SERVER_PORT"` if [ "x$L1" != "x" ]; then DONE="yes" elif [ "x$L2" != "x" ]; then DONE="yes" else DONE="no" fi done exit 0 } run_test () { (sub_test 1> /dev/null) || exit 1 } run_ssl_test () { killall tunala 1> /dev/null 2> /dev/null echo "" echo "Starting all $PRETTY tests" if [ "$PRETTY" != "SSLv2" ]; then if [ "$PRETTY" != "SSLv3" ]; then export VER="-no_ssl2 -no_ssl3" export OSSL="-tls1" else export VER="-no_ssl2 -no_tls1" export OSSL="-ssl3" fi else export VER="-no_ssl3 -no_tls1" export OSSL="-ssl2" fi LIST="`../../apps/openssl ciphers $OSSL | sed -e 's/:/ /g'`" #echo "$LIST" for i in $LIST; do \ DSS=`echo "$i" | grep "DSS"` if [ "x$DSS" != "x" ]; then echo "---- skipping $i (no DSA cert/keys) ----" else export CIPHER=$i run_test echo "SUCCESS: $i" fi done; } # Welcome the user echo "Tests will assume an http server running at $HTTP" # TLSv1 test export PRETTY="TLSv1" run_ssl_test # SSLv3 test export PRETTY="SSLv3" run_ssl_test # SSLv2 test export PRETTY="SSLv2" run_ssl_test