diff options
Diffstat (limited to 'plugins/check_http.c')
| -rw-r--r-- | plugins/check_http.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/plugins/check_http.c b/plugins/check_http.c index 72d0a2b6..5a859f98 100644 --- a/plugins/check_http.c +++ b/plugins/check_http.c | |||
| @@ -44,6 +44,9 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net"; | |||
| 44 | #include <ctype.h> | 44 | #include <ctype.h> |
| 45 | 45 | ||
| 46 | #define INPUT_DELIMITER ";" | 46 | #define INPUT_DELIMITER ";" |
| 47 | #define STICKY_NONE 0 | ||
| 48 | #define STICKY_HOST 1 | ||
| 49 | #define STICKY_PORT 2 | ||
| 47 | 50 | ||
| 48 | #define HTTP_EXPECT "HTTP/1." | 51 | #define HTTP_EXPECT "HTTP/1." |
| 49 | enum { | 52 | enum { |
| @@ -106,7 +109,7 @@ int display_html = FALSE; | |||
| 106 | char **http_opt_headers; | 109 | char **http_opt_headers; |
| 107 | int http_opt_headers_count = 0; | 110 | int http_opt_headers_count = 0; |
| 108 | int onredirect = STATE_OK; | 111 | int onredirect = STATE_OK; |
| 109 | int followsticky = 0; | 112 | int followsticky = STICKY_NONE; |
| 110 | int use_ssl = FALSE; | 113 | int use_ssl = FALSE; |
| 111 | int verbose = FALSE; | 114 | int verbose = FALSE; |
| 112 | int sd; | 115 | int sd; |
| @@ -300,10 +303,12 @@ process_arguments (int argc, char **argv) | |||
| 300 | server_port = HTTPS_PORT; | 303 | server_port = HTTPS_PORT; |
| 301 | break; | 304 | break; |
| 302 | case 'f': /* onredirect */ | 305 | case 'f': /* onredirect */ |
| 306 | if (!strcmp (optarg, "stickyport")) | ||
| 307 | onredirect = STATE_DEPENDENT, followsticky = STICKY_HOST|STICKY_PORT; | ||
| 303 | if (!strcmp (optarg, "sticky")) | 308 | if (!strcmp (optarg, "sticky")) |
| 304 | onredirect = STATE_DEPENDENT, followsticky = 1; | 309 | onredirect = STATE_DEPENDENT, followsticky = STICKY_HOST; |
| 305 | if (!strcmp (optarg, "follow")) | 310 | if (!strcmp (optarg, "follow")) |
| 306 | onredirect = STATE_DEPENDENT, followsticky = 0; | 311 | onredirect = STATE_DEPENDENT, followsticky = STICKY_NONE; |
| 307 | if (!strcmp (optarg, "unknown")) | 312 | if (!strcmp (optarg, "unknown")) |
| 308 | onredirect = STATE_UNKNOWN; | 313 | onredirect = STATE_UNKNOWN; |
| 309 | if (!strcmp (optarg, "ok")) | 314 | if (!strcmp (optarg, "ok")) |
| @@ -1203,15 +1208,18 @@ redir (char *pos, char *status_line) | |||
| 1203 | free (host_name); | 1208 | free (host_name); |
| 1204 | host_name = strdup (addr); | 1209 | host_name = strdup (addr); |
| 1205 | 1210 | ||
| 1206 | if (followsticky == 0) { | 1211 | if (!(followsticky & STICKY_HOST)) { |
| 1207 | free (server_address); | 1212 | free (server_address); |
| 1208 | server_address = strdup (addr); | 1213 | server_address = strdup (addr); |
| 1209 | } | 1214 | } |
| 1215 | if (!(followsticky & STICKY_PORT)) { | ||
| 1216 | server_port = i; | ||
| 1217 | } | ||
| 1210 | 1218 | ||
| 1211 | free (server_url); | 1219 | free (server_url); |
| 1212 | server_url = url; | 1220 | server_url = url; |
| 1213 | 1221 | ||
| 1214 | if ((server_port = i) > MAX_PORT) | 1222 | if (server_port > MAX_PORT) |
| 1215 | die (STATE_UNKNOWN, | 1223 | die (STATE_UNKNOWN, |
| 1216 | _("HTTP UNKNOWN - Redirection to port above %d - %s://%s:%d%s%s\n"), | 1224 | _("HTTP UNKNOWN - Redirection to port above %d - %s://%s:%d%s%s\n"), |
| 1217 | MAX_PORT, server_type, server_address, server_port, server_url, | 1225 | MAX_PORT, server_type, server_address, server_port, server_url, |
| @@ -1343,9 +1351,9 @@ print_help (void) | |||
| 1343 | printf (" %s\n", _(" Any other tags to be sent in http header. Use multiple times for additional headers")); | 1351 | printf (" %s\n", _(" Any other tags to be sent in http header. Use multiple times for additional headers")); |
| 1344 | printf (" %s\n", "-L, --link"); | 1352 | printf (" %s\n", "-L, --link"); |
| 1345 | printf (" %s\n", _("Wrap output in HTML link (obsoleted by urlize)")); | 1353 | printf (" %s\n", _("Wrap output in HTML link (obsoleted by urlize)")); |
| 1346 | printf (" %s\n", "-f, --onredirect=<ok|warning|critical|follow|sticky>"); | 1354 | printf (" %s\n", "-f, --onredirect=<ok|warning|critical|follow|sticky|stickyport>"); |
| 1347 | printf (" %s\n", _("How to handle redirected pages. sticky is like follow but stick to the")); | 1355 | printf (" %s\n", _("How to handle redirected pages. sticky is like follow but stick to the")); |
| 1348 | printf (" %s\n", _("specified IP address")); | 1356 | printf (" %s\n", _("specified IP address. stickyport also ensure post stays the same.")); |
| 1349 | printf (" %s\n", "-m, --pagesize=INTEGER<:INTEGER>"); | 1357 | printf (" %s\n", "-m, --pagesize=INTEGER<:INTEGER>"); |
| 1350 | printf (" %s\n", _("Minimum page size required (bytes) : Maximum page size required (bytes)")); | 1358 | printf (" %s\n", _("Minimum page size required (bytes) : Maximum page size required (bytes)")); |
| 1351 | 1359 | ||
