1
0
mirror of https://github.com/moparisthebest/curl synced 2025-01-11 05:58:01 -05:00

tests: run the SOCKS test server on a dynamic port number

Closes #5266
This commit is contained in:
Daniel Stenberg 2020-04-19 23:45:15 +02:00
parent ff7a3107ed
commit bcd9813588
No known key found for this signature in database
GPG Key ID: 5CC908FDB71E12C2
2 changed files with 21 additions and 12 deletions

View File

@ -2277,7 +2277,6 @@ sub runmqttserver {
sub runsocksserver { sub runsocksserver {
my ($id, $verbose, $ipv6) = @_; my ($id, $verbose, $ipv6) = @_;
my $ip=$HOSTIP; my $ip=$HOSTIP;
my $port = $SOCKSPORT;
my $proto = 'socks'; my $proto = 'socks';
my $ipvnum = 4; my $ipvnum = 4;
my $idnum = ($id && ($id =~ /^(\d+)$/) && ($id > 1)) ? $id : 1; my $idnum = ($id && ($id =~ /^(\d+)$/) && ($id > 1)) ? $id : 1;
@ -2290,6 +2289,7 @@ sub runsocksserver {
$server = servername_id($proto, $ipvnum, $idnum); $server = servername_id($proto, $ipvnum, $idnum);
$pidfile = $serverpidfile{$server}; $pidfile = $serverpidfile{$server};
my $portfile = $serverportfile{$server};
# don't retry if the server doesn't work # don't retry if the server doesn't work
if ($doesntrun{$pidfile}) { if ($doesntrun{$pidfile}) {
@ -2308,8 +2308,9 @@ sub runsocksserver {
# start our socks server, get commands from the FTP cmd file # start our socks server, get commands from the FTP cmd file
my $cmd="server/socksd".exe_ext('SRV'). my $cmd="server/socksd".exe_ext('SRV').
" --port $port ". " --port 0 ".
" --pidfile $pidfile". " --pidfile $pidfile".
" --portfile $portfile".
" --backend $HOSTIP". " --backend $HOSTIP".
" --config $FTPDCMD"; " --config $FTPDCMD";
my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0); my ($sockspid, $pid2) = startnew($cmd, $pidfile, 30, 0);
@ -2322,11 +2323,13 @@ sub runsocksserver {
return (0,0); return (0,0);
} }
my $port = pidfromfile($portfile);
if($verbose) { if($verbose) {
logmsg "RUN: $srvrname server is now running PID $pid2\n"; logmsg "RUN: $srvrname server is now running PID $pid2\n";
} }
return ($pid2, $sockspid); return ($pid2, $sockspid, $port);
} }
####################################################################### #######################################################################
@ -3159,7 +3162,6 @@ sub checksystem {
logmsg sprintf("RTSP-IPv6/%d ", $RTSP6PORT); logmsg sprintf("RTSP-IPv6/%d ", $RTSP6PORT);
} }
logmsg sprintf("\n* SSH/%d ", $SSHPORT); logmsg sprintf("\n* SSH/%d ", $SSHPORT);
logmsg sprintf("SOCKS/%d ", $SOCKSPORT);
if($httptlssrv) { if($httptlssrv) {
logmsg sprintf("HTTPTLS/%d ", $HTTPTLSPORT); logmsg sprintf("HTTPTLS/%d ", $HTTPTLSPORT);
if($has_ipv6) { if($has_ipv6) {
@ -4883,7 +4885,7 @@ sub startservers {
} }
elsif($what eq "socks4" || $what eq "socks5" ) { elsif($what eq "socks4" || $what eq "socks5" ) {
if(!$run{'socks'}) { if(!$run{'socks'}) {
($pid, $pid2) = runsocksserver("", $verbose); ($pid, $pid2, $SOCKSPORT) = runsocksserver("", $verbose);
if($pid <= 0) { if($pid <= 0) {
return "failed starting socks server"; return "failed starting socks server";
} }
@ -5442,7 +5444,6 @@ $minport = $base; # original base port number
$HTTPSPORT = $base++; # HTTPS (stunnel) server port $HTTPSPORT = $base++; # HTTPS (stunnel) server port
$FTPSPORT = $base++; # FTPS (stunnel) server port $FTPSPORT = $base++; # FTPS (stunnel) server port
$SSHPORT = $base++; # SSH (SCP/SFTP) port $SSHPORT = $base++; # SSH (SCP/SFTP) port
$SOCKSPORT = $base++; # SOCKS port
$RTSPPORT = $base++; # RTSP server port $RTSPPORT = $base++; # RTSP server port
$RTSP6PORT = $base++; # RTSP IPv6 server port $RTSP6PORT = $base++; # RTSP IPv6 server port
$HTTPTLSPORT = $base++; # HTTP TLS (non-stunnel) server port $HTTPTLSPORT = $base++; # HTTP TLS (non-stunnel) server port

View File

@ -883,6 +883,7 @@ int main(int argc, char *argv[])
curl_socket_t msgsock = CURL_SOCKET_BAD; curl_socket_t msgsock = CURL_SOCKET_BAD;
int wrotepidfile = 0; int wrotepidfile = 0;
const char *pidname = ".socksd.pid"; const char *pidname = ".socksd.pid";
const char *portfile = NULL;
bool juggle_again; bool juggle_again;
int error; int error;
int arg = 1; int arg = 1;
@ -903,6 +904,11 @@ int main(int argc, char *argv[])
if(argc>arg) if(argc>arg)
pidname = argv[arg++]; pidname = argv[arg++];
} }
else if(!strcmp("--portfile", argv[arg])) {
arg++;
if(argc>arg)
portfile = argv[arg++];
}
else if(!strcmp("--config", argv[arg])) { else if(!strcmp("--config", argv[arg])) {
arg++; arg++;
if(argc>arg) if(argc>arg)
@ -943,12 +949,6 @@ int main(int argc, char *argv[])
if(argc>arg) { if(argc>arg) {
char *endptr; char *endptr;
unsigned long ulnum = strtoul(argv[arg], &endptr, 10); unsigned long ulnum = strtoul(argv[arg], &endptr, 10);
if((endptr != argv[arg] + strlen(argv[arg])) ||
((ulnum != 0UL) && ((ulnum < 1025UL) || (ulnum > 65535UL)))) {
fprintf(stderr, "socksd: invalid --port argument (%s)\n",
argv[arg]);
return 0;
}
port = curlx_ultous(ulnum); port = curlx_ultous(ulnum);
arg++; arg++;
} }
@ -961,6 +961,7 @@ int main(int argc, char *argv[])
" --version\n" " --version\n"
" --logfile [file]\n" " --logfile [file]\n"
" --pidfile [file]\n" " --pidfile [file]\n"
" --portfile [file]\n"
" --ipv4\n" " --ipv4\n"
" --ipv6\n" " --ipv6\n"
" --bindonly\n" " --bindonly\n"
@ -1013,6 +1014,13 @@ int main(int argc, char *argv[])
goto socks5_cleanup; goto socks5_cleanup;
} }
if(portfile) {
wrotepidfile = write_portfile(portfile, port);
if(!wrotepidfile) {
goto socks5_cleanup;
}
}
do { do {
juggle_again = incoming(sock); juggle_again = incoming(sock);
} while(juggle_again); } while(juggle_again);