writeout: -w now supports remote_ip/port and local_ip/port
Added mention to the curl.1 man page. Test case 1223 verifies remote_ip/port.
This commit is contained in:
parent
0b3180b4f5
commit
65e8ba8e1d
14
docs/curl.1
14
docs/curl.1
@ -1524,6 +1524,13 @@ same info.
|
|||||||
The numerical code that was found in the last response (from a proxy) to a
|
The numerical code that was found in the last response (from a proxy) to a
|
||||||
curl CONNECT request. (Added in 7.12.4)
|
curl CONNECT request. (Added in 7.12.4)
|
||||||
.TP
|
.TP
|
||||||
|
.B local_ip
|
||||||
|
The IP address of the local end of the most recently done connection - can be
|
||||||
|
either IPv4 or IPv6 (Added in 7.29.0)
|
||||||
|
.TP
|
||||||
|
.B local_port
|
||||||
|
The local port number of the most recently done connection (Added in 7.29.0)
|
||||||
|
.TP
|
||||||
.B num_connects
|
.B num_connects
|
||||||
Number of new connects made in the recent transfer. (Added in 7.12.3)
|
Number of new connects made in the recent transfer. (Added in 7.12.3)
|
||||||
.TP
|
.TP
|
||||||
@ -1534,6 +1541,13 @@ Number of redirects that were followed in the request. (Added in 7.12.3)
|
|||||||
When an HTTP request was made without -L to follow redirects, this variable
|
When an HTTP request was made without -L to follow redirects, this variable
|
||||||
will show the actual URL a redirect \fIwould\fP take you to. (Added in 7.18.2)
|
will show the actual URL a redirect \fIwould\fP take you to. (Added in 7.18.2)
|
||||||
.TP
|
.TP
|
||||||
|
.B remote_ip
|
||||||
|
The remote IP address of the most recently done connection - can be either
|
||||||
|
IPv4 or IPv6 (Added in 7.29.0)
|
||||||
|
.TP
|
||||||
|
.B remote_port
|
||||||
|
The remote port number of the most recently done connection (Added in 7.29.0)
|
||||||
|
.TP
|
||||||
.B size_download
|
.B size_download
|
||||||
The total amount of bytes that were downloaded.
|
The total amount of bytes that were downloaded.
|
||||||
.TP
|
.TP
|
||||||
|
@ -54,6 +54,10 @@ typedef enum {
|
|||||||
VAR_REDIRECT_URL,
|
VAR_REDIRECT_URL,
|
||||||
VAR_SSL_VERIFY_RESULT,
|
VAR_SSL_VERIFY_RESULT,
|
||||||
VAR_EFFECTIVE_FILENAME,
|
VAR_EFFECTIVE_FILENAME,
|
||||||
|
VAR_PRIMARY_IP,
|
||||||
|
VAR_PRIMARY_PORT,
|
||||||
|
VAR_LOCAL_IP,
|
||||||
|
VAR_LOCAL_PORT,
|
||||||
VAR_NUM_OF_VARS /* must be the last */
|
VAR_NUM_OF_VARS /* must be the last */
|
||||||
} replaceid;
|
} replaceid;
|
||||||
|
|
||||||
@ -88,6 +92,10 @@ static const struct variable replacements[]={
|
|||||||
{"redirect_url", VAR_REDIRECT_URL},
|
{"redirect_url", VAR_REDIRECT_URL},
|
||||||
{"ssl_verify_result", VAR_SSL_VERIFY_RESULT},
|
{"ssl_verify_result", VAR_SSL_VERIFY_RESULT},
|
||||||
{"filename_effective", VAR_EFFECTIVE_FILENAME},
|
{"filename_effective", VAR_EFFECTIVE_FILENAME},
|
||||||
|
{"remote_ip", VAR_PRIMARY_IP},
|
||||||
|
{"remote_port", VAR_PRIMARY_PORT},
|
||||||
|
{"local_ip", VAR_LOCAL_IP},
|
||||||
|
{"local_port", VAR_LOCAL_PORT},
|
||||||
{NULL, VAR_NONE}
|
{NULL, VAR_NONE}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -247,6 +255,30 @@ void ourWriteOut(CURL *curl, struct OutStruct *outs, const char *writeinfo)
|
|||||||
if(outs->filename)
|
if(outs->filename)
|
||||||
fprintf(stream, "%s", outs->filename);
|
fprintf(stream, "%s", outs->filename);
|
||||||
break;
|
break;
|
||||||
|
case VAR_PRIMARY_IP:
|
||||||
|
if(CURLE_OK ==
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_PRIMARY_IP,
|
||||||
|
&stringp))
|
||||||
|
fprintf(stream, "%s", stringp);
|
||||||
|
break;
|
||||||
|
case VAR_PRIMARY_PORT:
|
||||||
|
if(CURLE_OK ==
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_PRIMARY_PORT,
|
||||||
|
&longinfo))
|
||||||
|
fprintf(stream, "%ld", longinfo);
|
||||||
|
break;
|
||||||
|
case VAR_LOCAL_IP:
|
||||||
|
if(CURLE_OK ==
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_LOCAL_IP,
|
||||||
|
&stringp))
|
||||||
|
fprintf(stream, "%s", stringp);
|
||||||
|
break;
|
||||||
|
case VAR_LOCAL_PORT:
|
||||||
|
if(CURLE_OK ==
|
||||||
|
curl_easy_getinfo(curl, CURLINFO_LOCAL_PORT,
|
||||||
|
&longinfo))
|
||||||
|
fprintf(stream, "%ld", longinfo);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ test1118 test1119 test1120 test1121 test1122 test1123 test1124 test1125 \
|
|||||||
test1126 test1127 test1128 test1129 test1130 test1131 test1132 \
|
test1126 test1127 test1128 test1129 test1130 test1131 test1132 \
|
||||||
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
|
test1200 test1201 test1202 test1203 test1204 test1205 test1206 test1207 \
|
||||||
test1208 test1209 test1210 test1211 \
|
test1208 test1209 test1210 test1211 \
|
||||||
test1220 test1221 test1222 \
|
test1220 test1221 test1222 test1223 \
|
||||||
test1300 test1301 test1302 test1303 test1304 test1305 \
|
test1300 test1301 test1302 test1303 test1304 test1305 \
|
||||||
test1306 test1307 test1308 test1309 test1310 test1311 test1312 test1313 \
|
test1306 test1307 test1308 test1309 test1310 test1311 test1312 test1313 \
|
||||||
test1314 test1315 test1316 test1317 test1318 test1319 test1320 test1321 \
|
test1314 test1315 test1316 test1317 test1318 test1319 test1320 test1321 \
|
||||||
|
60
tests/data/test1223
Normal file
60
tests/data/test1223
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
<testcase>
|
||||||
|
<info>
|
||||||
|
<keywords>
|
||||||
|
HTTP
|
||||||
|
HTTP GET
|
||||||
|
</keywords>
|
||||||
|
</info>
|
||||||
|
|
||||||
|
#
|
||||||
|
# disable data check since it gets sent to stdout and is verified there
|
||||||
|
<reply>
|
||||||
|
<data nocheck="yes">
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 09 Nov 2010 14:49:00 GMT
|
||||||
|
Content-Length: 4
|
||||||
|
Connection: close
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
hej
|
||||||
|
</data>
|
||||||
|
</reply>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Client-side
|
||||||
|
<client>
|
||||||
|
<server>
|
||||||
|
http
|
||||||
|
</server>
|
||||||
|
<name>
|
||||||
|
HTTP GET -w remote_ip and -w remote_port
|
||||||
|
</name>
|
||||||
|
<command>
|
||||||
|
http://%HOSTIP:%HTTPPORT/1223 -w 'IP %{remote_ip} and PORT %{remote_port}\n'
|
||||||
|
</command>
|
||||||
|
</client>
|
||||||
|
|
||||||
|
#
|
||||||
|
# Verify data after the test has been "shot"
|
||||||
|
<verify>
|
||||||
|
<strip>
|
||||||
|
^User-Agent:.*
|
||||||
|
</strip>
|
||||||
|
<protocol>
|
||||||
|
GET /1223 HTTP/1.1
|
||||||
|
Host: %HOSTIP:%HTTPPORT
|
||||||
|
Accept: */*
|
||||||
|
|
||||||
|
</protocol>
|
||||||
|
<stdout>
|
||||||
|
HTTP/1.1 200 OK
|
||||||
|
Date: Thu, 09 Nov 2010 14:49:00 GMT
|
||||||
|
Content-Length: 4
|
||||||
|
Connection: close
|
||||||
|
Content-Type: text/html
|
||||||
|
|
||||||
|
hej
|
||||||
|
IP %HOSTIP and PORT %HTTPPORT
|
||||||
|
</stdout>
|
||||||
|
</verify>
|
||||||
|
</testcase>
|
Loading…
x
Reference in New Issue
Block a user