diff options
Diffstat (limited to 'tests/ftpsserver.pl')
-rw-r--r-- | tests/ftpsserver.pl | 41 |
1 files changed, 36 insertions, 5 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; |