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. --- web/attachments/414810-check_http.c.patch | 135 ++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 web/attachments/414810-check_http.c.patch (limited to 'web/attachments/414810-check_http.c.patch') diff --git a/web/attachments/414810-check_http.c.patch b/web/attachments/414810-check_http.c.patch new file mode 100644 index 0000000..6a189b5 --- /dev/null +++ b/web/attachments/414810-check_http.c.patch @@ -0,0 +1,135 @@ +diff --git a/plugins/check_http.c b/plugins/check_http.c +index 433c28e..6a8a90a 100644 +--- a/plugins/check_http.c ++++ b/plugins/check_http.c +@@ -84,6 +84,7 @@ int errcode; + int invert_regex = 0; + + struct timeval tv; ++struct timeval tv_temp; + + #define HTTP_URL "/" + #define CRLF "\r\n" +@@ -130,6 +131,11 @@ void redir (char *pos, char *status_line); + int server_type_check(const char *type); + int server_port_check(int ssl_flag); + char *perfd_time (double microsec); ++char *perfd_time_connect (double microsec); ++char *perfd_time_ssl (double microsec); ++char *perfd_time_firstbyte (double microsec); ++char *perfd_time_headers (double microsec); ++char *perfd_time_transfer (double microsec); + char *perfd_size (int page_len); + void print_help (void); + void print_usage (void); +@@ -790,15 +796,31 @@ check_http (void) + char *pos; + long microsec; + double elapsed_time; ++ long microsec_connect; ++ double elapsed_time_connect; ++ long microsec_ssl; ++ double elapsed_time_ssl; ++ long microsec_firstbyte; ++ double elapsed_time_firstbyte; ++ long microsec_headers; ++ double elapsed_time_headers; ++ long microsec_transfer; ++ double elapsed_time_transfer; + int page_len = 0; + int result = STATE_OK; + + /* try to connect to the host at the given port number */ ++ gettimeofday (&tv_temp, NULL); + if (my_tcp_connect (server_address, server_port, &sd) != STATE_OK) + die (STATE_CRITICAL, _("HTTP CRITICAL - Unable to open TCP socket\n")); ++ microsec_connect = deltime (tv_temp); + #ifdef HAVE_SSL ++ elapsed_time_connect = (double)microsec_connect / 1.0e6; + if (use_ssl == TRUE) { ++ gettimeofday (&tv_temp, NULL); + np_net_ssl_init_with_hostname(sd, (use_sni ? host_name : NULL)); ++ microsec_ssl = deltime (tv_temp); ++ elapsed_time_ssl = (double)microsec_ssl / 1.0e6; + if (check_cert == TRUE) { + result = np_net_ssl_check_cert(days_till_exp); + np_net_ssl_cleanup(); +@@ -867,11 +889,19 @@ check_http (void) + } + + if (verbose) printf ("%s\n", buf); ++ gettimeofday (&tv_temp, NULL); + my_send (buf, strlen (buf)); ++ microsec_headers = deltime (tv_temp); ++ elapsed_time_headers = (double)microsec_headers / 1.0e6; + + /* fetch the page */ + full_page = strdup(""); ++ gettimeofday (&tv_temp, NULL); + while ((i = my_recv (buffer, MAX_INPUT_BUFFER-1)) > 0) { ++ if ((i >= 1) && (elapsed_time_firstbyte <= 0.000001)) { ++ microsec_firstbyte = deltime (tv_temp); ++ elapsed_time_firstbyte = (double)microsec_firstbyte / 1.0e6; ++ } + buffer[i] = '\0'; + asprintf (&full_page_new, "%s%s", full_page, buffer); + free (full_page); +@@ -883,6 +913,8 @@ check_http (void) + break; + } + } ++ microsec_transfer = deltime (tv_temp); ++ elapsed_time_transfer = (double)microsec_transfer / 1.0e6; + + if (i < 0 && errno != ECONNRESET) { + #ifdef HAVE_SSL +@@ -1085,10 +1117,16 @@ check_http (void) + + /* check elapsed time */ + asprintf (&msg, +- _("%s - %d bytes in %.3f second response time %s|%s %s"), ++ _("%s - %d bytes in %.3f second response time %s|%s %s %s %s %s %s %s"), + msg, page_len, elapsed_time, + (display_html ? "" : ""), +- perfd_time (elapsed_time), perfd_size (page_len)); ++ perfd_time (elapsed_time), ++ perfd_size (page_len), ++ perfd_time_connect (elapsed_time_connect), ++ perfd_time_ssl (elapsed_time_ssl), ++ perfd_time_headers (elapsed_time_headers), ++ perfd_time_firstbyte (elapsed_time_firstbyte), ++ perfd_time_transfer (elapsed_time_transfer)); + + result = max_state_alt(get_status(elapsed_time, thlds), result); + +@@ -1277,7 +1315,30 @@ char *perfd_time (double elapsed_time) + TRUE, 0, FALSE, 0); + } + ++char *perfd_time_connect (double elapsed_time_connect) ++{ ++ return fperfdata ("time_connect", elapsed_time_connect, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0); ++} + ++char *perfd_time_ssl (double elapsed_time_ssl) ++{ ++ return fperfdata ("time_ssl", elapsed_time_ssl, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0); ++} ++ ++char *perfd_time_headers (double elapsed_time_headers) ++{ ++ return fperfdata ("time_headers", elapsed_time_headers, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0); ++} ++ ++char *perfd_time_firstbyte (double elapsed_time_firstbyte) ++{ ++ return fperfdata ("time_firstbyte", elapsed_time_firstbyte, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0); ++} ++ ++char *perfd_time_transfer (double elapsed_time_transfer) ++{ ++ return fperfdata ("time_transfer", elapsed_time_transfer, "s", FALSE, 0, FALSE, 0, FALSE, 0, FALSE, 0); ++} + + char *perfd_size (int page_len) + { -- cgit v1.2.3-74-g34f1