[monitoring-plugins] check_tcp: add --sni
Sven Nierlein
git at monitoring-plugins.org
Tue Jan 7 21:40:12 CET 2020
Module: monitoring-plugins
Branch: master
Commit: f53ea7afd8e124690871ebdb79a1432e4dd14488
Author: Alexander A. Klimov <grandmaster at al2klimov.de>
Committer: Sven Nierlein <sven at nierlein.org>
Date: Tue Jan 7 20:57:24 2020 +0100
URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=f53ea7a
check_tcp: add --sni
---
plugins/check_tcp.c | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/plugins/check_tcp.c b/plugins/check_tcp.c
index 61333bd..1365b9c 100644
--- a/plugins/check_tcp.c
+++ b/plugins/check_tcp.c
@@ -86,6 +86,11 @@ static char buffer[MAXBUF];
static int expect_mismatch_state = STATE_WARNING;
static int match_flags = NP_MATCH_EXACT;
+#ifdef HAVE_SSL
+static char *sni = NULL;
+static int sni_specified = FALSE;
+#endif
+
#define FLAG_SSL 0x01
#define FLAG_VERBOSE 0x02
#define FLAG_TIME_WARN 0x04
@@ -241,7 +246,7 @@ main (int argc, char **argv)
#ifdef HAVE_SSL
if (flags & FLAG_SSL){
- result = np_net_ssl_init(sd);
+ result = np_net_ssl_init_with_hostname(sd, (sni_specified ? sni : NULL));
if (result == STATE_OK && check_cert == TRUE) {
result = np_net_ssl_check_cert(days_till_exp_warn, days_till_exp_crit);
}
@@ -401,6 +406,10 @@ process_arguments (int argc, char **argv)
int escape = 0;
char *temp;
+ enum {
+ SNI_OPTION = CHAR_MAX + 1
+ };
+
int option = 0;
static struct option longopts[] = {
{"hostname", required_argument, 0, 'H'},
@@ -427,6 +436,7 @@ process_arguments (int argc, char **argv)
{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
{"ssl", no_argument, 0, 'S'},
+ {"sni", required_argument, 0, SNI_OPTION},
{"certificate", required_argument, 0, 'D'},
{0, 0, 0, 0}
};
@@ -604,6 +614,15 @@ process_arguments (int argc, char **argv)
die (STATE_UNKNOWN, _("Invalid option - SSL is not available"));
#endif
break;
+ case SNI_OPTION:
+#ifdef HAVE_SSL
+ flags |= FLAG_SSL;
+ sni_specified = TRUE;
+ sni = optarg;
+#else
+ die (STATE_UNKNOWN, _("Invalid option - SSL is not available"));
+#endif
+ break;
case 'A':
match_flags |= NP_MATCH_ALL;
break;
@@ -671,6 +690,8 @@ print_help (void)
printf (" %s\n", _("1st is #days for warning, 2nd is critical (if not specified - 0)."));
printf (" %s\n", "-S, --ssl");
printf (" %s\n", _("Use SSL for the connection."));
+ printf (" %s\n", "--sni=STRING");
+ printf (" %s\n", _("SSL server_name"));
#endif
printf (UT_WARN_CRIT);
More information about the Commits
mailing list