Code

1041571: -D option processing corrected (Eric Chen). Changed process_arguments()...
[nagiosplug.git] / plugins / check_udp.c
index da9a142027e3e5876bbe052f8a4915fef34826a0..ea91f417a25223dde3738763211fa8e78e9bdda6 100644 (file)
@@ -1,71 +1,58 @@
 /******************************************************************************
-*
-* CHECK_UDP.C
-*
-* Program: UDP port plugin for Nagios
-* License: GPL
-* Copyright (c) 1999 Ethan Galstad (nagios@nagios.org)
-*
-* Last Modified: $Date$
-*
-* Command line: CHECK_UDP <host_address> [-p port] [-s send] [-e expect] \
-*                         [-wt warn_time] [-ct crit_time] [-to to_sec]
-*
-* Description:
-*
-* This plugin will attempt to connect to the specified port
-* on the host.  Successul connects return STATE_OK, refusals
-* and timeouts return STATE_CRITICAL, other errors return
-* STATE_UNKNOWN.
-*
-* License Information:
-*
-* This program is free software; you can redistribute it and/or modify
-* it under the terms of the GNU General Public License as published by
-* the Free Software Foundation; either version 2 of the License, or
-* (at your option) any later version.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU General Public License for more details.
-*
-* You should have received a copy of the GNU General Public License
-* along with this program; if not, write to the Free Software
-* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ $Id$
 *****************************************************************************/
 
-#include "config.h"
+const char *progname = "check_udp";
+const char *revision = "$Revision$";
+const char *copyright = "1999-2004";
+const char *email = "nagiosplug-devel@lists.sourceforge.net";
+
 #include "common.h"
 #include "netutils.h"
 #include "utils.h"
 
-const char *progname = "check_udp";
+int process_arguments (int, char **);
+void print_help (void);
+void print_usage (void);
 
 int warning_time = 0;
 int check_warning_time = FALSE;
 int critical_time = 0;
 int check_critical_time = FALSE;
-
-int process_arguments (int, char **);
-void print_usage (void);
-void print_help (void);
-
 int verbose = FALSE;
 int server_port = 0;
 char *server_address = NULL;
 char *server_expect = NULL;
