X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcurl.c;h=0e5d2cfa7ea0a1dca1fab6f00780773bc1f07b8e;hb=4a89ba505930c9e96f297631c2b572a0051df520;hp=59903686419d921346e764723ce367ac5b00fa29;hpb=104eeb9961455ecf3feeb2d526ad089c2daddfeb;p=collectd.git diff --git a/src/curl.c b/src/curl.c index 59903686..0e5d2cfa 100644 --- a/src/curl.c +++ b/src/curl.c @@ -17,7 +17,7 @@ * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * * Authors: - * Florian octo Forster + * Florian octo Forster * Aman Gupta **/ @@ -58,6 +58,7 @@ struct web_page_s /* {{{ */ char *user; char *pass; char *credentials; + _Bool digest; _Bool verify_peer; _Bool verify_host; char *cacert; @@ -372,6 +373,11 @@ static int cc_page_init_curl (web_page_t *wp) /* {{{ */ if (wp->user != NULL) { +#ifdef HAVE_CURLOPT_USERNAME + curl_easy_setopt (wp->curl, CURLOPT_USERNAME, wp->user); + curl_easy_setopt (wp->curl, CURLOPT_PASSWORD, + (wp->pass == NULL) ? "" : wp->pass); +#else size_t credentials_size; credentials_size = strlen (wp->user) + 2; @@ -388,6 +394,10 @@ static int cc_page_init_curl (web_page_t *wp) /* {{{ */ ssnprintf (wp->credentials, credentials_size, "%s:%s", wp->user, (wp->pass == NULL) ? "" : wp->pass); curl_easy_setopt (wp->curl, CURLOPT_USERPWD, wp->credentials); +#endif + + if (wp->digest) + curl_easy_setopt (wp->curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); } curl_easy_setopt (wp->curl, CURLOPT_SSL_VERIFYPEER, (long) wp->verify_peer); @@ -425,6 +435,7 @@ static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */ page->url = NULL; page->user = NULL; page->pass = NULL; + page->digest = 0; page->verify_peer = 1; page->verify_host = 1; page->response_time = 0; @@ -450,6 +461,8 @@ static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */ status = cf_util_get_string (child, &page->user); else if (strcasecmp ("Password", child->key) == 0) status = cf_util_get_string (child, &page->pass); + else if (strcasecmp ("Digest", child->key) == 0) + status = cf_util_get_boolean (child, &page->digest); else if (strcasecmp ("VerifyPeer", child->key) == 0) status = cf_util_get_boolean (child, &page->verify_peer); else if (strcasecmp ("VerifyHost", child->key) == 0) @@ -568,6 +581,7 @@ static int cc_init (void) /* {{{ */ INFO ("curl plugin: No pages have been defined."); return (-1); } + curl_global_init (CURL_GLOBAL_SSL); return (0); } /* }}} int cc_init */ @@ -585,7 +599,8 @@ static void cc_submit (const web_page_t *wp, const web_match_t *wm, /* {{{ */ sstrncpy (vl.plugin, "curl", sizeof (vl.plugin)); sstrncpy (vl.plugin_instance, wp->instance, sizeof (vl.plugin_instance)); sstrncpy (vl.type, wm->type, sizeof (vl.type)); - sstrncpy (vl.type_instance, wm->instance, sizeof (vl.type_instance)); + if (wm->instance != NULL) + sstrncpy (vl.type_instance, wm->instance, sizeof (vl.type_instance)); plugin_dispatch_values (&vl); } /* }}} void cc_submit */ @@ -677,6 +692,7 @@ static int cc_read_page (web_page_t *wp) /* {{{ */ } cc_submit (wp, wm, mv); + match_value_reset (mv); } /* for (wm = wp->matches; wm != NULL; wm = wm->next) */ return (0);