108 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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 "<HTML>"`
 | 
						|
	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
 | 
						|
 |