X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcurl.c;h=0d4677fdc5b06f82062527cc7d859d6b7e100e8f;hb=0f877a368c1c339386add57c573094855457eefe;hp=c6e2ae9c1f521350db159dc2922dafcb6fb54f41;hpb=1a02ec9a549ff7145db028f9ff2b3d9b2e9a6ef6;p=collectd.git diff --git a/src/curl.c b/src/curl.c index c6e2ae9c..0d4677fd 100644 --- a/src/curl.c +++ b/src/curl.c @@ -57,12 +57,12 @@ struct web_page_s /* {{{ */ char *user; char *pass; char *credentials; - int verify_peer; - int verify_host; + _Bool verify_peer; + _Bool verify_host; char *cacert; struct curl_slist *headers; char *post_body; - int response_time; + _Bool response_time; CURL *curl; char curl_errbuf[CURL_ERROR_SIZE]; @@ -160,23 +160,6 @@ static void cc_web_page_free (web_page_t *wp) /* {{{ */ sfree (wp); } /* }}} void cc_web_page_free */ -static int cc_config_add_string (const char *name, char **dest, /* {{{ */ - oconfig_item_t *ci) -{ - if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_STRING)) - { - WARNING ("curl plugin: `%s' needs exactly one string argument.", name); - return (-1); - } - - sfree (*dest); - *dest = strdup (ci->values[0].value.string); - if (*dest == NULL) - return (-1); - - return (0); -} /* }}} int cc_config_add_string */ - static int cc_config_append_string (const char *name, struct curl_slist **dest, /* {{{ */ oconfig_item_t *ci) { @@ -193,21 +176,6 @@ static int cc_config_append_string (const char *name, struct curl_slist **dest, return (0); } /* }}} int cc_config_append_string */ - -static int cc_config_set_boolean (const char *name, int *dest, /* {{{ */ - oconfig_item_t *ci) -{ - if ((ci->values_num != 1) || (ci->values[0].type != OCONFIG_TYPE_BOOLEAN)) - { - WARNING ("curl plugin: `%s' needs exactly one boolean argument.", name); - return (-1); - } - - *dest = ci->values[0].value.boolean ? 1 : 0; - - return (0); -} /* }}} int cc_config_set_boolean */ - static int cc_config_add_match_dstype (int *dstype_ret, /* {{{ */ oconfig_item_t *ci) { @@ -312,15 +280,15 @@ static int cc_config_add_match (web_page_t *page, /* {{{ */ oconfig_item_t *child = ci->children + i; if (strcasecmp ("Regex", child->key) == 0) - status = cc_config_add_string ("Regex", &match->regex, child); + status = cf_util_get_string (child, &match->regex); else if (strcasecmp ("ExcludeRegex", child->key) == 0) - status = cc_config_add_string ("ExcludeRegex", &match->exclude_regex, child); + status = cf_util_get_string (child, &match->exclude_regex); else if (strcasecmp ("DSType", child->key) == 0) status = cc_config_add_match_dstype (&match->dstype, child); else if (strcasecmp ("Type", child->key) == 0) - status = cc_config_add_string ("Type", &match->type, child); + status = cf_util_get_string (child, &match->type); else if (strcasecmp ("Instance", child->key) == 0) - status = cc_config_add_string ("Instance", &match->instance, child); + status = cf_util_get_string (child, &match->instance); else { WARNING ("curl plugin: Option `%s' not allowed here.", child->key); @@ -475,26 +443,26 @@ static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */ oconfig_item_t *child = ci->children + i; if (strcasecmp ("URL", child->key) == 0) - status = cc_config_add_string ("URL", &page->url, child); + status = cf_util_get_string (child, &page->url); else if (strcasecmp ("User", child->key) == 0) - status = cc_config_add_string ("User", &page->user, child); + status = cf_util_get_string (child, &page->user); else if (strcasecmp ("Password", child->key) == 0) - status = cc_config_add_string ("Password", &page->pass, child); + status = cf_util_get_string (child, &page->pass); else if (strcasecmp ("VerifyPeer", child->key) == 0) - status = cc_config_set_boolean ("VerifyPeer", &page->verify_peer, child); + status = cf_util_get_boolean (child, &page->verify_peer); else if (strcasecmp ("VerifyHost", child->key) == 0) - status = cc_config_set_boolean ("VerifyHost", &page->verify_host, child); + status = cf_util_get_boolean (child, &page->verify_host); else if (strcasecmp ("MeasureResponseTime", child->key) == 0) - status = cc_config_set_boolean (child->key, &page->response_time, child); + status = cf_util_get_boolean (child, &page->response_time); else if (strcasecmp ("CACert", child->key) == 0) - status = cc_config_add_string ("CACert", &page->cacert, child); + status = cf_util_get_string (child, &page->cacert); else if (strcasecmp ("Match", child->key) == 0) /* Be liberal with failing matches => don't set `status'. */ cc_config_add_match (page, child); else if (strcasecmp ("Header", child->key) == 0) status = cc_config_append_string ("Header", &page->headers, child); else if (strcasecmp ("Post", child->key) == 0) - status = cc_config_add_string ("Post", &page->post_body, child); + status = cf_util_get_string (child, &page->post_body); else { WARNING ("curl plugin: Option `%s' not allowed here.", child->key); @@ -595,6 +563,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 */ @@ -612,7 +581,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 */ @@ -680,6 +650,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);