From c27c9f80d2fef8ba0c5e0e17160a2ecc724bdd1a Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Wed, 23 Oct 2002 14:07:34 +0000 Subject: [PATCH] kromJx@crosswinds.net made it run properly with stunnel >=4.0 --- tests/ftpsserver.pl | 41 ++++++++++++++++++++++++++++++++++++----- tests/httpsserver.pl | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 71 insertions(+), 10 deletions(-) diff --git a/tests/ftpsserver.pl b/tests/ftpsserver.pl index e7a5163bd..6777682ce 100644 --- a/tests/ftpsserver.pl +++ b/tests/ftpsserver.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl # # $Id$ -# This is the HTTPS server designed for the curl test suite. +# This is the FTPS server designed for the curl test suite. # # It is actually just a layer that runs stunnel properly. @@ -23,14 +23,14 @@ if(!$stunnel) { my $verbose=0; # set to 1 for debugging -my $port = 8821; # just our default, weird enough -my $ftp = 8921; # test ftp-server port +my $port = 8821; # just our default, weird enough +my $remote_port = 8921; # test ftp-server port do { if($ARGV[0] eq "-v") { $verbose=1; } elsif($ARGV[0] eq "-r") { - $ftp=$ARGV[1]; + $remote_port=$ARGV[1]; shift @ARGV; } elsif($ARGV[0] =~ /^(\d+)$/) { @@ -40,9 +40,40 @@ do { my $path = `pwd`; chomp $path; -my $cmd = "$stunnel -p $path/stunnel.pem -P $path/.ftps.pid -d $port -r $ftp"; + +my $conffile="$path/stunnel.conf"; # stunnel configuration data +my $certfile="$path/stunnel.pem"; # stunnel server certificate +my $pidfile="$path/.ftps.pid"; # stunnel process pid file + +open(CONF, ">$conffile") || return 1; +print CONF " + CApath=$path + cert = $certfile + pid = $pidfile + debug = 0 + output = /dev/null + foreground = yes + + + [curltest] + accept = $port + connect = $remote_port +"; +close CONF; +system("chmod go-rwx $conffile $path/stunnel.pem"); # secure permissions + + # works only with stunnel versions < 4.00 +my $cmd="$stunnel -p $certfile -P $pidfile -d $port -r $remote_port 2>/dev/null"; + +# use some heuristics to determine stunnel version +my $version_ge_4=system("$stunnel -V 2>&1|grep '^stunnel.* on '>/dev/null 2>&1"); + # works only with stunnel versions >= 4.00 +if ($version_ge_4) { $cmd="$stunnel $conffile"; } if($verbose) { print "FTPS server: $cmd\n"; } + system($cmd); + +unlink $conffile; diff --git a/tests/httpsserver.pl b/tests/httpsserver.pl index bf7b6e9d4..d255d67e5 100644 --- a/tests/httpsserver.pl +++ b/tests/httpsserver.pl @@ -23,8 +23,8 @@ if(!$stunnel) { my $verbose=0; # set to 1 for debugging -my $port = 8433; # just a default -my $http = 8999; # http-port +my $port = 8433; # just our default, weird enough +my $target_port = 8999; # test http-server port do { if($ARGV[0] eq "-v") { $verbose=1; @@ -33,7 +33,7 @@ do { return 0; # return success, means we have stunnel working! } elsif($ARGV[0] eq "-r") { - $http=$ARGV[1]; + $target_port=$ARGV[1]; shift @ARGV; } elsif($ARGV[0] =~ /^(\d+)$/) { @@ -43,9 +43,39 @@ do { my $path = `pwd`; chomp $path; -my $cmd = "$stunnel -p $path/stunnel.pem -P $path/.https.pid -d $port -r $http"; + +my $conffile="$path/stunnel.conf"; # stunnel configuration data +my $certfile="$path/stunnel.pem"; # stunnel server certificate +my $pidfile="$path/.https.pid"; # stunnel process pid file + +open(CONF, ">$conffile") || return 1; +print CONF " + CApath=$path + cert = $certfile + pid = $pidfile + debug = 0 + output = /dev/null + foreground = yes + + [curltest] + accept = $port + connect = $target_port +"; +close CONF; +system("chmod go-rwx $conffile $path/stunnel.pem"); # secure permissions + + # works only with stunnel versions < 4.00 +my $cmd="$stunnel -p $certfile -P $pidfile -d $port -r $target_port 2>/dev/null"; + +# use some heuristics to determine stunnel version +my $version_ge_4=system("$stunnel -V 2>&1|grep '^stunnel.* on '>/dev/null 2>&1"); + # works only with stunnel versions >= 4.00 +if ($version_ge_4) { $cmd="$stunnel $conffile"; } if($verbose) { - print "$cmd\n"; + print "HTTPS server: $cmd\n"; } + system($cmd); + +unlink $conffile;