diff options
Diffstat (limited to 'plugins/check_real.c')
-rw-r--r-- | plugins/check_real.c | 105 |
1 files changed, 30 insertions, 75 deletions
diff --git a/plugins/check_real.c b/plugins/check_real.c index ba746b8..c553352 100644 --- a/plugins/check_real.c +++ b/plugins/check_real.c | |||
@@ -55,17 +55,16 @@ | |||
55 | #define URL "" | 55 | #define URL "" |
56 | 56 | ||
57 | int process_arguments (int, char **); | 57 | int process_arguments (int, char **); |
58 | int call_getopt (int, char **); | ||
59 | int validate_arguments (void); | 58 | int validate_arguments (void); |
60 | int check_disk (int usp, int free_disk); | 59 | int check_disk (int usp, int free_disk); |
61 | void print_help (void); | 60 | void print_help (void); |
62 | void print_usage (void); | 61 | void print_usage (void); |
63 | 62 | ||
64 | int server_port = PORT; | 63 | int server_port = PORT; |
65 | char *server_address = NULL; | 64 | char *server_address = ""; |
66 | char *host_name = NULL; | 65 | char *host_name = NULL; |
67 | char *server_url = NULL; | 66 | char *server_url = NULL; |
68 | char *server_expect = NULL; | 67 | char *server_expect = EXPECT; |
69 | int warning_time = 0; | 68 | int warning_time = 0; |
70 | int check_warning_time = FALSE; | 69 | int check_warning_time = FALSE; |
71 | int critical_time = 0; | 70 | int critical_time = 0; |
@@ -117,7 +116,7 @@ main (int argc, char **argv) | |||
117 | terminate (STATE_CRITICAL, "No data received from %s\n", host_name); | 116 | terminate (STATE_CRITICAL, "No data received from %s\n", host_name); |
118 | 117 | ||
119 | /* make sure we find the response we are looking for */ | 118 | /* make sure we find the response we are looking for */ |
120 | if (!strstr (buffer, EXPECT)) { | 119 | if (!strstr (buffer, server_expect)) { |
121 | if (server_port == PORT) | 120 | if (server_port == PORT) |
122 | printf ("Invalid REAL response received from host\n"); | 121 | printf ("Invalid REAL response received from host\n"); |
123 | else | 122 | else |
@@ -190,7 +189,7 @@ main (int argc, char **argv) | |||
190 | } | 189 | } |
191 | else { | 190 | else { |
192 | /* make sure we find the response we are looking for */ | 191 | /* make sure we find the response we are looking for */ |
193 | if (!strstr (buffer, EXPECT)) { | 192 | if (!strstr (buffer, server_expect)) { |
194 | if (server_port == PORT) | 193 | if (server_port == PORT) |
195 | printf ("Invalid REAL response received from host\n"); | 194 | printf ("Invalid REAL response received from host\n"); |
196 | else | 195 | else |
@@ -275,52 +274,6 @@ process_arguments (int argc, char **argv) | |||
275 | { | 274 | { |
276 | int c; | 275 | int c; |
277 | 276 | ||
278 | if (argc < 2) | ||
279 | return ERROR; | ||
280 | |||
281 | for (c = 1; c < argc; c++) { | ||
282 | if (strcmp ("-to", argv[c]) == 0) | ||
283 | strcpy (argv[c], "-t"); | ||
284 | else if (strcmp ("-wt", argv[c]) == 0) | ||
285 | strcpy (argv[c], "-w"); | ||
286 | else if (strcmp ("-ct", argv[c]) == 0) | ||
287 | strcpy (argv[c], "-c"); | ||
288 | } | ||
289 | |||
290 | |||
291 | |||
292 | c = 0; | ||
293 | while ((c += (call_getopt (argc - c, &argv[c]))) < argc) { | ||
294 | |||
295 | if (is_option (argv[c])) | ||
296 | continue; | ||
297 | |||
298 | if (server_address == NULL) { | ||
299 | if (is_host (argv[c])) { | ||
300 | server_address = argv[c]; | ||
301 | } | ||
302 | else { | ||
303 | usage ("Invalid host name"); | ||
304 | } | ||
305 | } | ||
306 | } | ||
307 | |||
308 | if (server_expect == NULL) | ||
309 | server_expect = strscpy (NULL, EXPECT); | ||
310 | |||
311 | return validate_arguments (); | ||
312 | } | ||
313 | |||
314 | |||
315 | |||
316 | |||
317 | |||
318 | |||
319 | int | ||
320 | call_getopt (int argc, char **argv) | ||
321 | { | ||
322 | int c, i = 0; | ||
323 | |||
324 | #ifdef HAVE_GETOPT_H | 277 | #ifdef HAVE_GETOPT_H |
325 | int option_index = 0; | 278 | int option_index = 0; |
326 | static struct option long_options[] = { | 279 | static struct option long_options[] = { |
@@ -339,6 +292,18 @@ call_getopt (int argc, char **argv) | |||
339 | }; | 292 | }; |
340 | #endif | 293 | #endif |
341 | 294 | ||
295 | if (argc < 2) | ||
296 | return ERROR; | ||
297 | |||
298 | for (c = 1; c < argc; c++) { | ||
299 | if (strcmp ("-to", argv[c]) == 0) | ||
300 | strcpy (argv[c], "-t"); | ||
301 | else if (strcmp ("-wt", argv[c]) == 0) | ||
302 | strcpy (argv[c], "-w"); | ||
303 | else if (strcmp ("-ct", argv[c]) == 0) | ||
304 | strcpy (argv[c], "-c"); | ||
305 | } | ||
306 | |||
342 | while (1) { | 307 | while (1) { |
343 | #ifdef HAVE_GETOPT_H | 308 | #ifdef HAVE_GETOPT_H |
344 | c = | 309 | c = |
@@ -348,32 +313,11 @@ call_getopt (int argc, char **argv) | |||
348 | c = getopt (argc, argv, "+?hVI:H:e:u:p:w:c:t"); | 313 | c = getopt (argc, argv, "+?hVI:H:e:u:p:w:c:t"); |
349 | #endif | 314 | #endif |
350 | 315 | ||
351 | i++; | 316 | if (c == -1 || c == EOF) |
352 | |||
353 | if (c == -1 || c == EOF || c == 1) | ||
354 | break; | 317 | break; |
355 | 318 | ||
356 | switch (c) { | 319 | switch (c) { |
357 | case 'I': | ||
358 | case 'H': | ||
359 | case 'e': | ||
360 | case 'u': | ||
361 | case 'p': | ||
362 | case 'w': | ||
363 | case 'c': | ||
364 | case 't': | ||
365 | i++; | ||
366 | } | ||
367 | |||
368 | switch (c) { | ||
369 | case 'I': /* hostname */ | 320 | case 'I': /* hostname */ |
370 | if (is_host (optarg)) { | ||
371 | server_address = optarg; | ||
372 | } | ||
373 | else { | ||
374 | usage ("Invalid host name\n"); | ||
375 | } | ||
376 | break; | ||
377 | case 'H': /* hostname */ | 321 | case 'H': /* hostname */ |
378 | if (is_host (optarg)) { | 322 | if (is_host (optarg)) { |
379 | server_address = optarg; | 323 | server_address = optarg; |
@@ -385,7 +329,7 @@ call_getopt (int argc, char **argv) | |||
385 | case 'e': /* string to expect in response header */ | 329 | case 'e': /* string to expect in response header */ |
386 | server_expect = optarg; | 330 | server_expect = optarg; |
387 | break; | 331 | break; |
388 | case 'u': /* string to expect in response header */ | 332 | case 'u': /* server URL */ |
389 | server_url = optarg; | 333 | server_url = optarg; |
390 | break; | 334 | break; |
391 | case 'p': /* port */ | 335 | case 'p': /* port */ |
@@ -435,7 +379,18 @@ call_getopt (int argc, char **argv) | |||
435 | usage ("Invalid argument\n"); | 379 | usage ("Invalid argument\n"); |
436 | } | 380 | } |
437 | } | 381 | } |
438 | return i; | 382 | |
383 | c = optind; | ||
384 | if (strlen(server_address) == 0 && argc > c) { | ||
385 | if (is_host (argv[c])) { | ||
386 | server_address = argv[c++]; | ||
387 | } | ||
388 | else { | ||
389 | usage ("Invalid host name"); | ||
390 | } | ||
391 | } | ||
392 | |||
393 | return validate_arguments (); | ||
439 | } | 394 | } |
440 | 395 | ||
441 | 396 | ||