From 08199792ba8bf19c2dbdc27f68689e571d4240a9 Mon Sep 17 00:00:00 2001 From: Thomas Guyot-Sionnest Date: Mon, 21 Sep 2009 21:20:33 -0400 Subject: Add proxy-authorization option to check_http (Peter Doherty - #2863772, Bryan Irvine - #2863925) diff --git a/NEWS b/NEWS index e6df579..8231548 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,7 @@ This file documents the major additions and syntax changes between releases. 1.4.15 ... Fix check_ircd binding to wrong interface (#668778) + Add proxy-authorization option to check_http (Peter Doherty - #2863772, Bryan Irvine - #2863925) 1.4.14 16th September 2009 check_http has options to specify the HTTP method (#2155152) diff --git a/THANKS.in b/THANKS.in index 038ad93..85ad041 100644 --- a/THANKS.in +++ b/THANKS.in @@ -256,3 +256,5 @@ Joe Presbrey Will Preston Nikita Kalabukhov Grant Byers +Peter Doherty +Bryan Irvine diff --git a/plugins/check_http.c b/plugins/check_http.c index 79f6adf..b4e6004 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c @@ -105,6 +105,7 @@ int check_warning_time = FALSE; double critical_time = 0; int check_critical_time = FALSE; char user_auth[MAX_INPUT_BUFFER] = ""; +char proxy_auth[MAX_INPUT_BUFFER] = ""; int display_html = FALSE; char **http_opt_headers; int http_opt_headers_count = 0; @@ -192,6 +193,7 @@ process_arguments (int argc, char **argv) {"url", required_argument, 0, 'u'}, {"port", required_argument, 0, 'p'}, {"authorization", required_argument, 0, 'a'}, + {"proxy_authorization", required_argument, 0, 'b'}, {"string", required_argument, 0, 's'}, {"expect", required_argument, 0, 'e'}, {"regex", required_argument, 0, 'r'}, @@ -229,7 +231,7 @@ process_arguments (int argc, char **argv) } while (1) { - c = getopt_long (argc, argv, "Vvh46t:c:w:A:k:H:P:j:T:I:a:e:p:s:R:r:u:f:C:nlLSm:M:N", longopts, &option); + c = getopt_long (argc, argv, "Vvh46t:c:w:A:k:H:P:j:T:I:a:b:e:p:s:R:r:u:f:C:nlLSm:M:N", longopts, &option); if (c == -1 || c == EOF) break; @@ -350,6 +352,10 @@ process_arguments (int argc, char **argv) strncpy (user_auth, optarg, MAX_INPUT_BUFFER - 1); user_auth[MAX_INPUT_BUFFER - 1] = 0; break; + case 'b': /* proxy-authorization info */ + strncpy (proxy_auth, optarg, MAX_INPUT_BUFFER - 1); + proxy_auth[MAX_INPUT_BUFFER - 1] = 0; + break; case 'P': /* HTTP POST data in URL encoded format; ignored if settings already */ if (! http_post_data) http_post_data = strdup (optarg); @@ -836,6 +842,12 @@ check_http (void) asprintf (&buf, "%sAuthorization: Basic %s\r\n", buf, auth); } + /* optionally send the proxy authentication info */ + if (strlen(proxy_auth)) { + base64_encode_alloc (proxy_auth, strlen (proxy_auth), &auth); + asprintf (&buf, "%sProxy-Authorization: Basic %s\r\n", buf, auth); + } + /* either send http POST data (any data, not only POST)*/ if (http_post_data) { if (http_content_type) { @@ -1346,6 +1358,8 @@ print_help (void) printf (" %s\n", "-a, --authorization=AUTH_PAIR"); printf (" %s\n", _("Username:password on sites with basic authentication")); + printf (" %s\n", "-b, --proxy-authorization=AUTH_PAIR"); + printf (" %s\n", _("Username:password on proxy-servers with basic authentication")); printf (" %s\n", "-A, --useragent=STRING"); printf (" %s\n", _("String to be sent in http header as \"User Agent\"")); printf (" %s\n", "-k, --header=STRING"); @@ -1407,7 +1421,7 @@ print_usage (void) printf (_("Usage:")); printf (" %s -H | -I [-u ] [-p ]\n",progname); printf (" [-w ] [-c ] [-t ] [-L]\n"); - printf (" [-a auth] [-f ]\n"); + printf (" [-a auth] [-b proxy_auth] [-f ]\n"); printf (" [-e ] [-s string] [-l] [-r | -R ]\n"); printf (" [-P string] [-m :] [-4|-6] [-N] [-M ]\n"); printf (" [-A string] [-k string] [-S] [-C ] [-T ] [-j method]\n"); -- cgit v0.10-9-g596f