diff options
Diffstat (limited to 'plugins')
| -rw-r--r-- | plugins/check_curl.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/plugins/check_curl.c b/plugins/check_curl.c index 57b6e124..12e0d0aa 100644 --- a/plugins/check_curl.c +++ b/plugins/check_curl.c | |||
| @@ -93,6 +93,7 @@ char *server_url = DEFAULT_SERVER_URL; | |||
| 93 | unsigned short server_port = HTTP_PORT; | 93 | unsigned short server_port = HTTP_PORT; |
| 94 | int virtual_port = 0; | 94 | int virtual_port = 0; |
| 95 | int host_name_length; | 95 | int host_name_length; |
| 96 | char output_header_search[30] = ""; | ||
| 96 | char output_string_search[30] = ""; | 97 | char output_string_search[30] = ""; |
| 97 | char *warning_thresholds = NULL; | 98 | char *warning_thresholds = NULL; |
| 98 | char *critical_thresholds = NULL; | 99 | char *critical_thresholds = NULL; |
| @@ -122,6 +123,7 @@ CURLcode res; | |||
| 122 | char url[DEFAULT_BUFFER_SIZE]; | 123 | char url[DEFAULT_BUFFER_SIZE]; |
| 123 | char msg[DEFAULT_BUFFER_SIZE]; | 124 | char msg[DEFAULT_BUFFER_SIZE]; |
| 124 | char perfstring[DEFAULT_BUFFER_SIZE]; | 125 | char perfstring[DEFAULT_BUFFER_SIZE]; |
| 126 | char header_expect[MAX_INPUT_BUFFER] = ""; | ||
| 125 | char string_expect[MAX_INPUT_BUFFER] = ""; | 127 | char string_expect[MAX_INPUT_BUFFER] = ""; |
| 126 | char server_expect[MAX_INPUT_BUFFER] = HTTP_EXPECT; | 128 | char server_expect[MAX_INPUT_BUFFER] = HTTP_EXPECT; |
| 127 | int server_expect_yn = 0; | 129 | int server_expect_yn = 0; |
| @@ -489,6 +491,18 @@ check_http (void) | |||
| 489 | } | 491 | } |
| 490 | 492 | ||
| 491 | /* Page and Header content checks go here */ | 493 | /* Page and Header content checks go here */ |
| 494 | |||
| 495 | if (strlen (header_expect)) { | ||
| 496 | if (!strstr (header_buf.buf, header_expect)) { | ||
| 497 | strncpy(&output_header_search[0],header_expect,sizeof(output_header_search)); | ||
| 498 | if(output_header_search[sizeof(output_header_search)-1]!='\0') { | ||
| 499 | bcopy("...",&output_header_search[sizeof(output_header_search)-4],4); | ||
| 500 | } | ||
| 501 | snprintf (msg, DEFAULT_BUFFER_SIZE, _("%sheader '%s' not found on '%s://%s:%d%s', "), msg, output_header_search, use_ssl ? "https" : "http", host_name ? host_name : server_address, server_port, server_url); | ||
| 502 | result = STATE_CRITICAL; | ||
| 503 | } | ||
| 504 | } | ||
| 505 | |||
| 492 | if (strlen (string_expect)) { | 506 | if (strlen (string_expect)) { |
| 493 | if (!strstr (body_buf.buf, string_expect)) { | 507 | if (!strstr (body_buf.buf, string_expect)) { |
| 494 | strncpy(&output_string_search[0],string_expect,sizeof(output_string_search)); | 508 | strncpy(&output_string_search[0],string_expect,sizeof(output_string_search)); |
| @@ -592,6 +606,7 @@ process_arguments (int argc, char **argv) | |||
| 592 | {"url", required_argument, 0, 'u'}, | 606 | {"url", required_argument, 0, 'u'}, |
| 593 | {"port", required_argument, 0, 'p'}, | 607 | {"port", required_argument, 0, 'p'}, |
| 594 | {"authorization", required_argument, 0, 'a'}, | 608 | {"authorization", required_argument, 0, 'a'}, |
| 609 | {"header-string", required_argument, 0, 'd'}, | ||
| 595 | {"string", required_argument, 0, 's'}, | 610 | {"string", required_argument, 0, 's'}, |
| 596 | {"expect", required_argument, 0, 'e'}, | 611 | {"expect", required_argument, 0, 'e'}, |
| 597 | {"regex", required_argument, 0, 'r'}, | 612 | {"regex", required_argument, 0, 'r'}, |
| @@ -631,7 +646,7 @@ process_arguments (int argc, char **argv) | |||
| 631 | } | 646 | } |
| 632 | 647 | ||
| 633 | while (1) { | 648 | while (1) { |
| 634 | c = getopt_long (argc, argv, "Vvh46t:c:w:A:k:H:j:I:a:p:e:s:R:r:u:f:C:J:K:S::m:NE", longopts, &option); | 649 | c = getopt_long (argc, argv, "Vvh46t:c:w:A:k:H:j:I:a:p:d:e:s:R:r:u:f:C:J:K:S::m:NE", longopts, &option); |
| 635 | if (c == -1 || c == EOF || c == 1) | 650 | if (c == -1 || c == EOF || c == 1) |
| 636 | break; | 651 | break; |
| 637 | 652 | ||
| @@ -797,6 +812,10 @@ process_arguments (int argc, char **argv) | |||
| 797 | if (verbose >= 2) | 812 | if (verbose >= 2) |
| 798 | printf(_("* Following redirects set to %s\n"), state_text(onredirect)); | 813 | printf(_("* Following redirects set to %s\n"), state_text(onredirect)); |
| 799 | break; | 814 | break; |
| 815 | case 'd': /* string or substring */ | ||
| 816 | strncpy (header_expect, optarg, MAX_INPUT_BUFFER - 1); | ||
| 817 | header_expect[MAX_INPUT_BUFFER - 1] = 0; | ||
| 818 | break; | ||
| 800 | case 's': /* string or substring */ | 819 | case 's': /* string or substring */ |
| 801 | strncpy (string_expect, optarg, MAX_INPUT_BUFFER - 1); | 820 | strncpy (string_expect, optarg, MAX_INPUT_BUFFER - 1); |
| 802 | string_expect[MAX_INPUT_BUFFER - 1] = 0; | 821 | string_expect[MAX_INPUT_BUFFER - 1] = 0; |
| @@ -970,6 +989,8 @@ print_help (void) | |||
| 970 | printf (" %s", _("the first (status) line of the server response (default: ")); | 989 | printf (" %s", _("the first (status) line of the server response (default: ")); |
| 971 | printf ("%s)\n", HTTP_EXPECT); | 990 | printf ("%s)\n", HTTP_EXPECT); |
| 972 | printf (" %s\n", _("If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)")); | 991 | printf (" %s\n", _("If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)")); |
| 992 | printf (" %s\n", "-d, --header-string=STRING"); | ||
| 993 | printf (" %s\n", _("String to expect in the response headers")); | ||
| 973 | printf (" %s\n", "-s, --string=STRING"); | 994 | printf (" %s\n", "-s, --string=STRING"); |
| 974 | printf (" %s\n", _("String to expect in the content")); | 995 | printf (" %s\n", _("String to expect in the content")); |
| 975 | printf (" %s\n", "-u, --url=PATH"); | 996 | printf (" %s\n", "-u, --url=PATH"); |
| @@ -1065,7 +1086,7 @@ print_usage (void) | |||
| 1065 | printf (" [-J <client certificate file>] [-K <private key>] [--ca-cert <CA certificate file>]\n"); | 1086 | printf (" [-J <client certificate file>] [-K <private key>] [--ca-cert <CA certificate file>]\n"); |
| 1066 | printf (" [-w <warn time>] [-c <critical time>] [-t <timeout>] [-E] [-a auth]\n"); | 1087 | printf (" [-w <warn time>] [-c <critical time>] [-t <timeout>] [-E] [-a auth]\n"); |
| 1067 | printf (" [-f <ok|warning|critcal|follow>]\n"); | 1088 | printf (" [-f <ok|warning|critcal|follow>]\n"); |
| 1068 | printf (" [-e <expect>] [-s string] [-r <regex> | -R <case-insensitive regex>]\n"); | 1089 | printf (" [-e <expect>] [-d string] [-s string] [-r <regex> | -R <case-insensitive regex>]\n"); |
| 1069 | printf (" [-m <min_pg_size>:<max_pg_size>] [-N]\n"); | 1090 | printf (" [-m <min_pg_size>:<max_pg_size>] [-N]\n"); |
| 1070 | printf (" [-4|-6] [-N]\n"); | 1091 | printf (" [-4|-6] [-N]\n"); |
| 1071 | printf (" [-A string] [-k string] [-S <version>] [-C]\n"); | 1092 | printf (" [-A string] [-k string] [-S <version>] [-C]\n"); |
