#include "collectd.h"
-#include "common.h"
#include "plugin.h"
+#include "utils/common/common.h"
#include <curl/curl.h>
char *url;
char *user;
char *pass;
- _Bool verify_peer;
- _Bool verify_host;
+ bool verify_peer;
+ bool verify_host;
char *cacert;
char *ssl_ciphers;
char *server; /* user specific server type */
static size_t apache_curl_callback(void *buf, size_t size, size_t nmemb,
void *user_data) {
- size_t len = size * nmemb;
- apache_t *st;
-
- st = user_data;
+ apache_t *st = user_data;
if (st == NULL) {
ERROR("apache plugin: apache_curl_callback: "
"user_data pointer is NULL.");
- return (0);
+ return 0;
}
+ size_t len = size * nmemb;
if (len == 0)
- return (len);
+ return len;
if ((st->apache_buffer_fill + len) >= st->apache_buffer_size) {
- char *temp;
-
- temp = realloc(st->apache_buffer, st->apache_buffer_fill + len + 1);
+ char *temp = realloc(st->apache_buffer, st->apache_buffer_fill + len + 1);
if (temp == NULL) {
ERROR("apache plugin: realloc failed.");
- return (0);
+ return 0;
}
st->apache_buffer = temp;
st->apache_buffer_size = st->apache_buffer_fill + len + 1;
st->apache_buffer_fill += len;
st->apache_buffer[st->apache_buffer_fill] = 0;
- return (len);
+ return len;
} /* int apache_curl_callback */
static size_t apache_header_callback(void *buf, size_t size, size_t nmemb,
void *user_data) {
- size_t len = size * nmemb;
- apache_t *st;
-
- st = user_data;
+ apache_t *st = user_data;
if (st == NULL) {
ERROR("apache plugin: apache_header_callback: "
"user_data pointer is NULL.");
- return (0);
+ return 0;
}
+ size_t len = size * nmemb;
if (len == 0)
- return (len);
+ return len;
/* look for the Server header */
if (strncasecmp(buf, "Server: ", strlen("Server: ")) != 0)
- return (len);
+ return len;
if (strstr(buf, "Apache") != NULL)
st->server_type = APACHE;
NOTICE("apache plugin: Unknown server software: %s", hdr);
}
- return (len);
+ return len;
} /* apache_header_callback */
/* Configuration handling functiions
* </Plugin>
*/
static int config_add(oconfig_item_t *ci) {
- apache_t *st;
- int status;
-
- st = calloc(1, sizeof(*st));
+ apache_t *st = calloc(1, sizeof(*st));
if (st == NULL) {
ERROR("apache plugin: calloc failed.");
- return (-1);
+ return -1;
}
st->timeout = -1;
- status = cf_util_get_string(ci, &st->name);
+ int status = cf_util_get_string(ci, &st->name);
if (status != 0) {
sfree(st);
- return (status);
+ return status;
}
assert(st->name != NULL);
status = -1;
}
- if (status == 0) {
- char callback_name[3 * DATA_MAX_NAME_LEN];
-
- ssnprintf(callback_name, sizeof(callback_name), "apache/%s/%s",
- (st->host != NULL) ? st->host : hostname_g,
- (st->name != NULL) ? st->name : "default");
-
- status = plugin_register_complex_read(
- /* group = */ NULL,
- /* name = */ callback_name,
- /* callback = */ apache_read_host,
- /* interval = */ 0, &(user_data_t){
- .data = st, .free_func = apache_free,
- });
- }
-
if (status != 0) {
apache_free(st);
- return (-1);
+ return -1;
}
- return (0);
+ char callback_name[3 * DATA_MAX_NAME_LEN];
+
+ snprintf(callback_name, sizeof(callback_name), "apache/%s/%s",
+ (st->host != NULL) ? st->host : hostname_g,
+ (st->name != NULL) ? st->name : "default");
+
+ return plugin_register_complex_read(
+ /* group = */ NULL,
+ /* name = */ callback_name,
+ /* callback = */ apache_read_host,
+ /* interval = */ 0,
+ &(user_data_t){
+ .data = st, .free_func = apache_free,
+ });
} /* int config_add */
static int config(oconfig_item_t *ci) {
- int status = 0;
-
for (int i = 0; i < ci->children_num; i++) {
oconfig_item_t *child = ci->children + i;
child->key);
} /* for (ci->children) */
- return (status);
+ return 0;
} /* int config */
/* initialize curl for each host */
if ((st->curl = curl_easy_init()) == NULL) {
ERROR("apache plugin: init_host: `curl_easy_init' failed.");
- return (-1);
+ return -1;
}
curl_easy_setopt(st->curl, CURLOPT_NOSIGNAL, 1L);
(st->pass == NULL) ? "" : st->pass);
#else
static char credentials[1024];
- int status;
-
- status = ssnprintf(credentials, sizeof(credentials), "%s:%s", st->user,
- (st->pass == NULL) ? "" : st->pass);
+ int status = snprintf(credentials, sizeof(credentials), "%s:%s", st->user,
+ (st->pass == NULL) ? "" : st->pass);
if ((status < 0) || ((size_t)status >= sizeof(credentials))) {
ERROR("apache plugin: init_host: Returning an error "
"because the credentials have been "
"truncated.");
curl_easy_cleanup(st->curl);
st->curl = NULL;
- return (-1);
+ return -1;
}
curl_easy_setopt(st->curl, CURLOPT_USERPWD, credentials);
(long)CDTIME_T_TO_MS(plugin_get_interval()));
#endif
- return (0);
+ return 0;
} /* }}} int init_host */
static void submit_value(const char *type, const char *type_instance,
static int apache_read_host(user_data_t *user_data) /* {{{ */
{
- char *ptr;
- char *saveptr;
- char *line;
-
- char *fields[4];
- int fields_num;
-
- apache_t *st;
-
- st = user_data->data;
-
- int status;
-
- char *content_type;
- static const char *text_plain = "text/plain";
+ apache_t *st = user_data->data;
assert(st->url != NULL);
/* (Assured by `config_add') */
if (st->curl == NULL) {
- status = init_host(st);
- if (status != 0)
- return (-1);
+ if (init_host(st) != 0)
+ return -1;
}
assert(st->curl != NULL);
if (curl_easy_perform(st->curl) != CURLE_OK) {
ERROR("apache: curl_easy_perform failed: %s", st->apache_curl_error);
- return (-1);
+ return -1;
}
/* fallback - server_type to apache if not set at this time */
st->server_type = APACHE;
}
- status = curl_easy_getinfo(st->curl, CURLINFO_CONTENT_TYPE, &content_type);
+ char *content_type;
+ static const char *text_plain = "text/plain";
+ int status =
+ curl_easy_getinfo(st->curl, CURLINFO_CONTENT_TYPE, &content_type);
if ((status == CURLE_OK) && (content_type != NULL) &&
(strncasecmp(content_type, text_plain, strlen(text_plain)) != 0)) {
WARNING("apache plugin: `Content-Type' response header is not `%s' "
text_plain, content_type);
}
- ptr = st->apache_buffer;
- saveptr = NULL;
+ char *ptr = st->apache_buffer;
+ char *saveptr = NULL;
+ char *line;
while ((line = strtok_r(ptr, "\n\r", &saveptr)) != NULL) {
ptr = NULL;
- fields_num = strsplit(line, fields, STATIC_ARRAY_SIZE(fields));
+ char *fields[4];
+
+ int fields_num = strsplit(line, fields, STATIC_ARRAY_SIZE(fields));
if (fields_num == 3) {
if ((strcmp(fields[0], "Total") == 0) &&
st->apache_buffer_fill = 0;
- return (0);
+ return 0;
} /* }}} int apache_read_host */
static int apache_init(void) /* {{{ */
/* Call this while collectd is still single-threaded to avoid
* initialization issues in libgcrypt. */
curl_global_init(CURL_GLOBAL_SSL);
- return (0);
+ return 0;
} /* }}} int apache_init */
void module_register(void) {
plugin_register_complex_config("apache", config);
plugin_register_init("apache", apache_init);
} /* void module_register */
-
-/* vim: set sw=8 noet fdm=marker : */