gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [gnurl] 71/219: test: make tests and test scripts use socks


From: gnunet
Subject: [GNUnet-SVN] [gnurl] 71/219: test: make tests and test scripts use socksd for SOCKS
Date: Wed, 22 May 2019 19:16:50 +0200

This is an automated email from the git hooks/post-receive script.

ng0 pushed a commit to branch master
in repository gnurl.

commit 54c784556e3579c24de9cc79e435e8bbaa4f6c81
Author: Daniel Stenberg <address@hidden>
AuthorDate: Mon Apr 8 19:43:48 2019 +0200

    test: make tests and test scripts use socksd for SOCKS
    
    Make all SOCKS tests use socksd instead of ssh.
---
 tests/data/Makefile.inc |   2 +-
 tests/data/test702      |   4 ++
 tests/data/test703      |   4 ++
 tests/data/test711      |   3 +-
 tests/data/test716      |  44 +++++++++++++++
 tests/data/test717      |  65 ++++++++++++++++++++++
 tests/getpart.pm        |   2 +-
 tests/runtests.pl       | 142 ++++++++----------------------------------------
 tests/sshserver.pl      |  25 +++------
 9 files changed, 149 insertions(+), 142 deletions(-)

diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
index a8c211191..35eaccef9 100644
--- a/tests/data/Makefile.inc
+++ b/tests/data/Makefile.inc
@@ -86,7 +86,7 @@ test643 test644 test645 test646 test647 test648 test649 
test650 test651 \
 test652 test653 test654 test655 test656 test658 test659 \
 \
 test700 test701 test702 test703 test704 test705 test706 test707 test708 \
-test709 test710 test711 test712 test713 test714 test715 \
+test709 test710 test711 test712 test713 test714 test715 test716 test717 \
 \
 test800 test801 test802 test803 test804 test805 test806 test807 test808 \
 test809 test810 test811 test812 test813 test814 test815 test816 test817 \
diff --git a/tests/data/test702 b/tests/data/test702
index 36af71328..9fc954a02 100644
--- a/tests/data/test702
+++ b/tests/data/test702
@@ -12,6 +12,10 @@ FAILURE
 <reply>
 <data>
 </data>
+# 91 is socks4 failure
+<servercmd>
+response 91
+</servercmd>
 </reply>
 
 # Client-side
diff --git a/tests/data/test703 b/tests/data/test703
index 4aa89b46a..3c0fb314d 100644
--- a/tests/data/test703
+++ b/tests/data/test703
@@ -12,6 +12,10 @@ FAILURE
 <reply>
 <data>
 </data>
+# 1 is socks5 failure
+<servercmd>
+response 1
+</servercmd>
 </reply>
 
 # Client-side
diff --git a/tests/data/test711 b/tests/data/test711
index 6e9a2a262..3efbb7977 100644
--- a/tests/data/test711
+++ b/tests/data/test711
@@ -16,7 +16,6 @@ all_proxy
 silly content
 </data>
 <servercmd>
-backendport passthru
 </servercmd>
 </reply>
 
@@ -28,7 +27,7 @@ ftp
 socks5
 </server>
 <setenv>
-all_proxy=socks5://%HOSTIP:%SOCKSPORT 
+all_proxy=socks5://%HOSTIP:%SOCKSPORT
 </setenv>
  <name>
 FTP fetch with all_proxy set to socks5
