From 787e6986eea096c644c09eefa1b66a4156b32b45 Mon Sep 17 00:00:00 2001
From: Sven Nierlein <sven@nierlein.de>
Date: Sun, 28 May 2017 10:11:15 +0200
Subject: check_curl: handle proxied https requests

---
 plugins/check_curl.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

(limited to 'plugins')

diff --git a/plugins/check_curl.c b/plugins/check_curl.c
index 6856e781..0f065731 100644
--- a/plugins/check_curl.c
+++ b/plugins/check_curl.c
@@ -371,8 +371,19 @@ check_http (void)
   }
 #endif /* LIBCURL_VERSION_NUM >= MAKE_LIBCURL_VERSION(7, 21, 3) */
 
-  /* set port */
-  handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_PORT, server_port), "CURLOPT_PORT");
+  /* extract proxy information for legacy proxy https requests */
+  if (!strcmp(http_method, "CONNECT")) {
+    handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_PROXY, server_address), "CURLOPT_PROXY");
+    handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_PROXYPORT, (long)server_port), "CURLOPT_PROXYPORT");
+    if (verbose>=2)
+      printf ("* curl CURLOPT_PROXY: %s:%d\n", server_address, server_port);
+    http_method = "GET";
+    handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_URL, server_url), "CURLOPT_URL");
+    //server_port = use_ssl ? HTTPS_PORT : HTTP_PORT;
+  } else {
+    /* set port */
+    handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_PORT, server_port), "CURLOPT_PORT");
+  }
 
   /* set HTTP method */
   if (http_method) {
-- 
cgit v1.2.3-74-g34f1