summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTon Voon <tonvoon@users.sourceforge.net>2006-04-05 07:58:29 (GMT)
committerTon Voon <tonvoon@users.sourceforge.net>2006-04-05 07:58:29 (GMT)
commit39e0ee3dcd831ddd3a7777fe55e6788825babac7 (patch)
treef71d2a7f69a7e64e005708ae77e38ea365736ed9
parentf235579d0dd75aa676465a8371d22137640a34ae (diff)
downloadmonitoring-plugins-39e0ee3dcd831ddd3a7777fe55e6788825babac7.tar.gz
Allow multiple -k parameters (Gerd Mueller - 1457726)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1367 f882894a-f735-0410-b71e-b25c423dba1c
-rw-r--r--plugins/check_http.c21
-rw-r--r--plugins/t/check_http.t12
2 files changed, 26 insertions, 7 deletions
diff --git a/plugins/check_http.c b/plugins/check_http.c
index 58cf83c..e25e5db 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -89,7 +89,8 @@ double critical_time = 0;
89int check_critical_time = FALSE; 89int check_critical_time = FALSE;
90char user_auth[MAX_INPUT_BUFFER] = ""; 90char user_auth[MAX_INPUT_BUFFER] = "";
91int display_html = FALSE; 91int display_html = FALSE;
92char *http_opt_headers; 92char **http_opt_headers;
93int http_opt_headers_count = 0;
93int onredirect = STATE_OK; 94int onredirect = STATE_OK;
94int use_ssl = FALSE; 95int use_ssl = FALSE;
95int verbose = FALSE; 96int verbose = FALSE;
@@ -245,7 +246,12 @@ process_arguments (int argc, char **argv)
245 asprintf (&user_agent, "User-Agent: %s", optarg); 246 asprintf (&user_agent, "User-Agent: %s", optarg);
246 break; 247 break;
247 case 'k': /* Additional headers */ 248 case 'k': /* Additional headers */
248 asprintf (&http_opt_headers, "%s", optarg); 249 if (http_opt_headers_count == 0)
250 http_opt_headers = malloc (sizeof (char *) * (++http_opt_headers_count));
251 else
252 http_opt_headers = realloc (http_opt_headers, sizeof (char *) * (++http_opt_headers_count));
253 http_opt_headers[http_opt_headers_count - 1] = optarg;
254 //asprintf (&http_opt_headers, "%s", optarg);
249 break; 255 break;
250 case 'L': /* show html link */ 256 case 'L': /* show html link */
251 display_html = TRUE; 257 display_html = TRUE;
@@ -767,9 +773,12 @@ check_http (void)
767 asprintf (&buf, "%sHost: %s\r\n", buf, host_name); 773 asprintf (&buf, "%sHost: %s\r\n", buf, host_name);
768 774
769 /* optionally send any other header tag */ 775 /* optionally send any other header tag */
770 if (http_opt_headers) { 776 if (http_opt_headers_count) {
771 for ((pos = strtok(http_opt_headers, INPUT_DELIMITER)); pos; (pos = strtok(NULL, INPUT_DELIMITER))) 777 for (i = 0; i < http_opt_headers_count ; i++) {
772 asprintf (&buf, "%s%s\r\n", buf, pos); 778 for ((pos = strtok(http_opt_headers[i], INPUT_DELIMITER)); pos; (pos = strtok(NULL, INPUT_DELIMITER)))
779 asprintf (&buf, "%s%s\r\n", buf, pos);
780 }
781 free(http_opt_headers);
773 } 782 }
774 783
775 /* optionally send the authentication info */ 784 /* optionally send the authentication info */
@@ -1277,7 +1286,7 @@ certificate expiration times."));
1277 -A, --useragent=STRING\n\ 1286 -A, --useragent=STRING\n\
1278 String to be sent in http header as \"User Agent\"\n\ 1287 String to be sent in http header as \"User Agent\"\n\
1279 -k, --header=STRING\n\ 1288 -k, --header=STRING\n\
1280 Any other tags to be sent in http header, separated by semicolon\n\ 1289 Any other tags to be sent in http header. Use multiple times for additional headers\n\
1281 -L, --link=URL\n\ 1290 -L, --link=URL\n\
1282 Wrap output in HTML link (obsoleted by urlize)\n\ 1291 Wrap output in HTML link (obsoleted by urlize)\n\
1283 -f, --onredirect=<ok|warning|critical|follow>\n\ 1292 -f, --onredirect=<ok|warning|critical|follow>\n\
diff --git a/plugins/t/check_http.t b/plugins/t/check_http.t
index 408906d..3154151 100644
--- a/plugins/t/check_http.t
+++ b/plugins/t/check_http.t
@@ -9,7 +9,7 @@ use strict;
9use Test::More; 9use Test::More;
10use NPTest; 10use NPTest;
11 11
12plan tests => 12; 12plan tests => 14;
13 13
14my $successOutput = '/OK.*HTTP.*second/'; 14my $successOutput = '/OK.*HTTP.*second/';
15 15
@@ -34,6 +34,16 @@ cmp_ok( $res->return_code, '==', 0, "Webserver $host_tcp_http responded" );
34like( $res->output, $successOutput, "Output OK" ); 34like( $res->output, $successOutput, "Output OK" );
35 35
36$res = NPTest->testCmd( 36$res = NPTest->testCmd(
37 "./check_http $host_tcp_http -wt 300 -ct 600 -v -v -v -k 'bob:there;fred:here'"
38 );
39like( $res->output, '/bob:there\r\nfred:here\r\n/', "Got headers, delimited with ';'" );
40
41$res = NPTest->testCmd(
42 "./check_http $host_tcp_http -wt 300 -ct 600 -v -v -v -k 'bob:there;fred:here' -k 'carl:frown'"
43 );
44like( $res->output, '/bob:there\r\nfred:here\r\ncarl:frown\r\n/', "Got headers with multiple -k options" );
45
46$res = NPTest->testCmd(
37 "./check_http $host_nonresponsive -wt 1 -ct 2" 47 "./check_http $host_nonresponsive -wt 1 -ct 2"
38 ); 48 );
39cmp_ok( $res->return_code, '==', 2, "Webserver $host_nonresponsive not responding" ); 49cmp_ok( $res->return_code, '==', 2, "Webserver $host_nonresponsive not responding" );