diff --git a/tests/data/test716 b/tests/data/test716
new file mode 100644
index 000000000..db61dcb39
--- /dev/null
+++ b/tests/data/test716
@@ -0,0 +1,44 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+SOCKS5
+all_proxy
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+# method 2 is SOCKS5 asking for user+password
+<servercmd>
+method 2
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+socks5
+</server>
+<features>
+http
+</features>
+<name>
+SOCKS5 proxy with too long user name
+</name>
+
+# it should never connect to the target server
+ <command>
+http://hohoho.example.com:99/716 -x 
socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:address@hidden:%SOCKSPORT
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<errorcode>
+43
+</errorcode>
+</verify>
+</testcase>
diff --git a/tests/data/test717 b/tests/data/test717
new file mode 100644
index 000000000..35392443e
--- /dev/null
+++ b/tests/data/test717
@@ -0,0 +1,65 @@
+<testcase>
+<info>
+<keywords>
+HTTP
+SOCKS5
+all_proxy
+</keywords>
+</info>
+#
+# Server-side
+<reply>
+<data>
+HTTP/1.1 200 OK
+Date: Thu, 09 Nov 2010 14:49:00 GMT
+Server: test-server/fake
+Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT
+ETag: "21025-dc7-39462498"
+Accept-Ranges: bytes
+Content-Length: 6
+Connection: close
+Content-Type: text/html
+Funny-head: yesyes
+
+-foo-
+</data>
+# method 2 is SOCKS5 asking for user+password
+<servercmd>
+method 2
+user uz3r
+password p4ssworm
+backendport %HTTPPORT
+</servercmd>
+</reply>
+
+#
+# Client-side
+<client>
+<server>
+socks5
+http
+</server>
+<name>
+SOCKS5 proxy auth
+</name>
+
+# target a port that won't work without the SOCKS magic
+ <command>
+http://%HOSTIP:1/717 -x socks5://uz3r:address@hidden:%SOCKSPORT
+</command>
+</client>
+
+#
+# Verify data after the test has been "shot"
+<verify>
+<strip>
+^User-Agent:.*
+</strip>
+<protocol>
+GET /717 HTTP/1.1
+Host: %HOSTIP:1
+Accept: */*
+
+</protocol>
+</verify>
+</testcase>
diff --git a/tests/getpart.pm b/tests/getpart.pm
index 5198b5fa3..7080bf4b7 100644
--- a/tests/getpart.pm
+++ b/tests/getpart.pm
@@ -5,7 +5,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2012, Daniel Stenberg, <address@hidden>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
diff --git a/tests/runtests.pl b/tests/runtests.pl
index 1fb7354ec..e52239def 100755
--- a/tests/runtests.pl
+++ b/tests/runtests.pl
@@ -276,7 +276,7 @@ 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
 
-my $defserverlogslocktimeout = 20; # timeout to await server logs lock removal
+my $defserverlogslocktimeout = 2; # timeout to await server logs lock removal
 my $defpostcommanddelay = 0; # delay between command and postcheck sections
 
 my $timestats;   # time stamping and stats generation
@@ -2012,7 +2012,6 @@ sub runsshserver {
     my ($id, $verbose, $ipv6) = @_;
     my $ip=$HOSTIP;
     my $port = $SSHPORT;
-    my $socksport = $SOCKSPORT;
     my $proto = 'ssh';
     my $ipvnum = 4;
     my $idnum = ($id && ($id =~ /^(\d+)$/) && ($id > 1)) ? $id : 1;
@@ -2046,7 +2045,7 @@ sub runsshserver {
     $flags .= "--pidfile \"$pidfile\" ";
     $flags .= "--id $idnum " if($idnum > 1);
     $flags .= "--ipv$ipvnum --addr \"$ip\" ";
-    $flags .= "--sshport $port --socksport $socksport ";
+    $flags .= "--sshport $port ";
     $flags .= "--user \"$USER\"";
 
     my $cmd = "$perl $srcdir/sshserver.pl $flags";
@@ -2139,108 +2138,27 @@ sub runsocksserver {
 
     $logfile = server_logfilename($LOGDIR, $proto, $ipvnum, $idnum);
 
-    # The ssh server must be already running
-    if(!$run{'ssh'}) {
-        logmsg "RUN: SOCKS server cannot find running SSH server\n";
-        $doesntrun{$pidfile} = 1;
-        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\n" if($verbose);
-
-    # Find out ssh client canonical file name
-    my $ssh = find_ssh();
-    if(!$ssh) {
-        logmsg "RUN: SOCKS server cannot find $sshexe\n";
-        $doesntrun{$pidfile} = 1;
-        return (0,0);
-    }
-
-    # Find out ssh client version info
-    my ($sshid, $sshvernum, $sshverstr, $ssherror) = sshversioninfo($ssh);
-    if(!$sshid) {
-        # Not an OpenSSH or SunSSH ssh client
-        logmsg "$ssherror\n" if($verbose);
-        logmsg "SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later\n";
-        $doesntrun{$pidfile} = 1;
-        return (0,0);
-    }
-
-    # Verify minimum ssh client version
-    if((($sshid =~ /OpenSSH/) && ($sshvernum < 299)) ||
-       (($sshid =~ /SunSSH/)  && ($sshvernum < 100))) {
-        logmsg "ssh client found $ssh is $sshverstr\n";
-        logmsg "SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later\n";
-        $doesntrun{$pidfile} = 1;
-        return (0,0);
-    }
-    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 might work with slightly mismatched versions
-        logmsg "Warning: version mismatch: sshd $sshdverstr - ssh $sshverstr\n"
-            if($verbose);
-    }
+    # start our socks server, get commands from the FTP cmd file
+    my $cmd="$srcdir/server/socksd".
+        " --port $port ".
+        " --pidfile $pidfile".
+        " --backend $HOSTIP".
+        " --config $FTPDCMD";
+    my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0);
 
-    # Config file options for ssh client are previously set from sshserver.pl
-    if(! -e $sshconfig) {
-        logmsg "RUN: SOCKS server cannot find $sshconfig\n";
-        $doesntrun{$pidfile} = 1;
-        return (0,0);
-    }
-
-    $sshlog  = server_logfilename($LOGDIR, 'socks', $ipvnum, $idnum);
-
-    # start our socks server
-    my $cmd="\"$ssh\" -N -F $sshconfig $ip > $sshlog 2>&1";
-    my ($sshpid, $pid2) = startnew($cmd, $pidfile, 30, 1); # fake pidfile
-
-    if($sshpid <= 0 || !pidexists($sshpid)) {
+    if($sockspid <= 0 || !pidexists($sockspid)) {
         # it is NOT alive
         logmsg "RUN: failed to start the $srvrname server\n";
-        display_sshlog();
-        display_sshconfig();
-        display_sshdlog();
-        display_sshdconfig();
         stopserver($server, "$pid2");
         $doesntrun{$pidfile} = 1;
         return (0,0);
     }
 
-    # Ugly hack but ssh doesn't support pid files. PID is from fake pidfile.
-    my $pid3 = verifyserver($proto, $ipvnum, $idnum, $ip, $port);
-    if(!$pid3) {
-        logmsg "RUN: $srvrname server failed verification\n";
-        # failed to talk to it properly. Kill the server and return failure
-        stopserver($server, "$sshpid $pid2");
-        $doesntrun{$pidfile} = 1;
-        return (0,0);
-    }
-    $pid2 = $pid3;
-
     if($verbose) {
         logmsg "RUN: $srvrname server is now running PID $pid2\n";
     }
 
-    return ($pid2, $sshpid);
+    return ($pid2, $sockspid);
 }
 
 #######################################################################
@@ -3642,6 +3560,7 @@ sub singletest {
                         }
                     }
                     $ENV{$var} = "$content";
+                    print "setenv $var = $content\n" if($verbose);
                 }
             }
         }
@@ -3757,7 +3676,7 @@ sub singletest {
     }
 
     # if this section exists, it might be FTP server instructions:
-    my @ftpservercmd = getpart("reply", "servercmd");
+    my @ftpservercmd = fixarray ( getpart("reply", "servercmd") );
 
     my $CURLOUT="$LOGDIR/curl$testnum.out"; # curl output if not stdout
 
@@ -4974,7 +4893,7 @@ sub startservers {
                 $run{'tftp-ipv6'}="$pid $pid2";
             }
         }
-        elsif($what eq "sftp" || $what eq "scp" || $what eq "socks4" || $what 
eq "socks5" ) {
+        elsif($what eq "sftp" || $what eq "scp") {
             if(!$run{'ssh'}) {
                 ($pid, $pid2) = runsshserver("", $verbose);
                 if($pid <= 0) {
@@ -4983,32 +4902,15 @@ sub startservers {
                 printf ("* pid ssh => %d %d\n", $pid, $pid2) if($verbose);
                 $run{'ssh'}="$pid $pid2";
             }
-            if($what eq "socks4" || $what eq "socks5") {
-                if(!$run{'socks'}) {
-                    ($pid, $pid2) = runsocksserver("", $verbose);
-                    if($pid <= 0) {
-                        return "failed starting socks server";
-                    }
-                    printf ("* pid socks => %d %d\n", $pid, $pid2) 
if($verbose);
-                    $run{'socks'}="$pid $pid2";
-                }
-            }
-            if($what eq "socks5") {
-                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(($sshdid =~ /OpenSSH/) && ($sshdvernum < 370)) {
-                    # Need OpenSSH 3.7 for socks5 - 
https://www.openssh.com/txt/release-3.7
-                    logmsg "$sshdverstr insufficient; socks5 tests need at 
least OpenSSH 3.7\n";
-                    return "failed starting socks5 server";
-                }
-                elsif(($sshdid =~ /SunSSH/)  && ($sshdvernum < 100)) {
-                    # Need SunSSH 1.0 for socks5
-                    logmsg "$sshdverstr insufficient; socks5 tests need at 
least SunSSH 1.0\n";
-                    return "failed starting socks5 server";
+        }
+        elsif($what eq "socks4" || $what eq "socks5" ) {
+            if(!$run{'socks'}) {
+                ($pid, $pid2) = runsocksserver("", $verbose);
+                if($pid <= 0) {
+                    return "failed starting socks server";
                 }
+                printf ("* pid socks => %d %d\n", $pid, $pid2) if($verbose);
+                $run{'socks'}="$pid $pid2";
             }
         }
         elsif($what eq "http-unix") {
diff --git a/tests/sshserver.pl b/tests/sshserver.pl
index 9b3d122fd..428535ece 100755
--- a/tests/sshserver.pl
+++ b/tests/sshserver.pl
@@ -6,7 +6,7 @@
 #                            | (__| |_| |  _ <| |___
 #                             \___|\___/|_| \_\_____|
 #
-# Copyright (C) 1998 - 2014, Daniel Stenberg, <address@hidden>, et al.
+# Copyright (C) 1998 - 2019, Daniel Stenberg, <address@hidden>, et al.
 #
 # This software is licensed as described in the file COPYING, which
 # you should have received as part of this distribution. The terms
@@ -21,7 +21,7 @@
 #
 #***************************************************************************
 
-# Starts sshd for use in the SCP, SFTP and SOCKS curl test harness tests.
+# Starts sshd for use in the SCP and SFTP curl test harness tests.
 # Also creates the ssh configuration files needed for these tests.
 
 use strict;
@@ -81,7 +81,6 @@ use pathhelp;
 my $verbose = 0;              # set to 1 for debugging
 my $debugprotocol = 0;        # set to 1 for protocol debugging
 my $port = 8999;              # our default SCP/SFTP server port
-my $socksport = $port + 1;    # our default SOCKS4/5 server port
 my $listenaddr = '127.0.0.1'; # default address on which to listen
 my $ipvnum = 4;               # default IP version of listener address
 my $idnum = 1;                # default ssh daemon instance number
@@ -157,14 +156,6 @@ while(@ARGV) {
             }
         }
     }
-    elsif($ARGV[0] eq '--socksport') {
-        if($ARGV[1]) {
-            if($ARGV[1] =~ /^(\d+)$/) {
-                $socksport = $1;
-                shift @ARGV;
-            }
-        }
-    }
     else {
         print STDERR "\nWarning: sshserver.pl unknown parameter: $ARGV[0]\n";
     }
@@ -181,11 +172,10 @@ if(!$pidfile) {
 
 
 #***************************************************************************
-# ssh, socks and sftp server log file names
+# ssh and sftp server log file names
 #
 $sshdlog = server_logfilename($logdir, 'ssh', $ipvnum, $idnum);
 $sftplog = server_logfilename($logdir, 'sftp', $ipvnum, $idnum);
-$sshlog  = server_logfilename($logdir, 'socks', $ipvnum, $idnum);
 
 
 #***************************************************************************
@@ -226,7 +216,7 @@ my ($sshdid, $sshdvernum, $sshdverstr, $sshderror) = 
sshversioninfo($sshd);
 if(!$sshdid) {
     # Not an OpenSSH or SunSSH ssh daemon
     logmsg $sshderror if($verbose);
-    logmsg 'SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later';
+    logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later';
     exit 1;
 }
 logmsg "ssh server found $sshd is $sshdverstr" if($verbose);
@@ -255,7 +245,7 @@ logmsg "ssh server found $sshd is $sshdverstr" if($verbose);
 #
 if((($sshdid =~ /OpenSSH/) && ($sshdvernum < 299)) ||
    (($sshdid =~ /SunSSH/)  && ($sshdvernum < 100))) {
-    logmsg 'SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later';
+    logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later';
     exit 1;
 }
 
@@ -310,7 +300,7 @@ my ($sshid, $sshvernum, $sshverstr, $ssherror) = 
sshversioninfo($ssh);
 if(!$sshid) {
     # Not an OpenSSH or SunSSH ssh client
     logmsg $ssherror if($verbose);
-    logmsg 'SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later';
+    logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later';
     exit 1;
 }
 logmsg "ssh client found $ssh is $sshverstr" if($verbose);
@@ -341,7 +331,7 @@ logmsg "ssh client found $ssh is $sshverstr" if($verbose);
 #
 if((($sshid =~ /OpenSSH/) && ($sshvernum < 299)) ||
    (($sshid =~ /SunSSH/)  && ($sshvernum < 100))) {
-    logmsg 'SCP, SFTP and SOCKS tests require OpenSSH 2.9.9 or later';
+    logmsg 'SCP and SFTP tests require OpenSSH 2.9.9 or later';
     exit 1;
 }
 
@@ -864,7 +854,6 @@ push @cfgarr, "User $username";
 push @cfgarr, 'Protocol 2';
 push @cfgarr, '#';
 push @cfgarr, "BindAddress $listenaddr";
-push @cfgarr, "DynamicForward $socksport";
 push @cfgarr, '#';
 push @cfgarr, "IdentityFile $identity_config";
 push @cfgarr, "UserKnownHostsFile $knownhosts_config";

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]