From 0b6423f9c99d9edf8c96fefd0f6c453859395aa1 Mon Sep 17 00:00:00 2001 From: Holger Weiss Date: Mon, 30 Sep 2013 00:03:24 +0200 Subject: Import Nagios Plugins site Import the Nagios Plugins web site, Cronjobs, infrastructure scripts, and configuration files. --- .../66459-nagios-plugins-1.3.1-check-dns.patch | 646 +++++++++++++++++++++ 1 file changed, 646 insertions(+) create mode 100644 web/attachments/66459-nagios-plugins-1.3.1-check-dns.patch (limited to 'web/attachments/66459-nagios-plugins-1.3.1-check-dns.patch') diff --git a/web/attachments/66459-nagios-plugins-1.3.1-check-dns.patch b/web/attachments/66459-nagios-plugins-1.3.1-check-dns.patch new file mode 100644 index 0000000..0f3d631 --- /dev/null +++ b/web/attachments/66459-nagios-plugins-1.3.1-check-dns.patch @@ -0,0 +1,646 @@ +diff -ruN nagios-plugins-1.3.1/plugins/check_dns.c nagios-plugins-1.3.1-new/plugins/check_dns.c +--- nagios-plugins-1.3.1/plugins/check_dns.c 2003-05-31 15:39:33.000000000 +0100 ++++ nagios-plugins-1.3.1-new/plugins/check_dns.c 2003-07-14 19:59:16.000000000 +0100 +@@ -11,6 +11,7 @@ + * Notes: + * - Safe popen added by Karl DeBisschop 9-11-99 + * - expected-address parameter added by Alex Chaffee - 7 Oct 2002 ++ * - extended to use RESOLVER, HOST or NSLOOKUP by Howard Wilkinson - 24 March 2003 + * + * Command line: (see print_usage) + * +@@ -46,6 +47,28 @@ + + #include "common.h" + #include "popen.h" ++ ++#ifdef USE_NSLOOKUP ++# if !defined(NSLOOKUP_COMMAND) ++# error "Need NSLOOKUP to use this option" ++# endif ++#endif ++#ifdef USE_HOST ++# if !defined(HOST_COMMAND) ++# error "Need HOST to use this option" ++# endif ++#endif ++#if defined(USE_NSLOOKUP) ++# undef USE_HOST ++# undef USE_RESOLVER ++#elif defined(USE_HOST) ++# undef USE_RESOLVER ++#elif !defined(USE_RESOLVER) ++# define USE_NSLOOKUP ++#endif ++#ifdef USE_RESOLVER ++#include "netutils.h" ++#endif + #include "utils.h" + + const char *progname = "check_dns"; +@@ -58,7 +81,9 @@ + void print_help (void); + int error_scan (char *); + +-#define ADDRESS_LENGTH 256 ++#define ADDRESS_LENGTH 10240 ++#define RRTYPE_LENGTH 32 ++char record_type[RRTYPE_LENGTH] = "A"; + char query_address[ADDRESS_LENGTH] = ""; + char dns_server[ADDRESS_LENGTH] = ""; + char ptr_server[ADDRESS_LENGTH] = ""; +@@ -69,144 +94,293 @@ + int + main (int argc, char **argv) + { +- char *command_line = NULL; +- char input_buffer[MAX_INPUT_BUFFER]; +- char *output = NULL; +- char *address = NULL; +- char *temp_buffer = NULL; +- int result = STATE_UNKNOWN; +- +- /* Set signal handling and alarm */ +- if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) { +- printf ("Cannot catch SIGALRM"); +- return STATE_UNKNOWN; ++ char *command_line = NULL; ++ char input_buffer[MAX_INPUT_BUFFER]; ++ char *output = NULL; ++ char *address = NULL; ++ char *temp_buffer = NULL; ++ int result = STATE_UNKNOWN; ++ int linecnt = 0; ++ ++ /* Set signal handling and alarm */ ++ if (signal (SIGALRM, popen_timeout_alarm_handler) == SIG_ERR) { ++ printf ("Cannot catch SIGALRM"); ++ return STATE_UNKNOWN; ++ } ++ if (process_arguments (argc, argv) != OK) { ++ print_usage (); ++ return STATE_UNKNOWN; ++ } ++ /* get the command to run */ ++#ifdef USE_RESOLVER ++#error "THIS CODE DOES NOT WORK" ++ { ++ int i; ++ struct hostent *response; ++ res_init(); ++ if (strlen(dns_server)) { ++ if ((response=gethostbyname(dns_server)) == NULL) { ++ printf ("DNS problem = server %s can not be resolved %s\n", ++ dns_server, strerror(h_errno)); ++ return STATE_CRITICAL; ++ } else { ++ _res.nscount = response->h_length; ++ for (i = 0; i < response->h_length && i < MAXNS; i++) { ++ if (response->h_addr_list[i] == NULL) { ++ break; ++ } ++ _res.nsaddr_list[i].sin_family = AF_INET; ++ _res.nsaddr_list[i].sin_port = NS_DEFAULTPORT; ++ _res.nsaddr_list[i].sin_addr.s_addr = ((struct in_addr *)response->h_addr_list[i])->s_addr; + } +- +- if (process_arguments (argc, argv) != OK) { +- print_usage (); +- return STATE_UNKNOWN; ++ } ++ _res.options &= ~(RES_RECURSE|RES_DEFNAMES); ++ } ++ if ((response=gethostbyname(query_address)) == NULL) { ++ asprintf (&output, "lookup failed with %s", strerror(h_errno)); ++ result = STATE_CRITICAL; ++ } else { ++ int len=0; ++ struct in_addr in; ++ for (i = 0; i < response->h_length; i++) { ++ if (response->h_addr_list[i] == NULL) { ++ break; + } +- +- /* get the command to run */ +- asprintf (&command_line, "%s %s %s", NSLOOKUP_COMMAND, query_address, dns_server); +- +- alarm (timeout_interval); +- time (&start_time); +- +- if (verbose) +- printf ("%s\n", command_line); +- /* run the command */ +- child_process = spopen (command_line); +- if (child_process == NULL) { +- printf ("Could not open pipe: %s\n", command_line); +- return STATE_UNKNOWN; ++ memcpy(&in, ((struct in_addr *)response->h_addr_list[i]), sizeof(in)); ++ len+=strlen(inet_ntoa(in))+1; ++ } ++ address =(char *)malloc(len); ++ address[0]='\0'; ++ for (i = 0; i < response->h_length; i++) { ++ if (response->h_addr_list[i] == NULL) { ++ break; + } +- +- child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); +- if (child_stderr == NULL) +- printf ("Could not open stderr for %s\n", command_line); +- +- /* scan stdout */ +- while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { +- +- if (verbose) +- printf ("%s\n", input_buffer); +- +- if (strstr (input_buffer, ".in-addr.arpa")) { +- if ((temp_buffer = strstr (input_buffer, "name = "))) +- address = strscpy (address, temp_buffer + 7); +- else { +- output = strscpy (output, "Unknown error (plugin)"); +- result = STATE_WARNING; +- } +- } +- +- /* the server is responding, we just got the host name... */ +- if (strstr (input_buffer, "Name:")) { +- +- /* get the host address */ +- if (!fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) +- break; +- +- if (verbose) +- printf ("%s\n", input_buffer); +- +- if ((temp_buffer = index (input_buffer, ':'))) { +- temp_buffer++; +- /* Strip leading spaces */ +- for (; *temp_buffer != '\0' && *temp_buffer == ' '; temp_buffer++) +- /* NOOP */; +- address = strdup (temp_buffer); +- strip (address); +- if (address==NULL || strlen(address)==0) +- terminate (STATE_CRITICAL, +- "DNS CRITICAL - '%s' returned empty host name string\n", +- NSLOOKUP_COMMAND); +- result = STATE_OK; +- } +- else { +- output = strdup ("Unknown error (plugin)"); +- result = STATE_WARNING; +- } +- +- break; +- } +- +- result = error_scan (input_buffer); +- if (result != STATE_OK) { +- output = strscpy (output, 1 + index (input_buffer, ':')); +- break; +- } +- ++ memcpy(&in, ((struct in_addr*)response->h_addr_list[i]), sizeof(in)); ++ strcat(address, inet_ntoa(in)); ++ strcat(address, ","); ++ } ++ address[strlen(address)-1]='\0'; ++ result = STATE_OK; ++ } ++ } ++#endif ++#ifdef USE_NSLOOKUP ++ asprintf (&command_line, "%s -timeout=%d -query=%s %s %s", ++ NSLOOKUP_COMMAND, timeout_interval-1, ++ record_type, query_address, dns_server); ++#endif ++#ifdef USE_HOST ++#error "HOST IS NOT IMPLEMENTED YET" ++ asprintf (&command_line, "%s -W %d -t %s %s %s", ++ HOST_COMMAND, timeout_interval-1, ++ record_type, query_address, dns_server); ++#endif ++ alarm (timeout_interval); ++ time (&start_time); ++ if (verbose) ++ printf ("%s\n", command_line); ++ /* run the command */ ++ child_process = spopen (command_line); ++ if (child_process == NULL) { ++ printf ("Could not open pipe: %s\n", command_line); ++ return STATE_UNKNOWN; ++ } ++ child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r"); ++ if (child_stderr == NULL) ++ printf ("Could not open stderr for %s\n", command_line); ++#ifdef USE_NSLOOKUP ++ /* scan stdout */ ++ while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { ++ if (verbose) ++ printf ("%s\n", input_buffer); ++ if (linecnt == 0) { ++ /* First line should be server name */ ++ if (strstr (input_buffer, "Server:") != input_buffer) { ++ output = strscpy (output, "NSLOOKUP error (plugin) - no Server line found"); ++ result = STATE_WARNING; ++ } ++ linecnt++; ++ } else if (linecnt == 1) { ++ /* Next line is server address */ ++ if (strstr (input_buffer, "Address:") != input_buffer) { ++ output = (output == NULL) ++ ?strscpy (output, "NSLOOKUP error (plugin) - no Address line found") ++ :strscat (output, ", no Address line found"); ++ result = STATE_WARNING; ++ } ++ linecnt++; ++ } else { ++ linecnt++; ++ strip(input_buffer); ++ if (strstr (input_buffer, ".in-addr.arpa")) { ++ if ((temp_buffer = strstr (input_buffer, "name = "))) ++ address = strscpy (address, temp_buffer + 7); ++ else { ++ output = strscpy (output, "Unknown error (plugin)"); ++ result = STATE_WARNING; + } +- +- /* scan stderr */ +- while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) { +- if (error_scan (input_buffer) != STATE_OK) { +- result = max_state (result, error_scan (input_buffer)); +- output = strscpy (output, 1 + index (input_buffer, ':')); +- } ++ continue; ++ } else if ((temp_buffer = strstr (input_buffer, "canonical name ="))) { ++ address = strscat (address, temp_buffer + strlen("cannonical name =")); ++ continue; ++ } else if ((temp_buffer = strstr (input_buffer, "hinfo ="))) { ++ address = strscat (address, temp_buffer + strlen("hinfo =")); ++ continue; ++ } else if ((temp_buffer = strstr (input_buffer, "mail exchanger ="))) { ++ address = strscat (address, temp_buffer + strlen("mail exchanger =")); ++ continue; ++ } else if ((temp_buffer = strstr (input_buffer, "nameserver ="))) { ++ address = strscat (address, temp_buffer + strlen("nameserver =")); ++ continue; ++ } else if ((temp_buffer = strstr (input_buffer, "text ="))) { ++ address = strscat (address, temp_buffer + strlen("text =")); ++ continue; ++ } else if (strcasecmp(record_type, "SOA") == 0) { ++ if (strncasecmp(input_buffer, query_address, strlen(query_address)) == 0) { ++ /* Read in SOA */ ++ while(fgets(input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { ++ if (verbose) ++ printf ("%s\n", input_buffer); ++ strip(input_buffer); ++ address = strscat(address, input_buffer+1); ++ if (strstr(input_buffer, "minimum =")) ++ break; ++ } ++ continue; + } +- +- /* close stderr */ +- (void) fclose (child_stderr); +- +- /* close stdout */ +- if (spclose (child_process)) { +- result = max_state (result, STATE_WARNING); +- if (!strcmp (output, "")) +- output = strscpy (output, "nslookup returned error status"); ++ } else if (strstr (input_buffer, "Name:")) { ++ /* the server is responding, we just got the host name... */ ++ /* get the host address */ ++ if (!fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) ++ break; ++ strip (input_buffer); ++ if (verbose) ++ printf ("%s\n", input_buffer); ++ if ((temp_buffer = index (input_buffer, ':'))) { ++ address = strscpy (address, temp_buffer + 2); ++ strip (address); ++ result = STATE_OK; ++ } else { ++ output = strscpy (output, "Unknown error (plugin)"); ++ result = STATE_WARNING; + } +- +- /* If we got here, we should have an address string, +- and we can segfault if we do not */ ++ continue; ++ } ++ } ++ result = error_scan (input_buffer); ++ if (result != STATE_OK) { ++ output = strscpy (output, 1 + index (input_buffer, ':')); ++ break; ++ } ++ } ++ /* scan stderr */ ++ while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) { ++ if (error_scan (input_buffer) != STATE_OK) { ++ result = max_state (result, error_scan (input_buffer)); ++ output = strscpy (output, 1 + index (input_buffer, ':')); ++ } ++ } ++ /* close stderr */ ++ (void) fclose (child_stderr); ++ /* close stdout */ ++ if (spclose (child_process)) { ++ result = max_state (result, STATE_WARNING); ++ if (!strcmp (output, "")) ++ output = strscpy (output, "nslookup returned error status"); ++ } ++#endif ++#ifdef USE_HOST ++#error "HOST IS NOT IMPLEMENTED YET" ++ /* scan stdout */ ++ while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { ++ if (verbose) ++ printf ("%s\n", input_buffer); ++ if (strstr (input_buffer, ".in-addr.arpa")) { ++ if ((temp_buffer = strstr (input_buffer, "name = "))) ++ address = strscpy (address, temp_buffer + 7); ++ else { ++ output = strscpy (output, "Unknown error (plugin)"); ++ result = STATE_WARNING; ++ } ++ } ++ /* the server is responding, we just got the host name... */ ++ if (strstr (input_buffer, "Name:")) { ++ /* get the host address */ ++ if (!fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) ++ break; ++ if (verbose) ++ printf ("%s\n", input_buffer); ++ if ((temp_buffer = index (input_buffer, ':'))) { ++ temp_buffer++; ++ /* Strip leading spaces */ ++ for (; *temp_buffer != '\0' && *temp_buffer == ' '; temp_buffer++) ++ /* NOOP */; ++ address = strdup (temp_buffer); ++ strip (address); + if (address==NULL || strlen(address)==0) +- terminate (STATE_CRITICAL, +- "DNS CRITICAL - '%s' output parsing exited with no address\n", +- NSLOOKUP_COMMAND); +- +- /* compare to expected address */ +- if (result == STATE_OK && match_expected_address && strcmp(address, expected_address)) { +- result = STATE_CRITICAL; +- asprintf(&output, "expected %s but got %s", expected_address, address); +- } +- +- (void) time (&end_time); +- +- if (result == STATE_OK) +- printf ("DNS ok - %d seconds response time, Address(es) is/are %s\n", +- (int) (end_time - start_time), address); +- else if (result == STATE_WARNING) +- printf ("DNS WARNING - %s\n", +- !strcmp (output, "") ? " Probably a non-existent host/domain" : output); +- else if (result == STATE_CRITICAL) +- printf ("DNS CRITICAL - %s\n", +- !strcmp (output, "") ? " Probably a non-existent host/domain" : output); +- else +- printf ("DNS problem - %s\n", +- !strcmp (output, "") ? " Probably a non-existent host/domain" : output); +- +- return result; ++ terminate (STATE_CRITICAL, ++ "DNS CRITICAL - '%s' returned empty host name string\n", ++ NSLOOKUP_COMMAND); ++ result = STATE_OK; ++ } ++ else { ++ output = strdup ("Unknown error (plugin)"); ++ result = STATE_WARNING; ++ } ++ break; ++ } ++ result = error_scan (input_buffer); ++ if (result != STATE_OK) { ++ output = strscpy (output, 1 + index (input_buffer, ':')); ++ break; ++ } ++ } ++ /* scan stderr */ ++ while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_stderr)) { ++ if (error_scan (input_buffer) != STATE_OK) { ++ result = max (result, error_scan (input_buffer)); ++ output = strscpy (output, 1 + index (input_buffer, ':')); ++ } ++ } ++ /* close stderr */ ++ (void) fclose (child_stderr); ++ /* close stdout */ ++ if (spclose (child_process)) { ++ result = max_state (result, STATE_WARNING); /* was "max" check for problems */ ++ if (!strcmp (output, "")) ++ output = strscpy (output, "nslookup returned error status"); ++ } ++#endif ++ (void) time (&end_time); ++ if (address) { ++ while (isspace(address[0])) { ++ address=&address[1]; ++ } ++ } ++ /* If we got here, we should have an address string, ++ and we can segfault if we do not */ ++ if (address==NULL || strlen(address)==0) ++ terminate (STATE_CRITICAL, ++ "DNS CRITICAL - '%s' output parsing exited with no address\n", ++ NSLOOKUP_COMMAND); ++ /* compare to expected address */ ++ if (result == STATE_OK && match_expected_address && strcmp(address, expected_address)) { ++ result = STATE_CRITICAL; ++ asprintf(&output, "expected %s but got %s", expected_address, address); ++ } ++ if (result == STATE_OK) ++ printf ("DNS ok - %d seconds response time, Address(es) is/are %s\n", ++ (int) (end_time - start_time), address); ++ else if (result == STATE_WARNING) ++ printf ("DNS WARNING - %s\n", ++ !strcmp (output, "") ? " Probably a non-existent host/domain" : output); ++ else if (result == STATE_CRITICAL) ++ printf ("DNS CRITICAL - %s\n", ++ !strcmp (output, "") ? " Probably a non-existent host/domain" : output); ++ else ++ printf ("DNS problem - %s\n", ++ !strcmp (output, "") ? " Probably a non-existent host/domain" : output); ++ return result; + } + + int +@@ -262,6 +436,13 @@ + else if (strstr (input_buffer, "Format error")) + return STATE_WARNING; + ++ else if (strstr (input_buffer, "No answer")) ++ return STATE_WARNING; ++ ++ /* Server is not authoritative for this question */ ++ else if (strstr (input_buffer, "Non-authoritative answer")) ++ return STATE_OK; ++ + else + return STATE_OK; + +@@ -283,7 +464,8 @@ + {"hostname", required_argument, 0, 'H'}, + {"server", required_argument, 0, 's'}, + {"reverse-server", required_argument, 0, 'r'}, +- {"expected-address", required_argument, 0, 'a'}, ++ {"expected-answer", required_argument, 0, 'a'}, ++ {"resource-record", required_argument, 0, 'T'}, + {0, 0, 0, 0} + }; + #endif +@@ -297,9 +479,9 @@ + + while (1) { + #ifdef HAVE_GETOPT_H +- c = getopt_long (argc, argv, "hVvt:H:s:r:a:", long_opts, &opt_index); ++ c = getopt_long (argc, argv, "+?hVvt:H:s:r:a:T:", long_opts, &opt_index); + #else +- c = getopt (argc, argv, "hVvt:H:s:r:a:"); ++ c = getopt (argc, argv, "+?hVvt:H:s:r:a:T:"); + #endif + + if (c == -1 || c == EOF) +@@ -352,17 +534,17 @@ + terminate (STATE_UNKNOWN, "Input buffer overflow\n"); + strcpy (ptr_server, optarg); + break; +- case 'a': /* expected address */ +- if (is_dotted_quad (optarg) == FALSE) { +- printf ("Invalid expected address\n\n"); +- print_usage (); +- exit (STATE_UNKNOWN); +- } ++ case 'a': /* expected answer */ + if (strlen (optarg) >= ADDRESS_LENGTH) + terminate (STATE_UNKNOWN, "Input buffer overflow\n"); + strcpy (expected_address, optarg); + match_expected_address = TRUE; + break; ++ case 'T': /* Resource record type */ ++ if (strlen (optarg) >= RRTYPE_LENGTH) ++ terminate (STATE_UNKNOWN, "INput buffer overflow\n"); ++ strcpy (record_type, optarg); ++ break; + } + } + +@@ -402,8 +584,10 @@ + void + print_usage (void) + { +- printf ("Usage: %s -H host [-s server] [-a expected-address] [-t timeout]\n" " %s --help\n" +- " %s --version\n", progname, progname, progname); ++ printf ("Usage: %s -H host [-s server] [-r reverse-server] [-t timeout] [-T querytype] [-a answer]\n" ++ " %s --help\n" ++ " %s --version\n", ++ progname, progname, progname); + } + + void +@@ -418,16 +602,28 @@ + " The name or address you want to query\n" + "-s, --server=HOST\n" + " Optional DNS server you want to use for the lookup\n" +- "-a, --expected-address=IP-ADDRESS\n" +- " Optional IP address you expect the DNS server to return\n" ++ "-r, --reverse-server=HOST\n" ++ " Optional DNS server to do PTR lookup - NOT IMPLEMENTED\n" + "-t, --timeout=INTEGER\n" + " Seconds before connection times out (default: %d)\n" ++ "-T, --resource-record=QUERYTYPE\n" ++ " Type of query to issue - default is A - [A,CNAME,HINFO,MINFO,MX,NS,PTR,SOA,TXT,UINFO,WKS,ANY]\n" ++ "-a, --expected-answer=STRING\n" ++ " String to match from server as answer - be very careful how you specify this\n" + "-h, --help\n" + " Print detailed help\n" + "-V, --version\n" + " Print version numbers and license information\n" + "\n" ++#ifdef USE_NSLOOKUP + "This plugin uses the nslookup program to obtain the IP address\n" ++#endif ++#ifdef USE_HOST ++ "This plugin uses the host program to obtain the IP address\n" ++#endif ++#ifdef USE_RESOLVER ++ "This plugin uses the resolver library to obtain the IP address\n" ++#endif + "for the given host/domain query. A optional DNS server to use may\n" + "be specified. If no DNS server is specified, the default server(s)\n" + "specified in /etc/resolv.conf will be used.\n", DEFAULT_SOCKET_TIMEOUT); +diff -ruN nagios-plugins-1.3.1/plugins/check_tcp.c nagios-plugins-1.3.1-new/plugins/check_tcp.c +--- nagios-plugins-1.3.1/plugins/check_tcp.c 2003-06-10 05:56:47.000000000 +0100 ++++ nagios-plugins-1.3.1-new/plugins/check_tcp.c 2003-07-14 18:39:57.000000000 +0100 +@@ -67,7 +67,7 @@ + void print_usage (void); + void print_help (void); + int my_recv (void); +- ++int check_expect(char *); + char *progname = "check_tcp"; + char *SERVICE = NULL; + char *SEND = NULL; +@@ -259,6 +259,7 @@ + while ((i = my_recv ()) > 0) { + buffer[i] = '\0'; + asprintf (&status, "%s%s", status, buffer); ++ if (server_expect_count > 0 && check_expect(status)) break; + if (buffer[i-2] == '\r' && buffer[i-1] == '\n') + break; + if (maxbytes>0 && strlen(status)>=maxbytes) +@@ -274,16 +275,11 @@ + if (status && verbose) + printf ("%s\n", status); + ++ /* - does not do anything!! + if (server_expect_count > 0) { +- for (i = 0;; i++) { +- if (verbose) +- printf ("%d %d\n", i, server_expect_count); +- if (i >= server_expect_count) +- terminate (STATE_WARNING, "Invalid response from host\n"); +- if (strstr (status, server_expect[i])) +- break; +- } ++ check_expect(status); + } ++ */ + } + + if (server_quit != NULL) +@@ -608,10 +604,24 @@ + } + else { + #endif +- i = read (sd, buffer, MAXBUF - 1); ++ i = recv (sd, buffer, MAXBUF - 1, 0); + #ifdef HAVE_SSL + } + #endif + + return i; + } ++ ++int check_expect(char * status) { ++ int i; ++ ++ for (i = 0;; i++) { ++ if (verbose) ++ printf ("%d %d\n", i, server_expect_count); ++ if (i >= server_expect_count) ++ terminate (STATE_WARNING, "Invalid response from host\n"); ++ if (strstr (status, server_expect[i])) ++ return TRUE; ++ } ++ return FALSE; ++} -- cgit v1.2.3-74-g34f1