diff options
Diffstat (limited to 'web/attachments/456910-nagios-plugins-check_http_metadata.patch')
| -rw-r--r-- | web/attachments/456910-nagios-plugins-check_http_metadata.patch | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/web/attachments/456910-nagios-plugins-check_http_metadata.patch b/web/attachments/456910-nagios-plugins-check_http_metadata.patch new file mode 100644 index 0000000..2cda3e5 --- /dev/null +++ b/web/attachments/456910-nagios-plugins-check_http_metadata.patch | |||
| @@ -0,0 +1,351 @@ | |||
| 1 | commit 77d700600f51880583484b0e7e56b0c896e0d132 | ||
| 2 | Author: Dejan Muhamedagic <dejan@suse.de> | ||
| 3 | Date: Fri Nov 23 11:45:14 2012 +0100 | ||
| 4 | |||
| 5 | check_http: add support for metadata | ||
| 6 | |||
| 7 | diff --git a/plugins/check_http.c b/plugins/check_http.c | ||
| 8 | index 9231a55..cc9f39f 100644 | ||
| 9 | --- a/plugins/check_http.c | ||
| 10 | +++ b/plugins/check_http.c | ||
| 11 | @@ -135,6 +135,227 @@ char *perfd_size (int page_len); | ||
| 12 | void print_help (void); | ||
| 13 | void print_usage (void); | ||
| 14 | |||
| 15 | +static struct help_head resource_meta = { | ||
| 16 | + "http", | ||
| 17 | + "Test the HTTP service", | ||
| 18 | + "This plugin tests the HTTP service on the specified host. It can test\n" | ||
| 19 | + "normal (http) and secure (https) servers, follow redirects, search for\n" | ||
| 20 | + "strings and regular expressions, check connection times, and report on\n" | ||
| 21 | + "certificate expiration times.\n" | ||
| 22 | +}; | ||
| 23 | + | ||
| 24 | +static struct parameter_help options_help[] = { | ||
| 25 | + /* hostname */ | ||
| 26 | + { | ||
| 27 | + "hostname", 'H', | ||
| 28 | + "Host name", | ||
| 29 | + 0, 1, "string", "", "ADDRESS", | ||
| 30 | + "Host name argument for servers using host headers (virtual host)\n" | ||
| 31 | + "Append a port to include it in the header (eg: example.com:5000)\n" | ||
| 32 | + }, | ||
| 33 | + /* IP-address */ | ||
| 34 | + { | ||
| 35 | + "IP-address", 'I', | ||
| 36 | + "IP address or name", | ||
| 37 | + 0, 0, "string", "", "ADDRESS", | ||
| 38 | + "IP address or name (use numeric address if possible to bypass DNS lookup).\n" | ||
| 39 | + }, | ||
| 40 | + /* port */ | ||
| 41 | + { | ||
| 42 | + "port", 'p', | ||
| 43 | + "Port number (default: 80)", | ||
| 44 | + 0, 0, "integer", "80", "INTEGER", | ||
| 45 | + }, | ||
| 46 | + /* use-ipv4 */ | ||
| 47 | + { | ||
| 48 | + "use-ipv4", '4', | ||
| 49 | + "Use IPv4 connection", | ||
| 50 | + 0, 0, "boolean", "false", "", | ||
| 51 | + }, | ||
| 52 | + /* use-ipv6 */ | ||
| 53 | + { | ||
| 54 | + "use-ipv6", '6', | ||
| 55 | + "Use IPv6 connection", | ||
| 56 | + 0, 0, "boolean", "false", "", | ||
| 57 | + }, | ||
| 58 | +#ifdef HAVE_SSL | ||
| 59 | + /* ssl */ | ||
| 60 | + { | ||
| 61 | + "ssl", 'S', | ||
| 62 | + "Connect via SSL.", | ||
| 63 | + 0, 0, "string", "", "VERSION", | ||
| 64 | + "Connect via SSL. Port defaults to 443. VERSION is optional, and prevents\n" | ||
| 65 | + "auto-negotiation (1 = TLSv1, 2 = SSLv2, 3 = SSLv3).\n" | ||
| 66 | + }, | ||
| 67 | + /* sni */ | ||
| 68 | + { | ||
| 69 | + "sni", 0, | ||
| 70 | + "Enable SSL/TLS hostname extension support (SNI)", | ||
| 71 | + 0, 0, "boolean", "false", "", | ||
| 72 | + }, | ||
| 73 | + /* certificate */ | ||
| 74 | + { | ||
| 75 | + "certificate", 'C', | ||
| 76 | + "Minimum number of days a certificate has to be valid", | ||
| 77 | + 0, 0, "integer", "", "INTEGER", | ||
| 78 | + "Minimum number of days a certificate has to be valid. Port defaults to 443\n" | ||
| 79 | + "(when this option is used the URL is not checked.)\n" | ||
| 80 | + }, | ||
| 81 | +#endif | ||
| 82 | + /* expect */ | ||
| 83 | + { | ||
| 84 | + "expect", 'e', | ||
| 85 | + "list of strings of which at least one must match", | ||
| 86 | + 0, 0, "string", "", "STRING", | ||
| 87 | + "Comma-delimited list of strings, at least one of them is expected in\n" | ||
| 88 | + "the first (status) line of the server response (default: HTTP/1.)\n" | ||
| 89 | + "If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)\n" | ||
| 90 | + }, | ||
| 91 | + /* string */ | ||
| 92 | + { | ||
| 93 | + "string", 's', | ||
| 94 | + "String to expect in the content", | ||
| 95 | + 0, 0, "string", "", "STRING", | ||
| 96 | + }, | ||
| 97 | + /* url */ | ||
| 98 | + { | ||
| 99 | + "url", 'u', | ||
| 100 | + "URL to GET or POST (default: /)", | ||
| 101 | + 0, 0, "string", "/", "PATH", | ||
| 102 | + }, | ||
| 103 | + /* post */ | ||
| 104 | + { | ||
| 105 | + "post", 'P', | ||
| 106 | + "URL encoded http POST data", | ||
| 107 | + 0, 0, "string", "", "STRING", | ||
| 108 | + }, | ||
| 109 | + /* method */ | ||
| 110 | + { | ||
| 111 | + "method", 'j', | ||
| 112 | + "Set HTTP method.", | ||
| 113 | + 0, 0, "string", "", "STRING", | ||
| 114 | + }, | ||
| 115 | + /* no-body */ | ||
| 116 | + { | ||
| 117 | + "no-body", 'N', | ||
| 118 | + "Don't wait for document body", | ||
| 119 | + 0, 0, "boolean", "false", "", | ||
| 120 | + "Don't wait for document body: stop reading after headers.\n" | ||
| 121 | + "(Note that this still does an HTTP GET or POST, not a HEAD.)\n" | ||
| 122 | + }, | ||
| 123 | + /* max-age */ | ||
| 124 | + { | ||
| 125 | + "max-age", 'M', | ||
| 126 | + "maximum age of document", | ||
| 127 | + 0, 0, "string", "", "SECONDS", | ||
| 128 | + "Warn if document is more than SECONDS old. the number can also be of\n" | ||
| 129 | + "the form \"10m\" for minutes, \"10h\" for hours, or \"10d\" for days.\n" | ||
| 130 | + }, | ||
| 131 | + /* content-type */ | ||
| 132 | + { | ||
| 133 | + "content-type", 'T', | ||
| 134 | + "specify Content-Type header media type when POSTing", | ||
| 135 | + 0, 0, "string", "", "STRING", | ||
| 136 | + }, | ||
| 137 | + /* linespan */ | ||
| 138 | + { | ||
| 139 | + "linespan", 'l', | ||
| 140 | + "Allow regex to span newlines (must precede -r or -R)", | ||
| 141 | + 0, 0, "boolean", "false", "", | ||
| 142 | + }, | ||
| 143 | + /* regex */ | ||
| 144 | + { | ||
| 145 | + "regex", 'r', | ||
| 146 | + "Search page for regex STRING", | ||
| 147 | + 0, 0, "boolean", "false", "", | ||
| 148 | + }, | ||
| 149 | + /* eregi */ | ||
| 150 | + { | ||
| 151 | + "eregi", 'R', | ||
| 152 | + "Search page for case-insensitive regex STRING", | ||
| 153 | + 0, 0, "string", "", "STRING", | ||
| 154 | + }, | ||
| 155 | + /* invert-regex */ | ||
| 156 | + { | ||
| 157 | + "invert-regex", 0, | ||
| 158 | + "Return CRITICAL if found, OK if not", | ||
| 159 | + 0, 0, "boolean", "false", "", | ||
| 160 | + }, | ||
| 161 | + /* authorization */ | ||
| 162 | + { | ||
| 163 | + "authorization", 'a', | ||
| 164 | + "Username:password on sites with basic authentication", | ||
| 165 | + 0, 0, "string", "", "AUTH_PAIR", | ||
| 166 | + }, | ||
| 167 | + /* proxy_authorization */ | ||
| 168 | + { | ||
| 169 | + "proxy_authorization", 'b', | ||
| 170 | + "Username:password on proxy-servers with basic authentication", | ||
| 171 | + 0, 0, "string", "", "AUTH_PAIR", | ||
| 172 | + }, | ||
| 173 | + /* useragent */ | ||
| 174 | + { | ||
| 175 | + "useragent", 'A', | ||
| 176 | + "String to be sent in http header as \"User Agent\"", | ||
| 177 | + 0, 0, "string", "", "STRING", | ||
| 178 | + }, | ||
| 179 | + /* header */ | ||
| 180 | + { | ||
| 181 | + "header", 'k', | ||
| 182 | + "other tags to be sent in http header", | ||
| 183 | + 0, 0, "string", "", "STRING", | ||
| 184 | + "Any other tags to be sent in http header. Use multiple times for additional headers\n" | ||
| 185 | + }, | ||
| 186 | + /* link */ | ||
| 187 | + { | ||
| 188 | + "link", 'L', | ||
| 189 | + "Wrap output in HTML link (obsoleted by urlize)", | ||
| 190 | + 0, 0, "boolean", "false", "", | ||
| 191 | + }, | ||
| 192 | + /* onredirect */ | ||
| 193 | + { | ||
| 194 | + "onredirect", 'f', | ||
| 195 | + "How to handle redirected pages", | ||
| 196 | + 0, 0, "string", "", "<ok|warning|critical|follow|sticky|stickyport>", | ||
| 197 | + "How to handle redirected pages. sticky is like follow but stick to the\n" | ||
| 198 | + "specified IP address. stickyport also ensures port stays the same.\n" | ||
| 199 | + }, | ||
| 200 | + /* pagesize */ | ||
| 201 | + { | ||
| 202 | + "pagesize", 'm', | ||
| 203 | + "minimum[:maximum] page size", | ||
| 204 | + 0, 0, "string", "", "INTEGER<:INTEGER>", | ||
| 205 | + "Minimum page size required (bytes) : Maximum page size required (bytes)\n" | ||
| 206 | + }, | ||
| 207 | + /* warning */ | ||
| 208 | + { | ||
| 209 | + "warning", 'w', | ||
| 210 | + "Response time to result in warning status (seconds)", | ||
| 211 | + 0, 0, "string", "", "DOUBLE", | ||
| 212 | + }, | ||
| 213 | + /* critical */ | ||
| 214 | + { | ||
| 215 | + "critical", 'c', | ||
| 216 | + "Response time to result in critical status (seconds)", | ||
| 217 | + 0, 0, "string", "", "DOUBLE", | ||
| 218 | + }, | ||
| 219 | + /* timeout */ | ||
| 220 | + { | ||
| 221 | + "timeout", 't', | ||
| 222 | + "Seconds before connection times out (default: 10)", | ||
| 223 | + 0, 0, "integer", "10", "INTEGER", | ||
| 224 | + }, | ||
| 225 | + /* extra-opts */ | ||
| 226 | + { | ||
| 227 | + "extra-opts", 0, | ||
| 228 | + "ini file with extra options", | ||
| 229 | + 0, 0, "string", "", "string", | ||
| 230 | + "Read options from an ini file. See http://nagiosplugins.org/extra-opts\n" | ||
| 231 | + "for usage and examples.\n" | ||
| 232 | + }, | ||
| 233 | + {} | ||
| 234 | +}; | ||
| 235 | + | ||
| 236 | int | ||
| 237 | main (int argc, char **argv) | ||
| 238 | { | ||
| 239 | @@ -151,6 +372,12 @@ main (int argc, char **argv) | ||
| 240 | NP_VERSION, VERSION); | ||
| 241 | |||
| 242 | /* Parse extra opts if any */ | ||
| 243 | + if (argc==2 && !strcmp(argv[1], "--metadata")) { | ||
| 244 | + /* dump metadata and exit */ | ||
| 245 | + print_meta_data(&resource_meta, options_help); | ||
| 246 | + exit(0); | ||
| 247 | + } | ||
| 248 | + | ||
| 249 | argv=np_extra_opts (&argc, argv, progname); | ||
| 250 | |||
| 251 | if (process_arguments (argc, argv) == ERROR) | ||
| 252 | @@ -1319,10 +1546,7 @@ print_help (void) | ||
| 253 | printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n"); | ||
| 254 | printf (COPYRIGHT, copyright, email); | ||
| 255 | |||
| 256 | - printf ("%s\n", _("This plugin tests the HTTP service on the specified host. It can test")); | ||
| 257 | - printf ("%s\n", _("normal (http) and secure (https) servers, follow redirects, search for")); | ||
| 258 | - printf ("%s\n", _("strings and regular expressions, check connection times, and report on")); | ||
| 259 | - printf ("%s\n", _("certificate expiration times.")); | ||
| 260 | + print_help_head(&resource_meta); | ||
| 261 | |||
| 262 | printf ("\n\n"); | ||
| 263 | |||
| 264 | @@ -1333,80 +1557,7 @@ print_help (void) | ||
| 265 | printf ("\n"); | ||
| 266 | |||
| 267 | printf (UT_HELP_VRSN); | ||
| 268 | - printf (UT_EXTRA_OPTS); | ||
| 269 | - | ||
| 270 | - printf (" %s\n", "-H, --hostname=ADDRESS"); | ||
| 271 | - printf (" %s\n", _("Host name argument for servers using host headers (virtual host)")); | ||
| 272 | - printf (" %s\n", _("Append a port to include it in the header (eg: example.com:5000)")); | ||
| 273 | - printf (" %s\n", "-I, --IP-address=ADDRESS"); | ||
| 274 | - printf (" %s\n", _("IP address or name (use numeric address if possible to bypass DNS lookup).")); | ||
| 275 | - printf (" %s\n", "-p, --port=INTEGER"); | ||
| 276 | - printf (" %s", _("Port number (default: ")); | ||
| 277 | - printf ("%d)\n", HTTP_PORT); | ||
| 278 | - | ||
| 279 | - printf (UT_IPv46); | ||
| 280 | - | ||
| 281 | -#ifdef HAVE_SSL | ||
| 282 | - printf (" %s\n", "-S, --ssl=VERSION"); | ||
| 283 | - printf (" %s\n", _("Connect via SSL. Port defaults to 443. VERSION is optional, and prevents")); | ||
| 284 | - printf (" %s\n", _("auto-negotiation (1 = TLSv1, 2 = SSLv2, 3 = SSLv3).")); | ||
| 285 | - printf (" %s\n", "--sni"); | ||
| 286 | - printf (" %s\n", _("Enable SSL/TLS hostname extension support (SNI)")); | ||
| 287 | - printf (" %s\n", "-C, --certificate=INTEGER[,INTEGER]"); | ||
| 288 | - printf (" %s\n", _("Minimum number of days a certificate has to be valid. Port defaults to 443")); | ||
| 289 | - printf (" %s\n", _("(when this option is used the URL is not checked.)\n")); | ||
| 290 | -#endif | ||
| 291 | - | ||
| 292 | - printf (" %s\n", "-e, --expect=STRING"); | ||
| 293 | - printf (" %s\n", _("Comma-delimited list of strings, at least one of them is expected in")); | ||
| 294 | - printf (" %s", _("the first (status) line of the server response (default: ")); | ||
| 295 | - printf ("%s)\n", HTTP_EXPECT); | ||
| 296 | - printf (" %s\n", _("If specified skips all other status line logic (ex: 3xx, 4xx, 5xx processing)")); | ||
| 297 | - printf (" %s\n", "-s, --string=STRING"); | ||
| 298 | - printf (" %s\n", _("String to expect in the content")); | ||
| 299 | - printf (" %s\n", "-u, --url=PATH"); | ||
| 300 | - printf (" %s\n", _("URL to GET or POST (default: /)")); | ||
| 301 | - printf (" %s\n", "-P, --post=STRING"); | ||
| 302 | - printf (" %s\n", _("URL encoded http POST data")); | ||
| 303 | - printf (" %s\n", "-j, --method=STRING (for example: HEAD, OPTIONS, TRACE, PUT, DELETE)"); | ||
| 304 | - printf (" %s\n", _("Set HTTP method.")); | ||
| 305 | - printf (" %s\n", "-N, --no-body"); | ||
| 306 | - printf (" %s\n", _("Don't wait for document body: stop reading after headers.")); | ||
| 307 | - printf (" %s\n", _("(Note that this still does an HTTP GET or POST, not a HEAD.)")); | ||
| 308 | - printf (" %s\n", "-M, --max-age=SECONDS"); | ||
| 309 | - printf (" %s\n", _("Warn if document is more than SECONDS old. the number can also be of")); | ||
| 310 | - printf (" %s\n", _("the form \"10m\" for minutes, \"10h\" for hours, or \"10d\" for days.")); | ||
| 311 | - printf (" %s\n", "-T, --content-type=STRING"); | ||
| 312 | - printf (" %s\n", _("specify Content-Type header media type when POSTing\n")); | ||
| 313 | - | ||
| 314 | - printf (" %s\n", "-l, --linespan"); | ||
| 315 | - printf (" %s\n", _("Allow regex to span newlines (must precede -r or -R)")); | ||
| 316 | - printf (" %s\n", "-r, --regex, --ereg=STRING"); | ||
| 317 | - printf (" %s\n", _("Search page for regex STRING")); | ||
| 318 | - printf (" %s\n", "-R, --eregi=STRING"); | ||
| 319 | - printf (" %s\n", _("Search page for case-insensitive regex STRING")); | ||
| 320 | - printf (" %s\n", "--invert-regex"); | ||
| 321 | - printf (" %s\n", _("Return CRITICAL if found, OK if not\n")); | ||
| 322 | - | ||
| 323 | - printf (" %s\n", "-a, --authorization=AUTH_PAIR"); | ||
| 324 | - printf (" %s\n", _("Username:password on sites with basic authentication")); | ||
| 325 | - printf (" %s\n", "-b, --proxy-authorization=AUTH_PAIR"); | ||
| 326 | - printf (" %s\n", _("Username:password on proxy-servers with basic authentication")); | ||
| 327 | - printf (" %s\n", "-A, --useragent=STRING"); | ||
| 328 | - printf (" %s\n", _("String to be sent in http header as \"User Agent\"")); | ||
| 329 | - printf (" %s\n", "-k, --header=STRING"); | ||
| 330 | - printf (" %s\n", _("Any other tags to be sent in http header. Use multiple times for additional headers")); | ||
| 331 | - printf (" %s\n", "-L, --link"); | ||
| 332 | - printf (" %s\n", _("Wrap output in HTML link (obsoleted by urlize)")); | ||
| 333 | - printf (" %s\n", "-f, --onredirect=<ok|warning|critical|follow|sticky|stickyport>"); | ||
| 334 | - printf (" %s\n", _("How to handle redirected pages. sticky is like follow but stick to the")); | ||
| 335 | - printf (" %s\n", _("specified IP address. stickyport also ensures port stays the same.")); | ||
| 336 | - printf (" %s\n", "-m, --pagesize=INTEGER<:INTEGER>"); | ||
| 337 | - printf (" %s\n", _("Minimum page size required (bytes) : Maximum page size required (bytes)")); | ||
| 338 | - | ||
| 339 | - printf (UT_WARN_CRIT); | ||
| 340 | - | ||
| 341 | - printf (UT_TIMEOUT, DEFAULT_SOCKET_TIMEOUT); | ||
| 342 | + print_parameters_help(options_help); | ||
| 343 | |||
| 344 | printf (UT_VERBOSE); | ||
| 345 | |||
| 346 | @@ -1467,4 +1618,5 @@ print_usage (void) | ||
| 347 | printf (" [-P string] [-m <min_pg_size>:<max_pg_size>] [-4|-6] [-N] [-M <age>]\n"); | ||
| 348 | printf (" [-A string] [-k string] [-S <version>] [--sni] [-C <warn_age>[,<crit_age>]]\n"); | ||
| 349 | printf (" [-T <content-type>] [-j method]\n"); | ||
| 350 | + printf (" %s --metadata\n", progname); | ||
| 351 | } | ||
