summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre Klärner <kandre@ak-online.be>2024-11-29 10:34:16 +0100
committerSven Nierlein <sven@nierlein.org>2024-12-02 20:48:24 +0100
commite7dbfd42231754b0258f2f92088caba7de3ee9d8 (patch)
tree1732cc2c6aac9540d6ee4435ffaa9b8ed9443055
parentafb1734ec488b72e17b3fe8d14d9a0473e1449a4 (diff)
downloadmonitoring-plugins-e7dbfd42231754b0258f2f92088caba7de3ee9d8.tar.gz
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.
-rw-r--r--plugins/check_curl.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/plugins/check_curl.c b/plugins/check_curl.c
index ef7d4ee4..748201e8 100644
--- a/plugins/check_curl.c
+++ b/plugins/check_curl.c
@@ -818,8 +818,11 @@ int check_http(void) {
818 818
819 /* cookie handling */ 819 /* cookie handling */
820 if (cookie_jar_file != NULL) { 820 if (cookie_jar_file != NULL) {
821 handle_curl_option_return_code(curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookie_jar_file), "CURLOPT_COOKIEJAR"); 821 /* enable reading cookies from a file, and if the filename is an empty string, only enable the curl cookie engine */
822 handle_curl_option_return_code(curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookie_jar_file), "CURLOPT_COOKIEFILE"); 822 handle_curl_option_return_code(curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookie_jar_file), "CURLOPT_COOKIEFILE");
823 /* now enable saving cookies to a file, but only if the filename is not an empty string, since writing it would fail */
824 if (*cookie_jar_file)
825 handle_curl_option_return_code(curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookie_jar_file), "CURLOPT_COOKIEJAR");
823 } 826 }
824 827
825 /* do the request */ 828 /* do the request */
@@ -2011,6 +2014,9 @@ void print_help(void) {
2011 printf(" %s\n", _("Send HAProxy proxy protocol v1 header (CURLOPT_HAPROXYPROTOCOL).")); 2014 printf(" %s\n", _("Send HAProxy proxy protocol v1 header (CURLOPT_HAPROXYPROTOCOL)."));
2012 printf(" %s\n", "--cookie-jar=FILE"); 2015 printf(" %s\n", "--cookie-jar=FILE");
2013 printf(" %s\n", _("Store cookies in the cookie jar and send them out when requested.")); 2016 printf(" %s\n", _("Store cookies in the cookie jar and send them out when requested."));
2017 printf(" %s\n", _("Specify an empty string as FILE to enable curl's cookie engine without saving"));
2018 printf(" %s\n", _("the cookies to disk. Only enabling the engine without saving to disk requires"));
2019 printf(" %s\n", _("handling multiple requests internally to curl, so use it with --onredirect=curl"));
2014 printf("\n"); 2020 printf("\n");
2015 2021
2016 printf(UT_WARN_CRIT); 2022 printf(UT_WARN_CRIT);