From bf6001384fd720b3185ed16a580668c445e4dbb5 Mon Sep 17 00:00:00 2001 From: Jan Wagner Date: Tue, 3 Dec 2024 09:27:09 +0100 Subject: [PATCH] Adding d/p/19_check_curl_cookie_handling from upstream https://patch-diff.githubusercontent.com/raw/monitoring-plugins/monitoring-plugins/pull/2052.patch --- debian/patches/19_check_curl_cookie_handling | 46 ++++++++++++++++++++ debian/patches/series | 1 + 2 files changed, 47 insertions(+) create mode 100644 debian/patches/19_check_curl_cookie_handling diff --git a/debian/patches/19_check_curl_cookie_handling b/debian/patches/19_check_curl_cookie_handling new file mode 100644 index 0000000..29f5cce --- /dev/null +++ b/debian/patches/19_check_curl_cookie_handling @@ -0,0 +1,46 @@ +From 191d15354ba32a483fd4f8017595c7eb82ee5650 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andre=20Kl=C3=A4rner?= +Date: Fri, 29 Nov 2024 10:34:16 +0100 +Subject: [PATCH] check_curl: enable internal cookie handling + +This enables us to enable curl cookie engine by specifying an empty +filename as the cookie jar file. + +This works, since curl's CURLOPT_COOKIEFILE option allows passing an +empty string as filename, which it interprets as a request to enable the +cookie processing. But since CURLOPT_COOKIEJAR would now attempt to +write to a file named by an empty filename, it would break again (or at +least produce a warning in verbose output). + +Overall this is allows to handle checking URLs with cookie based +sessions without persisting the cookies to disk, by using the +curl-internal redirect following. +--- + plugins/check_curl.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +--- a/plugins/check_curl.c ++++ b/plugins/check_curl.c +@@ -831,8 +831,11 @@ + + /* cookie handling */ + if (cookie_jar_file != NULL) { +- handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_COOKIEJAR, cookie_jar_file), "CURLOPT_COOKIEJAR"); ++ /* enable reading cookies from a file, and if the filename is an empty string, only enable the curl cookie engine */ + handle_curl_option_return_code (curl_easy_setopt (curl, CURLOPT_COOKIEFILE, cookie_jar_file), "CURLOPT_COOKIEFILE"); ++ /* now enable saving cookies to a file, but only if the filename is not an empty string, since writing it would fail */ ++ if (*cookie_jar_file) ++ handle_curl_option_return_code(curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookie_jar_file), "CURLOPT_COOKIEJAR"); + } + + /* do the request */ +@@ -2111,6 +2114,9 @@ + printf(" %s\n", "--haproxy-protocol"); + printf(" %s\n", _("Send HAProxy proxy protocol v1 header (CURLOPT_HAPROXYPROTOCOL).")); + printf (" %s\n", "--cookie-jar=FILE"); ++ printf (" %s\n", _("Specify an empty string as FILE to enable curl's cookie engine without saving")); ++ printf (" %s\n", _("the cookies to disk. Only enabling the engine without saving to disk requires")); ++ printf (" %s\n", _("handling multiple requests internally to curl, so use it with --onredirect=curl")); + printf (" %s\n", _("Store cookies in the cookie jar and send them out when requested.")); + printf ("\n"); + diff --git a/debian/patches/series b/debian/patches/series index 4daacb4..9850d87 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -10,4 +10,5 @@ 16_check_curl_openssl_error 17_check_fping_dontfrag_random 18_check_curl_fix_TLS_notes +19_check_curl_cookie_handling # feature patches