diff options
-rw-r--r-- | lib/Makefile.am | 4 | ||||
-rw-r--r-- | lib/base64.c | 50 | ||||
-rw-r--r-- | lib/base64.h | 4 | ||||
-rw-r--r-- | plugins/check_http.c | 45 | ||||
-rw-r--r-- | plugins/check_smtp.c | 42 |
5 files changed, 59 insertions, 86 deletions
diff --git a/lib/Makefile.am b/lib/Makefile.am index 9dd3a0c2..1b309846 100644 --- a/lib/Makefile.am +++ b/lib/Makefile.am @@ -5,8 +5,8 @@ SUBDIRS = tests noinst_LIBRARIES = libnagiosplug.a -libnagiosplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c -EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h +libnagiosplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c base64.c +EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h base64.h INCLUDES = -I$(srcdir) -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins diff --git a/lib/base64.c b/lib/base64.c new file mode 100644 index 00000000..1f1fcb8c --- /dev/null +++ b/lib/base64.c @@ -0,0 +1,50 @@ +/**************************************************************************** +* Function to encode in Base64 +* +* Written by Lauri Alanko +* +*****************************************************************************/ + +#include "common.h" +#include "base64.h" + +char * +base64 (const char *bin, size_t len) +{ + + char *buf = (char *) malloc ((len + 2) / 3 * 4 + 1); + size_t i = 0, j = 0; + + char BASE64_END = '='; + char base64_table[64]; + strncpy (base64_table, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 64); + + while (j < len - 2) { + buf[i++] = base64_table[bin[j] >> 2]; + buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)]; + buf[i++] = base64_table[((bin[j + 1] & 15) << 2) | (bin[j + 2] >> 6)]; + buf[i++] = base64_table[bin[j + 2] & 63]; + j += 3; + } + + switch (len - j) { + case 1: + buf[i++] = base64_table[bin[j] >> 2]; + buf[i++] = base64_table[(bin[j] & 3) << 4]; + buf[i++] = BASE64_END; + buf[i++] = BASE64_END; + break; + case 2: + buf[i++] = base64_table[bin[j] >> 2]; + buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)]; + buf[i++] = base64_table[(bin[j + 1] & 15) << 2]; + buf[i++] = BASE64_END; + break; + case 0: + break; + } + + buf[i] = '\0'; + return buf; +} + diff --git a/lib/base64.h b/lib/base64.h new file mode 100644 index 00000000..1e0a0b04 --- /dev/null +++ b/lib/base64.h @@ -0,0 +1,4 @@ +/* Header file for base64.c */ + +char *base64 (const char *bin, size_t len); + diff --git a/plugins/check_http.c b/plugins/check_http.c index 901f6b66..36374233 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c @@ -48,6 +48,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "common.h" #include "netutils.h" #include "utils.h" +#include "base64.h" #define INPUT_DELIMITER ";" @@ -125,7 +126,6 @@ char *http_content_type; char buffer[MAX_INPUT_BUFFER]; int process_arguments (int, char **); -static char *base64 (const char *bin, size_t len); int check_http (void); void redir (char *pos, char *status_line); int server_type_check(const char *type); @@ -455,49 +455,6 @@ process_arguments (int argc, char **argv) -/* written by lauri alanko */ -static char * -base64 (const char *bin, size_t len) -{ - - char *buf = (char *) malloc ((len + 2) / 3 * 4 + 1); - size_t i = 0, j = 0; - - char BASE64_END = '='; - char base64_table[64]; - strncpy (base64_table, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 64); - - while (j < len - 2) { - buf[i++] = base64_table[bin[j] >> 2]; - buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)]; - buf[i++] = base64_table[((bin[j + 1] & 15) << 2) | (bin[j + 2] >> 6)]; - buf[i++] = base64_table[bin[j + 2] & 63]; - j += 3; - } - - switch (len - j) { - case 1: - buf[i++] = base64_table[bin[j] >> 2]; - buf[i++] = base64_table[(bin[j] & 3) << 4]; - buf[i++] = BASE64_END; - buf[i++] = BASE64_END; - break; - case 2: - buf[i++] = base64_table[bin[j] >> 2]; - buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)]; - buf[i++] = base64_table[(bin[j + 1] & 15) << 2]; - buf[i++] = BASE64_END; - break; - case 0: - break; - } - - buf[i] = '\0'; - return buf; -} - - - /* Returns 1 if we're done processing the document body; 0 to keep going */ static int document_headers_done (char *full_page) diff --git a/plugins/check_smtp.c b/plugins/check_smtp.c index 79c7cd35..f44e5331 100644 --- a/plugins/check_smtp.c +++ b/plugins/check_smtp.c @@ -45,6 +45,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; #include "common.h" #include "netutils.h" #include "utils.h" +#include "base64.h" #ifdef HAVE_SSL int check_cert = FALSE; @@ -122,46 +123,6 @@ enum { UDP_PROTOCOL = 2, }; -/* written by lauri alanko */ -static char * -base64 (const char *bin, size_t len) -{ - - char *buf = (char *) malloc ((len + 2) / 3 * 4 + 1); - size_t i = 0, j = 0; - - char BASE64_END = '='; - char base64_table[64]; - strncpy (base64_table, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 64); - - while (j < len - 2) { - buf[i++] = base64_table[bin[j] >> 2]; - buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)]; - buf[i++] = base64_table[((bin[j + 1] & 15) << 2) | (bin[j + 2] >> 6)]; - buf[i++] = base64_table[bin[j + 2] & 63]; - j += 3; - } - - switch (len - j) { - case 1: - buf[i++] = base64_table[bin[j] >> 2]; - buf[i++] = base64_table[(bin[j] & 3) << 4]; - buf[i++] = BASE64_END; - buf[i++] = BASE64_END; - break; - case 2: - buf[i++] = base64_table[bin[j] >> 2]; - buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)]; - buf[i++] = base64_table[(bin[j + 1] & 15) << 2]; - buf[i++] = BASE64_END; - break; - case 0: - break; - } - - buf[i] = '\0'; - return buf; -} int main (int argc, char **argv) @@ -567,6 +528,7 @@ process_arguments (int argc, char **argv) break; case 'A': authtype = optarg; + use_ehlo = TRUE; break; case 'U': authuser = optarg; |