author | Marc Fournier <marc.fournier@camptocamp.com> | |
Mon, 1 Sep 2014 08:29:34 +0000 (10:29 +0200) | ||
committer | Marc Fournier <marc.fournier@camptocamp.com> | |
Mon, 1 Sep 2014 08:29:34 +0000 (10:29 +0200) |
Allow curl digest feature to build against older libcurl versions
configure.ac | patch | blob | history | |
src/collectd.conf.in | patch | blob | history | |
src/collectd.conf.pod | patch | blob | history | |
src/curl.c | patch | blob | history | |
src/curl_json.c | patch | blob | history | |
src/curl_xml.c | patch | blob | history |
diff --git a/configure.ac b/configure.ac
index 0d0d04359ce9f1076bf3f639944fdafec53c29a1..bee5f72adfb89edf02b86c33dd783d4af68e6040 100644 (file)
--- a/configure.ac
+++ b/configure.ac
[with_libcurl="yes"],
[with_libcurl="no (symbol 'curl_easy_init' not found)"],
[$with_curl_libs])
+ AC_CHECK_DECL(CURLOPT_USERNAME,
+ [have_curlopt_username="yes"],
+ [have_curlopt_username="no"],
+ [[#include <curl/curl.h>]])
fi
fi
if test "x$with_libcurl" = "xyes"
BUILD_WITH_LIBCURL_LIBS="$with_curl_libs"
AC_SUBST(BUILD_WITH_LIBCURL_CFLAGS)
AC_SUBST(BUILD_WITH_LIBCURL_LIBS)
+
+ if test "x$have_curlopt_username" = "xyes"
+ then
+ AC_DEFINE(HAVE_CURLOPT_USERNAME, 1, [Define if libcurl supports CURLOPT_USERNAME option.])
+ fi
fi
AM_CONDITIONAL(BUILD_WITH_LIBCURL, test "x$with_libcurl" = "xyes")
# }}}
diff --git a/src/collectd.conf.in b/src/collectd.conf.in
index 21de8440fd910d4f1153370b336e55d451a84559..eed7bc818a99cb26fdf871892005f9e24ffda04d 100644 (file)
--- a/src/collectd.conf.in
+++ b/src/collectd.conf.in
# URL "http://finance.google.com/finance?q=NYSE%3AAMD"
# User "foo"
# Password "bar"
+# Digest false
+# VerifyPeer true
+# VerifyHost true
+# CACert "/path/to/ca.crt"
+# Header "X-Custom-Header: foobar"
+# Post "foo=bar"
+#
# MeasureResponseTime false
+# MeasureResponseCode false
# <Match>
# Regex "<span +class=\"pr\"[^>]*> *([0-9]*\\.[0-9]+) *</span>"
# DSType "GaugeAverage"
# Instance "some_instance"
# User "collectd"
# Password "thaiNg0I"
+# Digest false
# VerifyPeer true
# VerifyHost true
# CACert "/path/to/ca.crt"
+# Header "X-Custom-Header: foobar"
+# Post "foo=bar"
#
# <XPath "table[@id=\"magic_level\"]/tr">
# Type "magic_level"
diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod
index bba90557f6250e407ac3b5b3390ecbf9862781b2..9293445ed39c1af9a039397ab0f14d23421d91c0 100644 (file)
--- a/src/collectd.conf.pod
+++ b/src/collectd.conf.pod
URL "http://finance.google.com/finance?q=NYSE%3AAMD"
User "foo"
Password "bar"
+ Digest false
+ VerifyPeer true
+ VerifyHost true
+ CACert "/path/to/ca.crt"
+ Header "X-Custom-Header: foobar"
+ Post "foo=bar"
+
+ MeasureResponseTime false
+ MeasureResponseCode false
+
<Match>
Regex "<span +class=\"pr\"[^>]*> *([0-9]*\\.[0-9]+) *</span>"
DSType "GaugeAverage"
Measure response time for the request. If this setting is enabled, B<Match>
blocks (see below) are optional. Disabled by default.
+=item B<MeasureResponseCode> B<true>|B<false>
+
+Measure response code for the request. If this setting is enabled, B<Match>
+blocks (see below) are optional. Disabled by default.
+
=item B<E<lt>MatchE<gt>>
One or more B<Match> blocks that define how to match information in the data
returned by C<libcurl>. The C<curl> plugin uses the same infrastructure that's
used by the C<tail> plugin, so please see the documentation of the C<tail>
-plugin below on how matches are defined. If the B<MeasureResponseTime> option
-is set to B<true>, B<Match> blocks are optional.
+plugin below on how matches are defined. If the B<MeasureResponseTime> or
+B<MeasureResponseCode> options are set to B<true>, B<Match> blocks are
+optional.
=back
@@ -1410,6 +1426,8 @@ The B<curl_xml plugin> uses B<libcurl> (L<http://curl.haxx.se/>) and B<libxml2>
VerifyPeer true
VerifyHost true
CACert "/path/to/ca.crt"
+ Header "X-Custom-Header: foobar"
+ Post "foo=bar"
<XPath "table[@id=\"magic_level\"]/tr">
Type "magic_level"
diff --git a/src/curl.c b/src/curl.c
index f605c078fc0ae61533835df9a9a150d4629b5dc1..9de8d3d70732cdc675071f3a8faad182de6c0265 100644 (file)
--- a/src/curl.c
+++ b/src/curl.c
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;
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_USERNAME, wp->user);
- curl_easy_setopt (wp->curl, CURLOPT_PASSWORD, wp->pass);
- }
}
curl_easy_setopt (wp->curl, CURLOPT_SSL_VERIFYPEER, (long) wp->verify_peer);
diff --git a/src/curl_json.c b/src/curl_json.c
index a84cba042b924d6e3b7667066889ead4ab41ca72..8a084fed6fb9bb3bbb3d4c619579f9a83317b97d 100644 (file)
--- a/src/curl_json.c
+++ b/src/curl_json.c
if (db->user != NULL)
{
+#ifdef HAVE_CURLOPT_USERNAME
+ curl_easy_setopt (db->curl, CURLOPT_USERNAME, db->user);
+ curl_easy_setopt (db->curl, CURLOPT_PASSWORD,
+ (db->pass == NULL) ? "" : db->pass);
+#else
size_t credentials_size;
credentials_size = strlen (db->user) + 2;
ssnprintf (db->credentials, credentials_size, "%s:%s",
db->user, (db->pass == NULL) ? "" : db->pass);
curl_easy_setopt (db->curl, CURLOPT_USERPWD, db->credentials);
-
+#endif
+
if (db->digest)
- {
curl_easy_setopt (db->curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
- curl_easy_setopt (db->curl, CURLOPT_USERNAME, db->user);
- curl_easy_setopt (db->curl, CURLOPT_PASSWORD, db->pass);
- }
}
curl_easy_setopt (db->curl, CURLOPT_SSL_VERIFYPEER, (long) db->verify_peer);
diff --git a/src/curl_xml.c b/src/curl_xml.c
index a743753eb75c8bf8b588e5fe94ab21e923489438..c0ab6fdbed7721374ccbff5e180dce6e897a7690 100644 (file)
--- a/src/curl_xml.c
+++ b/src/curl_xml.c
if (db->user != NULL)
{
+#ifdef HAVE_CURLOPT_USERNAME
+ curl_easy_setopt (db->curl, CURLOPT_USERNAME, db->user);
+ curl_easy_setopt (db->curl, CURLOPT_PASSWORD,
+ (db->pass == NULL) ? "" : db->pass);
+#else
size_t credentials_size;
credentials_size = strlen (db->user) + 2;
ssnprintf (db->credentials, credentials_size, "%s:%s",
db->user, (db->pass == NULL) ? "" : db->pass);
curl_easy_setopt (db->curl, CURLOPT_USERPWD, db->credentials);
-
+#endif
+
if (db->digest)
- {
curl_easy_setopt (db->curl, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
- curl_easy_setopt (db->curl, CURLOPT_USERNAME, db->user);
- curl_easy_setopt (db->curl, CURLOPT_PASSWORD, db->pass);
- }
}
curl_easy_setopt (db->curl, CURLOPT_SSL_VERIFYPEER, db->verify_peer ? 1L : 0L);