diff options
| author | M. Sean Finney <seanius@users.sourceforge.net> | 2005-10-19 12:59:55 +0000 |
|---|---|---|
| committer | M. Sean Finney <seanius@users.sourceforge.net> | 2005-10-19 12:59:55 +0000 |
| commit | 65282c7685ca01c57d94d3df93c2f95d5b945e57 (patch) | |
| tree | eb1d0c95752126bd526d939332d14bf40cf7d1f7 /plugins/netutils.c | |
| parent | 8611341fb989382545c0c934c700e027d9bbab15 (diff) | |
| download | monitoring-plugins-65282c7685ca01c57d94d3df93c2f95d5b945e57.tar.gz | |
- initial attempt at consolidating ssl-related code into netutils.{c,h}
- added some #ifdefs to common.h and netutils.h to prevent multiple
inclusions (as netlibs now includes common.h)
- all ssl plugins (tcp/http/smtp) compile cleanly against gnutls, though
certificate checking still needs to be done.
- modified configure script so you can also explicitly say "without-gnutls"
too (otherwise if you disable openssl you have no way of disabling
gnutls too)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1255 f882894a-f735-0410-b71e-b25c423dba1c
Diffstat (limited to 'plugins/netutils.c')
| -rw-r--r-- | plugins/netutils.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/netutils.c b/plugins/netutils.c index 9539a7f0..e3fbb3aa 100644 --- a/plugins/netutils.c +++ b/plugins/netutils.c | |||
| @@ -234,6 +234,54 @@ np_net_connect (const char *host_name, int port, int *sd, int proto) | |||
| 234 | } | 234 | } |
| 235 | } | 235 | } |
| 236 | 236 | ||
| 237 | #ifdef HAVE_SSL | ||
| 238 | static SSL_CTX *c=NULL; | ||
| 239 | static SSL *s=NULL; | ||
| 240 | |||
| 241 | int np_net_ssl_init (int sd){ | ||
| 242 | SSL_METHOD *m=NULL; | ||
| 243 | /* Initialize SSL context */ | ||
| 244 | SSLeay_add_ssl_algorithms (); | ||
| 245 | m = SSLv23_client_method (); | ||
| 246 | SSL_load_error_strings (); | ||
| 247 | OpenSSL_add_all_algorithms(); | ||
| 248 | if ((c = SSL_CTX_new (m)) == NULL) { | ||
| 249 | printf (_("CRITICAL - Cannot create SSL context.\n")); | ||
| 250 | return STATE_CRITICAL; | ||
| 251 | } | ||
| 252 | if ((s = SSL_new (c)) != NULL){ | ||
| 253 | SSL_set_fd (s, sd); | ||
| 254 | if (SSL_connect(s) == 1){ | ||
| 255 | return OK; | ||
| 256 | } else { | ||
| 257 | printf (_("CRITICAL - Cannot make SSL connection ")); | ||
| 258 | #ifdef USE_OPENSSL /* XXX look into ERR_error_string */ | ||
| 259 | ERR_print_errors_fp (stdout); | ||
| 260 | #endif /* USE_OPENSSL */ | ||
| 261 | } | ||
| 262 | } else { | ||
| 263 | printf (_("CRITICAL - Cannot initiate SSL handshake.\n")); | ||
| 264 | } | ||
| 265 | return STATE_CRITICAL; | ||
| 266 | } | ||
| 267 | |||
| 268 | void np_net_ssl_cleanup (){ | ||
| 269 | if(s){ | ||
| 270 | SSL_shutdown (s); | ||
| 271 | SSL_free (s); | ||
| 272 | if(c) SSL_CTX_free (c); | ||
| 273 | } | ||
| 274 | } | ||
| 275 | |||
| 276 | int np_net_ssl_write(const void *buf, int num){ | ||
| 277 | return SSL_write(s, buf, num); | ||
| 278 | } | ||
| 279 | |||
| 280 | int np_net_ssl_read(void *buf, int num){ | ||
| 281 | return SSL_read(s, buf, num); | ||
| 282 | } | ||
| 283 | |||
| 284 | #endif /* HAVE_SSL */ | ||
| 237 | 285 | ||
| 238 | int | 286 | int |
| 239 | send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int recv_size) | 287 | send_request (int sd, int proto, const char *send_buffer, char *recv_buffer, int recv_size) |