-char *server_send = "";
+char *server_send;
 
 int
 main (int argc, char **argv)
 {
-       int result;
+       int result = STATE_UNKNOWN;
        char recv_buffer[MAX_INPUT_BUFFER];
 
-       if (process_arguments (argc, argv) == ERROR)
-               usage ("\n");
+       setlocale (LC_ALL, "");
+       bindtextdomain (PACKAGE, LOCALEDIR);
+       textdomain (PACKAGE);
+
+       if (process_arguments (argc, argv) != TRUE)
+               usage4 (_("Could not parse arguments"));
 
        /* initialize alarm signal handling */
        signal (SIGALRM, socket_timeout_alarm_handler);
@@ -76,6 +63,7 @@ main (int argc, char **argv)
        time (&start_time);
        result = process_udp_request (server_address, server_port, server_send,
                        recv_buffer, MAX_INPUT_BUFFER - 1);
+                       
        time (&end_time);
 
        if (result != STATE_OK) {
@@ -104,8 +92,8 @@ main (int argc, char **argv)
                                                 && (end_time - start_time) > warning_time) result =
                                STATE_WARNING;
 
-               printf ("Connection %s on port %d - %d second response time\n",
-                                               (result == STATE_OK) ? "accepted" : "problem", server_port,
+               printf (_("Connection %s on port %d - %d second response time\n"),
+                                               (result == STATE_OK) ? _("accepted") : _("problem"), server_port,
                                                (int) (end_time - start_time));
        }
 
@@ -117,15 +105,14 @@ main (int argc, char **argv)
 
 
 
-
 /* process command-line arguments */
 int
 process_arguments (int argc, char **argv)
 {
        int c;
 
-       int option_index = 0;
-       static struct option long_options[] = {
+       int option = 0;
+       static struct option longopts[] = {
                {"hostname", required_argument, 0, 'H'},
                {"critical", required_argument, 0, 'c'},
                {"warning", required_argument, 0, 'w'},
@@ -152,51 +139,55 @@ process_arguments (int argc, char **argv)
        }
 
        while (1) {
-               c = getopt_long (argc, argv, "+hVvH:e:s:c:w:t:p:", long_options, &option_index);
+               c = getopt_long (argc, argv, "+hVvH:e:s:c:w:t:p:", longopts, &option);
 
                if (c == -1 || c == EOF || c == 1)
                        break;
 
                switch (c) {
                case '?':                                                                       /* print short usage statement if args not parsable */
-                       printf ("%s: Unknown argument: %s\n\n", progname, optarg);
+                       printf (_("%s: Unknown argument: %s\n\n"), progname, optarg);
                        print_usage ();
                        exit (STATE_UNKNOWN);
                case 'h':                                                                       /* help */
                        print_help ();
                        exit (STATE_OK);
                case 'V':                                                                       /* version */
-                       print_revision (progname, "$Revision$");
+                       print_revision (progname, revision);
                        exit (STATE_OK);
                case 'v':                                                                       /* verbose mode */
                        verbose = TRUE;
                        break;
                case 'H':                                                                       /* hostname */
                        if (is_host (optarg) == FALSE)
-                               usage ("Invalid host name/address\n");
+                               usage2 (_("Invalid hostname/address"), optarg);
                        server_address = optarg;
                        break;
                case 'c':                                                                       /* critical */
                        if (!is_intnonneg (optarg))
-                               usage ("Critical threshold must be a nonnegative integer\n");
-                       critical_time = atoi (optarg);
+                               usage (_("Critical threshold must be a positive integer\n"));
+                       else
+                               critical_time = atoi (optarg);
                        check_critical_time = TRUE;
                        break;
                case 'w':                                                                       /* warning */
                        if (!is_intnonneg (optarg))
-                               usage ("Warning threshold must be a nonnegative integer\n");
-                       warning_time = atoi (optarg);
+                               usage (_("Warning threshold must be a positive integer\n"));
+                       else
+                               warning_time = atoi (optarg);
                        check_warning_time = TRUE;
                        break;
                case 't':                                                                       /* timeout */
                        if (!is_intnonneg (optarg))
-                               usage ("Timeout interval must be a nonnegative integer\n");
-                       socket_timeout = atoi (optarg);
+                               usage2 (_("Timeout interval must be a positive integer"), optarg);
+                       else
+                               socket_timeout = atoi (optarg);
                        break;
                case 'p':                                                                       /* port */
                        if (!is_intnonneg (optarg))
-                               usage ("Serevr port must be a nonnegative integer\n");
-                       server_port = atoi (optarg);
+                               usage (_("Port must be a positive integer\n"));
+                       else
+                               server_port = atoi (optarg);
                        break;
                case 'e':                                                                       /* expect */
                        server_expect = optarg;
@@ -210,61 +201,68 @@ process_arguments (int argc, char **argv)
        c = optind;
        if (server_address == NULL && c < argc && argv[c]) {
                if (is_host (argv[c]) == FALSE)
-                       usage ("Invalid host name/address\n");
+                       usage2 (_("Invalid hostname/address"), optarg);
                server_address = argv[c++];
        }
 
        if (server_address == NULL)
-               usage ("Host name was not supplied\n");
+               usage4 (_("Hostname was not supplied"));
+
+       if (server_send == NULL)
+               server_send = strdup("");
 
        return c;
 }
 
 
 
-
-
 void
-print_usage (void)
+print_help (void)
 {
-       printf
-               ("Usage: %s -H <host_address> [-p port] [-w warn_time] [-c crit_time]\n"
-                "         [-e expect] [-s send] [-t to_sec] [-v]\n", progname);
-}
+       print_revision (progname, revision);
+
+       printf ("Copyright (c) 1999 Ethan Galstad\n");
+       printf (COPYRIGHT, copyright, email);
+
+       printf (_("\
+       This plugin tests an UDP connection with the specified host.\n\n"));
+
+       print_usage ();
+
+       printf (_(UT_HELP_VRSN));
+
+       printf (_(UT_HOST_PORT), 'p', "none");
 
+       printf (_("\
+ -e, --expect=STRING <optional>\n\
+    String to expect in first line of server response\n\
+ -s, --send=STRING <optional>\n\
+    String to send to the server when initiating the connection\n"));
 
+       printf (_(UT_WARN_CRIT));
 
+       printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
 
+       printf (_(UT_VERBOSE));
 
+       printf (_("\
+This plugin will attempt to connect to the specified port on the host.\n\
+Successful connects return STATE_OK, refusals and timeouts return\n\
+STATE_CRITICAL, other errors return STATE_UNKNOWN.\n\n"));
+
+       printf(_(UT_SUPPORT));
+}
+
+
+
+
+/* Original Command line: 
+   check_udp <host_address> [-p port] [-s send] [-e expect] \
+   [-wt warn_time] [-ct crit_time] [-to to_sec] */
 void
-print_help (void)
+print_usage (void)
 {
-       print_revision (progname, "$Revision$");
-       printf
-               ("Copyright (c) 1999 Ethan Galstad (nagios@nagios.org)\n\n"
-                "This plugin tests an UDP connection with the specified host.\n\n");
-       print_usage ();
-       printf
-               ("Options:\n"
-                " -H, --hostname=ADDRESS\n"
-                "    Host name argument for servers using host headers (use numeric\n"
-                "    address if possible to bypass DNS lookup).\n"
-                " -p, --port=INTEGER\n"
-                "    Port number\n"
-                " -e, --expect=STRING <optional>\n"
-                "    String to expect in first line of server response\n"
-                " -s, --send=STRING <optional>\n"
-                "    String to send to the server when initiating the connection\n"
-                " -w, --warning=INTEGER <optional>\n"
-                "    Response time to result in warning status (seconds)\n"
-                " -c, --critical=INTEGER <optional>\n"
-                "    Response time to result in critical status (seconds)\n"
-                " -t, --timeout=INTEGER <optional>\n"
-                "    Seconds before connection times out (default: %d)\n"
-                " -v, --verbose <optional>\n"
-                "    Show details for command-line debugging (do not use with nagios server)\n"
-                " -h, --help\n"
-                "    Print detailed help screen and exit\n"
-                " -V, --version\n"
-                "    Print version information and exit\n", DEFAULT_SOCKET_TIMEOUT);
+       printf ("\
+Usage: %s -H <host_address> [-p port] [-w warn_time] [-c crit_time]\n\
+          [-e expect] [-s send] [-t to_sec] [-v]\n", progname);
 }