Commit 7a2177dc authored by Yang Tse's avatar Yang Tse
Browse files

- Display curl_ssh_config when socks server fails to start.

- Capability of running socks5 tests must be based on ssh daemon version
  and not on ssh client version.
parent bf6e2f28
Loading
Loading
Loading
Loading
+41 −11
Original line number Diff line number Diff line
@@ -67,10 +67,13 @@ use Cwd;

# Variables and subs imported from sshhelp module
use sshhelp qw(
    $sshdexe
    $sshexe
    $sshconfig
    $sshlog
    display_sshconfig
    display_sshlog
    find_sshd
    find_ssh
    sshversioninfo
    );
@@ -185,10 +188,10 @@ my %skipped; # skipped{reason}=counter, reasons for skip
my @teststat;   # teststat[testnum]=reason, reasons for skip
my %disabled_keywords;	# key words of tests to skip

my $sshid;      # for socks server, ssh version id
my $sshvernum;  # for socks server, ssh version number
my $sshverstr;  # for socks server, ssh version string
my $ssherror;   # for socks server, ssh version error
my $sshdid;      # for socks server, ssh daemon version id
my $sshdvernum;  # for socks server, ssh daemon version number
my $sshdverstr;  # for socks server, ssh daemon version string
my $sshderror;   # for socks server, ssh daemon version error

#######################################################################
# variables the command line options may set
@@ -1137,6 +1140,25 @@ sub runsocksserver {
        return (0,0);
    }

    # Find out ssh daemon canonical file name
    my $sshd = find_sshd();
    if(!$sshd) {
        logmsg "RUN: SOCKS server cannot find $sshdexe\n";
        $doesntrun{$pidfile} = 1;
        return (0,0);
    }

    # Find out ssh daemon version info
    ($sshdid, $sshdvernum, $sshdverstr, $sshderror) = sshversioninfo($sshd);
    if(!$sshdid) {
        # Not an OpenSSH or SunSSH ssh daemon
        logmsg "$sshderror\n" if($verbose);
        logmsg "SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later\n";
        $doesntrun{$pidfile} = 1;
        return (0,0);
    }
    logmsg "ssh server found $sshd is $sshdverstr" if($verbose);

    # Find out ssh client canonical file name
    my $ssh = find_ssh();
    if(!$ssh) {
@@ -1146,7 +1168,7 @@ sub runsocksserver {
    }

    # Find out ssh client version info
    ($sshid, $sshvernum, $sshverstr, $ssherror) = sshversioninfo($ssh);
    my ($sshid, $sshvernum, $sshverstr, $ssherror) = sshversioninfo($ssh);
    if(!$sshid) {
        # Not an OpenSSH or SunSSH ssh client
        logmsg "$ssherror\n" if($verbose);
@@ -1165,6 +1187,13 @@ sub runsocksserver {
    }
    logmsg "ssh client found $ssh is $sshverstr\n" if($verbose);

    # Verify if ssh client and ssh daemon versions match
    if(($sshdid ne $sshid) || ($sshdvernum != $sshvernum)) {
        # Our test harness works with mismatched versions
        logmsg "Warning: ssh server and client versions do not match\n"
            if($verbose);
    }

    # Config file options for ssh client are previously set from sshserver.pl
    if(! -e $sshconfig) {
        logmsg "RUN: SOCKS server cannot find $sshconfig\n";
@@ -1182,6 +1211,7 @@ sub runsocksserver {
        # it is NOT alive
        logmsg "RUN: failed to start the SOCKS server\n";
        display_sshlog();
        display_sshconfig();
        stopserver("$pid2");
        $doesntrun{$pidfile} = 1;
        return (0,0);
@@ -2476,19 +2506,19 @@ sub startservers {
                }
            }
            if($what eq "socks5") {
                if(!$sshid) {
                    # Not an OpenSSH or SunSSH ssh client
                if(!$sshdid) {
                    # Not an OpenSSH or SunSSH ssh daemon
                    logmsg "Not OpenSSH or SunSSH; socks5 tests need at least OpenSSH 3.7\n";
                    return "failed starting socks5 server";
                }
                elsif(($sshid =~ /OpenSSH/) && ($sshvernum < 370)) {
                elsif(($sshdid =~ /OpenSSH/) && ($sshdvernum < 370)) {
                    # Need OpenSSH 3.7 for socks5 - http://www.openssh.com/txt/release-3.7
                    logmsg "$sshverstr insufficient; socks5 tests need at least OpenSSH 3.7\n";
                    logmsg "$sshdverstr insufficient; socks5 tests need at least OpenSSH 3.7\n";
                    return "failed starting socks5 server";
                }
                elsif(($sshid =~ /SunSSH/)  && ($sshvernum < 100)) {
                elsif(($sshdid =~ /SunSSH/)  && ($sshdvernum < 100)) {
                    # Need SunSSH 1.0 for socks5
                    logmsg "$sshverstr insufficient; socks5 tests need at least SunSSH 1.0\n";
                    logmsg "$sshdverstr insufficient; socks5 tests need at least SunSSH 1.0\n";
                    return "failed starting socks5 server";
                }
            }