~ubuntu-branches/ubuntu/oneiric/collectd/oneiric

« back to all changes in this revision

Viewing changes to src/apache.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastian Harl
  • Date: 2008-06-17 10:35:51 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20080617103551-9d0ym3zejc7agtt3
Tags: 4.4.1-1
* New upstream release.
  - Fixed another issue of the sensors plugin affecting some chip types
    (Closes: #468143).
  - Fixed creation of "vserver" graphs in collection.cgi (Closes: #475120).
  - Fixed a segfault when using libperl 5.10.
  - collectd now ships libiptc itself.
  New plugins:
  - Ascent server statistics: ascent
  - IPMI sensors information: ipmi
  - PowerDNS name server statistics: powerdns
  - incremental parsing of logfiles: tail
  - TeamSpeak2 server statistics: teamspeak2
  - detailed virtual memory statistics: vmem
* Disable "tcpconns" plugin by default (Closes: #478759).
* Reenabled iptables plugin on all architectures (Closes: #473435).
  - Added the plugin to collectd.conf.
  - Added /usr/share/doc/collectd/examples/iptables/.
  - Added build dependency on linux-libc-dev (>= 2.6.25-4) - that version is
    required because of #479899.
* New debconf template translations:
  - gl.po, thanks to Jacobo Tarrio (Closes: #482667).
* Added a work around for #474087 (broken openipmi .pc files) by forcing the
  inclusion of the ipmi plugin and manually specifying the dependencies.
* Updated standards-version to 3.8.0 (no changes).

Show diffs side-by-side

added added

removed removed

Lines of Context:
29
29
 
30
30
#include <curl/curl.h>
31
31
 
32
 
static char *url    = NULL;
33
 
static char *user   = NULL;
34
 
static char *pass   = NULL;
35
 
static char *cacert = NULL;
 
32
static char *url         = NULL;
 
33
static char *user        = NULL;
 
34
static char *pass        = NULL;
 
35
static char *verify_peer = NULL;
 
36
static char *verify_host = NULL;
 
37
static char *cacert      = NULL;
36
38
 
37
39
static CURL *curl = NULL;
38
40
 
39
 
#define ABUFFER_SIZE 16384
40
 
static char apache_buffer[ABUFFER_SIZE];
41
 
static int  apache_buffer_len = 0;
42
 
static char apache_curl_error[CURL_ERROR_SIZE];
 
41
static char  *apache_buffer = NULL;
 
42
static size_t apache_buffer_size = 0;
 
43
static size_t apache_buffer_fill = 0;
 
44
static char   apache_curl_error[CURL_ERROR_SIZE];
43
45
 
44
46
static const char *config_keys[] =
45
47
{
46
48
        "URL",
47
49
        "User",
48
50
        "Password",
 
51
        "VerifyPeer",
 
52
        "VerifyHost",
49
53
        "CACert"
50
54
};
51
55
static int config_keys_num = STATIC_ARRAY_SIZE (config_keys);
52
56
 
53
 
static size_t apache_curl_callback (void *buf, size_t size, size_t nmemb, void *stream)
 
57
static size_t apache_curl_callback (void *buf, size_t size, size_t nmemb,
 
58
                void *stream)
54
59
{
55
60
        size_t len = size * nmemb;
56
61
 
57
 
        if ((apache_buffer_len + len) >= ABUFFER_SIZE)
58
 
        {
59
 
                len = (ABUFFER_SIZE - 1) - apache_buffer_len;
60
 
        }
61
 
 
62
62
        if (len <= 0)
63
63
                return (len);
64
64
 
65
 
        memcpy (apache_buffer + apache_buffer_len, (char *) buf, len);
66
 
        apache_buffer_len += len;
67
 
        apache_buffer[apache_buffer_len] = '\0';
 
65
        if ((apache_buffer_fill + len) >= apache_buffer_size)
 
66
        {
 
67
                char *temp;
 
68
 
 
69
                temp = (char *) realloc (apache_buffer,
 
70
                                apache_buffer_fill + len + 1);
 
71
                if (temp == NULL)
 
72
                {
 
73
                        ERROR ("apache plugin: realloc failed.");
 
74
                        return (0);
 
75
                }
 
76
                apache_buffer = temp;
 
77
                apache_buffer_size = apache_buffer_fill + len + 1;
 
78
        }
 
79
 
 
80
        memcpy (apache_buffer + apache_buffer_fill, (char *) buf, len);
 
81
        apache_buffer_fill += len;
 
82
        apache_buffer[apache_buffer_fill] = 0;
68
83
 
69
84
        return (len);
70
85
}
91
106
                return (config_set (&user, value));
92
107
        else if (strcasecmp (key, "password") == 0)
93
108
                return (config_set (&pass, value));
 
109
        else if (strcasecmp (key, "verifypeer") == 0)
 
110
                return (config_set (&verify_peer, value));
 
111
        else if (strcasecmp (key, "verifyhost") == 0)
 
112
                return (config_set (&verify_host, value));
94
113
        else if (strcasecmp (key, "cacert") == 0)
95
114
                return (config_set (&cacert, value));
96
115
        else
143
162
 
144
163
        curl_easy_setopt (curl, CURLOPT_URL, url);
145
164
 
 
165
        if ((verify_peer == NULL) || (strcmp (verify_peer, "true") == 0))
 
166
        {
 
167
                curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 1);
 
168
        }
 
169
        else
 
170
        {
 
171
                curl_easy_setopt (curl, CURLOPT_SSL_VERIFYPEER, 0);
 
172
        }
 
173
 
 
174
        if ((verify_host == NULL) || (strcmp (verify_host, "true") == 0))
 
175
        {
 
176
                curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, 2);
 
177
        }
 
178
        else
 
179
        {
 
180
                curl_easy_setopt (curl, CURLOPT_SSL_VERIFYHOST, 0);
 
181
        }
 
182
 
146
183
        if (cacert != NULL)
147
184
        {
148
185
                curl_easy_setopt (curl, CURLOPT_CAINFO, cacert);
269
306
        if (url == NULL)
270
307
                return (-1);
271
308
 
272
 
        apache_buffer_len = 0;
 
309
        apache_buffer_fill = 0;
273
310
        if (curl_easy_perform (curl) != 0)
274
311
        {
275
312
                ERROR ("apache: curl_easy_perform failed: %s",
312
349
                }
313
350
        }
314
351
 
315
 
        apache_buffer_len = 0;
 
352
        apache_buffer_fill = 0;
316
353
 
317
354
        return (0);
318
355
} /* int apache_read */