diff --git a/lib/utils_base.c b/lib/utils_base.c
index 5a45f84a8bafd8846287a48758fc6e1a8e7019d1..d1453c6717c0f11ccc05107df8f485d53f64d86a 100644 (file)
--- a/lib/utils_base.c
+++ b/lib/utils_base.c
/*****************************************************************************
- *
- * utils_base.c
- *
- * Library of useful functions for plugins
- * These functions are tested with libtap. See tests/ directory
- *
- * Copyright (c) 2006 Nagios Plugin Development Team
- * License: GPL
- *
- * $Revision$
- * $Date$
- ****************************************************************************/
+*
+* utils_base.c
+*
+* License: GPL
+* Copyright (c) 2006 Nagios Plugins Development Team
+*
+* Last Modified: $Date$
+*
+* Library of useful functions for plugins
+*
+*
+* 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 3 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, see <http://www.gnu.org/licenses/>.
+*
+* $Id$
+*
+*****************************************************************************/
#include "common.h"
+#include <stdarg.h>
#include "utils_base.h"
void
@@ -95,19 +111,15 @@ _set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_st
if (warn_string != NULL) {
if ((temp_thresholds->warning = parse_range_string(warn_string)) == NULL) {
- return 1;
+ return NP_RANGE_UNPARSEABLE;
}
}
if (critical_string != NULL) {
if ((temp_thresholds->critical = parse_range_string(critical_string)) == NULL) {
- return 1;
+ return NP_RANGE_UNPARSEABLE;
}
}
- if (*my_thresholds > 0) { /* Not sure why, but sometimes could be -1 */
- /* printf("Freeing here: %d\n", *my_thresholds); */
- free(*my_thresholds);
- }
*my_thresholds = temp_thresholds;
return 0;
@@ -116,10 +128,14 @@ _set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_st
void
set_thresholds(thresholds **my_thresholds, char *warn_string, char *critical_string)
{
- if (_set_thresholds(my_thresholds, warn_string, critical_string) == 0) {
+ switch (_set_thresholds(my_thresholds, warn_string, critical_string)) {
+ case 0:
return;
- } else {
+ case NP_RANGE_UNPARSEABLE:
die(STATE_UNKNOWN, _("Range format incorrect"));
+ case NP_WARN_WITHIN_CRIT:
+ die(STATE_UNKNOWN, _("Warning level is a subset of critical and will not be alerted"));
+ break;
}
}
int
check_range(double value, range *my_range)
{
- int false = FALSE;
- int true = TRUE;
+ int no = FALSE;
+ int yes = TRUE;
if (my_range->alert_on == INSIDE) {
- false = TRUE;
- true = FALSE;
+ no = TRUE;
+ yes = FALSE;
}
if (my_range->end_infinity == FALSE && my_range->start_infinity == FALSE) {
if ((my_range->start <= value) && (value <= my_range->end)) {
- return false;
+ return no;
} else {
- return true;
+ return yes;
}
} else if (my_range->start_infinity == FALSE && my_range->end_infinity == TRUE) {
if (my_range->start <= value) {
- return false;
+ return no;
} else {
- return true;
+ return yes;
}
} else if (my_range->start_infinity == TRUE && my_range->end_infinity == FALSE) {
if (value <= my_range->end) {
- return false;
+ return no;
} else {
- return true;
+ return yes;
}
} else {
- return false;
+ return no;
}
}
data[j] = '\0';
return data;
}
+
+int np_check_if_root(void) { return (geteuid() == 0); }
+
+int np_warn_if_not_root(void) {
+ int status = np_check_if_root();
+ if(!status) {
+ printf(_("Warning: "));
+ printf(_("This plugin must be either run as root or setuid root.\n"));
+ printf(_("To run as root, you can use a tool like sudo.\n"));
+ printf(_("To set the setuid permissions, use the command:\n"));
+ /* XXX could we use something like progname? */
+ printf("\tchmod u+s yourpluginfile\n");
+ }
+ return status;
+}