aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorGravatar Andreas Baumann <mail@andreasbaumann.cc> 2022-01-29 11:11:36 +0100
committerGravatar Sven Nierlein <sven@nierlein.org> 2022-01-29 12:15:12 +0100
commit737412f7391ae430a51e8f2c2a3b1ab2d35a6394 (patch)
tree7cf7996e8a2fe227edab7fb8c6279fdf6d42424d /plugins
parente2397167c7e5c7a02b68de45de946f63706e7d12 (diff)
downloadmonitoring-plugins-737412f7391ae430a51e8f2c2a3b1ab2d35a6394.tar.gz
check_http and check_curl: added --max-redirs=N option (feature #1684)
Diffstat (limited to 'plugins')
-rw-r--r--plugins/check_curl.c16
-rw-r--r--plugins/check_http.c20
2 files changed, 30 insertions, 6 deletions
diff --git a/plugins/check_curl.c b/plugins/check_curl.c
index 14cc8463..32d919fe 100644
--- a/plugins/check_curl.c
+++ b/plugins/check_curl.c
@@ -66,13 +66,13 @@ const char *email = "devel@monitoring-plugins.org";
#define DEFAULT_BUFFER_SIZE 2048
#define DEFAULT_SERVER_URL "/"
#define HTTP_EXPECT "HTTP/"
-#define DEFAULT_MAX_REDIRS 15
#define INET_ADDR_MAX_SIZE INET6_ADDRSTRLEN
enum {
MAX_IPV4_HOSTLENGTH = 255,
HTTP_PORT = 80,
HTTPS_PORT = 443,
- MAX_PORT = 65535
+ MAX_PORT = 65535,
+ DEFAULT_MAX_REDIRS = 15
};
enum {
@@ -1210,6 +1210,7 @@ process_arguments (int argc, char **argv)
enum {
INVERT_REGEX = CHAR_MAX + 1,
SNI_OPTION,
+ MAX_REDIRS_OPTION,
CA_CERT_OPTION,
HTTP_VERSION_OPTION,
AUTOMATIC_DECOMPRESSION
@@ -1254,6 +1255,7 @@ process_arguments (int argc, char **argv)
{"use-ipv6", no_argument, 0, '6'},
{"extended-perfdata", no_argument, 0, 'E'},
{"show-body", no_argument, 0, 'B'},
+ {"max-redirs", required_argument, 0, MAX_REDIRS_OPTION},
{"http-version", required_argument, 0, HTTP_VERSION_OPTION},
{"enable-automatic-decompression", no_argument, 0, AUTOMATIC_DECOMPRESSION},
{0, 0, 0, 0}
@@ -1512,6 +1514,13 @@ process_arguments (int argc, char **argv)
use_sni = TRUE;
break;
#endif /* LIBCURL_FEATURE_SSL */
+ case MAX_REDIRS_OPTION:
+ if (!is_intnonneg (optarg))
+ usage2 (_("Invalid max_redirs count"), optarg);
+ else {
+ max_depth = atoi (optarg);
+ }
+ break;
case 'f': /* onredirect */
if (!strcmp (optarg, "ok"))
onredirect = STATE_OK;
@@ -1854,6 +1863,9 @@ print_help (void)
printf (" %s\n", _("specified IP address. stickyport also ensures port stays the same."));
printf (" %s\n", _("follow uses the old redirection algorithm of check_http."));
printf (" %s\n", _("curl uses CURL_FOLLOWLOCATION built into libcurl."));
+ printf (" %s\n", "--max-redirs=INTEGER");
+ printf (" %s", _("Maximal number of redirects (default: "));
+ printf ("%d)\n", DEFAULT_MAX_REDIRS);
printf (" %s\n", "-m, --pagesize=INTEGER<:INTEGER>");
printf (" %s\n", _("Minimum page size required (bytes) : Maximum page size required (bytes)"));
printf ("\n");
diff --git a/plugins/check_http.c b/plugins/check_http.c
index 34fb4f01..df2a79c2 100644
--- a/plugins/check_http.c
+++ b/plugins/check_http.c
@@ -52,7 +52,8 @@ enum {
MAX_IPV4_HOSTLENGTH = 255,
HTTP_PORT = 80,
HTTPS_PORT = 443,
- MAX_PORT = 65535
+ MAX_PORT = 65535,
+ DEFAULT_MAX_REDIRS = 15
};
#ifdef HAVE_SSL
@@ -125,7 +126,7 @@ int sd;
int min_page_len = 0;
int max_page_len = 0;
int redir_depth = 0;
-int max_depth = 15;
+int max_depth = DEFAULT_MAX_REDIRS;
char *http_method;
char *http_method_proxy;
char *http_post_data;
@@ -203,7 +204,8 @@ process_arguments (int argc, char **argv)
enum {
INVERT_REGEX = CHAR_MAX + 1,
- SNI_OPTION
+ SNI_OPTION,
+ MAX_REDIRS_OPTION
};
int option = 0;
@@ -242,6 +244,7 @@ process_arguments (int argc, char **argv)
{"use-ipv6", no_argument, 0, '6'},
{"extended-perfdata", no_argument, 0, 'E'},
{"show-body", no_argument, 0, 'B'},
+ {"max-redirs", required_argument, 0, MAX_REDIRS_OPTION},
{0, 0, 0, 0}
};
@@ -373,6 +376,13 @@ process_arguments (int argc, char **argv)
case SNI_OPTION:
use_sni = TRUE;
break;
+ case MAX_REDIRS_OPTION:
+ if (!is_intnonneg (optarg))
+ usage2 (_("Invalid max_redirs count"), optarg);
+ else {
+ max_depth = atoi (optarg);
+ }
+ break;
case 'f': /* onredirect */
if (!strcmp (optarg, "stickyport"))
onredirect = STATE_DEPENDENT, followsticky = STICKY_HOST|STICKY_PORT;
@@ -1657,9 +1667,11 @@ print_help (void)
printf (" %s\n", "-f, --onredirect=<ok|warning|critical|follow|sticky|stickyport>");
printf (" %s\n", _("How to handle redirected pages. sticky is like follow but stick to the"));
printf (" %s\n", _("specified IP address. stickyport also ensures port stays the same."));
+ printf (" %s\n", "--max-redirs=INTEGER");
+ printf (" %s", _("Maximal number of redirects (default: "));
+ printf ("%d)\n", DEFAULT_MAX_REDIRS);
printf (" %s\n", "-m, --pagesize=INTEGER<:INTEGER>");
printf (" %s\n", _("Minimum page size required (bytes) : Maximum page size required (bytes)"));
-
printf (UT_WARN_CRIT);
printf (UT_CONN_TIMEOUT, DEFAULT_SOCKET_TIMEOUT);