diff options
author | Yang Tse <yangsita@gmail.com> | 2011-10-06 20:26:42 +0200 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2011-10-06 20:26:42 +0200 |
commit | 1958fe5745d8e7c3817108f614d319abc38a5f5f (patch) | |
tree | ac122079e53af2ca2dcce475b6567cb67b21deb0 /tests/sshhelp.pm | |
parent | f7bfdbabf2d5398f4c266eabb0992a04af661f22 (diff) | |
download | curl-1958fe5745d8e7c3817108f614d319abc38a5f5f.tar.gz |
test harness: non-stunnel https server integration overhaul
Diffstat (limited to 'tests/sshhelp.pm')
-rw-r--r-- | tests/sshhelp.pm | 117 |
1 files changed, 88 insertions, 29 deletions
diff --git a/tests/sshhelp.pm b/tests/sshhelp.pm index 493cbfed8..ced9a01d1 100644 --- a/tests/sshhelp.pm +++ b/tests/sshhelp.pm @@ -39,6 +39,7 @@ use vars qw( $sftpsrvexe $sftpexe $sshkeygenexe + $httptlssrvexe $sshdconfig $sshconfig $sftpconfig @@ -52,6 +53,7 @@ use vars qw( $cliprvkeyf $clipubkeyf @sftppath + @httptlssrvpath ); @@ -95,7 +97,7 @@ use vars qw( find_sftpsrv find_sftp find_sshkeygen - find_gnutls_serv + find_httptlssrv logmsg sshversioninfo ); @@ -104,27 +106,28 @@ use vars qw( #*************************************************************************** # Global variables initialization # -$sshdexe = 'sshd' .exe_ext(); # base name and ext of ssh daemon -$sshexe = 'ssh' .exe_ext(); # base name and ext of ssh client -$sftpsrvexe = 'sftp-server' .exe_ext(); # base name and ext of sftp-server -$sftpexe = 'sftp' .exe_ext(); # base name and ext of sftp client -$sshkeygenexe = 'ssh-keygen' .exe_ext(); # base name and ext of ssh-keygen -$sshdconfig = 'curl_sshd_config'; # ssh daemon config file -$sshconfig = 'curl_ssh_config'; # ssh client config file -$sftpconfig = 'curl_sftp_config'; # sftp client config file -$sshdlog = undef; # ssh daemon log file -$sshlog = undef; # ssh client log file -$sftplog = undef; # sftp client log file -$sftpcmds = 'curl_sftp_cmds'; # sftp client commands batch file -$knownhosts = 'curl_client_knownhosts'; # ssh knownhosts file -$hstprvkeyf = 'curl_host_dsa_key'; # host private key file -$hstpubkeyf = 'curl_host_dsa_key.pub'; # host public key file -$cliprvkeyf = 'curl_client_key'; # client private key file -$clipubkeyf = 'curl_client_key.pub'; # client public key file +$sshdexe = 'sshd' .exe_ext(); # base name and ext of ssh daemon +$sshexe = 'ssh' .exe_ext(); # base name and ext of ssh client +$sftpsrvexe = 'sftp-server' .exe_ext(); # base name and ext of sftp-server +$sftpexe = 'sftp' .exe_ext(); # base name and ext of sftp client +$sshkeygenexe = 'ssh-keygen' .exe_ext(); # base name and ext of ssh-keygen +$httptlssrvexe = 'gnutls-serv' .exe_ext(); # base name and ext of gnutls-serv +$sshdconfig = 'curl_sshd_config'; # ssh daemon config file +$sshconfig = 'curl_ssh_config'; # ssh client config file +$sftpconfig = 'curl_sftp_config'; # sftp client config file +$sshdlog = undef; # ssh daemon log file +$sshlog = undef; # ssh client log file +$sftplog = undef; # sftp client log file +$sftpcmds = 'curl_sftp_cmds'; # sftp client commands batch file +$knownhosts = 'curl_client_knownhosts'; # ssh knownhosts file +$hstprvkeyf = 'curl_host_dsa_key'; # host private key file +$hstpubkeyf = 'curl_host_dsa_key.pub'; # host public key file +$cliprvkeyf = 'curl_client_key'; # client private key file +$clipubkeyf = 'curl_client_key.pub'; # client public key file #*************************************************************************** -# Absolute paths where to look for sftp-server plugin +# Absolute paths where to look for sftp-server plugin, when not in PATH # @sftppath = qw( /usr/lib/openssh @@ -150,6 +153,30 @@ $clipubkeyf = 'curl_client_key.pub'; # client public key file #*************************************************************************** +# Absolute paths where to look for httptlssrv (gnutls-serv), when not in PATH +# +@httptlssrvpath = qw( + /usr/sbin + /usr/libexec + /usr/lib + /usr/lib/misc + /usr/lib64/misc + /usr/local/bin + /usr/local/sbin + /usr/local/libexec + /opt/local/bin + /opt/local/sbin + /opt/local/libexec + /usr/freeware/bin + /usr/freeware/sbin + /usr/freeware/libexec + /opt/gnutls/bin + /opt/gnutls/sbin + /opt/gnutls/libexec + ); + + +#*************************************************************************** # Return file extension for executable files on this operating system # sub exe_ext { @@ -273,7 +300,7 @@ sub find_file { my @path = @_; foreach (@path) { my $file = File::Spec->catfile($_, $fn); - if(-e $file) { + if(-e $file && ! -d $file) { return $file; } } @@ -281,9 +308,27 @@ sub find_file { #*************************************************************************** +# Find an executable file somewhere in the given path +# +sub find_exe_file { + my $fn = $_[0]; + shift; + my @path = @_; + my $xext = exe_ext(); + foreach (@path) { + my $file = File::Spec->catfile($_, $fn); + if(-e $file && ! -d $file) { + return $file if(-x $file); + return $file if(($xext) && (lc($file) =~ /\Q$xext\E$/)); + } + } +} + + +#*************************************************************************** # Find a file in environment path or in our sftppath # -sub find_sfile { +sub find_file_spath { my $filename = $_[0]; my @spath; push(@spath, File::Spec->path()); @@ -291,18 +336,24 @@ sub find_sfile { return find_file($filename, @spath); } + #*************************************************************************** -# Find gnutls-serv and return canonical filename +# Find an executable file in environment path or in our httptlssrvpath # -sub find_gnutls_serv { - return find_file("gnutls-serv", split(':', $ENV{PATH})); +sub find_exe_file_hpath { + my $filename = $_[0]; + my @hpath; + push(@hpath, File::Spec->path()); + push(@hpath, @httptlssrvpath); + return find_exe_file($filename, @hpath); } + #*************************************************************************** # Find ssh daemon and return canonical filename # sub find_sshd { - return find_sfile($sshdexe); + return find_file_spath($sshdexe); } @@ -310,7 +361,7 @@ sub find_sshd { # Find ssh client and return canonical filename # sub find_ssh { - return find_sfile($sshexe); + return find_file_spath($sshexe); } @@ -318,7 +369,7 @@ sub find_ssh { # Find sftp-server plugin and return canonical filename # sub find_sftpsrv { - return find_sfile($sftpsrvexe); + return find_file_spath($sftpsrvexe); } @@ -326,7 +377,7 @@ sub find_sftpsrv { # Find sftp client and return canonical filename # sub find_sftp { - return find_sfile($sftpexe); + return find_file_spath($sftpexe); } @@ -334,7 +385,15 @@ sub find_sftp { # Find ssh-keygen and return canonical filename # sub find_sshkeygen { - return find_sfile($sshkeygenexe); + return find_file_spath($sshkeygenexe); +} + + +#*************************************************************************** +# Find httptlssrv (gnutls-serv) and return canonical filename +# +sub find_httptlssrv { + return find_exe_file_hpath($httptlssrvexe); } |