Imported Upstream version 1.4.11

This commit is contained in:
Jan Wagner 2013-11-26 23:54:57 +01:00
parent cff68b4c0a
commit 1d1585cd09
72 changed files with 16170 additions and 13657 deletions

2
BUGS
View file

@ -2,7 +2,7 @@ This file lists the major bugs from the Nagios Plugins page on Sourceforge
at http://sourceforge.net/tracker/?group_id=29880&atid=397597. These are not
necessarily verified as errors.
For the 1.4.9 release:
For the 1.4.11 release:
1724055 - check_dns: does not sort address data
1681516 - output too verbose for various checks

1660
ChangeLog

File diff suppressed because it is too large Load diff

16
INSTALL
View file

@ -102,16 +102,16 @@ for another architecture.
Installation Names
==================
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PREFIX'.
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PREFIX', the package will
use PREFIX as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
@ -159,7 +159,7 @@ where SYSTEM can have one of these forms:
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a

View file

@ -22,11 +22,11 @@ dist-hook:
install-root:
cd plugins-root && $(MAKE) $@
test:
cd lib && $(MAKE) test
if test "$(PERLMODS_DIR)" != ""; then cd perlmods && $(MAKE) test; fi
cd plugins && $(MAKE) test
cd plugins-scripts && $(MAKE) test
test test-debug:
cd lib && $(MAKE) $@
if test "$(PERLMODS_DIR)" != ""; then cd perlmods && $(MAKE) $@; fi
cd plugins && $(MAKE) $@
cd plugins-scripts && $(MAKE) $@
nagios-plugins.spec: nagios-plugins.spec.in
sed "s/%%{VERSION}/${VERSION}/;s/%%{RELEASE}/${RELEASE}/;s/^%%{requires}$$//" $? > $@

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -184,6 +184,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -223,7 +224,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -301,12 +301,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -324,6 +321,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -332,6 +332,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -343,8 +344,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
@ -817,11 +820,11 @@ dist-hook:
install-root:
cd plugins-root && $(MAKE) $@
test:
cd lib && $(MAKE) test
if test "$(PERLMODS_DIR)" != ""; then cd perlmods && $(MAKE) test; fi
cd plugins && $(MAKE) test
cd plugins-scripts && $(MAKE) test
test test-debug:
cd lib && $(MAKE) $@
if test "$(PERLMODS_DIR)" != ""; then cd perlmods && $(MAKE) $@; fi
cd plugins && $(MAKE) $@
cd plugins-scripts && $(MAKE) $@
nagios-plugins.spec: nagios-plugins.spec.in
sed "s/%%{VERSION}/${VERSION}/;s/%%{RELEASE}/${RELEASE}/;s/^%%{requires}$$//" $? > $@

28
NEWS
View file

@ -1,12 +1,32 @@
This file documents the major additions and syntax changes between releases.
1.4.11 13th December 2007
Fix check_http regression in 1.4.10 where following redirects to
relative URLs on virtual hosts failed if both "-H" and "-I" were used
check_ntp now return UNKNOWN instead of WARNING if jitter is unavailable (jitter=-1.000000)
as long as the thresholds range inculde -1. If no offset threshold is specified
and the offset is unavailable, will return UNKNOWN as well.
NOTE: If jitter thresholds are specified as integers it will return CRITICAL if jitter
is "-1" as the default range starts at 0. See Examples in --help output.
Fix broken usage2 in check_snmp and check_cluster
check_cluster now accept all valid characters in its thresholds ("-", "@", "~")
Merge two new checks that deprecates check_ntp: check_ntp_peer and check_ntp_time.
You should read the --help output so see which one is suitable for you. check_ntp_peer
implement stratum thresholds support (feature request #1703823).
Fix check_disk reporting OK if disk usage grows over 100% (bug #1348746).
The problem happens to be in Gnulib but a workaround have been implemented in check_disk.c
Fix check_load argument handling when not passing triplets (bug #1831890)
Tinderbox builds now run tests in a verbose mode
Update to Nagios::Plugin 0.22
VPATH problem fixed for compiling plugins-root
1.4.10 28th September 2007
Fix check_http buffer overflow vulnerability when following HTTP redirects
check_http now explicitly asks HTTP/1.1 servers to close the connection
after completion of the response
Check_ldaps' guessing which secure method to use (starttls vs. ssl on connect)
Check_ldaps' guessing which secure method to use (starttls vs. ssl on connect)
is now deprecated. See --help for further information.
Check_disk now calls stat() on all filesystems to check. (Old: only the ones selected using -p)
Check_disk now calls stat() on all filesystems to check. (Old: only the ones selected using -p)
A meaningful error message (eg "Stale NFS Handle") is printed if stat fails.
New check_disk option -L: Only check local filesystems, but call stat() on remote ones, too.
Thus accessibility of remote filesystems can be checked without any threshold comparison.
@ -25,7 +45,7 @@ This file documents the major additions and syntax changes between releases.
Fix possible check_icmp bus errors on some (non-x86/AMD64) platforms
Fix check_smtp's handling of multiple-packet server responses
WARNING: Fix for negate which may break existing commands:
- stop evaluating command line options through shell twice
- stop evaluating command line options through shell twice
- enforce a full path for the command to run
The "negate" utility can now remap custom states
Check_radius now supports radiusclient-ng
@ -100,7 +120,7 @@ This file documents the major additions and syntax changes between releases.
SSL plugins work with gnutls as well as OpenSSL
check_mysql_query added to run arbitrary SQL commands, with threshold checking
libtool now required for development systems
Notice: check_udp (compiled from check_udp.c) will be deprecated in the next release.
Notice: check_udp (compiled from check_udp.c) will be deprecated in the next release.
check_udp2 should be used instead and will be renamed to check_udp
1.4.2

5
THANKS
View file

@ -3,6 +3,7 @@ there have been many contributors to this project. Everyone below has helped in
raising bug reports, creating patches or contributing new plugins.
dag rob?le
fabiodds
Randy O'Meara
Lance Albertson
David Alden
@ -78,6 +79,7 @@ Paulo Fessel
Paulo Afonso Graner Fessel
James Fidell
Johan Fischer
Bernhard Fischer
Matthias Flacke
Felix Frank
Rick Frey
@ -154,6 +156,7 @@ Thomas Nilsen
Walbert Oberngruber
Craig Orsinger
Remi Paulmier
Tom Payerle
Fabian Pehla
Matt Perry
Matthew Peters
@ -209,7 +212,7 @@ Ibere Tizio
Julien Touche
Kyle Tucker
Jerome Tytgat
MAtteo HCE Valsasna
Matteo HCE Valsasna
Jon Vandegrift
Laurent Vaslin
Carole Verdon

4
aclocal.m4 vendored
View file

@ -1,4 +1,4 @@
# generated automatically by aclocal 1.9.5 -*- Autoconf -*-
# generated automatically by aclocal 1.9.6 -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
# 2005 Free Software Foundation, Inc.
@ -6397,7 +6397,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"])
# Call AM_AUTOMAKE_VERSION so it can be traced.
# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
[AM_AUTOMAKE_VERSION([1.9.5])])
[AM_AUTOMAKE_VERSION([1.9.6])])
# AM_AUX_DIR_EXPAND -*- Autoconf -*-

View file

@ -1,7 +1,7 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
scriptversion=2005-02-03.08
scriptversion=2005-05-14.22
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
@ -18,7 +18,7 @@ scriptversion=2005-02-03.08
#
# 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a

581
build-aux/config.guess vendored

File diff suppressed because it is too large Load diff

115
build-aux/config.sub vendored
View file

@ -1,9 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
timestamp='2005-04-22'
timestamp='2006-07-02'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@ -21,14 +22,15 @@ timestamp='2005-04-22'
#
# 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., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
@ -83,11 +85,11 @@ Try \`$me --help' for more information."
while test $# -gt 0 ; do
case $1 in
--time-stamp | --time* | -t )
echo "$timestamp" ; exit 0 ;;
echo "$timestamp" ; exit ;;
--version | -v )
echo "$version" ; exit 0 ;;
echo "$version" ; exit ;;
--help | --h* | -h )
echo "$usage"; exit 0 ;;
echo "$usage"; exit ;;
-- ) # Stop option processing
shift; break ;;
- ) # Use stdin as input.
@ -99,7 +101,7 @@ while test $# -gt 0 ; do
*local*)
# First pass through any local machine types.
echo $1
exit 0;;
exit ;;
* )
break ;;
@ -118,8 +120,9 @@ esac
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
@ -170,6 +173,10 @@ case $os in
-hiux*)
os=-hiuxwe2
;;
-sco6)
os=-sco5v6
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5)
os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@ -186,6 +193,10 @@ case $os in
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco5v6*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
@ -230,7 +241,7 @@ case $basic_machine in
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
| am33_2.0 \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
@ -238,7 +249,8 @@ case $basic_machine in
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| m32r | m32rle | m68000 | m68k | m88k | maxq | mcore \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | mcore \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@ -247,6 +259,7 @@ case $basic_machine in
| mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \
| mipsisa64 | mipsisa64el \
@ -255,17 +268,19 @@ case $basic_machine in
| mipsisa64sr71k | mipsisa64sr71kel \
| mipstx39 | mipstx39el \
| mn10200 | mn10300 \
| mt \
| msp430 \
| nios | nios2 \
| ns16k | ns32k \
| openrisc | or32 \
| or32 \
| pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \
| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b \
| strongarm \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu | strongarm \
| tahoe | thumb | tic4x | tic80 | tron \
| v850 | v850e \
| we32k \
@ -280,6 +295,9 @@ case $basic_machine in
;;
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
;;
ms1)
basic_machine=mt-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
@ -299,7 +317,7 @@ case $basic_machine in
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* \
| avr-* | avr32-* \
| bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| clipper-* | craynv-* | cydra-* \
@ -310,7 +328,7 @@ case $basic_machine in
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \
| m32r-* | m32rle-* \
| m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
@ -321,6 +339,7 @@ case $basic_machine in
| mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa64-* | mipsisa64el-* \
@ -329,18 +348,20 @@ case $basic_machine in
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipstx39-* | mipstx39el-* \
| mmix-* \
| mt-* \
| msp430-* \
| nios-* | nios2-* \
| none-* | np1-* | ns16k-* | ns32k-* \
| orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \
| romp-* | rs6000-* \
| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tron-* \
@ -686,6 +707,9 @@ case $basic_machine in
basic_machine=i386-pc
os=-msdos
;;
ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;;
mvs)
basic_machine=i370-ibm
os=-mvs
@ -761,9 +785,8 @@ case $basic_machine in
basic_machine=hppa1.1-oki
os=-proelf
;;
or32 | or32-*)
openrisc | openrisc-*)
basic_machine=or32-unknown
os=-coff
;;
os400)
basic_machine=powerpc-ibm
@ -794,6 +817,12 @@ case $basic_machine in
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pc98)
basic_machine=i386-pc
;;
pc98-*)
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentium | p5 | k5 | k6 | nexgen | viac3)
basic_machine=i586-pc
;;
@ -850,6 +879,10 @@ case $basic_machine in
basic_machine=i586-unknown
os=-pw32
;;
rdos)
basic_machine=i386-pc
os=-rdos
;;
rom68k)
basic_machine=m68k-rom68k
os=-coff
@ -1089,13 +1122,10 @@ case $basic_machine in
we32k)
basic_machine=we32k-att
;;
sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown
;;
sh64)
basic_machine=sh64-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b)
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
basic_machine=sparc-sun
;;
cydra)
@ -1168,20 +1198,23 @@ case $os in
| -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -chorusos* | -chorusrdb* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@ -1199,7 +1232,7 @@ case $os in
os=`echo $os | sed -e 's|nto|nto-qnx|'`
;;
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
;;
-mac*)
@ -1333,6 +1366,9 @@ else
# system, and we'll never get to this point.
case $basic_machine in
spu-*)
os=-elf
;;
*-acorn)
os=-riscix1.2
;;
@ -1342,9 +1378,9 @@ case $basic_machine in
arm*-semi)
os=-aout
;;
c4x-* | tic4x-*)
os=-coff
;;
c4x-* | tic4x-*)
os=-coff
;;
# This must come before the *-dec entry.
pdp10-*)
os=-tops20
@ -1388,6 +1424,9 @@ case $basic_machine in
*-be)
os=-beos
;;
*-haiku)
os=-haiku
;;
*-ibm)
os=-aix
;;
@ -1559,7 +1598,7 @@ case $basic_machine in
esac
echo $basic_machine$os
exit 0
exit
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)

View file

@ -1,7 +1,7 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2005-02-09.22
scriptversion=2005-07-09.11
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
@ -17,8 +17,8 @@ scriptversion=2005-02-09.22
# 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., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@ -467,7 +467,8 @@ cpp)
done
"$@" -E |
sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"

View file

@ -1,7 +1,7 @@
#!/bin/sh
# install - install a program, script, or datafile
scriptversion=2005-02-02.21
scriptversion=2005-05-14.22
# This originates from X11R5 (mit/util/scripts/install.sh), which was
# later released in X11R6 (xc/config/util/install.sh) with the

View file

@ -1,7 +1,7 @@
#! /bin/sh
# Common stub for a few missing GNU programs while installing.
scriptversion=2005-02-08.22
scriptversion=2005-06-08.21
# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
# Free Software Foundation, Inc.
@ -19,8 +19,8 @@ scriptversion=2005-02-08.22
# 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., 59 Temple Place - Suite 330, Boston, MA
# 02111-1307, USA.
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
@ -297,6 +297,9 @@ WARNING: \`$1' is $msg. You should only need it if
# ... or it is derived from the source name (dir/f.texi becomes f.info)
test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
fi
# If the file does not exist, the user really needs makeinfo;
# let's fail without touching anything.
test -f $file || exit 1
touch $file
;;

View file

@ -1,7 +1,7 @@
#! /bin/sh
# mkinstalldirs --- make directory hierarchy
scriptversion=2005-02-02.21
scriptversion=2005-06-29.22
# Original author: Noah Friedman <friedman@prep.ai.mit.edu>
# Created: 1993-05-16
@ -12,7 +12,7 @@ scriptversion=2005-02-02.21
# <automake-patches@gnu.org>.
errstatus=0
dirmode=""
dirmode=
usage="\
Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ...
@ -103,13 +103,21 @@ esac
for file
do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
case $file in
/*) pathcomp=/ ;;
*) pathcomp= ;;
esac
oIFS=$IFS
IFS=/
set fnord $file
shift
IFS=$oIFS
pathcomp=
for d
do
pathcomp="$pathcomp$d"
test "x$d" = x && continue
pathcomp=$pathcomp$d
case $pathcomp in
-*) pathcomp=./$pathcomp ;;
esac
@ -124,7 +132,7 @@ do
else
if test ! -z "$dirmode"; then
echo "chmod $dirmode $pathcomp"
lasterr=""
lasterr=
chmod "$dirmode" "$pathcomp" || lasterr=$?
if test ! -z "$lasterr"; then
@ -134,7 +142,7 @@ do
fi
fi
pathcomp="$pathcomp/"
pathcomp=$pathcomp/
done
done

View file

@ -848,7 +848,7 @@
/* If using the C implementation of alloca, define if you know the
direction of stack growth for your system; otherwise it will be
automatically deduced at run-time.
automatically deduced at runtime.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
@ -1061,7 +1061,7 @@
supported. Do not define if restrict is supported directly. */
#undef restrict
/* Define to `unsigned' if <sys/types.h> does not define. */
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t
/* type to use in place of socklen_t if not defined */

21296
configure vendored

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
dnl Process this file with autoconf to produce a configure script.
AC_REVISION ($Revision: 1801 $)
AC_REVISION ($Revision: 1873 $)
AC_PREREQ(2.59)
AC_INIT(nagios-plugins,1.4.10)
AC_INIT(nagios-plugins,1.4.11)
AC_CONFIG_SRCDIR(NPTest.pm)
AC_CONFIG_FILES(gl/Makefile)
AC_CONFIG_AUX_DIR(build-aux)
@ -155,7 +155,7 @@ AC_SUBST(MATHLIBS)
dnl Check for libtap, to run perl-like tests
AC_CHECK_LIB(tap, plan_tests,
EXTRA_TEST="test_utils test_disk test_tcp test_cmd"
EXTRA_TEST="test_utils test_disk test_tcp test_cmd test_base64"
AC_SUBST(EXTRA_TEST)
)

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -27,8 +27,6 @@
SOURCES = $(libgnu_a_SOURCES) $(EXTRA_libgnu_a_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@ -194,6 +192,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -233,7 +232,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -311,12 +309,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -334,6 +329,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -342,6 +340,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -353,8 +352,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@

View file

@ -5,11 +5,11 @@ SUBDIRS = tests
noinst_LIBRARIES = libnagiosplug.a
libnagiosplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c
EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h
libnagiosplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c base64.c
EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h base64.h
INCLUDES = -I$(srcdir) -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins
test:
cd tests && make test
test test-debug:
cd tests && make $@

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -14,8 +14,6 @@
@SET_MAKE@
SOURCES = $(libnagiosplug_a_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@ -105,7 +103,7 @@ ARFLAGS = cru
libnagiosplug_a_AR = $(AR) $(ARFLAGS)
libnagiosplug_a_LIBADD =
am_libnagiosplug_a_OBJECTS = utils_base.$(OBJEXT) utils_disk.$(OBJEXT) \
utils_tcp.$(OBJEXT) utils_cmd.$(OBJEXT)
utils_tcp.$(OBJEXT) utils_cmd.$(OBJEXT) base64.$(OBJEXT)
libnagiosplug_a_OBJECTS = $(am_libnagiosplug_a_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
@ -185,6 +183,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -224,7 +223,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -302,12 +300,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -325,6 +320,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -333,6 +331,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -344,8 +343,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
@ -353,8 +354,8 @@ target_alias = @target_alias@
with_trusted_path = @with_trusted_path@
SUBDIRS = tests
noinst_LIBRARIES = libnagiosplug.a
libnagiosplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c
EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h
libnagiosplug_a_SOURCES = utils_base.c utils_disk.c utils_tcp.c utils_cmd.c base64.c
EXTRA_DIST = utils_base.h utils_disk.h utils_tcp.h utils_cmd.h base64.h
INCLUDES = -I$(srcdir) -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins
all: all-recursive
@ -403,6 +404,7 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/base64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils_base.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils_cmd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils_disk.Po@am__quote@
@ -710,8 +712,8 @@ uninstall-info: uninstall-info-recursive
tags tags-recursive uninstall uninstall-am uninstall-info-am
test:
cd tests && make test
test test-debug:
cd tests && make $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

50
lib/base64.c Normal file
View file

@ -0,0 +1,50 @@
/****************************************************************************
* Function to encode in Base64
*
* Written by Lauri Alanko
*
*****************************************************************************/
#include "common.h"
#include "base64.h"
char *
base64 (const char *bin, size_t len)
{
char *buf = (char *) malloc ((len + 2) / 3 * 4 + 1);
size_t i = 0, j = 0;
char BASE64_END = '=';
char base64_table[64];
strncpy (base64_table, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 64);
while (j < len - 2) {
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)];
buf[i++] = base64_table[((bin[j + 1] & 15) << 2) | (bin[j + 2] >> 6)];
buf[i++] = base64_table[bin[j + 2] & 63];
j += 3;
}
switch (len - j) {
case 1:
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[(bin[j] & 3) << 4];
buf[i++] = BASE64_END;
buf[i++] = BASE64_END;
break;
case 2:
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)];
buf[i++] = base64_table[(bin[j + 1] & 15) << 2];
buf[i++] = BASE64_END;
break;
case 0:
break;
}
buf[i] = '\0';
return buf;
}

4
lib/base64.h Normal file
View file

@ -0,0 +1,4 @@
/* Header file for base64.c */
char *base64 (const char *bin, size_t len);

View file

@ -7,9 +7,9 @@ check_PROGRAMS = @EXTRA_TEST@
INCLUDES = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins
EXTRA_PROGRAMS = test_utils test_disk test_tcp test_cmd
EXTRA_PROGRAMS = test_utils test_disk test_tcp test_cmd test_base64
EXTRA_DIST = test_utils.t test_disk.t test_tcp.t test_cmd.t
EXTRA_DIST = test_utils.t test_disk.t test_tcp.t test_cmd.t test_base64.t
LIBS = @LIBINTL@
@ -33,6 +33,14 @@ test_cmd_CFLAGS = -g -I..
test_cmd_LDFLAGS = -L/usr/local/lib -ltap
test_cmd_LDADD = ../utils_cmd.o ../utils_base.o
test_base64_SOURCES = test_base64.c
test_base64_CFLAGS = -g -I..
test_base64_LDFLAGS = -L/usr/local/lib -ltap
test_base64_LDADD = ../base64.o
test: ${noinst_PROGRAMS}
perl -MTest::Harness -e '$$Test::Harness::switches=""; runtests(map {$$_ .= ".t"} @ARGV)' $(EXTRA_PROGRAMS)
test-debug: ${noinst_PROGRAMS}
perl -MTest::Harness -e '$$Test::Harness::verbose=1; $$Test::Harness::switches=""; runtests(map {$$_ .= ".t"} @ARGV)' $(EXTRA_PROGRAMS)

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -14,8 +14,6 @@
@SET_MAKE@
SOURCES = $(test_cmd_SOURCES) $(test_disk_SOURCES) $(test_tcp_SOURCES) $(test_utils_SOURCES)
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@ -40,7 +38,7 @@ host_triplet = @host@
noinst_PROGRAMS = @EXTRA_TEST@
check_PROGRAMS = @EXTRA_TEST@
EXTRA_PROGRAMS = test_utils$(EXEEXT) test_disk$(EXEEXT) \
test_tcp$(EXEEXT) test_cmd$(EXEEXT)
test_tcp$(EXEEXT) test_cmd$(EXEEXT) test_base64$(EXEEXT)
subdir = lib/tests
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@ -105,6 +103,9 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/build-aux/mkinstalldirs
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
PROGRAMS = $(noinst_PROGRAMS)
am_test_base64_OBJECTS = test_base64-test_base64.$(OBJEXT)
test_base64_OBJECTS = $(am_test_base64_OBJECTS)
test_base64_DEPENDENCIES = ../base64.o
am_test_cmd_OBJECTS = test_cmd-test_cmd.$(OBJEXT)
test_cmd_OBJECTS = $(am_test_cmd_OBJECTS)
test_cmd_DEPENDENCIES = ../utils_cmd.o ../utils_base.o
@ -128,10 +129,10 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(test_cmd_SOURCES) $(test_disk_SOURCES) $(test_tcp_SOURCES) \
$(test_utils_SOURCES)
DIST_SOURCES = $(test_cmd_SOURCES) $(test_disk_SOURCES) \
$(test_tcp_SOURCES) $(test_utils_SOURCES)
SOURCES = $(test_base64_SOURCES) $(test_cmd_SOURCES) \
$(test_disk_SOURCES) $(test_tcp_SOURCES) $(test_utils_SOURCES)
DIST_SOURCES = $(test_base64_SOURCES) $(test_cmd_SOURCES) \
$(test_disk_SOURCES) $(test_tcp_SOURCES) $(test_utils_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@ -190,6 +191,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -229,7 +231,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -307,12 +308,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -330,6 +328,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -338,6 +339,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -349,8 +351,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
@ -360,7 +364,7 @@ with_trusted_path = @with_trusted_path@
# These two lines support "make check", but we use "make test"
TESTS = @EXTRA_TEST@
INCLUDES = -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins
EXTRA_DIST = test_utils.t test_disk.t test_tcp.t test_cmd.t
EXTRA_DIST = test_utils.t test_disk.t test_tcp.t test_cmd.t test_base64.t
test_utils_SOURCES = test_utils.c
test_utils_CFLAGS = -g -I..
test_utils_LDFLAGS = -L/usr/local/lib -ltap
@ -377,6 +381,10 @@ test_cmd_SOURCES = test_cmd.c
test_cmd_CFLAGS = -g -I..
test_cmd_LDFLAGS = -L/usr/local/lib -ltap
test_cmd_LDADD = ../utils_cmd.o ../utils_base.o
test_base64_SOURCES = test_base64.c
test_base64_CFLAGS = -g -I..
test_base64_LDFLAGS = -L/usr/local/lib -ltap
test_base64_LDADD = ../base64.o
all: all-am
.SUFFIXES:
@ -424,6 +432,9 @@ clean-noinstPROGRAMS:
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
test_base64$(EXEEXT): $(test_base64_OBJECTS) $(test_base64_DEPENDENCIES)
@rm -f test_base64$(EXEEXT)
$(LINK) $(test_base64_LDFLAGS) $(test_base64_OBJECTS) $(test_base64_LDADD) $(LIBS)
test_cmd$(EXEEXT): $(test_cmd_OBJECTS) $(test_cmd_DEPENDENCIES)
@rm -f test_cmd$(EXEEXT)
$(LINK) $(test_cmd_LDFLAGS) $(test_cmd_OBJECTS) $(test_cmd_LDADD) $(LIBS)
@ -443,6 +454,7 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_base64-test_base64.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_cmd-test_cmd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_disk-test_disk.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_tcp-test_tcp.Po@am__quote@
@ -469,6 +481,20 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
test_base64-test_base64.o: test_base64.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_base64_CFLAGS) $(CFLAGS) -MT test_base64-test_base64.o -MD -MP -MF "$(DEPDIR)/test_base64-test_base64.Tpo" -c -o test_base64-test_base64.o `test -f 'test_base64.c' || echo '$(srcdir)/'`test_base64.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/test_base64-test_base64.Tpo" "$(DEPDIR)/test_base64-test_base64.Po"; else rm -f "$(DEPDIR)/test_base64-test_base64.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_base64.c' object='test_base64-test_base64.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_base64_CFLAGS) $(CFLAGS) -c -o test_base64-test_base64.o `test -f 'test_base64.c' || echo '$(srcdir)/'`test_base64.c
test_base64-test_base64.obj: test_base64.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_base64_CFLAGS) $(CFLAGS) -MT test_base64-test_base64.obj -MD -MP -MF "$(DEPDIR)/test_base64-test_base64.Tpo" -c -o test_base64-test_base64.obj `if test -f 'test_base64.c'; then $(CYGPATH_W) 'test_base64.c'; else $(CYGPATH_W) '$(srcdir)/test_base64.c'; fi`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/test_base64-test_base64.Tpo" "$(DEPDIR)/test_base64-test_base64.Po"; else rm -f "$(DEPDIR)/test_base64-test_base64.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test_base64.c' object='test_base64-test_base64.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_base64_CFLAGS) $(CFLAGS) -c -o test_base64-test_base64.obj `if test -f 'test_base64.c'; then $(CYGPATH_W) 'test_base64.c'; else $(CYGPATH_W) '$(srcdir)/test_base64.c'; fi`
test_cmd-test_cmd.o: test_cmd.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_cmd_CFLAGS) $(CFLAGS) -MT test_cmd-test_cmd.o -MD -MP -MF "$(DEPDIR)/test_cmd-test_cmd.Tpo" -c -o test_cmd-test_cmd.o `test -f 'test_cmd.c' || echo '$(srcdir)/'`test_cmd.c; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/test_cmd-test_cmd.Tpo" "$(DEPDIR)/test_cmd-test_cmd.Po"; else rm -f "$(DEPDIR)/test_cmd-test_cmd.Tpo"; exit 1; fi
@ -779,6 +805,9 @@ uninstall-am: uninstall-info-am
test: ${noinst_PROGRAMS}
perl -MTest::Harness -e '$$Test::Harness::switches=""; runtests(map {$$_ .= ".t"} @ARGV)' $(EXTRA_PROGRAMS)
test-debug: ${noinst_PROGRAMS}
perl -MTest::Harness -e '$$Test::Harness::verbose=1; $$Test::Harness::switches=""; runtests(map {$$_ .= ".t"} @ARGV)' $(EXTRA_PROGRAMS)
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

351
lib/tests/test_base64.c Normal file
View file

@ -0,0 +1,351 @@
/******************************************************************************
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: test_base64.c 1819 2007-11-09 23:24:45Z dermoth $
******************************************************************************/
#include "common.h"
#include "base64.h"
#include "tap.h"
int
main (int argc, char **argv)
{
#if 0 /* The current base64 function doesn't work on 8bit data */
char random[1024] = {
0x8b,0xb0,0xc4,0xe2,0xfc,0x22,0x9f,0x0d,0x85,0xe7,0x2c,0xaa,0x39,0xa1,0x46,0x88,
0x50,0xe6,0x34,0x37,0x0b,0x45,0x4b,0xb8,0xb2,0x86,0x7a,0x3e,0x7f,0x0c,0x40,0x18,
0x6b,0xad,0xe0,0x4c,0x60,0x8c,0xa3,0xc3,0x3b,0x3e,0x9b,0x16,0x84,0xc6,0xd8,0x3f,
0x40,0xea,0x91,0x85,0xe3,0x71,0x94,0xb5,0xc7,0xf9,0x13,0xef,0x6b,0xa7,0x18,0x5b,
0x48,0xa7,0xbe,0xef,0x95,0xb3,0xcf,0xbe,0x5e,0x51,0xf3,0x68,0x25,0x8f,0x06,0x5b,
0xfc,0xf2,0xf5,0x3e,0x3f,0x1b,0x5c,0x6d,0xea,0x39,0xfc,0xe3,0xe3,0xe0,0xec,0xfa,
0xb3,0x76,0x52,0x13,0xa5,0x33,0xfd,0x65,0xa3,0xa7,0x91,0x86,0x06,0xc7,0x71,0x9e,
0x14,0x74,0x63,0x70,0xad,0x15,0xa7,0x18,0xd1,0x06,0x85,0x33,0x91,0x2c,0x6b,0x80,
0x2d,0xf7,0x20,0xc8,0x8d,0xf3,0x51,0x45,0xa5,0x7f,0x7f,0xb5,0xa6,0xae,0x26,0x53,
0xa4,0x68,0x1e,0x0e,0xd8,0x3a,0x59,0x50,0xd6,0xb7,0x5f,0xe6,0x01,0x4c,0xda,0xe4,
0x32,0xd0,0xfb,0xea,0xa0,0x72,0x2b,0x9d,0x7e,0x43,0xfb,0xe1,0x42,0x0b,0xe1,0x73,
0xa4,0xf9,0x3a,0x6b,0x4a,0xf9,0x6e,0x89,0x0f,0xa7,0xad,0x8c,0xde,0x32,0x4b,0x0d,
0x79,0xc6,0x39,0xa1,0x0a,0x26,0xdf,0x3a,0x80,0x26,0x3f,0x13,0xae,0xfe,0x50,0x2b,
0xe7,0xc6,0xf2,0x3f,0xbb,0x01,0xc6,0x9b,0x0b,0x35,0xc9,0xb9,0x99,0xf0,0x3d,0x82,
0x41,0x8e,0x38,0x85,0xf6,0x65,0xcf,0xb1,0x6c,0xde,0x97,0x04,0x15,0x36,0xa6,0x64,
0xb4,0x94,0x17,0xfc,0x0e,0x0b,0xdb,0x55,0xd3,0x6b,0x80,0x42,0x41,0xcf,0x82,0x5c,
0x13,0x8a,0x2c,0xac,0x3e,0x90,0x94,0xb3,0x45,0xfc,0xfa,0xda,0xb1,0xe1,0xb9,0x88,
0xa2,0xea,0x9e,0x0f,0xef,0x9b,0x6c,0x13,0xde,0x79,0xa0,0xf9,0xd0,0xe2,0x06,0xac,
0xf6,0x97,0x04,0xab,0xaa,0xf5,0x9f,0x8c,0x37,0xce,0x8f,0xfb,0x2d,0x34,0x75,0xe0,
0x31,0xf4,0xae,0x8a,0x4a,0x11,0xec,0xc9,0xa5,0x81,0x3a,0x3d,0xa2,0x9e,0xed,0x18,
0x51,0x78,0xad,0xe2,0x31,0xcc,0x50,0x40,0x97,0xcb,0x6f,0xa2,0x80,0x7f,0xe1,0x2a,
0x34,0xbe,0x00,0x5f,0x2f,0x5f,0xaf,0x94,0x2a,0xd5,0x27,0x9f,0x46,0x9f,0x92,0x46,
0x5e,0x1e,0x0c,0x7c,0xb8,0x81,0xe1,0xe4,0xf6,0x22,0x6e,0x08,0x20,0xb8,0x4f,0x73,
0x72,0x55,0x92,0xc2,0x99,0x50,0xe1,0xc3,0xf7,0x7d,0xc1,0xae,0x35,0x4f,0xbd,0xb1,
0x28,0xd8,0x67,0x9b,0x03,0xd1,0xa0,0xb2,0x9c,0x88,0xee,0x37,0xf5,0xb7,0x44,0xcf,
0x68,0x19,0x87,0x64,0x14,0xa8,0x25,0xab,0x69,0xb5,0x98,0x27,0x26,0x14,0x93,0xf0,
0x42,0x19,0x12,0x75,0x3e,0x02,0x5d,0x7c,0x93,0x9f,0x96,0xd3,0xbb,0x74,0xc8,0xbc,
0xde,0xb9,0x6c,0x9c,0x9c,0xf4,0xb9,0x9f,0x80,0x9b,0x06,0x8a,0xe8,0xbb,0xd2,0x4f,
0x9e,0xee,0xbc,0x35,0x8c,0xb8,0x0e,0x0b,0xbb,0x9a,0xf6,0x23,0xa9,0xd3,0x9e,0xdf,
0xc1,0x0c,0x4b,0x0a,0x65,0xa8,0x78,0x67,0x48,0x59,0xa6,0x6d,0xb1,0xf6,0xa3,0x70,
0xe1,0x64,0x3b,0xb8,0x79,0x66,0xf4,0xd3,0xac,0x64,0xe4,0x54,0x83,0x54,0x65,0xc4,
0x4c,0x98,0xcf,0x48,0x20,0x4f,0xf2,0x90,0xbf,0x8c,0x52,0x2d,0x03,0x14,0x83,0xd1,
0x42,0x90,0x77,0xea,0x34,0x06,0x32,0x83,0xf2,0x14,0xfc,0x88,0x5d,0xd2,0x9a,0xe2,
0x7c,0x3e,0x30,0xfe,0x5f,0x7f,0xd4,0x0f,0x44,0x49,0x5d,0x5e,0x90,0x6a,0x86,0x2b,
0x86,0xd3,0x90,0x39,0xb7,0x32,0x4a,0x4e,0x3d,0x2b,0xe5,0xb8,0x39,0x87,0x72,0xd4,
0xe4,0x4d,0xd6,0x6a,0x03,0xa2,0x70,0xfb,0x5f,0xe0,0x8b,0xaa,0x8b,0x6b,0x10,0x64,
0x94,0x85,0x22,0x80,0x73,0xc0,0x23,0xdb,0xd1,0x9f,0x2b,0x9a,0xdd,0xe9,0xfa,0xc6,
0x0c,0x5f,0xb2,0xcb,0xca,0x28,0xd2,0xf9,0x5b,0x92,0x42,0x98,0x80,0xdd,0x27,0xb1,
0xd3,0x3c,0x4c,0xb6,0x4e,0x38,0x3f,0x72,0x83,0x71,0x02,0x5b,0xb6,0xd9,0xff,0x75,
0xee,0x88,0xd4,0x8d,0xb4,0x1c,0x34,0xd7,0xdd,0xe9,0x48,0x80,0x3b,0x85,0x07,0xee,
0x27,0xe5,0x6e,0xc0,0xbd,0x3a,0xcf,0xf2,0x5d,0xb9,0x16,0x0f,0xe3,0x92,0x92,0x15,
0x3a,0x70,0x0d,0x57,0x98,0x8d,0xde,0xbd,0xa2,0x68,0x68,0x7c,0x6d,0x4f,0x8c,0xfb,
0x89,0x2d,0x4a,0x73,0xa0,0x47,0x07,0xd7,0x75,0x5d,0x53,0x70,0x34,0x21,0x40,0x57,
0x51,0xde,0xc9,0xc4,0x80,0xd4,0x27,0x84,0x68,0xfe,0x59,0x56,0xd8,0xf4,0x14,0xbc,
0x96,0xb3,0x41,0x96,0x4b,0xaf,0x49,0x37,0x0a,0x54,0x88,0x08,0x1f,0x39,0x67,0xf6,
0xa8,0xa8,0x87,0x9d,0xe1,0xc7,0xd1,0x4d,0x75,0x26,0xd2,0xc7,0xc7,0x8c,0x57,0xd8,
0x74,0x3e,0xe2,0xec,0xd8,0xba,0xc4,0x9e,0x96,0xae,0xa1,0x1c,0x73,0xc5,0x67,0x74,
0x4f,0x33,0xe6,0x0e,0x74,0xe6,0x26,0x1f,0x2e,0x38,0xc4,0x40,0x7e,0xaa,0xd0,0x52,
0xde,0xc3,0x81,0x7a,0xb8,0x49,0xbc,0x55,0x4d,0x5a,0xc4,0x08,0x26,0x59,0xcd,0x45,
0x8b,0x48,0x0a,0x33,0xde,0xca,0xcd,0x75,0x16,0x97,0xe3,0xc6,0x81,0x2a,0xd5,0xfb,
0x8f,0x82,0xf3,0x6a,0x4b,0xff,0xf5,0x65,0xbc,0x4c,0xb3,0x39,0xec,0xf4,0x85,0x60,
0x0f,0xff,0x2d,0x41,0x4d,0x4d,0xc6,0xf1,0x89,0x6f,0x4f,0xe0,0x15,0x0f,0x46,0xf3,
0xe3,0xcc,0xde,0x74,0x30,0x8d,0x28,0x43,0x88,0x72,0xb2,0x04,0xae,0x31,0x29,0xa7,
0x44,0x6d,0x93,0x97,0xc8,0x8f,0x49,0x52,0x10,0x93,0x7f,0x97,0x96,0xe2,0x79,0x35,
0x78,0xbe,0x81,0x7c,0xae,0x0f,0x76,0xbe,0x5e,0x53,0x6c,0x5b,0x5f,0x7c,0x99,0x41,
0x82,0xaf,0x97,0x64,0x41,0x75,0x90,0x04,0x47,0xfc,0xbd,0x4b,0xd2,0x80,0x10,0x5d,
0x51,0x4e,0x7a,0xa7,0x25,0xd5,0xc0,0x12,0x35,0x60,0x05,0x1b,0x34,0xad,0x84,0x7a,
0x6a,0x69,0x82,0x79,0x83,0xba,0x2f,0x06,0x8a,0x79,0x7b,0x12,0x5d,0x7c,0x52,0xa9,
0xc7,0xd8,0x12,0x73,0x3f,0x27,0xd6,0x05,0x8c,0x48,0xb2,0x58,0xeb,0x57,0xdc,0x83,
0x64,0xd6,0x91,0xd2,0x7a,0xb0,0xb6,0x29,0x17,0x3b,0x68,0xfa,0xfc,0x85,0x6b,0xeb,
0x13,0xea,0xa4,0x5c,0x68,0x42,0x98,0xb2,0x83,0xf3,0xee,0x84,0x21,0xae,0x81,0x84,
0xe3,0x7d,0x44,0xc1,0x12,0xb1,0x0b,0x95,0x9f,0x70,0x80,0xae,0xe6,0x94,0x3c,0x7f,
0xab,0x00,0x9f,0x0c,0xa8,0x59,0x0a,0x96,0xc9,0x5a,0x5c,0xe4,0xe5,0xcb,0x91,0x29,
0x15,0xb6,0x5a,0xe5,0x19,0xcf,0x60,0x23,0xba,0x3a,0x93,0x25,0x02,0x78,0xcc,0x54
};
char b64_known[1368] = {
0x69,0x37,0x44,0x45,0x34,0x76,0x77,0x69,0x6e,0x77,0x32,0x46,0x35,0x79,0x79,0x71,
0x4f,0x61,0x46,0x47,0x69,0x46,0x44,0x6d,0x4e,0x44,0x63,0x4c,0x52,0x55,0x75,0x34,
0x73,0x6f,0x5a,0x36,0x50,0x6e,0x38,0x4d,0x51,0x42,0x68,0x72,0x72,0x65,0x42,0x4d,
0x59,0x49,0x79,0x6a,0x77,0x7a,0x73,0x2b,0x6d,0x78,0x61,0x45,0x78,0x74,0x67,0x2f,
0x51,0x4f,0x71,0x52,0x68,0x65,0x4e,0x78,0x6c,0x4c,0x58,0x48,0x2b,0x52,0x50,0x76,
0x61,0x36,0x63,0x59,0x57,0x30,0x69,0x6e,0x76,0x75,0x2b,0x56,0x73,0x38,0x2b,0x2b,
0x58,0x6c,0x48,0x7a,0x61,0x43,0x57,0x50,0x42,0x6c,0x76,0x38,0x38,0x76,0x55,0x2b,
0x50,0x78,0x74,0x63,0x62,0x65,0x6f,0x35,0x2f,0x4f,0x50,0x6a,0x34,0x4f,0x7a,0x36,
0x73,0x33,0x5a,0x53,0x45,0x36,0x55,0x7a,0x2f,0x57,0x57,0x6a,0x70,0x35,0x47,0x47,
0x42,0x73,0x64,0x78,0x6e,0x68,0x52,0x30,0x59,0x33,0x43,0x74,0x46,0x61,0x63,0x59,
0x30,0x51,0x61,0x46,0x4d,0x35,0x45,0x73,0x61,0x34,0x41,0x74,0x39,0x79,0x44,0x49,
0x6a,0x66,0x4e,0x52,0x52,0x61,0x56,0x2f,0x66,0x37,0x57,0x6d,0x72,0x69,0x5a,0x54,
0x70,0x47,0x67,0x65,0x44,0x74,0x67,0x36,0x57,0x56,0x44,0x57,0x74,0x31,0x2f,0x6d,
0x41,0x55,0x7a,0x61,0x35,0x44,0x4c,0x51,0x2b,0x2b,0x71,0x67,0x63,0x69,0x75,0x64,
0x66,0x6b,0x50,0x37,0x34,0x55,0x49,0x4c,0x34,0x58,0x4f,0x6b,0x2b,0x54,0x70,0x72,
0x53,0x76,0x6c,0x75,0x69,0x51,0x2b,0x6e,0x72,0x59,0x7a,0x65,0x4d,0x6b,0x73,0x4e,
0x65,0x63,0x59,0x35,0x6f,0x51,0x6f,0x6d,0x33,0x7a,0x71,0x41,0x4a,0x6a,0x38,0x54,
0x72,0x76,0x35,0x51,0x4b,0x2b,0x66,0x47,0x38,0x6a,0x2b,0x37,0x41,0x63,0x61,0x62,
0x43,0x7a,0x58,0x4a,0x75,0x5a,0x6e,0x77,0x50,0x59,0x4a,0x42,0x6a,0x6a,0x69,0x46,
0x39,0x6d,0x58,0x50,0x73,0x57,0x7a,0x65,0x6c,0x77,0x51,0x56,0x4e,0x71,0x5a,0x6b,
0x74,0x4a,0x51,0x58,0x2f,0x41,0x34,0x4c,0x32,0x31,0x58,0x54,0x61,0x34,0x42,0x43,
0x51,0x63,0x2b,0x43,0x58,0x42,0x4f,0x4b,0x4c,0x4b,0x77,0x2b,0x6b,0x4a,0x53,0x7a,
0x52,0x66,0x7a,0x36,0x32,0x72,0x48,0x68,0x75,0x59,0x69,0x69,0x36,0x70,0x34,0x50,
0x37,0x35,0x74,0x73,0x45,0x39,0x35,0x35,0x6f,0x50,0x6e,0x51,0x34,0x67,0x61,0x73,
0x39,0x70,0x63,0x45,0x71,0x36,0x72,0x31,0x6e,0x34,0x77,0x33,0x7a,0x6f,0x2f,0x37,
0x4c,0x54,0x52,0x31,0x34,0x44,0x48,0x30,0x72,0x6f,0x70,0x4b,0x45,0x65,0x7a,0x4a,
0x70,0x59,0x45,0x36,0x50,0x61,0x4b,0x65,0x37,0x52,0x68,0x52,0x65,0x4b,0x33,0x69,
0x4d,0x63,0x78,0x51,0x51,0x4a,0x66,0x4c,0x62,0x36,0x4b,0x41,0x66,0x2b,0x45,0x71,
0x4e,0x4c,0x34,0x41,0x58,0x79,0x39,0x66,0x72,0x35,0x51,0x71,0x31,0x53,0x65,0x66,
0x52,0x70,0x2b,0x53,0x52,0x6c,0x34,0x65,0x44,0x48,0x79,0x34,0x67,0x65,0x48,0x6b,
0x39,0x69,0x4a,0x75,0x43,0x43,0x43,0x34,0x54,0x33,0x4e,0x79,0x56,0x5a,0x4c,0x43,
0x6d,0x56,0x44,0x68,0x77,0x2f,0x64,0x39,0x77,0x61,0x34,0x31,0x54,0x37,0x32,0x78,
0x4b,0x4e,0x68,0x6e,0x6d,0x77,0x50,0x52,0x6f,0x4c,0x4b,0x63,0x69,0x4f,0x34,0x33,
0x39,0x62,0x64,0x45,0x7a,0x32,0x67,0x5a,0x68,0x32,0x51,0x55,0x71,0x43,0x57,0x72,
0x61,0x62,0x57,0x59,0x4a,0x79,0x59,0x55,0x6b,0x2f,0x42,0x43,0x47,0x52,0x4a,0x31,
0x50,0x67,0x4a,0x64,0x66,0x4a,0x4f,0x66,0x6c,0x74,0x4f,0x37,0x64,0x4d,0x69,0x38,
0x33,0x72,0x6c,0x73,0x6e,0x4a,0x7a,0x30,0x75,0x5a,0x2b,0x41,0x6d,0x77,0x61,0x4b,
0x36,0x4c,0x76,0x53,0x54,0x35,0x37,0x75,0x76,0x44,0x57,0x4d,0x75,0x41,0x34,0x4c,
0x75,0x35,0x72,0x32,0x49,0x36,0x6e,0x54,0x6e,0x74,0x2f,0x42,0x44,0x45,0x73,0x4b,
0x5a,0x61,0x68,0x34,0x5a,0x30,0x68,0x5a,0x70,0x6d,0x32,0x78,0x39,0x71,0x4e,0x77,
0x34,0x57,0x51,0x37,0x75,0x48,0x6c,0x6d,0x39,0x4e,0x4f,0x73,0x5a,0x4f,0x52,0x55,
0x67,0x31,0x52,0x6c,0x78,0x45,0x79,0x59,0x7a,0x30,0x67,0x67,0x54,0x2f,0x4b,0x51,
0x76,0x34,0x78,0x53,0x4c,0x51,0x4d,0x55,0x67,0x39,0x46,0x43,0x6b,0x48,0x66,0x71,
0x4e,0x41,0x59,0x79,0x67,0x2f,0x49,0x55,0x2f,0x49,0x68,0x64,0x30,0x70,0x72,0x69,
0x66,0x44,0x34,0x77,0x2f,0x6c,0x39,0x2f,0x31,0x41,0x39,0x45,0x53,0x56,0x31,0x65,
0x6b,0x47,0x71,0x47,0x4b,0x34,0x62,0x54,0x6b,0x44,0x6d,0x33,0x4d,0x6b,0x70,0x4f,
0x50,0x53,0x76,0x6c,0x75,0x44,0x6d,0x48,0x63,0x74,0x54,0x6b,0x54,0x64,0x5a,0x71,
0x41,0x36,0x4a,0x77,0x2b,0x31,0x2f,0x67,0x69,0x36,0x71,0x4c,0x61,0x78,0x42,0x6b,
0x6c,0x49,0x55,0x69,0x67,0x48,0x50,0x41,0x49,0x39,0x76,0x52,0x6e,0x79,0x75,0x61,
0x33,0x65,0x6e,0x36,0x78,0x67,0x78,0x66,0x73,0x73,0x76,0x4b,0x4b,0x4e,0x4c,0x35,
0x57,0x35,0x4a,0x43,0x6d,0x49,0x44,0x64,0x4a,0x37,0x48,0x54,0x50,0x45,0x79,0x32,
0x54,0x6a,0x67,0x2f,0x63,0x6f,0x4e,0x78,0x41,0x6c,0x75,0x32,0x32,0x66,0x39,0x31,
0x37,0x6f,0x6a,0x55,0x6a,0x62,0x51,0x63,0x4e,0x4e,0x66,0x64,0x36,0x55,0x69,0x41,
0x4f,0x34,0x55,0x48,0x37,0x69,0x66,0x6c,0x62,0x73,0x43,0x39,0x4f,0x73,0x2f,0x79,
0x58,0x62,0x6b,0x57,0x44,0x2b,0x4f,0x53,0x6b,0x68,0x55,0x36,0x63,0x41,0x31,0x58,
0x6d,0x49,0x33,0x65,0x76,0x61,0x4a,0x6f,0x61,0x48,0x78,0x74,0x54,0x34,0x7a,0x37,
0x69,0x53,0x31,0x4b,0x63,0x36,0x42,0x48,0x42,0x39,0x64,0x31,0x58,0x56,0x4e,0x77,
0x4e,0x43,0x46,0x41,0x56,0x31,0x48,0x65,0x79,0x63,0x53,0x41,0x31,0x43,0x65,0x45,
0x61,0x50,0x35,0x5a,0x56,0x74,0x6a,0x30,0x46,0x4c,0x79,0x57,0x73,0x30,0x47,0x57,
0x53,0x36,0x39,0x4a,0x4e,0x77,0x70,0x55,0x69,0x41,0x67,0x66,0x4f,0x57,0x66,0x32,
0x71,0x4b,0x69,0x48,0x6e,0x65,0x48,0x48,0x30,0x55,0x31,0x31,0x4a,0x74,0x4c,0x48,
0x78,0x34,0x78,0x58,0x32,0x48,0x51,0x2b,0x34,0x75,0x7a,0x59,0x75,0x73,0x53,0x65,
0x6c,0x71,0x36,0x68,0x48,0x48,0x50,0x46,0x5a,0x33,0x52,0x50,0x4d,0x2b,0x59,0x4f,
0x64,0x4f,0x59,0x6d,0x48,0x79,0x34,0x34,0x78,0x45,0x42,0x2b,0x71,0x74,0x42,0x53,
0x33,0x73,0x4f,0x42,0x65,0x72,0x68,0x4a,0x76,0x46,0x56,0x4e,0x57,0x73,0x51,0x49,
0x4a,0x6c,0x6e,0x4e,0x52,0x59,0x74,0x49,0x43,0x6a,0x50,0x65,0x79,0x73,0x31,0x31,
0x46,0x70,0x66,0x6a,0x78,0x6f,0x45,0x71,0x31,0x66,0x75,0x50,0x67,0x76,0x4e,0x71,
0x53,0x2f,0x2f,0x31,0x5a,0x62,0x78,0x4d,0x73,0x7a,0x6e,0x73,0x39,0x49,0x56,0x67,
0x44,0x2f,0x38,0x74,0x51,0x55,0x31,0x4e,0x78,0x76,0x47,0x4a,0x62,0x30,0x2f,0x67,
0x46,0x51,0x39,0x47,0x38,0x2b,0x50,0x4d,0x33,0x6e,0x51,0x77,0x6a,0x53,0x68,0x44,
0x69,0x48,0x4b,0x79,0x42,0x4b,0x34,0x78,0x4b,0x61,0x64,0x45,0x62,0x5a,0x4f,0x58,
0x79,0x49,0x39,0x4a,0x55,0x68,0x43,0x54,0x66,0x35,0x65,0x57,0x34,0x6e,0x6b,0x31,
0x65,0x4c,0x36,0x42,0x66,0x4b,0x34,0x50,0x64,0x72,0x35,0x65,0x55,0x32,0x78,0x62,
0x58,0x33,0x79,0x5a,0x51,0x59,0x4b,0x76,0x6c,0x32,0x52,0x42,0x64,0x5a,0x41,0x45,
0x52,0x2f,0x79,0x39,0x53,0x39,0x4b,0x41,0x45,0x46,0x31,0x52,0x54,0x6e,0x71,0x6e,
0x4a,0x64,0x58,0x41,0x45,0x6a,0x56,0x67,0x42,0x52,0x73,0x30,0x72,0x59,0x52,0x36,
0x61,0x6d,0x6d,0x43,0x65,0x59,0x4f,0x36,0x4c,0x77,0x61,0x4b,0x65,0x58,0x73,0x53,
0x58,0x58,0x78,0x53,0x71,0x63,0x66,0x59,0x45,0x6e,0x4d,0x2f,0x4a,0x39,0x59,0x46,
0x6a,0x45,0x69,0x79,0x57,0x4f,0x74,0x58,0x33,0x49,0x4e,0x6b,0x31,0x70,0x48,0x53,
0x65,0x72,0x43,0x32,0x4b,0x52,0x63,0x37,0x61,0x50,0x72,0x38,0x68,0x57,0x76,0x72,
0x45,0x2b,0x71,0x6b,0x58,0x47,0x68,0x43,0x6d,0x4c,0x4b,0x44,0x38,0x2b,0x36,0x45,
0x49,0x61,0x36,0x42,0x68,0x4f,0x4e,0x39,0x52,0x4d,0x45,0x53,0x73,0x51,0x75,0x56,
0x6e,0x33,0x43,0x41,0x72,0x75,0x61,0x55,0x50,0x48,0x2b,0x72,0x41,0x4a,0x38,0x4d,
0x71,0x46,0x6b,0x4b,0x6c,0x73,0x6c,0x61,0x58,0x4f,0x54,0x6c,0x79,0x35,0x45,0x70,
0x46,0x62,0x5a,0x61,0x35,0x52,0x6e,0x50,0x59,0x43,0x4f,0x36,0x4f,0x70,0x4d,0x6c,
0x41,0x6e,0x6a,0x4d,0x56,0x41,0x3d,0x3d
};
#endif
char random[1024] = {
0x0b,0x30,0x44,0x62,0x7c,0x22,0x1f,0x0d,0x05,0x67,0x2c,0x2a,0x39,0x21,0x46,0x08,
0x50,0x66,0x34,0x37,0x0b,0x45,0x4b,0x38,0x32,0x06,0x7a,0x3e,0x7f,0x0c,0x40,0x18,
0x6b,0x2d,0x60,0x4c,0x60,0x0c,0x23,0x43,0x3b,0x3e,0x1b,0x16,0x04,0x46,0x58,0x3f,
0x40,0x6a,0x11,0x05,0x63,0x71,0x14,0x35,0x47,0x79,0x13,0x6f,0x6b,0x27,0x18,0x5b,
0x48,0x27,0x3e,0x6f,0x15,0x33,0x4f,0x3e,0x5e,0x51,0x73,0x68,0x25,0x0f,0x06,0x5b,
0x7c,0x72,0x75,0x3e,0x3f,0x1b,0x5c,0x6d,0x6a,0x39,0x7c,0x63,0x63,0x60,0x6c,0x7a,
0x33,0x76,0x52,0x13,0x25,0x33,0x7d,0x65,0x23,0x27,0x11,0x06,0x06,0x47,0x71,0x1e,
0x14,0x74,0x63,0x70,0x2d,0x15,0x27,0x18,0x51,0x06,0x05,0x33,0x11,0x2c,0x6b,0x00,
0x2d,0x77,0x20,0x48,0x0d,0x73,0x51,0x45,0x25,0x7f,0x7f,0x35,0x26,0x2e,0x26,0x53,
0x24,0x68,0x1e,0x0e,0x58,0x3a,0x59,0x50,0x56,0x37,0x5f,0x66,0x01,0x4c,0x5a,0x64,
0x32,0x50,0x7b,0x6a,0x20,0x72,0x2b,0x1d,0x7e,0x43,0x7b,0x61,0x42,0x0b,0x61,0x73,
0x24,0x79,0x3a,0x6b,0x4a,0x79,0x6e,0x09,0x0f,0x27,0x2d,0x0c,0x5e,0x32,0x4b,0x0d,
0x79,0x46,0x39,0x21,0x0a,0x26,0x5f,0x3a,0x00,0x26,0x3f,0x13,0x2e,0x7e,0x50,0x2b,
0x67,0x46,0x72,0x3f,0x3b,0x01,0x46,0x1b,0x0b,0x35,0x49,0x39,0x19,0x70,0x3d,0x02,
0x41,0x0e,0x38,0x05,0x76,0x65,0x4f,0x31,0x6c,0x5e,0x17,0x04,0x15,0x36,0x26,0x64,
0x34,0x14,0x17,0x7c,0x0e,0x0b,0x5b,0x55,0x53,0x6b,0x00,0x42,0x41,0x4f,0x02,0x5c,
0x13,0x0a,0x2c,0x2c,0x3e,0x10,0x14,0x33,0x45,0x7c,0x7a,0x5a,0x31,0x61,0x39,0x08,
0x22,0x6a,0x1e,0x0f,0x6f,0x1b,0x6c,0x13,0x5e,0x79,0x20,0x79,0x50,0x62,0x06,0x2c,
0x76,0x17,0x04,0x2b,0x2a,0x75,0x1f,0x0c,0x37,0x4e,0x0f,0x7b,0x2d,0x34,0x75,0x60,
0x31,0x74,0x2e,0x0a,0x4a,0x11,0x6c,0x49,0x25,0x01,0x3a,0x3d,0x22,0x1e,0x6d,0x18,
0x51,0x78,0x2d,0x62,0x31,0x4c,0x50,0x40,0x17,0x4b,0x6f,0x22,0x00,0x7f,0x61,0x2a,
0x34,0x3e,0x00,0x5f,0x2f,0x5f,0x2f,0x14,0x2a,0x55,0x27,0x1f,0x46,0x1f,0x12,0x46,
0x5e,0x1e,0x0c,0x7c,0x38,0x01,0x61,0x64,0x76,0x22,0x6e,0x08,0x20,0x38,0x4f,0x73,
0x72,0x55,0x12,0x42,0x19,0x50,0x61,0x43,0x77,0x7d,0x41,0x2e,0x35,0x4f,0x3d,0x31,
0x28,0x58,0x67,0x1b,0x03,0x51,0x20,0x32,0x1c,0x08,0x6e,0x37,0x75,0x37,0x44,0x4f,
0x68,0x19,0x07,0x64,0x14,0x28,0x25,0x2b,0x69,0x35,0x18,0x27,0x26,0x14,0x13,0x70,
0x42,0x19,0x12,0x75,0x3e,0x02,0x5d,0x7c,0x13,0x1f,0x16,0x53,0x3b,0x74,0x48,0x3c,
0x5e,0x39,0x6c,0x1c,0x1c,0x74,0x39,0x1f,0x00,0x1b,0x06,0x0a,0x68,0x3b,0x52,0x4f,
0x1e,0x6e,0x3c,0x35,0x0c,0x38,0x0e,0x0b,0x3b,0x1a,0x76,0x23,0x29,0x53,0x1e,0x5f,
0x41,0x0c,0x4b,0x0a,0x65,0x28,0x78,0x67,0x48,0x59,0x26,0x6d,0x31,0x76,0x23,0x70,
0x61,0x64,0x3b,0x38,0x79,0x66,0x74,0x53,0x2c,0x64,0x64,0x54,0x03,0x54,0x65,0x44,
0x4c,0x18,0x4f,0x48,0x20,0x4f,0x72,0x10,0x3f,0x0c,0x52,0x2d,0x03,0x14,0x03,0x51,
0x42,0x10,0x77,0x6a,0x34,0x06,0x32,0x03,0x72,0x14,0x7c,0x08,0x5d,0x52,0x1a,0x62,
0x7c,0x3e,0x30,0x7e,0x5f,0x7f,0x54,0x0f,0x44,0x49,0x5d,0x5e,0x10,0x6a,0x06,0x2b,
0x06,0x53,0x10,0x39,0x37,0x32,0x4a,0x4e,0x3d,0x2b,0x65,0x38,0x39,0x07,0x72,0x54,
0x64,0x4d,0x56,0x6a,0x03,0x22,0x70,0x7b,0x5f,0x60,0x0b,0x2a,0x0b,0x6b,0x10,0x64,
0x14,0x05,0x22,0x00,0x73,0x40,0x23,0x5b,0x51,0x1f,0x2b,0x1a,0x5d,0x69,0x7a,0x46,
0x0c,0x5f,0x32,0x4b,0x4a,0x28,0x52,0x79,0x5b,0x12,0x42,0x18,0x00,0x5d,0x27,0x31,
0x53,0x3c,0x4c,0x36,0x4e,0x38,0x3f,0x72,0x03,0x71,0x02,0x5b,0x36,0x59,0x7f,0x75,
0x6e,0x08,0x54,0x0d,0x34,0x1c,0x34,0x57,0x5d,0x69,0x48,0x00,0x3b,0x05,0x07,0x6e,
0x27,0x65,0x6e,0x40,0x3d,0x3a,0x4f,0x72,0x5d,0x39,0x16,0x0f,0x63,0x12,0x12,0x15,
0x3a,0x70,0x0d,0x57,0x18,0x0d,0x5e,0x3d,0x22,0x68,0x68,0x7c,0x6d,0x4f,0x0c,0x7b,
0x09,0x2d,0x4a,0x73,0x20,0x47,0x07,0x57,0x75,0x5d,0x53,0x70,0x34,0x21,0x40,0x57,
0x51,0x5e,0x49,0x44,0x00,0x54,0x27,0x04,0x68,0x7e,0x59,0x56,0x58,0x74,0x14,0x3c,
0x16,0x33,0x41,0x16,0x4b,0x2f,0x49,0x37,0x0a,0x54,0x08,0x08,0x1f,0x39,0x67,0x76,
0x28,0x28,0x07,0x1d,0x61,0x47,0x51,0x4d,0x75,0x26,0x52,0x47,0x47,0x0c,0x57,0x58,
0x74,0x3e,0x62,0x6c,0x58,0x3a,0x44,0x1e,0x16,0x2e,0x21,0x1c,0x73,0x45,0x67,0x74,
0x4f,0x33,0x66,0x0e,0x74,0x66,0x26,0x1f,0x2e,0x38,0x44,0x40,0x7e,0x2a,0x50,0x52,
0x5e,0x43,0x01,0x7a,0x38,0x49,0x3c,0x55,0x4d,0x5a,0x44,0x08,0x26,0x59,0x4d,0x45,
0x0b,0x48,0x0a,0x33,0x5e,0x4a,0x4d,0x75,0x16,0x17,0x63,0x46,0x01,0x2a,0x55,0x7b,
0x0f,0x02,0x73,0x6a,0x4b,0x7f,0x75,0x65,0x3c,0x4c,0x33,0x39,0x6c,0x74,0x05,0x60,
0x0f,0x7f,0x2d,0x41,0x4d,0x4d,0x46,0x71,0x09,0x6f,0x4f,0x60,0x15,0x0f,0x46,0x73,
0x63,0x4c,0x5e,0x74,0x30,0x0d,0x28,0x43,0x08,0x72,0x32,0x04,0x2e,0x31,0x29,0x27,
0x44,0x6d,0x13,0x17,0x48,0x0f,0x49,0x52,0x10,0x13,0x7f,0x17,0x16,0x62,0x79,0x35,
0x78,0x3e,0x01,0x7c,0x2e,0x0f,0x76,0x3e,0x5e,0x53,0x6c,0x5b,0x5f,0x7c,0x19,0x41,
0x02,0x2f,0x17,0x64,0x41,0x75,0x10,0x04,0x47,0x7c,0x3d,0x4b,0x52,0x00,0x10,0x5d,
0x51,0x4e,0x7a,0x27,0x25,0x55,0x40,0x12,0x35,0x60,0x05,0x1b,0x34,0x2d,0x04,0x7a,
0x6a,0x69,0x02,0x79,0x03,0x3a,0x2f,0x06,0x0a,0x79,0x7b,0x12,0x5d,0x7c,0x52,0x29,
0x47,0x58,0x12,0x73,0x3f,0x27,0x56,0x05,0x0c,0x48,0x32,0x58,0x6b,0x57,0x5c,0x03,
0x64,0x56,0x11,0x52,0x7a,0x30,0x36,0x29,0x17,0x3b,0x68,0x7a,0x7c,0x05,0x6b,0x6b,
0x13,0x6a,0x24,0x5c,0x68,0x42,0x18,0x32,0x03,0x73,0x6e,0x04,0x21,0x2e,0x01,0x04,
0x63,0x7d,0x44,0x41,0x12,0x31,0x0b,0x15,0x1f,0x70,0x00,0x2e,0x66,0x14,0x3c,0x7f,
0x2b,0x00,0x1f,0x0c,0x28,0x59,0x0a,0x16,0x49,0x5a,0x5c,0x64,0x65,0x4b,0x11,0x29,
0x15,0x36,0x5a,0x65,0x19,0x4f,0x60,0x23,0x3a,0x3a,0x13,0x25,0x02,0x78,0x4c,0x54
};
char b64_known[1368] = {
0x43,0x7a,0x42,0x45,0x59,0x6e,0x77,0x69,0x48,0x77,0x30,0x46,0x5a,0x79,0x77,0x71,
0x4f,0x53,0x46,0x47,0x43,0x46,0x42,0x6d,0x4e,0x44,0x63,0x4c,0x52,0x55,0x73,0x34,
0x4d,0x67,0x5a,0x36,0x50,0x6e,0x38,0x4d,0x51,0x42,0x68,0x72,0x4c,0x57,0x42,0x4d,
0x59,0x41,0x77,0x6a,0x51,0x7a,0x73,0x2b,0x47,0x78,0x59,0x45,0x52,0x6c,0x67,0x2f,
0x51,0x47,0x6f,0x52,0x42,0x57,0x4e,0x78,0x46,0x44,0x56,0x48,0x65,0x52,0x4e,0x76,
0x61,0x79,0x63,0x59,0x57,0x30,0x67,0x6e,0x50,0x6d,0x38,0x56,0x4d,0x30,0x38,0x2b,
0x58,0x6c,0x46,0x7a,0x61,0x43,0x55,0x50,0x42,0x6c,0x74,0x38,0x63,0x6e,0x55,0x2b,
0x50,0x78,0x74,0x63,0x62,0x57,0x6f,0x35,0x66,0x47,0x4e,0x6a,0x59,0x47,0x78,0x36,
0x4d,0x33,0x5a,0x53,0x45,0x79,0x55,0x7a,0x66,0x57,0x55,0x6a,0x4a,0x78,0x45,0x47,
0x42,0x6b,0x64,0x78,0x48,0x68,0x52,0x30,0x59,0x33,0x41,0x74,0x46,0x53,0x63,0x59,
0x55,0x51,0x59,0x46,0x4d,0x78,0x45,0x73,0x61,0x77,0x41,0x74,0x64,0x79,0x42,0x49,
0x44,0x58,0x4e,0x52,0x52,0x53,0x56,0x2f,0x66,0x7a,0x55,0x6d,0x4c,0x69,0x5a,0x54,
0x4a,0x47,0x67,0x65,0x44,0x6c,0x67,0x36,0x57,0x56,0x42,0x57,0x4e,0x31,0x39,0x6d,
0x41,0x55,0x78,0x61,0x5a,0x44,0x4a,0x51,0x65,0x32,0x6f,0x67,0x63,0x69,0x73,0x64,
0x66,0x6b,0x4e,0x37,0x59,0x55,0x49,0x4c,0x59,0x58,0x4d,0x6b,0x65,0x54,0x70,0x72,
0x53,0x6e,0x6c,0x75,0x43,0x51,0x38,0x6e,0x4c,0x51,0x78,0x65,0x4d,0x6b,0x73,0x4e,
0x65,0x55,0x59,0x35,0x49,0x51,0x6f,0x6d,0x58,0x7a,0x6f,0x41,0x4a,0x6a,0x38,0x54,
0x4c,0x6e,0x35,0x51,0x4b,0x32,0x64,0x47,0x63,0x6a,0x38,0x37,0x41,0x55,0x59,0x62,
0x43,0x7a,0x56,0x4a,0x4f,0x52,0x6c,0x77,0x50,0x51,0x4a,0x42,0x44,0x6a,0x67,0x46,
0x64,0x6d,0x56,0x50,0x4d,0x57,0x78,0x65,0x46,0x77,0x51,0x56,0x4e,0x69,0x5a,0x6b,
0x4e,0x42,0x51,0x58,0x66,0x41,0x34,0x4c,0x57,0x31,0x56,0x54,0x61,0x77,0x42,0x43,
0x51,0x55,0x38,0x43,0x58,0x42,0x4d,0x4b,0x4c,0x43,0x77,0x2b,0x45,0x42,0x51,0x7a,
0x52,0x58,0x78,0x36,0x57,0x6a,0x46,0x68,0x4f,0x51,0x67,0x69,0x61,0x68,0x34,0x50,
0x62,0x78,0x74,0x73,0x45,0x31,0x35,0x35,0x49,0x48,0x6c,0x51,0x59,0x67,0x59,0x73,
0x64,0x68,0x63,0x45,0x4b,0x79,0x70,0x31,0x48,0x77,0x77,0x33,0x54,0x67,0x39,0x37,
0x4c,0x54,0x52,0x31,0x59,0x44,0x46,0x30,0x4c,0x67,0x70,0x4b,0x45,0x57,0x78,0x4a,
0x4a,0x51,0x45,0x36,0x50,0x53,0x49,0x65,0x62,0x52,0x68,0x52,0x65,0x43,0x31,0x69,
0x4d,0x55,0x78,0x51,0x51,0x42,0x64,0x4c,0x62,0x79,0x49,0x41,0x66,0x32,0x45,0x71,
0x4e,0x44,0x34,0x41,0x58,0x79,0x39,0x66,0x4c,0x78,0x51,0x71,0x56,0x53,0x63,0x66,
0x52,0x68,0x38,0x53,0x52,0x6c,0x34,0x65,0x44,0x48,0x77,0x34,0x41,0x57,0x46,0x6b,
0x64,0x69,0x4a,0x75,0x43,0x43,0x41,0x34,0x54,0x33,0x4e,0x79,0x56,0x52,0x4a,0x43,
0x47,0x56,0x42,0x68,0x51,0x33,0x64,0x39,0x51,0x53,0x34,0x31,0x54,0x7a,0x30,0x78,
0x4b,0x46,0x68,0x6e,0x47,0x77,0x4e,0x52,0x49,0x44,0x49,0x63,0x43,0x47,0x34,0x33,
0x64,0x54,0x64,0x45,0x54,0x32,0x67,0x5a,0x42,0x32,0x51,0x55,0x4b,0x43,0x55,0x72,
0x61,0x54,0x55,0x59,0x4a,0x79,0x59,0x55,0x45,0x33,0x42,0x43,0x47,0x52,0x4a,0x31,
0x50,0x67,0x4a,0x64,0x66,0x42,0x4d,0x66,0x46,0x6c,0x4d,0x37,0x64,0x45,0x67,0x38,
0x58,0x6a,0x6c,0x73,0x48,0x42,0x78,0x30,0x4f,0x52,0x38,0x41,0x47,0x77,0x59,0x4b,
0x61,0x44,0x74,0x53,0x54,0x78,0x35,0x75,0x50,0x44,0x55,0x4d,0x4f,0x41,0x34,0x4c,
0x4f,0x78,0x70,0x32,0x49,0x79,0x6c,0x54,0x48,0x6c,0x39,0x42,0x44,0x45,0x73,0x4b,
0x5a,0x53,0x68,0x34,0x5a,0x30,0x68,0x5a,0x4a,0x6d,0x30,0x78,0x64,0x69,0x4e,0x77,
0x59,0x57,0x51,0x37,0x4f,0x48,0x6c,0x6d,0x64,0x46,0x4d,0x73,0x5a,0x47,0x52,0x55,
0x41,0x31,0x52,0x6c,0x52,0x45,0x77,0x59,0x54,0x30,0x67,0x67,0x54,0x33,0x49,0x51,
0x50,0x77,0x78,0x53,0x4c,0x51,0x4d,0x55,0x41,0x31,0x46,0x43,0x45,0x48,0x64,0x71,
0x4e,0x41,0x59,0x79,0x41,0x33,0x49,0x55,0x66,0x41,0x68,0x64,0x55,0x68,0x70,0x69,
0x66,0x44,0x34,0x77,0x66,0x6c,0x39,0x2f,0x56,0x41,0x39,0x45,0x53,0x56,0x31,0x65,
0x45,0x47,0x6f,0x47,0x4b,0x77,0x5a,0x54,0x45,0x44,0x6b,0x33,0x4d,0x6b,0x70,0x4f,
0x50,0x53,0x74,0x6c,0x4f,0x44,0x6b,0x48,0x63,0x6c,0x52,0x6b,0x54,0x56,0x5a,0x71,
0x41,0x79,0x4a,0x77,0x65,0x31,0x39,0x67,0x43,0x79,0x6f,0x4c,0x61,0x78,0x42,0x6b,
0x46,0x41,0x55,0x69,0x41,0x48,0x4e,0x41,0x49,0x31,0x74,0x52,0x48,0x79,0x73,0x61,
0x58,0x57,0x6c,0x36,0x52,0x67,0x78,0x66,0x4d,0x6b,0x74,0x4b,0x4b,0x46,0x4a,0x35,
0x57,0x78,0x4a,0x43,0x47,0x41,0x42,0x64,0x4a,0x7a,0x46,0x54,0x50,0x45,0x77,0x32,
0x54,0x6a,0x67,0x2f,0x63,0x67,0x4e,0x78,0x41,0x6c,0x73,0x32,0x57,0x58,0x39,0x31,
0x62,0x67,0x68,0x55,0x44,0x54,0x51,0x63,0x4e,0x46,0x64,0x64,0x61,0x55,0x67,0x41,
0x4f,0x77,0x55,0x48,0x62,0x69,0x64,0x6c,0x62,0x6b,0x41,0x39,0x4f,0x6b,0x39,0x79,
0x58,0x54,0x6b,0x57,0x44,0x32,0x4d,0x53,0x45,0x68,0x55,0x36,0x63,0x41,0x31,0x58,
0x47,0x41,0x31,0x65,0x50,0x53,0x4a,0x6f,0x61,0x48,0x78,0x74,0x54,0x77,0x78,0x37,
0x43,0x53,0x31,0x4b,0x63,0x79,0x42,0x48,0x42,0x31,0x64,0x31,0x58,0x56,0x4e,0x77,
0x4e,0x43,0x46,0x41,0x56,0x31,0x46,0x65,0x53,0x55,0x51,0x41,0x56,0x43,0x63,0x45,
0x61,0x48,0x35,0x5a,0x56,0x6c,0x68,0x30,0x46,0x44,0x77,0x57,0x4d,0x30,0x45,0x57,
0x53,0x79,0x39,0x4a,0x4e,0x77,0x70,0x55,0x43,0x41,0x67,0x66,0x4f,0x57,0x64,0x32,
0x4b,0x43,0x67,0x48,0x48,0x57,0x46,0x48,0x55,0x55,0x31,0x31,0x4a,0x6c,0x4a,0x48,
0x52,0x77,0x78,0x58,0x57,0x48,0x51,0x2b,0x59,0x6d,0x78,0x59,0x4f,0x6b,0x51,0x65,
0x46,0x69,0x34,0x68,0x48,0x48,0x4e,0x46,0x5a,0x33,0x52,0x50,0x4d,0x32,0x59,0x4f,
0x64,0x47,0x59,0x6d,0x48,0x79,0x34,0x34,0x52,0x45,0x42,0x2b,0x4b,0x6c,0x42,0x53,
0x58,0x6b,0x4d,0x42,0x65,0x6a,0x68,0x4a,0x50,0x46,0x56,0x4e,0x57,0x6b,0x51,0x49,
0x4a,0x6c,0x6c,0x4e,0x52,0x51,0x74,0x49,0x43,0x6a,0x4e,0x65,0x53,0x6b,0x31,0x31,
0x46,0x68,0x64,0x6a,0x52,0x67,0x45,0x71,0x56,0x58,0x73,0x50,0x41,0x6e,0x4e,0x71,
0x53,0x33,0x39,0x31,0x5a,0x54,0x78,0x4d,0x4d,0x7a,0x6c,0x73,0x64,0x41,0x56,0x67,
0x44,0x33,0x38,0x74,0x51,0x55,0x31,0x4e,0x52,0x6e,0x45,0x4a,0x62,0x30,0x39,0x67,
0x46,0x51,0x39,0x47,0x63,0x32,0x4e,0x4d,0x58,0x6e,0x51,0x77,0x44,0x53,0x68,0x44,
0x43,0x48,0x49,0x79,0x42,0x43,0x34,0x78,0x4b,0x53,0x64,0x45,0x62,0x52,0x4d,0x58,
0x53,0x41,0x39,0x4a,0x55,0x68,0x41,0x54,0x66,0x78,0x63,0x57,0x59,0x6e,0x6b,0x31,
0x65,0x44,0x34,0x42,0x66,0x43,0x34,0x50,0x64,0x6a,0x35,0x65,0x55,0x32,0x78,0x62,
0x58,0x33,0x77,0x5a,0x51,0x51,0x49,0x76,0x46,0x32,0x52,0x42,0x64,0x52,0x41,0x45,
0x52,0x33,0x77,0x39,0x53,0x31,0x49,0x41,0x45,0x46,0x31,0x52,0x54,0x6e,0x6f,0x6e,
0x4a,0x56,0x56,0x41,0x45,0x6a,0x56,0x67,0x42,0x52,0x73,0x30,0x4c,0x51,0x52,0x36,
0x61,0x6d,0x6b,0x43,0x65,0x51,0x4d,0x36,0x4c,0x77,0x59,0x4b,0x65,0x58,0x73,0x53,
0x58,0x58,0x78,0x53,0x4b,0x55,0x64,0x59,0x45,0x6e,0x4d,0x2f,0x4a,0x31,0x59,0x46,
0x44,0x45,0x67,0x79,0x57,0x47,0x74,0x58,0x58,0x41,0x4e,0x6b,0x56,0x68,0x46,0x53,
0x65,0x6a,0x41,0x32,0x4b,0x52,0x63,0x37,0x61,0x48,0x70,0x38,0x42,0x57,0x74,0x72,
0x45,0x32,0x6f,0x6b,0x58,0x47,0x68,0x43,0x47,0x44,0x49,0x44,0x63,0x32,0x34,0x45,
0x49,0x53,0x34,0x42,0x42,0x47,0x4e,0x39,0x52,0x45,0x45,0x53,0x4d,0x51,0x73,0x56,
0x48,0x33,0x41,0x41,0x4c,0x6d,0x59,0x55,0x50,0x48,0x38,0x72,0x41,0x42,0x38,0x4d,
0x4b,0x46,0x6b,0x4b,0x46,0x6b,0x6c,0x61,0x58,0x47,0x52,0x6c,0x53,0x78,0x45,0x70,
0x46,0x54,0x5a,0x61,0x5a,0x52,0x6c,0x50,0x59,0x43,0x4d,0x36,0x4f,0x68,0x4d,0x6c,
0x41,0x6e,0x68,0x4d,0x56,0x41,0x3d,0x3d
};
char *b64_test;
plan_tests(1);
b64_test = base64 (random, 1024);
ok(strcmp(b64_known, b64_test) == 0,
"Test matching a base64 encoded 1024 bytes random string");
return exit_status();
}

6
lib/tests/test_base64.t Executable file
View file

@ -0,0 +1,6 @@
#!/usr/bin/perl
use Test::More;
if (! -e "./test_base64") {
plan skip_all => "./test_base64 not compiled - please install tap library to test";
}
exec "./test_base64";

View file

@ -51,7 +51,7 @@ main (int argc, char **argv)
int c;
int result = UNSET;
plan_tests(47);
plan_tests(50);
diag ("Running plain echo command, set one");
@ -194,17 +194,32 @@ main (int argc, char **argv)
result = UNSET;
command = (char *)malloc(COMMAND_LINE);
strcpy(command, "/bin/grep pattern non-existant-file");
strcpy(command, "/bin/sh non-existant-file");
result = cmd_run (command, &chld_out, &chld_err, 0);
ok (chld_out.lines == 0,
"Grep returns no stdout when file is missing...");
"/bin/sh returns no stdout when file is missing...");
ok (chld_err.lines == 1,
"...but does give an error line");
ok (strstr(chld_err.line[0],"non-existant-file") != NULL, "And missing filename is in error message");
ok (result == 2, "Get return code 2 from grep");
ok (result == 127, "Get return code 127 from /bin/sh");
/* ensure everything is empty again */
memset (&chld_out, 0, sizeof (output));
memset (&chld_err, 0, sizeof (output));
result = UNSET;
command = (char *)malloc(COMMAND_LINE);
strcpy(command, "/bin/non-existant-command");
result = cmd_run (command, &chld_out, &chld_err, 0);
ok (chld_out.lines == 0,
"/bin/non-existant-command returns no stdout...");
ok (chld_err.lines == 0,
"...and no stderr output either");
ok (result == 3, "Get return code 3 = UNKNOWN when command does not exist");
return exit_status ();
}

View file

@ -1,4 +1,4 @@
/* Header file for utils_disk */
/* Header file for utils_tcp */
int np_expect_match(char* status, char** server_expect, int server_expect_count,
int all, int exact_match, int verbose);

View file

@ -1,5 +1,5 @@
Name: nagios-plugins
Version: 1.4.10
Version: 1.4.11
Release: 1
Summary: Host/service/network monitoring program plugins for Nagios

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# perlmods/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -140,10 +140,10 @@ ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = grep -E
EGREP = /bin/grep -E
EOVERFLOW =
EXEEXT =
EXTRAS = check_ldap check_ide_smart check_mysql check_mysql_query check_procs check_nagios check_dns check_by_ssh check_swap check_dig check_apt check_nt
EXTRAS = check_ldap check_ide_smart check_procs check_nagios check_dns check_by_ssh check_swap check_dig check_apt check_nt
EXTRAS_ROOT =
EXTRA_NETOBJS =
EXTRA_TEST =
@ -154,7 +154,8 @@ GETOPT_H =
GL_COND_LIBTOOL_FALSE =
GL_COND_LIBTOOL_TRUE = #
GMSGFMT = /usr/bin/msgfmt
GMSGFMT_015 = :
GMSGFMT_015 = /usr/bin/msgfmt
GREP = /bin/grep
HAVE_INTTYPES_H = 1
HAVE_LONG_LONG_INT = 1
HAVE_SIGNED_SIG_ATOMIC_T = 1
@ -194,22 +195,21 @@ LTLIBINTL =
LTLIBOBJS =
MAKEINFO = ${SHELL} /tmp/nagiosplug/build-aux/missing --run makeinfo
MATHLIBS = -lm
MKDIR_P = $(mkdir_p)
MSGFMT = /usr/bin/msgfmt
MSGFMT_015 = :
MSGFMT_015 = /usr/bin/msgfmt
MSGMERGE = /usr/bin/msgmerge
MYSQLCFLAGS = -I/usr/include/mysql -DBIG_JOINS=1
MYSQLINCLUDE = -I/usr/include/mysql
MYSQLLIBS = -L/usr/lib -lmysqlclient -lz -lcrypt -lnsl -lm
MYSQLCFLAGS =
MYSQLINCLUDE =
MYSQLLIBS =
NEED_SETGID = false
NETINET_IN_H =
OBJEXT = o
PACKAGE = nagios-plugins
PACKAGE_BUGREPORT =
PACKAGE_NAME = nagios-plugins
PACKAGE_STRING = nagios-plugins 1.4.10
PACKAGE_STRING = nagios-plugins 1.4.11
PACKAGE_TARNAME = nagios-plugins
PACKAGE_VERSION = 1.4.10
PACKAGE_VERSION = 1.4.11
PATH_SEPARATOR = :
PATH_TO_APTGET = /usr/bin/apt-get
PATH_TO_DIG = /usr/bin/dig
@ -237,7 +237,7 @@ PERL = /usr/bin/perl
PERLMODS_DIR =
PGINCLUDE =
PGLIBS =
PKG_ARCH =
PKG_ARCH = unknown
PLUGIN_TEST = t/check_cluster.t t/check_disk.t t/check_dns.t t/check_dummy.t t/check_fping.t t/check_ftp.t t/check_hpjd.t t/check_http.t t/check_imap.t t/check_jabber.t t/check_load.t t/check_mysql.t t/check_mysql_query.t t/check_nagios.t t/check_ntp.t t/check_ping.t t/check_pop.t t/check_procs.t t/check_smtp.t t/check_snmp.t t/check_swap.t t/check_tcp.t t/check_time.t t/check_udp.t t/check_users.t t/negate.t
POSUB = po
POW_LIB =
@ -246,8 +246,8 @@ PYTHON = /usr/bin/python
RADIUSLIBS =
RANLIB = ranlib
RELEASE = 1
REV_DATESTAMP = 2007.09.29.02.03
REV_TIMESTAMP = 20070929020318
REV_DATESTAMP = 2007.12.13.22.42
REV_TIMESTAMP = 20071213224256
SCRIPT_TEST = t/check_file_age.t t/check_rpc.t t/utils.t
SET_MAKE =
SH = /bin/sh
@ -264,20 +264,17 @@ SUPPORT = Send email to nagios-users@lists.sourceforge.net if you have questions
SYS_SOCKET_H =
UNISTD_H =
USE_NLS = yes
VERSION = 1.4.10
VERSION = 1.4.11
WARRANTY = The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n
WCHAR_H =
WCHAR_T_SUFFIX = l
WCHAR_T_SUFFIX =
WCTYPE_H =
WINT_T_SUFFIX = u
XGETTEXT = /usr/bin/xgettext
XGETTEXT_015 = :
ac_ct_AR = ar
XGETTEXT_015 = /usr/bin/xgettext
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 =
ac_ct_RANLIB = ranlib
ac_ct_STRIP = strip
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
@ -294,28 +291,34 @@ build_cpu = i686
build_os = linux-gnu
build_vendor = pc
check_tcp_ssl = check_simap check_spop check_jabber check_nntps check_ssmtp
datadir = ${prefix}/share
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
gl_LIBOBJS = asnprintf.o basename.o c-strtod.o cloexec.o creat-safer.o dirname.o dup-safer.o exitfail.o fd-safer.o fsusage.o mbchar.o mountlist.o open-safer.o pipe-safer.o printf-args.o printf-parse.o regex.o safe-read.o safe-write.o strcasecmp.o stripslash.o vasnprintf.o xmalloc.o
gl_LTLIBOBJS = asnprintf.lo basename.lo c-strtod.lo cloexec.lo creat-safer.lo dirname.lo dup-safer.lo exitfail.lo fd-safer.lo fsusage.lo mbchar.lo mountlist.lo open-safer.lo pipe-safer.lo printf-args.lo printf-parse.lo regex.lo safe-read.lo safe-write.lo strcasecmp.lo stripslash.lo vasnprintf.lo xmalloc.lo
gl_LIBOBJS = asnprintf.o basename.o c-strtod.o cloexec.o creat-safer.o dirname.o dup-safer.o exitfail.o fd-safer.o fsusage.o mbchar.o mountlist.o open-safer.o pipe-safer.o printf-args.o printf-parse.o safe-read.o safe-write.o strcasecmp.o stripslash.o vasnprintf.o xmalloc.o
gl_LTLIBOBJS = asnprintf.lo basename.lo c-strtod.lo cloexec.lo creat-safer.lo dirname.lo dup-safer.lo exitfail.lo fd-safer.lo fsusage.lo mbchar.lo mountlist.lo open-safer.lo pipe-safer.lo printf-args.lo printf-parse.lo safe-read.lo safe-write.lo strcasecmp.lo stripslash.lo vasnprintf.lo xmalloc.lo
host = i686-pc-linux-gnu
host_alias =
host_cpu = i686
host_os = linux-gnu
host_vendor = pc
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${prefix}/info
infodir = ${datarootdir}/info
install_sh = /tmp/nagiosplug/build-aux/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datadir}/locale
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${prefix}/man
mandir = ${datarootdir}/man
mkdir_p = mkdir -p --
np_mysql_config = /usr/bin/mysql_config
np_mysql_config =
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local/nagios
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
@ -490,7 +493,8 @@ all-local:
install-exec-local:
$(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -i .
test:
# Don't run test-debug differently here yet
test test-debug:
$(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -t .
clean-local:

View file

@ -6,7 +6,8 @@ all-local:
install-exec-local:
$(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -i .
test:
# Don't run test-debug differently here yet
test test-debug:
$(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -t .
clean-local:

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -155,6 +155,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -194,7 +195,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -272,12 +272,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -295,6 +292,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -303,6 +303,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -314,8 +315,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
@ -490,7 +493,8 @@ all-local:
install-exec-local:
$(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -i .
test:
# Don't run test-debug differently here yet
test test-debug:
$(top_srcdir)/tools/build_perl_modules -d $(perlmoduledir) -t .
clean-local:

Binary file not shown.

Binary file not shown.

View file

@ -1,12 +1,12 @@
PKG="NAGplugin"
NAME="nagios-plugins"
DESC="Nagios network monitoring plugins"
ARCH=""
VERSION="1.4.10,REV=2007.09.29.02.03"
ARCH="unknown"
VERSION="1.4.11,REV=2007.12.13.22.42"
CATEGORY="application"
VENDOR="Nagios Plugin Development Team"
EMAIL="nagiosplug-devel@lists.sourceforge.net"
PSTAMP="nag20070929020318"
PSTAMP="nag20071213224256"
BASEDIR="/"
CLASSES="none"

View file

@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
VPATH = $(top_srcdir) $(top_srcdir)/lib $(top_srcdir)/plugins $(top_srcdir)/plugins/t
VPATH = $(top_srcdir) $(top_srcdir)/lib $(top_srcdir)/plugins $(top_srcdir)/plugins/t $(srcdir)
INCLUDES = -I.. -I$(top_srcdir)/lib -I$(top_srcdir)/gl -I$(top_srcdir)/intl -I$(top_srcdir)/plugins @SSLINCLUDE@

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -14,8 +14,6 @@
@SET_MAKE@
SOURCES = check_dhcp.c check_icmp.c pst3.c
srcdir = @srcdir@
top_srcdir = @top_srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
@ -132,7 +130,7 @@ DIST_SOURCES = check_dhcp.c check_icmp.c pst3.c
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
VPATH = $(top_srcdir) $(top_srcdir)/lib $(top_srcdir)/plugins $(top_srcdir)/plugins/t
VPATH = $(top_srcdir) $(top_srcdir)/lib $(top_srcdir)/plugins $(top_srcdir)/plugins/t $(srcdir)
INSTALL = @INSTALL@
ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
@ -188,6 +186,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -227,7 +226,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -305,12 +303,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -328,6 +323,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -336,6 +334,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -347,8 +346,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@

View file

@ -6,7 +6,7 @@
* Copyright (c) 2001-2004 Ethan Galstad (nagios@nagios.org)
* Copyright (c) 2001-2006 Nagios Plugin Development Team
*
* Last Modified: $Date: 2007-07-26 18:32:37 +0100 (Thu, 26 Jul 2007) $
* Last Modified: $Date: 2007-10-25 21:43:04 +0100 (Thu, 25 Oct 2007) $
*
* Description:
*
@ -31,7 +31,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_dhcp.c 1766 2007-07-26 17:32:37Z hweiss $
* $Id: check_dhcp.c 1810 2007-10-25 20:43:04Z tonvoon $
*
* ------------------------------------------------------------------------
* Unicast mode was originally implemented by Heiti of Boras Kommun with
@ -42,7 +42,7 @@
*****************************************************************************/
const char *progname = "check_dhcp";
const char *revision = "$Revision: 1766 $";
const char *revision = "$Revision: 1810 $";
const char *copyright = "2001-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -269,9 +269,6 @@ int main(int argc, char **argv){
int dhcp_socket;
int result = STATE_UNKNOWN;
/* this plugin almost certainly needs root permissions. */
np_warn_if_not_root();
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
@ -280,6 +277,9 @@ int main(int argc, char **argv){
usage4 (_("Could not parse arguments"));
}
/* this plugin almost certainly needs root permissions. */
np_warn_if_not_root();
/* create socket for DHCP communications */
dhcp_socket=create_dhcp_socket();

View file

@ -7,7 +7,7 @@
*
* Original Author : Andreas Ericsson <ae@op5.se>
*
* Last Modified: $Date: 2007-09-15 12:55:12 +0100 (Sat, 15 Sep 2007) $
* Last Modified: $Date: 2007-12-11 05:57:35 +0000 (Tue, 11 Dec 2007) $
*
* Description:
*
@ -38,14 +38,14 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_icmp.c 1779 2007-09-15 11:55:12Z hweiss $
* $Id: check_icmp.c 1861 2007-12-11 05:57:35Z dermoth $
*
*****************************************************************************/
/* progname may change */
/* char *progname = "check_icmp"; */
char *progname;
const char *revision = "$Revision: 1779 $";
const char *revision = "$Revision: 1861 $";
const char *copyright = "2005-2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -371,6 +371,10 @@ main(int argc, char **argv)
int icmp_sockerrno, udp_sockerrno, tcp_sockerrno;
int result;
struct rta_host *host;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
/* print a helpful error message if geteuid != 0 */
np_warn_if_not_root();

View file

@ -22,6 +22,10 @@ test:
perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
perl -I $(top_builddir) -I $(top_srcdir) ../test.pl t/utils.t # utils.t is excluded from above, so manually ask to test
test-debug:
NPTEST_DEBUG=1 HARNESS_VERBOSE=1 perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
NPTEST_DEBUG=1 HARNESS_VERBOSE=1 perl -I $(top_builddir) -I $(top_srcdir) ../test.pl t/utils.t # utils.t is excluded from above, so manually ask to test
CLEANFILES=$(libexec_SCRIPTS)
.pl :

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -160,6 +160,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -199,7 +200,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -277,12 +277,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -300,6 +297,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -308,6 +308,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -319,8 +320,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
@ -610,6 +613,10 @@ test:
perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
perl -I $(top_builddir) -I $(top_srcdir) ../test.pl t/utils.t # utils.t is excluded from above, so manually ask to test
test-debug:
NPTEST_DEBUG=1 HARNESS_VERBOSE=1 perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
NPTEST_DEBUG=1 HARNESS_VERBOSE=1 perl -I $(top_builddir) -I $(top_srcdir) ../test.pl t/utils.t # utils.t is excluded from above, so manually ask to test
.pl :
$(AWK) -f ./subst $< > $@
chmod +x $@

View file

@ -14,8 +14,8 @@ MATHLIBS = @MATHLIBS@
#AM_CFLAGS = -Wall
libexec_PROGRAMS = check_apt check_cluster check_disk check_dummy check_http check_load \
check_mrtg check_mrtgtraf check_ntp check_nwstat check_overcr check_ping \
check_real check_smtp check_ssh check_tcp check_time \
check_mrtg check_mrtgtraf check_ntp check_ntp_peer check_nwstat check_overcr check_ping \
check_real check_smtp check_ssh check_tcp check_time check_ntp_time \
check_ups check_users negate \
urlize @EXTRAS@
@ -44,6 +44,9 @@ TESTS = @PLUGIN_TEST@
test:
perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
test-debug:
NPTEST_DEBUG=1 HARNESS_VERBOSE=1 perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
##############################################################################
# the actual targets
@ -70,6 +73,7 @@ check_mysql_query_LDADD = $(NETLIBS) $(MYSQLLIBS)
check_nagios_LDADD = $(BASEOBJS) runcmd.o
check_nt_LDADD = $(NETLIBS)
check_ntp_LDADD = $(NETLIBS) $(MATHLIBS)
check_ntp_peer_LDADD = $(NETLIBS) $(MATHLIBS)
check_nwstat_LDADD = $(NETLIBS)
check_overcr_LDADD = $(NETLIBS)
check_pgsql_LDADD = $(NETLIBS) $(PGLIBS)
@ -83,6 +87,7 @@ check_ssh_LDADD = $(NETLIBS)
check_swap_LDADD = $(MATHLIBS) $(BASEOBJS) popen.o
check_tcp_LDADD = $(SSLOBJS) $(NETLIBS) $(SSLLIBS)
check_time_LDADD = $(NETLIBS)
check_ntp_time_LDADD = $(NETLIBS) $(MATHLIBS)
check_ups_LDADD = $(NETLIBS)
check_users_LDADD = $(BASEOBJS) popen.o
check_by_ssh_LDADD = $(NETLIBS) runcmd.o
@ -110,6 +115,7 @@ check_mysql_query_DEPENDENCIES = check_mysql_query.c $(NETOBJS) $(DEPLIBS)
check_nagios_DEPENDENCIES = check_nagios.c $(BASEOBJS) runcmd.o $(DEPLIBS)
check_nt_DEPENDENCIES = check_nt.c $(NETOBJS) $(DEPLIBS)
check_ntp_DEPENDENCIES = check_ntp.c $(NETOBJS) $(DEPLIBS)
check_ntp_peer_DEPENDENCIES = check_ntp_peer.c $(NETOBJS) $(DEPLIBS)
check_nwstat_DEPENDENCIES = check_nwstat.c $(NETOBJS) $(DEPLIBS)
check_overcr_DEPENDENCIES = check_overcr.c $(NETOBJS) $(DEPLIBS)
check_pgsql_DEPENDENCIES = check_pgsql.c $(NETOBJS) $(DEPLIBS)
@ -123,6 +129,7 @@ check_ssh_DEPENDENCIES = check_ssh.c $(NETOBJS) $(DEPLIBS)
check_swap_DEPENDENCIES = check_swap.c $(BASEOBJS) popen.o $(DEPLIBS)
check_tcp_DEPENDENCIES = check_tcp.c $(SSLOBJS) $(NETOBJS) $(DEPLIBS)
check_time_DEPENDENCIES = check_time.c $(NETOBJS) $(DEPLIBS)
check_ntp_time_DEPENDENCIES = check_ntp_time.c $(NETOBJS) $(DEPLIBS)
check_ups_DEPENDENCIES = check_ups.c $(NETOBJS) $(DEPLIBS)
check_users_DEPENDENCIES = check_users.c $(BASEOBJS) popen.o $(DEPLIBS)
check_by_ssh_DEPENDENCIES = check_by_ssh.c $(NETOBJS) runcmd.o $(DEPLIBS)

View file

@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.9.5 from Makefile.am.
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@ -14,8 +14,6 @@
@SET_MAKE@
SOURCES = check_apt.c check_by_ssh.c check_cluster.c check_dig.c check_disk.c check_dns.c check_dummy.c check_fping.c check_game.c check_hpjd.c check_http.c check_ide_smart.c check_ldap.c check_load.c check_mrtg.c check_mrtgtraf.c check_mysql.c check_mysql_query.c check_nagios.c check_nt.c check_ntp.c check_nwstat.c check_overcr.c check_pgsql.c check_ping.c check_procs.c check_radius.c check_real.c check_smtp.c check_snmp.c check_ssh.c check_swap.c check_tcp.c check_time.c check_ups.c check_users.c negate.c urlize.c
srcdir = @srcdir@
top_srcdir = @top_srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
@ -40,11 +38,11 @@ libexec_PROGRAMS = check_apt$(EXEEXT) check_cluster$(EXEEXT) \
check_disk$(EXEEXT) check_dummy$(EXEEXT) check_http$(EXEEXT) \
check_load$(EXEEXT) check_mrtg$(EXEEXT) \
check_mrtgtraf$(EXEEXT) check_ntp$(EXEEXT) \
check_nwstat$(EXEEXT) check_overcr$(EXEEXT) \
check_ping$(EXEEXT) check_real$(EXEEXT) check_smtp$(EXEEXT) \
check_ssh$(EXEEXT) check_tcp$(EXEEXT) check_time$(EXEEXT) \
check_ups$(EXEEXT) check_users$(EXEEXT) negate$(EXEEXT) \
urlize$(EXEEXT) @EXTRAS@
check_ntp_peer$(EXEEXT) check_nwstat$(EXEEXT) \
check_overcr$(EXEEXT) check_ping$(EXEEXT) check_real$(EXEEXT) \
check_smtp$(EXEEXT) check_ssh$(EXEEXT) check_tcp$(EXEEXT) \
check_time$(EXEEXT) check_ntp_time$(EXEEXT) check_ups$(EXEEXT) \
check_users$(EXEEXT) negate$(EXEEXT) urlize$(EXEEXT) @EXTRAS@
EXTRA_PROGRAMS = check_mysql$(EXEEXT) check_radius$(EXEEXT) \
check_pgsql$(EXEEXT) check_snmp$(EXEEXT) check_hpjd$(EXEEXT) \
check_swap$(EXEEXT) check_fping$(EXEEXT) check_ldap$(EXEEXT) \
@ -167,6 +165,10 @@ check_nt_SOURCES = check_nt.c
check_nt_OBJECTS = check_nt.$(OBJEXT)
check_ntp_SOURCES = check_ntp.c
check_ntp_OBJECTS = check_ntp.$(OBJEXT)
check_ntp_peer_SOURCES = check_ntp_peer.c
check_ntp_peer_OBJECTS = check_ntp_peer.$(OBJEXT)
check_ntp_time_SOURCES = check_ntp_time.c
check_ntp_time_OBJECTS = check_ntp_time.$(OBJEXT)
check_nwstat_SOURCES = check_nwstat.c
check_nwstat_OBJECTS = check_nwstat.$(OBJEXT)
check_overcr_SOURCES = check_overcr.c
@ -217,19 +219,21 @@ SOURCES = check_apt.c check_by_ssh.c check_cluster.c check_dig.c \
check_game.c check_hpjd.c check_http.c check_ide_smart.c \
check_ldap.c check_load.c check_mrtg.c check_mrtgtraf.c \
check_mysql.c check_mysql_query.c check_nagios.c check_nt.c \
check_ntp.c check_nwstat.c check_overcr.c check_pgsql.c \
check_ping.c check_procs.c check_radius.c check_real.c \
check_smtp.c check_snmp.c check_ssh.c check_swap.c check_tcp.c \
check_time.c check_ups.c check_users.c negate.c urlize.c
check_ntp.c check_ntp_peer.c check_ntp_time.c check_nwstat.c \
check_overcr.c check_pgsql.c check_ping.c check_procs.c \
check_radius.c check_real.c check_smtp.c check_snmp.c \
check_ssh.c check_swap.c check_tcp.c check_time.c check_ups.c \
check_users.c negate.c urlize.c
DIST_SOURCES = check_apt.c check_by_ssh.c check_cluster.c check_dig.c \
check_disk.c check_dns.c check_dummy.c check_fping.c \
check_game.c check_hpjd.c check_http.c check_ide_smart.c \
check_ldap.c check_load.c check_mrtg.c check_mrtgtraf.c \
check_mysql.c check_mysql_query.c check_nagios.c check_nt.c \
check_ntp.c check_nwstat.c check_overcr.c check_pgsql.c \
check_ping.c check_procs.c check_radius.c check_real.c \
check_smtp.c check_snmp.c check_ssh.c check_swap.c check_tcp.c \
check_time.c check_ups.c check_users.c negate.c urlize.c
check_ntp.c check_ntp_peer.c check_ntp_time.c check_nwstat.c \
check_overcr.c check_pgsql.c check_ping.c check_procs.c \
check_radius.c check_real.c check_smtp.c check_snmp.c \
check_ssh.c check_swap.c check_tcp.c check_time.c check_ups.c \
check_users.c negate.c urlize.c
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@ -289,6 +293,7 @@ GL_COND_LIBTOOL_FALSE = @GL_COND_LIBTOOL_FALSE@
GL_COND_LIBTOOL_TRUE = @GL_COND_LIBTOOL_TRUE@
GMSGFMT = @GMSGFMT@
GMSGFMT_015 = @GMSGFMT_015@
GREP = @GREP@
HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
HAVE_SIGNED_SIG_ATOMIC_T = @HAVE_SIGNED_SIG_ATOMIC_T@
@ -328,7 +333,6 @@ LTLIBINTL = @LTLIBINTL@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MATHLIBS = @MATHLIBS@
MKDIR_P = @MKDIR_P@
MSGFMT = @MSGFMT@
MSGFMT_015 = @MSGFMT_015@
MSGMERGE = @MSGMERGE@
@ -406,12 +410,9 @@ WCTYPE_H = @WCTYPE_H@
WINT_T_SUFFIX = @WINT_T_SUFFIX@
XGETTEXT = @XGETTEXT@
XGETTEXT_015 = @XGETTEXT_015@
ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
@ -429,6 +430,9 @@ build_os = @build_os@
build_vendor = @build_vendor@
check_tcp_ssl = @check_tcp_ssl@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
gl_LIBOBJS = @gl_LIBOBJS@
gl_LTLIBOBJS = @gl_LTLIBOBJS@
@ -437,6 +441,7 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@ -448,8 +453,10 @@ mandir = @mandir@
mkdir_p = @mkdir_p@
np_mysql_config = @np_mysql_config@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
@ -495,6 +502,7 @@ check_mysql_query_LDADD = $(NETLIBS) $(MYSQLLIBS)
check_nagios_LDADD = $(BASEOBJS) runcmd.o
check_nt_LDADD = $(NETLIBS)
check_ntp_LDADD = $(NETLIBS) $(MATHLIBS)
check_ntp_peer_LDADD = $(NETLIBS) $(MATHLIBS)
check_nwstat_LDADD = $(NETLIBS)
check_overcr_LDADD = $(NETLIBS)
check_pgsql_LDADD = $(NETLIBS) $(PGLIBS)
@ -508,6 +516,7 @@ check_ssh_LDADD = $(NETLIBS)
check_swap_LDADD = $(MATHLIBS) $(BASEOBJS) popen.o
check_tcp_LDADD = $(SSLOBJS) $(NETLIBS) $(SSLLIBS)
check_time_LDADD = $(NETLIBS)
check_ntp_time_LDADD = $(NETLIBS) $(MATHLIBS)
check_ups_LDADD = $(NETLIBS)
check_users_LDADD = $(BASEOBJS) popen.o
check_by_ssh_LDADD = $(NETLIBS) runcmd.o
@ -534,6 +543,7 @@ check_mysql_query_DEPENDENCIES = check_mysql_query.c $(NETOBJS) $(DEPLIBS)
check_nagios_DEPENDENCIES = check_nagios.c $(BASEOBJS) runcmd.o $(DEPLIBS)
check_nt_DEPENDENCIES = check_nt.c $(NETOBJS) $(DEPLIBS)
check_ntp_DEPENDENCIES = check_ntp.c $(NETOBJS) $(DEPLIBS)
check_ntp_peer_DEPENDENCIES = check_ntp_peer.c $(NETOBJS) $(DEPLIBS)
check_nwstat_DEPENDENCIES = check_nwstat.c $(NETOBJS) $(DEPLIBS)
check_overcr_DEPENDENCIES = check_overcr.c $(NETOBJS) $(DEPLIBS)
check_pgsql_DEPENDENCIES = check_pgsql.c $(NETOBJS) $(DEPLIBS)
@ -547,6 +557,7 @@ check_ssh_DEPENDENCIES = check_ssh.c $(NETOBJS) $(DEPLIBS)
check_swap_DEPENDENCIES = check_swap.c $(BASEOBJS) popen.o $(DEPLIBS)
check_tcp_DEPENDENCIES = check_tcp.c $(SSLOBJS) $(NETOBJS) $(DEPLIBS)
check_time_DEPENDENCIES = check_time.c $(NETOBJS) $(DEPLIBS)
check_ntp_time_DEPENDENCIES = check_ntp_time.c $(NETOBJS) $(DEPLIBS)
check_ups_DEPENDENCIES = check_ups.c $(NETOBJS) $(DEPLIBS)
check_users_DEPENDENCIES = check_users.c $(BASEOBJS) popen.o $(DEPLIBS)
check_by_ssh_DEPENDENCIES = check_by_ssh.c $(NETOBJS) runcmd.o $(DEPLIBS)
@ -676,6 +687,12 @@ check_nt$(EXEEXT): $(check_nt_OBJECTS) $(check_nt_DEPENDENCIES)
check_ntp$(EXEEXT): $(check_ntp_OBJECTS) $(check_ntp_DEPENDENCIES)
@rm -f check_ntp$(EXEEXT)
$(LINK) $(check_ntp_LDFLAGS) $(check_ntp_OBJECTS) $(check_ntp_LDADD) $(LIBS)
check_ntp_peer$(EXEEXT): $(check_ntp_peer_OBJECTS) $(check_ntp_peer_DEPENDENCIES)
@rm -f check_ntp_peer$(EXEEXT)
$(LINK) $(check_ntp_peer_LDFLAGS) $(check_ntp_peer_OBJECTS) $(check_ntp_peer_LDADD) $(LIBS)
check_ntp_time$(EXEEXT): $(check_ntp_time_OBJECTS) $(check_ntp_time_DEPENDENCIES)
@rm -f check_ntp_time$(EXEEXT)
$(LINK) $(check_ntp_time_LDFLAGS) $(check_ntp_time_OBJECTS) $(check_ntp_time_LDADD) $(LIBS)
check_nwstat$(EXEEXT): $(check_nwstat_OBJECTS) $(check_nwstat_DEPENDENCIES)
@rm -f check_nwstat$(EXEEXT)
$(LINK) $(check_nwstat_LDFLAGS) $(check_nwstat_OBJECTS) $(check_nwstat_LDADD) $(LIBS)
@ -755,6 +772,8 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_nagios.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_nt.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_ntp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_ntp_peer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_ntp_time.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_nwstat.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_overcr.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_pgsql.Po@am__quote@
@ -1084,6 +1103,9 @@ uninstall-am: uninstall-info-am uninstall-libexecPROGRAMS \
test:
perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
test-debug:
NPTEST_DEBUG=1 HARNESS_VERBOSE=1 perl -I $(top_builddir) -I $(top_srcdir) ../test.pl
##############################################################################
# secondary dependencies

View file

@ -5,7 +5,7 @@
* Copyright (c) 2000-2004 Ethan Galstad (nagios@nagios.org)
* Copyright (c) 2007 nagios-plugins team
* License: GPL
* Last Modified: $Date: 2007-06-20 10:01:07 +0100 (Wed, 20 Jun 2007) $
* Last Modified: $Date: 2007-12-11 05:57:35 +0000 (Tue, 11 Dec 2007) $
*
* License Information:
*
@ -23,12 +23,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_cluster.c 1745 2007-06-20 09:01:07Z psychotrahe $
* $Id: check_cluster.c 1861 2007-12-11 05:57:35Z dermoth $
*
******************************************************************************/
const char *progname = "check_cluster";
const char *revision = "$Revision: 1745 $";
const char *revision = "$Revision: 1861 $";
const char *copyright = "2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -71,6 +71,10 @@ int main(int argc, char **argv){
int return_code=STATE_OK;
thresholds *thresholds = NULL;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
if(process_arguments(argc,argv)==ERROR)
usage(_("Could not parse arguments"));
@ -178,14 +182,10 @@ int process_arguments(int argc, char **argv){
break;
case 'w': /* warning threshold */
if (strspn (optarg, "0123456789:,") < strlen (optarg))
usage2 (_("Invalid warning threshold: %s\n"), optarg);
warn_threshold = strdup(optarg);
break;
case 'c': /* warning threshold */
if (strspn (optarg, "0123456789:,") < strlen (optarg))
usage2 (_("Invalid critical threshold: %s\n"), optarg);
crit_threshold = strdup(optarg);
break;
@ -248,7 +248,7 @@ print_help(void)
printf (" %s\n", _("non-OK state in order to return a WARNING status level"));
printf (" %s\n", "-c, --critical=THRESHOLD");
printf (" %s\n", _("Specifies the range of hosts or services in cluster that must be in a"));
printf (" %s\n", _(" non-OK state in order to return a CRITICAL status level"));
printf (" %s\n", _("non-OK state in order to return a CRITICAL status level"));
printf (" %s\n", "-d, --data=LIST");
printf (" %s\n", _("The status codes of the hosts or services in the cluster, separated by"));
printf (" %s\n", _("commas"));

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-09-23 13:29:36 +0100 (Sun, 23 Sep 2007) $
* Last Modified: $Date: 2007-12-08 16:34:05 +0000 (Sat, 08 Dec 2007) $
*
* Description:
*
@ -27,13 +27,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_disk.c 1793 2007-09-23 12:29:36Z psychotrahe $
* $Id: check_disk.c 1848 2007-12-08 16:34:05Z dermoth $
*
*****************************************************************************/
const char *progname = "check_disk";
const char *program_name = "check_disk"; /* Required for coreutils libs */
const char *revision = "$Revision: 1793 $";
const char *revision = "$Revision: 1848 $";
const char *copyright = "1999-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -307,10 +307,17 @@ main (int argc, char **argv)
if (fsp.fsu_blocks && strcmp ("none", me->me_mountdir)) {
total = fsp.fsu_blocks;
available = fsp.fsu_bavail;
/* 2007-12-08 - Workaround for Gnulib reporting insanely high available
* space on BSD (the actual value should be negative but fsp.fsu_bavail
* is unsigned) */
available = fsp.fsu_bavail > fsp.fsu_bfree ? 0 : fsp.fsu_bavail;
available_to_root = fsp.fsu_bfree;
used = total - available_to_root;
if (verbose >= 3)
printf ("For %s, total=%llu, available=%llu, available_to_root=%llu, used=%llu, fsp.fsu_files=%llu, fsp.fsu_ffree=%llu\n",
me->me_mountdir, total, available, available_to_root, used, fsp.fsu_files, fsp.fsu_ffree);
dused_pct = calculate_percent( used, used + available ); /* used + available can never be > uintmax */
dfree_pct = 100 - dused_pct;

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-07-21 17:29:01 +0100 (Sat, 21 Jul 2007) $
* Last Modified: $Date: 2007-12-11 05:57:35 +0000 (Tue, 11 Dec 2007) $
*
* Description:
*
@ -33,13 +33,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: check_http.c 1759 2007-07-21 16:29:01Z hweiss $
$Id: check_http.c 1861 2007-12-11 05:57:35Z dermoth $
******************************************************************************/
/* splint -I. -I../../plugins -I../../lib/ -I/usr/kerberos/include/ ../../plugins/check_http.c */
const char *progname = "check_http";
const char *revision = "$Revision: 1759 $";
const char *revision = "$Revision: 1861 $";
const char *copyright = "1999-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -48,6 +48,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "common.h"
#include "netutils.h"
#include "utils.h"
#include "base64.h"
#define INPUT_DELIMITER ";"
@ -125,7 +126,6 @@ char *http_content_type;
char buffer[MAX_INPUT_BUFFER];
int process_arguments (int, char **);
static char *base64 (const char *bin, size_t len);
int check_http (void);
void redir (char *pos, char *status_line);
int server_type_check(const char *type);
@ -140,6 +140,10 @@ main (int argc, char **argv)
{
int result = STATE_UNKNOWN;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
/* Set default URL. Must be malloced for subsequent realloc if --onredirect=follow */
server_url = strdup(HTTP_URL);
server_url_length = strlen(server_url);
@ -151,7 +155,7 @@ main (int argc, char **argv)
if (display_html == TRUE)
printf ("<A HREF=\"%s://%s:%d%s\" target=\"_blank\">",
use_ssl ? "https" : "http", server_address,
use_ssl ? "https" : "http", host_name ? host_name : server_address,
server_port, server_url);
/* initialize alarm signal handling, set socket timeout, start timer */
@ -455,49 +459,6 @@ process_arguments (int argc, char **argv)
/* written by lauri alanko */
static char *
base64 (const char *bin, size_t len)
{
char *buf = (char *) malloc ((len + 2) / 3 * 4 + 1);
size_t i = 0, j = 0;
char BASE64_END = '=';
char base64_table[64];
strncpy (base64_table, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 64);
while (j < len - 2) {
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)];
buf[i++] = base64_table[((bin[j + 1] & 15) << 2) | (bin[j + 2] >> 6)];
buf[i++] = base64_table[bin[j + 2] & 63];
j += 3;
}
switch (len - j) {
case 1:
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[(bin[j] & 3) << 4];
buf[i++] = BASE64_END;
buf[i++] = BASE64_END;
break;
case 2:
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)];
buf[i++] = base64_table[(bin[j + 1] & 15) << 2];
buf[i++] = BASE64_END;
break;
case 0:
break;
}
buf[i] = '\0';
return buf;
}
/* Returns 1 if we're done processing the document body; 0 to keep going */
static int
document_headers_done (char *full_page)
@ -982,14 +943,14 @@ check_http (void)
microsec = deltime (tv);
elapsed_time = (double)microsec / 1.0e6;
asprintf (&msg,
_("HTTP WARNING: %s - %.3f second response time %s|%s %s\n"),
_(" - %s - %.3f second response time %s|%s %s\n"),
status_line, elapsed_time,
(display_html ? "</A>" : ""),
perfd_time (elapsed_time), perfd_size (pagesize));
if (check_critical_time == TRUE && elapsed_time > critical_time)
die (STATE_CRITICAL, "%s", msg);
die (STATE_CRITICAL, "HTTP %s: %s", _("CRITICAL"), msg);
if (check_warning_time == TRUE && elapsed_time > warning_time)
die (STATE_WARNING, "%s", msg);
die (STATE_WARNING, "HTTP %s: %s", _("WARNING"), msg);
/* Page and Header content checks go here */
/* these checks should be last */
@ -1062,7 +1023,6 @@ check_http (void)
/* per RFC 2396 */
#define HDR_LOCATION "%*[Ll]%*[Oo]%*[Cc]%*[Aa]%*[Tt]%*[Ii]%*[Oo]%*[Nn]: "
#define URI_HTTP "%5[HTPShtps]"
#define URI_HOST "%255[-.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]"
#define URI_PORT "%6d" /* MAX_PORT's width is 5 chars, 6 to detect overflow */
@ -1092,7 +1052,7 @@ redir (char *pos, char *status_line)
die (STATE_UNKNOWN, _("HTTP UNKNOWN - Could not allocate url\n"));
while (pos) {
sscanf (pos, "%[Ll]%*[Oo]%*[Cc]%*[Aa]%*[Tt]%*[Ii]%*[Oo]%*[Nn]:%n", xx, &i);
sscanf (pos, "%1[Ll]%*1[Oo]%*1[Cc]%*1[Aa]%*1[Tt]%*1[Ii]%*1[Oo]%*1[Nn]:%n", xx, &i);
if (i == 0) {
pos += (size_t) strcspn (pos, "\r\n");
pos += (size_t) strspn (pos, "\r\n");
@ -1155,7 +1115,7 @@ redir (char *pos, char *status_line)
}
i = server_port;
strcpy (type, server_type);
strcpy (addr, server_address);
strcpy (addr, host_name ? host_name : server_address);
}
else {
@ -1204,8 +1164,8 @@ redir (char *pos, char *status_line)
display_html ? "</A>" : "");
if (verbose)
printf (_("Redirection to %s://%s:%d%s\n"), server_type, server_address,
server_port, server_url);
printf (_("Redirection to %s://%s:%d%s\n"), server_type,
host_name ? host_name : server_address, server_port, server_url);
check_http ();
}

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-04-25 23:10:13 +0100 (Wed, 25 Apr 2007) $
* Last Modified: $Date: 2007-12-10 00:19:27 +0000 (Mon, 10 Dec 2007) $
*
* Description:
*
@ -30,12 +30,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: check_load.c 1700 2007-04-25 22:10:13Z tonvoon $
$Id: check_load.c 1851 2007-12-10 00:19:27Z psychotrahe $
******************************************************************************/
const char *progname = "check_load";
const char *revision = "$Revision: 1700 $";
const char *revision = "$Revision: 1851 $";
const char *copyright = "1999-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -77,6 +77,7 @@ static void
get_threshold(char *arg, double *th)
{
size_t i, n;
int valid = 0;
char *str = arg, *p;
n = strlen(arg);
@ -84,12 +85,13 @@ get_threshold(char *arg, double *th)
th[i] = strtod(str, &p);
if(p == str) break;
valid = 1;
str = p + 1;
if(n <= (size_t)(str - arg)) break;
}
/* empty argument or non-floatish, so warn about it and die */
if(!i) usage (_("Warning threshold must be float or float triplet!\n"));
if(!i && !valid) usage (_("Warning threshold must be float or float triplet!\n"));
if(i != 2) {
/* one or more numbers were given, so fill array with last

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2007 nagios-plugins team
*
* Last Modified: $Date: 2007-03-02 01:38:04 +0000 (Fri, 02 Mar 2007) $
* Last Modified: $Date: 2007-12-11 05:57:35 +0000 (Tue, 11 Dec 2007) $
*
* Description:
*
@ -31,7 +31,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: check_mrtgtraf.c 1624 2007-03-02 01:38:04Z egalstad $
$Id: check_mrtgtraf.c 1861 2007-12-11 05:57:35Z dermoth $
******************************************************************************/
@ -39,7 +39,7 @@
#include "utils.h"
const char *progname = "check_mrtgtraf";
const char *revision = "$Revision: 1624 $";
const char *revision = "$Revision: 1861 $";
const char *copyright = "1999-2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -79,6 +79,10 @@ main (int argc, char **argv)
char incoming_speed_rating[8];
char outgoing_speed_rating[8];
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
if (process_arguments (argc, argv) == ERROR)
usage4 (_("Could not parse arguments"));

View file

@ -7,7 +7,7 @@
* Copyright (c) 1999-2006 nagios-plugins team
* Copyright (c) 2000 Karl DeBisschop (kdebisschop@users.sourceforge.net)
*
* Last Modified: $Date: 2007-03-29 18:58:28 +0100 (Thu, 29 Mar 2007) $
* Last Modified: $Date: 2007-12-10 07:52:00 +0000 (Mon, 10 Dec 2007) $
*
* Description:
*
@ -32,12 +32,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_mysql.c 1655 2007-03-29 17:58:28Z hweiss $
* $Id: check_mysql.c 1859 2007-12-10 07:52:00Z dermoth $
*
******************************************************************************/
const char *progname = "check_mysql";
const char *revision = "$Revision: 1655 $";
const char *revision = "$Revision: 1859 $";
const char *copyright = "1999-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -391,7 +391,7 @@ print_help (void)
printf (" %s\n", "-S, --check-slave");
printf (" %s\n", _("Check if the slave thread is running properly."));
printf (" %s\n", "-w, --warning");
printf (" %s\n", _("Exit with WARNING status if slave server is more then INTEGER seconds behind master"));
printf (" %s\n", _("Exit with WARNING status if slave server is more than INTEGER seconds behind master"));
printf (" %s\n", "-c, --critical");
printf (" %s\n", _("Exit with CRITICAL status if slave server is more then INTEGER seconds behind master"));
printf (" %s\n", _("There are no required arguments. By default, the local database with"));

View file

@ -4,9 +4,9 @@
*
* License: GPL
* Copyright (c) 2006 sean finney <seanius@seanius.net>
* Copyright (c) 2006 nagios-plugins team
* Copyright (c) 2007 nagios-plugins team
*
* Last Modified: $Date: 2007-09-26 05:16:21 +0100 (Wed, 26 Sep 2007) $
* Last Modified: $Date: 2007-12-11 05:57:35 +0000 (Tue, 11 Dec 2007) $
*
* Description:
*
@ -32,13 +32,13 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: check_ntp.c 1799 2007-09-26 04:16:21Z dermoth $
$Id: check_ntp.c 1861 2007-12-11 05:57:35Z dermoth $
*****************************************************************************/
const char *progname = "check_ntp";
const char *revision = "$Revision: 1799 $";
const char *copyright = "2006";
const char *revision = "$Revision: 1861 $";
const char *copyright = "2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "common.h"
@ -47,13 +47,16 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
static char *server_address=NULL;
static int verbose=0;
static double owarn=60;
static double ocrit=120;
static short do_offset=0;
static char *owarn="60";
static char *ocrit="120";
static short do_jitter=0;
static double jwarn=5000;
static double jcrit=10000;
static char *jwarn="5000";
static char *jcrit="10000";
int process_arguments (int, char **);
thresholds *offset_thresholds = NULL;
thresholds *jitter_thresholds = NULL;
void print_help (void);
void print_usage (void);
@ -473,7 +476,7 @@ double offset_request(const char *host, int *status){
/* now, pick the best server from the list */
best_index=best_offset_server(servers, num_hosts);
if(best_index < 0){
*status=STATE_CRITICAL;
*status=STATE_UNKNOWN;
} else {
/* finally, calculate the average offset */
for(i=0; i<servers[best_index].num_responses;i++){
@ -575,7 +578,7 @@ double jitter_request(const char *host, int *status){
if(verbose) printf("%d candiate peers available\n", num_candidates);
if(verbose && syncsource_found) printf("synchronization source found\n");
if(! syncsource_found){
*status = STATE_WARNING;
*status = STATE_UNKNOWN;
if(verbose) printf("warning: no synchronization source found\n");
}
@ -625,7 +628,7 @@ double jitter_request(const char *host, int *status){
}
if(startofvalue == NULL || startofvalue==nptr){
printf("warning: unable to read server jitter response.\n");
*status = STATE_WARNING;
*status = STATE_UNKNOWN;
} else {
if(verbose) printf("%g\n", jitter);
num_valid++;
@ -686,18 +689,20 @@ int process_arguments(int argc, char **argv){
verbose++;
break;
case 'w':
owarn = atof(optarg);
do_offset=1;
owarn = optarg;
break;
case 'c':
ocrit = atof(optarg);
do_offset=1;
ocrit = optarg;
break;
case 'j':
do_jitter=1;
jwarn = atof(optarg);
jwarn = optarg;
break;
case 'k':
do_jitter=1;
jcrit = atof(optarg);
jcrit = optarg;
break;
case 'H':
if(is_host(optarg) == FALSE)
@ -724,14 +729,6 @@ int process_arguments(int argc, char **argv){
}
}
if (ocrit < owarn){
usage4(_("Critical offset should be larger than warning offset"));
}
if (jcrit < jwarn){
usage4(_("Critical jitter should be larger than warning jitter"));
}
if(server_address == NULL){
usage4(_("Hostname was not supplied"));
}
@ -742,16 +739,16 @@ int process_arguments(int argc, char **argv){
char *perfd_offset (double offset)
{
return fperfdata ("offset", offset, "s",
TRUE, owarn,
TRUE, ocrit,
TRUE, offset_thresholds->warning->end,
TRUE, offset_thresholds->critical->end,
FALSE, 0, FALSE, 0);
}
char *perfd_jitter (double jitter)
{
return fperfdata ("jitter", jitter, "s",
do_jitter, jwarn,
do_jitter, jcrit,
do_jitter, jitter_thresholds->warning->end,
do_jitter, jitter_thresholds->critical->end,
TRUE, 0, FALSE, 0);
}
@ -760,11 +757,18 @@ int main(int argc, char *argv[]){
double offset=0, jitter=0;
char *result_line, *perfdata_line;
result=offset_result=jitter_result=STATE_UNKNOWN;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
result = offset_result = jitter_result = STATE_OK;
if (process_arguments (argc, argv) == ERROR)
usage4 (_("Could not parse arguments"));
set_thresholds(&offset_thresholds, owarn, ocrit);
set_thresholds(&jitter_thresholds, jwarn, jcrit);
/* initialize alarm signal handling */
signal (SIGALRM, socket_timeout_alarm_handler);
@ -772,14 +776,13 @@ int main(int argc, char *argv[]){
alarm (socket_timeout);
offset = offset_request(server_address, &offset_result);
if(fabs(offset) > ocrit){
/* check_ntp used to always return CRITICAL if offset_result == STATE_UNKNOWN.
* Now we'll only do that is the offset thresholds were set */
if (do_offset && offset_result == STATE_UNKNOWN) {
result = STATE_CRITICAL;
} else if(fabs(offset) > owarn) {
result = STATE_WARNING;
} else {
result = STATE_OK;
result = get_status(fabs(offset), offset_thresholds);
}
result=max_state(result, offset_result);
/* If not told to check the jitter, we don't even send packets.
* jitter is checked using NTP control packets, which not all
@ -788,40 +791,33 @@ int main(int argc, char *argv[]){
*/
if(do_jitter){
jitter=jitter_request(server_address, &jitter_result);
if(jitter > jcrit){
result = max_state(result, STATE_CRITICAL);
} else if(jitter > jwarn) {
result = max_state(result, STATE_WARNING);
} else if(jitter == -1.0 && result == STATE_OK){
/* -1 indicates that we couldn't calculate the jitter
* Only overrides STATE_OK from the offset */
result = max_state_alt(result, get_status(jitter, jitter_thresholds));
/* -1 indicates that we couldn't calculate the jitter
* Only overrides STATE_OK from the offset */
if(jitter == -1.0 && result == STATE_OK)
result = STATE_UNKNOWN;
}
}
result=max_state(result, jitter_result);
result = max_state_alt(result, jitter_result);
switch (result) {
case STATE_CRITICAL :
asprintf(&result_line, "NTP CRITICAL:");
asprintf(&result_line, _("NTP CRITICAL:"));
break;
case STATE_WARNING :
asprintf(&result_line, "NTP WARNING:");
asprintf(&result_line, _("NTP WARNING:"));
break;
case STATE_OK :
asprintf(&result_line, "NTP OK:");
asprintf(&result_line, _("NTP OK:"));
break;
default :
asprintf(&result_line, "NTP UNKNOWN:");
asprintf(&result_line, _("NTP UNKNOWN:"));
break;
}
if(offset_result==STATE_CRITICAL){
if(offset_result == STATE_UNKNOWN){
asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
asprintf(&perfdata_line, "");
} else {
if(offset_result==STATE_WARNING){
asprintf(&result_line, "%s %s", result_line, _("Unable to fully sample sync server"));
}
asprintf(&result_line, "%s Offset %.10g secs", result_line, offset);
asprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
asprintf(&perfdata_line, "%s", perfd_offset(offset));
}
if (do_jitter) {
@ -849,16 +845,31 @@ void print_help(void){
print_usage();
printf (_(UT_HELP_VRSN));
printf (_(UT_HOST_PORT), 'p', "123");
printf (" %s\n", "-w, --warning=DOUBLE");
printf (" %s\n", "-w, --warning=THRESHOLD");
printf (" %s\n", _("Offset to result in warning status (seconds)"));
printf (" %s\n", "-c, --critical=DOUBLE");
printf (" %s\n", "-c, --critical=THRESHOLD");
printf (" %s\n", _("Offset to result in critical status (seconds)"));
printf (" %s\n", "-j, --warning=DOUBLE");
printf (" %s\n", _("Warning value for jitter"));
printf (" %s\n", "-k, --critical=DOUBLE");
printf (" %s\n", _("Critical value for jitter"));
printf (" %s\n", "-j, --warning=THRESHOLD");
printf (" %s\n", _("Warning threshold for jitter"));
printf (" %s\n", "-k, --critical=THRESHOLD");
printf (" %s\n", _("Critical threshold for jitter"));
printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
printf (_(UT_VERBOSE));
printf("\n");
printf("%s\n", _("Notes:"));
printf(" %s\n", _("See:"));
printf(" %s\n", ("http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT"));
printf(" %s\n", _("for THRESHOLD format and examples."));
printf("\n");
printf("%s\n", _("Examples:"));
printf(" %s\n", _("Normal offset check:"));
printf(" %s\n", ("./check_ntp -H ntpserv -w 0.5 -c 1"));
printf(" %s\n", _("Check jitter too, avoiding critical notifications if jitter isn't available"));
printf(" %s\n", _("(See Notes above for more details on thresholds formats):"));
printf(" %s\n", ("./check_ntp -H ntpserv -w 0.5 -c 1 -j -1:100 -k -1:200"));
printf (_(UT_SUPPORT));
}
@ -866,5 +877,5 @@ void
print_usage(void)
{
printf (_("Usage:"));
printf("%s -H <host> [-w <warn>] [-c <crit>] [-j <warn>] [-k <crit>] [-v verbose]\n", progname);
printf(" %s -H <host> [-w <warn>] [-c <crit>] [-j <warn>] [-k <crit>] [-v verbose]\n", progname);
}

686
plugins/check_ntp_peer.c Normal file
View file

@ -0,0 +1,686 @@
/******************************************************************************
*
* Nagios check_ntp_peer plugin
*
* License: GPL
* Copyright (c) 2006 sean finney <seanius@seanius.net>
* Copyright (c) 2007 nagios-plugins team
*
* Last Modified: $Date: 2007-12-11 13:31:22 +0000 (Tue, 11 Dec 2007) $
*
* Description:
*
* This file contains the check_ntp_peer plugin
*
* This plugin checks an NTP server independent of any commandline
* programs or external libraries.
*
* Use this plugin to check the health of an NTP server. It supports
* checking the offset with the sync peer, the jitter and stratum. This
* plugin will not check the clock offset between the local host and NTP
* server; please use check_ntp_time for that purpose.
*
*
* 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.
$Id: check_ntp_peer.c 1864 2007-12-11 13:31:22Z dermoth $
*****************************************************************************/
const char *progname = "check_ntp_peer";
const char *revision = "$Revision: 1864 $";
const char *copyright = "2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "common.h"
#include "netutils.h"
#include "utils.h"
static char *server_address=NULL;
static int verbose=0;
static int quiet=0;
static short do_offset=0;
static char *owarn="60";
static char *ocrit="120";
static short do_stratum=0;
static char *swarn="-1:16";
static char *scrit="-1:16";
static short do_jitter=0;
static char *jwarn="-1:5000";
static char *jcrit="-1:10000";
static int syncsource_found=0;
int process_arguments (int, char **);
thresholds *offset_thresholds = NULL;
thresholds *jitter_thresholds = NULL;
thresholds *stratum_thresholds = NULL;
void print_help (void);
void print_usage (void);
/* max size of control message data */
#define MAX_CM_SIZE 468
/* this structure holds everything in an ntp control message as per rfc1305 */
typedef struct {
uint8_t flags; /* byte with leapindicator,vers,mode. see macros */
uint8_t op; /* R,E,M bits and Opcode */
uint16_t seq; /* Packet sequence */
uint16_t status; /* Clock status */
uint16_t assoc; /* Association */
uint16_t offset; /* Similar to TCP sequence # */
uint16_t count; /* # bytes of data */
char data[MAX_CM_SIZE]; /* ASCII data of the request */
/* NB: not necessarily NULL terminated! */
} ntp_control_message;
/* this is an association/status-word pair found in control packet reponses */
typedef struct {
uint16_t assoc;
uint16_t status;
} ntp_assoc_status_pair;
/* bits 1,2 are the leap indicator */
#define LI_MASK 0xc0
#define LI(x) ((x&LI_MASK)>>6)
#define LI_SET(x,y) do{ x |= ((y<<6)&LI_MASK); }while(0)
/* and these are the values of the leap indicator */
#define LI_NOWARNING 0x00
#define LI_EXTRASEC 0x01
#define LI_MISSINGSEC 0x02
#define LI_ALARM 0x03
/* bits 3,4,5 are the ntp version */
#define VN_MASK 0x38
#define VN(x) ((x&VN_MASK)>>3)
#define VN_SET(x,y) do{ x |= ((y<<3)&VN_MASK); }while(0)
#define VN_RESERVED 0x02
/* bits 6,7,8 are the ntp mode */
#define MODE_MASK 0x07
#define MODE(x) (x&MODE_MASK)
#define MODE_SET(x,y) do{ x |= (y&MODE_MASK); }while(0)
/* here are some values */
#define MODE_CLIENT 0x03
#define MODE_CONTROLMSG 0x06
/* In control message, bits 8-10 are R,E,M bits */
#define REM_MASK 0xe0
#define REM_RESP 0x80
#define REM_ERROR 0x40
#define REM_MORE 0x20
/* In control message, bits 11 - 15 are opcode */
#define OP_MASK 0x1f
#define OP_SET(x,y) do{ x |= (y&OP_MASK); }while(0)
#define OP_READSTAT 0x01
#define OP_READVAR 0x02
/* In peer status bytes, bits 6,7,8 determine clock selection status */
#define PEER_SEL(x) ((ntohs(x)>>8)&0x07)
#define PEER_INCLUDED 0x04
#define PEER_SYNCSOURCE 0x06
/* NTP control message header is 12 bytes, plus any data in the data
* field, plus null padding to the nearest 32-bit boundary per rfc.
*/
#define SIZEOF_NTPCM(m) (12+ntohs(m.count)+((m.count)?4-(ntohs(m.count)%4):0))
/* finally, a little helper or two for debugging: */
#define DBG(x) do{if(verbose>1){ x; }}while(0);
#define PRINTSOCKADDR(x) \
do{ \
printf("%u.%u.%u.%u", (x>>24)&0xff, (x>>16)&0xff, (x>>8)&0xff, x&0xff);\
}while(0);
void print_ntp_control_message(const ntp_control_message *p){
int i=0, numpeers=0;
const ntp_assoc_status_pair *peer=NULL;
printf("control packet contents:\n");
printf("\tflags: 0x%.2x , 0x%.2x\n", p->flags, p->op);
printf("\t li=%d (0x%.2x)\n", LI(p->flags), p->flags&LI_MASK);
printf("\t vn=%d (0x%.2x)\n", VN(p->flags), p->flags&VN_MASK);
printf("\t mode=%d (0x%.2x)\n", MODE(p->flags), p->flags&MODE_MASK);
printf("\t response=%d (0x%.2x)\n", (p->op&REM_RESP)>0, p->op&REM_RESP);
printf("\t more=%d (0x%.2x)\n", (p->op&REM_MORE)>0, p->op&REM_MORE);
printf("\t error=%d (0x%.2x)\n", (p->op&REM_ERROR)>0, p->op&REM_ERROR);
printf("\t op=%d (0x%.2x)\n", p->op&OP_MASK, p->op&OP_MASK);
printf("\tsequence: %d (0x%.2x)\n", ntohs(p->seq), ntohs(p->seq));
printf("\tstatus: %d (0x%.2x)\n", ntohs(p->status), ntohs(p->status));
printf("\tassoc: %d (0x%.2x)\n", ntohs(p->assoc), ntohs(p->assoc));
printf("\toffset: %d (0x%.2x)\n", ntohs(p->offset), ntohs(p->offset));
printf("\tcount: %d (0x%.2x)\n", ntohs(p->count), ntohs(p->count));
numpeers=ntohs(p->count)/(sizeof(ntp_assoc_status_pair));
if(p->op&REM_RESP && p->op&OP_READSTAT){
peer=(ntp_assoc_status_pair*)p->data;
for(i=0;i<numpeers;i++){
printf("\tpeer id %.2x status %.2x",
ntohs(peer[i].assoc), ntohs(peer[i].status));
if (PEER_SEL(peer[i].status) >= PEER_INCLUDED){
if(PEER_SEL(peer[i].status) >= PEER_SYNCSOURCE){
printf(" <-- current sync source");
} else {
printf(" <-- current sync candidate");
}
}
printf("\n");
}
}
}
char *extract_value(const char *varlist, const char *name){
char *tmpvarlist=NULL, *tmpkey=NULL, *value=NULL;
int last=0;
/* The following code require a non-empty varlist */
if(strlen(varlist) == 0)
return NULL;
tmpvarlist = strdup(varlist);
tmpkey = strtok(tmpvarlist, "=");
do {
if(strstr(tmpkey, name) != NULL) {
value = strtok(NULL, ",");
last = 1;
}
} while (last == 0 && (tmpkey = strtok(NULL, "=")));
return value;
}
void
setup_control_request(ntp_control_message *p, uint8_t opcode, uint16_t seq){
memset(p, 0, sizeof(ntp_control_message));
LI_SET(p->flags, LI_NOWARNING);
VN_SET(p->flags, VN_RESERVED);
MODE_SET(p->flags, MODE_CONTROLMSG);
OP_SET(p->op, opcode);
p->seq = htons(seq);
/* Remaining fields are zero for requests */
}
/* This function does all the actual work; roughly here's what it does
* beside setting the offest, jitter and stratum passed as argument:
* - offset can be negative, so if it cannot get the offset, offset_result
* is set to UNKNOWN, otherwise OK.
* - jitter and stratum are set to -1 if they cannot be retrieved so any
* positive value means a success retrieving the value.
* - status is set to WARNING if there's no sync.peer (otherwise OK) and is
* the return value of the function.
* status is pretty much useless as syncsource_found is a global variable
* used later in main to check is the server was synchronized. It works
* so I left it alone */
int ntp_request(const char *host, double *offset, int *offset_result, double *jitter, int *stratum){
int conn=-1, i, npeers=0, num_candidates=0;
double tmp_offset = 0;
int min_peer_sel=PEER_INCLUDED;
int peers_size=0, peer_offset=0;
int status;
ntp_assoc_status_pair *peers=NULL;
ntp_control_message req;
const char *getvar = "stratum,offset,jitter";
char *data, *value, *nptr;
void *tmp;
status = STATE_OK;
*offset_result = STATE_UNKNOWN;
*jitter = *stratum = -1;
/* Long-winded explanation:
* Getting the sync peer offset, jitter and stratum requires a number of
* steps:
* 1) Send a READSTAT request.
* 2) Interpret the READSTAT reply
* a) The data section contains a list of peer identifiers (16 bits)
* and associated status words (16 bits)
* b) We want the value of 0x06 in the SEL (peer selection) value,
* which means "current synchronizatin source". If that's missing,
* we take anything better than 0x04 (see the rfc for details) but
* set a minimum of warning.
* 3) Send a READVAR request for information on each peer identified
* in 2b greater than the minimum selection value.
* 4) Extract the offset, jitter and stratum value from the data[]
* (it's ASCII)
*/
my_udp_connect(server_address, 123, &conn);
/* keep sending requests until the server stops setting the
* REM_MORE bit, though usually this is only 1 packet. */
do{
setup_control_request(&req, OP_READSTAT, 1);
DBG(printf("sending READSTAT request"));
write(conn, &req, SIZEOF_NTPCM(req));
DBG(print_ntp_control_message(&req));
/* Attempt to read the largest size packet possible */
req.count=htons(MAX_CM_SIZE);
DBG(printf("recieving READSTAT response"))
if(read(conn, &req, SIZEOF_NTPCM(req)) == -1)
die(STATE_CRITICAL, "NTP CRITICAL: No response from NTP server\n");
DBG(print_ntp_control_message(&req));
/* Each peer identifier is 4 bytes in the data section, which
* we represent as a ntp_assoc_status_pair datatype.
*/
peers_size+=ntohs(req.count);
if((tmp=realloc(peers, peers_size)) == NULL)
free(peers), die(STATE_UNKNOWN, "can not (re)allocate 'peers' buffer\n");
peers=tmp;
memcpy((void*)((ptrdiff_t)peers+peer_offset), (void*)req.data, ntohs(req.count));
npeers=peers_size/sizeof(ntp_assoc_status_pair);
peer_offset+=ntohs(req.count);
} while(req.op&REM_MORE);
/* first, let's find out if we have a sync source, or if there are
* at least some candidates. In the latter case we'll issue
* a warning but go ahead with the check on them. */
for (i = 0; i < npeers; i++){
if (PEER_SEL(peers[i].status) >= PEER_INCLUDED){
num_candidates++;
if(PEER_SEL(peers[i].status) >= PEER_SYNCSOURCE){
syncsource_found=1;
min_peer_sel=PEER_SYNCSOURCE;
}
}
}
if(verbose) printf("%d candiate peers available\n", num_candidates);
if(verbose && syncsource_found) printf("synchronization source found\n");
if(! syncsource_found){
status = STATE_WARNING;
if(verbose) printf("warning: no synchronization source found\n");
}
for (i = 0; i < npeers; i++){
/* Only query this server if it is the current sync source */
/* If there's no sync.peer, query all candidates and use the best one */
if (PEER_SEL(peers[i].status) >= min_peer_sel){
if(verbose) printf("Getting offset, jitter and stratum for peer %.2x\n", ntohs(peers[i].assoc));
asprintf(&data, "");
do{
setup_control_request(&req, OP_READVAR, 2);
req.assoc = peers[i].assoc;
/* Putting the wanted variable names in the request
* cause the server to provide _only_ the requested values.
* thus reducing net traffic, guaranteeing us only a single
* datagram in reply, and making intepretation much simpler
*/
/* Older servers doesn't know what jitter is, so if we get an
* error on the first pass we redo it with "dispersion" */
strncpy(req.data, getvar, MAX_CM_SIZE-1);
req.count = htons(strlen(getvar));
DBG(printf("sending READVAR request...\n"));
write(conn, &req, SIZEOF_NTPCM(req));
DBG(print_ntp_control_message(&req));
req.count = htons(MAX_CM_SIZE);
DBG(printf("receiving READVAR response...\n"));
read(conn, &req, SIZEOF_NTPCM(req));
DBG(print_ntp_control_message(&req));
if(!(req.op&REM_ERROR))
asprintf(&data, "%s%s", data, req.data);
} while(req.op&REM_MORE);
if(req.op&REM_ERROR) {
if(strstr(getvar, "jitter")) {
if(verbose) printf("The command failed. This is usually caused by servers refusing the 'jitter'\nvariable. Restarting with 'dispersion'...\n");
getvar = "stratum,offset,dispersion";
i--;
continue;
} else if(strlen(getvar)) {
if(verbose) printf("Server didn't like dispersion either; will retrieve everything\n");
getvar = "";
i--;
continue;
}
}
if(verbose > 1)
printf("Server responded: >>>%s<<<\n", data);
/* get the offset */
if(verbose)
printf("parsing offset from peer %.2x: ", ntohs(peers[i].assoc));
value = extract_value(data, "offset");
nptr=NULL;
/* Convert the value if we have one */
if(value != NULL)
tmp_offset = strtod(value, &nptr) / 1000;
/* If value is null or no conversion was performed */
if(value == NULL || value==nptr) {
if(verbose) printf("error: unable to read server offset response.\n");
} else {
if(verbose) printf("%.10g\n", tmp_offset);
if(*offset_result == STATE_UNKNOWN || fabs(tmp_offset) < fabs(*offset)) {
*offset = tmp_offset;
*offset_result = STATE_OK;
} else {
/* Skip this one; move to the next */
continue;
}
}
if(do_jitter) {
/* get the jitter */
if(verbose) {
printf("parsing %s from peer %.2x: ", strstr(getvar, "dispersion") != NULL ? "dispersion" : "jitter", ntohs(peers[i].assoc));
}
value = extract_value(data, strstr(getvar, "dispersion") != NULL ? "dispersion" : "jitter");
nptr=NULL;
/* Convert the value if we have one */
if(value != NULL)
*jitter = strtod(value, &nptr);
/* If value is null or no conversion was performed */
if(value == NULL || value==nptr) {
if(verbose) printf("error: unable to read server jitter/dispersion response.\n");
*jitter = -1;
} else if(verbose) {
printf("%.10g\n", *jitter);
}
}
if(do_stratum) {
/* get the stratum */
if(verbose) {
printf("parsing stratum from peer %.2x: ", ntohs(peers[i].assoc));
}
value = extract_value(data, "stratum");
nptr=NULL;
/* Convert the value if we have one */
if(value != NULL)
*stratum = strtol(value, &nptr, 10);
if(value == NULL || value==nptr) {
if(verbose) printf("error: unable to read server stratum response.\n");
*stratum = -1;
} else {
if(verbose) printf("%i\n", *stratum);
}
}
} /* if (PEER_SEL(peers[i].status) >= min_peer_sel) */
} /* for (i = 0; i < npeers; i++) */
close(conn);
if(peers!=NULL) free(peers);
return status;
}
int process_arguments(int argc, char **argv){
int c;
int option=0;
static struct option longopts[] = {
{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
{"verbose", no_argument, 0, 'v'},
{"use-ipv4", no_argument, 0, '4'},
{"use-ipv6", no_argument, 0, '6'},
{"quiet", no_argument, 0, 'q'},
{"warning", required_argument, 0, 'w'},
{"critical", required_argument, 0, 'c'},
{"swarn", required_argument, 0, 'W'},
{"scrit", required_argument, 0, 'C'},
{"jwarn", required_argument, 0, 'j'},
{"jcrit", required_argument, 0, 'k'},
{"timeout", required_argument, 0, 't'},
{"hostname", required_argument, 0, 'H'},
{0, 0, 0, 0}
};
if (argc < 2)
usage ("\n");
while (1) {
c = getopt_long (argc, argv, "Vhv46qw:c:W:C:j:k:t:H:", longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
switch (c) {
case 'h':
print_help();
exit(STATE_OK);
break;
case 'V':
print_revision(progname, revision);
exit(STATE_OK);
break;
case 'v':
verbose++;
break;
case 'q':
quiet = 1;
break;
case 'w':
do_offset=1;
owarn = optarg;
break;
case 'c':
do_offset=1;
ocrit = optarg;
break;
case 'W':
do_stratum=1;
swarn = optarg;
break;
case 'C':
do_stratum=1;
scrit = optarg;
break;
case 'j':
do_jitter=1;
jwarn = optarg;
break;
case 'k':
do_jitter=1;
jcrit = optarg;
break;
case 'H':
if(is_host(optarg) == FALSE)
usage2(_("Invalid hostname/address"), optarg);
server_address = strdup(optarg);
break;
case 't':
socket_timeout=atoi(optarg);
break;
case '4':
address_family = AF_INET;
break;
case '6':
#ifdef USE_IPV6
address_family = AF_INET6;
#else
usage4 (_("IPv6 support not available"));
#endif
break;
case '?':
/* print short usage statement if args not parsable */
usage5 ();
break;
}
}
if(server_address == NULL){
usage4(_("Hostname was not supplied"));
}
return 0;
}
char *perfd_offset (double offset)
{
return fperfdata ("offset", offset, "s",
TRUE, offset_thresholds->warning->end,
TRUE, offset_thresholds->critical->end,
FALSE, 0, FALSE, 0);
}
char *perfd_jitter (double jitter)
{
return fperfdata ("jitter", jitter, "",
do_jitter, jitter_thresholds->warning->end,
do_jitter, jitter_thresholds->critical->end,
TRUE, 0, FALSE, 0);
}
char *perfd_stratum (int stratum)
{
return perfdata ("stratum", stratum, "",
do_stratum, (int)stratum_thresholds->warning->end,
do_stratum, (int)stratum_thresholds->critical->end,
TRUE, 0, TRUE, 16);
}
int main(int argc, char *argv[]){
int result, offset_result, stratum;
double offset=0, jitter=0;
char *result_line, *perfdata_line;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
if (process_arguments (argc, argv) == ERROR)
usage4 (_("Could not parse arguments"));
set_thresholds(&offset_thresholds, owarn, ocrit);
set_thresholds(&jitter_thresholds, jwarn, jcrit);
set_thresholds(&stratum_thresholds, swarn, scrit);
/* initialize alarm signal handling */
signal (SIGALRM, socket_timeout_alarm_handler);
/* set socket timeout */
alarm (socket_timeout);
/* This returns either OK or WARNING (See comment preceeding ntp_request) */
result = ntp_request(server_address, &offset, &offset_result, &jitter, &stratum);
if(offset_result == STATE_UNKNOWN) {
/* if there's no sync peer (this overrides ntp_request output): */
result = (quiet == 1 ? STATE_UNKNOWN : STATE_CRITICAL);
} else {
/* Be quiet if there's no candidates either */
if (quiet == 1 && result == STATE_WARNING)
result = STATE_UNKNOWN;
result = max_state_alt(result, get_status(fabs(offset), offset_thresholds));
}
if(do_stratum)
result = max_state_alt(result, get_status(stratum, stratum_thresholds));
if(do_jitter)
result = max_state_alt(result, get_status(jitter, jitter_thresholds));
switch (result) {
case STATE_CRITICAL :
asprintf(&result_line, _("NTP CRITICAL:"));
break;
case STATE_WARNING :
asprintf(&result_line, _("NTP WARNING:"));
break;
case STATE_OK :
asprintf(&result_line, _("NTP OK:"));
break;
default :
asprintf(&result_line, _("NTP UNKNOWN:"));
break;
}
if(!syncsource_found)
asprintf(&result_line, "%s %s,", result_line, _("Server not synchronized"));
if(offset_result == STATE_UNKNOWN){
asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
asprintf(&perfdata_line, "");
} else {
asprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
asprintf(&perfdata_line, "%s", perfd_offset(offset));
}
if (do_jitter) {
asprintf(&result_line, "%s, jitter=%f", result_line, jitter);
asprintf(&perfdata_line, "%s %s", perfdata_line, perfd_jitter(jitter));
}
if (do_stratum) {
asprintf(&result_line, "%s, stratum=%i", result_line, stratum);
asprintf(&perfdata_line, "%s %s", perfdata_line, perfd_stratum(stratum));
}
printf("%s|%s\n", result_line, perfdata_line);
if(server_address!=NULL) free(server_address);
return result;
}
void print_help(void){
print_revision(progname, revision);
printf ("Copyright (c) 2006 Sean Finney\n");
printf (COPYRIGHT, copyright, email);
printf ("%s\n", _("This plugin checks the selected ntp server"));
printf ("\n\n");
print_usage();
printf (_(UT_HELP_VRSN));
printf (_(UT_HOST_PORT), 'p', "123");
printf (" %s\n", "-q, --quiet");
printf (" %s\n", _("Returns UNKNOWN instead of CRITICAL or WARNING if server isn't synchronized"));
printf (" %s\n", "-w, --warning=THRESHOLD");
printf (" %s\n", _("Offset to result in warning status (seconds)"));
printf (" %s\n", "-c, --critical=THRESHOLD");
printf (" %s\n", _("Offset to result in critical status (seconds)"));
printf (" %s\n", "-W, --warning=THRESHOLD");
printf (" %s\n", _("Warning threshold for stratum"));
printf (" %s\n", "-W, --critical=THRESHOLD");
printf (" %s\n", _("Critical threshold for stratum"));
printf (" %s\n", "-j, --warning=THRESHOLD");
printf (" %s\n", _("Warning threshold for jitter"));
printf (" %s\n", "-k, --critical=THRESHOLD");
printf (" %s\n", _("Critical threshold for jitter"));
printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
printf (_(UT_VERBOSE));
printf("\n");
printf("%s\n", _("Notes:"));
printf(" %s\n", _("This plugin checks an NTP server independent of any commandline"));
printf(" %s\n\n", _("programs or external libraries."));
printf(" %s\n", _("Use this plugin to check the health of an NTP server. It supports"));
printf(" %s\n", _("checking the offset with the sync peer, the jitter and stratum. This"));
printf(" %s\n", _("plugin will not check the clock offset between the local host and NTP"));
printf(" %s\n\n", _("server; please use check_ntp_time for that purpose."));
printf(" %s\n", _("See:"));
printf(" %s\n", ("http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT"));
printf(" %s\n", _("for THRESHOLD format and examples."));
printf("\n");
printf("%s\n", _("Examples:"));
printf(" %s\n", _("Simple NTP server check:"));
printf(" %s\n", ("./check_ntp_peer -H ntpserv -w 0.5 -c 1"));
printf(" %s\n", _("Check jitter too, avoiding critical notifications if jitter isn't available"));
printf(" %s\n", _("(See Notes above for more details on thresholds formats):"));
printf(" %s\n", ("./check_ntp_peer -H ntpserv -w 0.5 -c 1 -j -1:100 -k -1:200"));
printf(" %s\n", _("Check only stratum:"));
printf(" %s\n", ("./check_ntp_peer -H ntpserv -W 4 -C 6"));
printf (_(UT_SUPPORT));
}
void
print_usage(void)
{
printf (_("Usage:"));
printf(" %s -H <host> [-w <warn>] [-c <crit>] [-W <warn>] [-C <crit>]\n", progname);
printf(" [-j <warn>] [-k <crit>] [-v verbose]\n");
}

636
plugins/check_ntp_time.c Normal file
View file

@ -0,0 +1,636 @@
/******************************************************************************
*
* Nagios check_ntp_time plugin
*
* License: GPL
* Copyright (c) 2006 sean finney <seanius@seanius.net>
* Copyright (c) 2007 nagios-plugins team
*
* Last Modified: $Date: 2007-12-11 05:57:35 +0000 (Tue, 11 Dec 2007) $
*
* Description:
*
* This file contains the check_ntp_time plugin
*
* This plugin checks the clock offset between the local host and a
* remote NTP server. It is independent of any commandline programs or
* external libraries.
*
* If you'd rather want to monitor an NTP server, please use
* check_ntp_peer.
*
*
* 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.
$Id: check_ntp_time.c 1861 2007-12-11 05:57:35Z dermoth $
*****************************************************************************/
const char *progname = "check_ntp_time";
const char *revision = "$Revision: 1861 $";
const char *copyright = "2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "common.h"
#include "netutils.h"
#include "utils.h"
static char *server_address=NULL;
static int verbose=0;
static int quiet=0;
static char *owarn="60";
static char *ocrit="120";
int process_arguments (int, char **);
thresholds *offset_thresholds = NULL;
void print_help (void);
void print_usage (void);
/* number of times to perform each request to get a good average. */
#define AVG_NUM 4
/* max size of control message data */
#define MAX_CM_SIZE 468
/* this structure holds everything in an ntp request/response as per rfc1305 */
typedef struct {
uint8_t flags; /* byte with leapindicator,vers,mode. see macros */
uint8_t stratum; /* clock stratum */
int8_t poll; /* polling interval */
int8_t precision; /* precision of the local clock */
int32_t rtdelay; /* total rt delay, as a fixed point num. see macros */
uint32_t rtdisp; /* like above, but for max err to primary src */
uint32_t refid; /* ref clock identifier */
uint64_t refts; /* reference timestamp. local time local clock */
uint64_t origts; /* time at which request departed client */
uint64_t rxts; /* time at which request arrived at server */
uint64_t txts; /* time at which request departed server */
} ntp_message;
/* this structure holds data about results from querying offset from a peer */
typedef struct {
time_t waiting; /* ts set when we started waiting for a response */
int num_responses; /* number of successfully recieved responses */
uint8_t stratum; /* copied verbatim from the ntp_message */
double rtdelay; /* converted from the ntp_message */
double rtdisp; /* converted from the ntp_message */
double offset[AVG_NUM]; /* offsets from each response */
uint8_t flags; /* byte with leapindicator,vers,mode. see macros */
} ntp_server_results;
/* bits 1,2 are the leap indicator */
#define LI_MASK 0xc0
#define LI(x) ((x&LI_MASK)>>6)
#define LI_SET(x,y) do{ x |= ((y<<6)&LI_MASK); }while(0)
/* and these are the values of the leap indicator */
#define LI_NOWARNING 0x00
#define LI_EXTRASEC 0x01
#define LI_MISSINGSEC 0x02
#define LI_ALARM 0x03
/* bits 3,4,5 are the ntp version */
#define VN_MASK 0x38
#define VN(x) ((x&VN_MASK)>>3)
#define VN_SET(x,y) do{ x |= ((y<<3)&VN_MASK); }while(0)
#define VN_RESERVED 0x02
/* bits 6,7,8 are the ntp mode */
#define MODE_MASK 0x07
#define MODE(x) (x&MODE_MASK)
#define MODE_SET(x,y) do{ x |= (y&MODE_MASK); }while(0)
/* here are some values */
#define MODE_CLIENT 0x03
#define MODE_CONTROLMSG 0x06
/* In control message, bits 8-10 are R,E,M bits */
#define REM_MASK 0xe0
#define REM_RESP 0x80
#define REM_ERROR 0x40
#define REM_MORE 0x20
/* In control message, bits 11 - 15 are opcode */
#define OP_MASK 0x1f
#define OP_SET(x,y) do{ x |= (y&OP_MASK); }while(0)
#define OP_READSTAT 0x01
#define OP_READVAR 0x02
/* In peer status bytes, bits 6,7,8 determine clock selection status */
#define PEER_SEL(x) ((ntohs(x)>>8)&0x07)
#define PEER_INCLUDED 0x04
#define PEER_SYNCSOURCE 0x06
/**
** a note about the 32-bit "fixed point" numbers:
**
they are divided into halves, each being a 16-bit int in network byte order:
- the first 16 bits are an int on the left side of a decimal point.
- the second 16 bits represent a fraction n/(2^16)
likewise for the 64-bit "fixed point" numbers with everything doubled :)
**/
/* macros to access the left/right 16 bits of a 32-bit ntp "fixed point"
number. note that these can be used as lvalues too */
#define L16(x) (((uint16_t*)&x)[0])
#define R16(x) (((uint16_t*)&x)[1])
/* macros to access the left/right 32 bits of a 64-bit ntp "fixed point"
number. these too can be used as lvalues */
#define L32(x) (((uint32_t*)&x)[0])
#define R32(x) (((uint32_t*)&x)[1])
/* ntp wants seconds since 1/1/00, epoch is 1/1/70. this is the difference */
#define EPOCHDIFF 0x83aa7e80UL
/* extract a 32-bit ntp fixed point number into a double */
#define NTP32asDOUBLE(x) (ntohs(L16(x)) + (double)ntohs(R16(x))/65536.0)
/* likewise for a 64-bit ntp fp number */
#define NTP64asDOUBLE(n) (double)(((uint64_t)n)?\
(ntohl(L32(n))-EPOCHDIFF) + \
(.00000001*(0.5+(double)(ntohl(R32(n))/42.94967296))):\
0)
/* convert a struct timeval to a double */
#define TVasDOUBLE(x) (double)(x.tv_sec+(0.000001*x.tv_usec))
/* convert an ntp 64-bit fp number to a struct timeval */
#define NTP64toTV(n,t) \
do{ if(!n) t.tv_sec = t.tv_usec = 0; \
else { \
t.tv_sec=ntohl(L32(n))-EPOCHDIFF; \
t.tv_usec=(int)(0.5+(double)(ntohl(R32(n))/4294.967296)); \
} \
}while(0)
/* convert a struct timeval to an ntp 64-bit fp number */
#define TVtoNTP64(t,n) \
do{ if(!t.tv_usec && !t.tv_sec) n=0x0UL; \
else { \
L32(n)=htonl(t.tv_sec + EPOCHDIFF); \
R32(n)=htonl((uint64_t)((4294.967296*t.tv_usec)+.5)); \
} \
} while(0)
/* NTP control message header is 12 bytes, plus any data in the data
* field, plus null padding to the nearest 32-bit boundary per rfc.
*/
#define SIZEOF_NTPCM(m) (12+ntohs(m.count)+((m.count)?4-(ntohs(m.count)%4):0))
/* finally, a little helper or two for debugging: */
#define DBG(x) do{if(verbose>1){ x; }}while(0);
#define PRINTSOCKADDR(x) \
do{ \
printf("%u.%u.%u.%u", (x>>24)&0xff, (x>>16)&0xff, (x>>8)&0xff, x&0xff);\
}while(0);
/* calculate the offset of the local clock */
static inline double calc_offset(const ntp_message *m, const struct timeval *t){
double client_tx, peer_rx, peer_tx, client_rx;
client_tx = NTP64asDOUBLE(m->origts);
peer_rx = NTP64asDOUBLE(m->rxts);
peer_tx = NTP64asDOUBLE(m->txts);
client_rx=TVasDOUBLE((*t));
return (.5*((peer_tx-client_rx)+(peer_rx-client_tx)));
}
/* print out a ntp packet in human readable/debuggable format */
void print_ntp_message(const ntp_message *p){
struct timeval ref, orig, rx, tx;
NTP64toTV(p->refts,ref);
NTP64toTV(p->origts,orig);
NTP64toTV(p->rxts,rx);
NTP64toTV(p->txts,tx);
printf("packet contents:\n");
printf("\tflags: 0x%.2x\n", p->flags);
printf("\t li=%d (0x%.2x)\n", LI(p->flags), p->flags&LI_MASK);
printf("\t vn=%d (0x%.2x)\n", VN(p->flags), p->flags&VN_MASK);
printf("\t mode=%d (0x%.2x)\n", MODE(p->flags), p->flags&MODE_MASK);
printf("\tstratum = %d\n", p->stratum);
printf("\tpoll = %g\n", pow(2, p->poll));
printf("\tprecision = %g\n", pow(2, p->precision));
printf("\trtdelay = %-.16g\n", NTP32asDOUBLE(p->rtdelay));
printf("\trtdisp = %-.16g\n", NTP32asDOUBLE(p->rtdisp));
printf("\trefid = %x\n", p->refid);
printf("\trefts = %-.16g\n", NTP64asDOUBLE(p->refts));
printf("\torigts = %-.16g\n", NTP64asDOUBLE(p->origts));
printf("\trxts = %-.16g\n", NTP64asDOUBLE(p->rxts));
printf("\ttxts = %-.16g\n", NTP64asDOUBLE(p->txts));
}
void setup_request(ntp_message *p){
struct timeval t;
memset(p, 0, sizeof(ntp_message));
LI_SET(p->flags, LI_ALARM);
VN_SET(p->flags, 4);
MODE_SET(p->flags, MODE_CLIENT);
p->poll=4;
p->precision=(int8_t)0xfa;
L16(p->rtdelay)=htons(1);
L16(p->rtdisp)=htons(1);
gettimeofday(&t, NULL);
TVtoNTP64(t,p->txts);
}
/* select the "best" server from a list of servers, and return its index.
* this is done by filtering servers based on stratum, dispersion, and
* finally round-trip delay. */
int best_offset_server(const ntp_server_results *slist, int nservers){
int i=0, j=0, cserver=0, candidates[5], csize=0;
/* for each server */
for(cserver=0; cserver<nservers; cserver++){
/* sort out servers with error flags */
if ( LI(slist[cserver].flags) != LI_NOWARNING ){
if (verbose) printf("discarding peer id %d: flags=%d\n", cserver, LI(slist[cserver].flags));
break;
}
/* compare it to each of the servers already in the candidate list */
for(i=0; i<csize; i++){
/* does it have an equal or better stratum? */
if(slist[cserver].stratum <= slist[i].stratum){
/* does it have an equal or better dispersion? */
if(slist[cserver].rtdisp <= slist[i].rtdisp){
/* does it have a better rtdelay? */
if(slist[cserver].rtdelay < slist[i].rtdelay){
break;
}
}
}
}
/* if we haven't reached the current list's end, move everyone
* over one to the right, and insert the new candidate */
if(i<csize){
for(j=5; j>i; j--){
candidates[j]=candidates[j-1];
}
}
/* regardless, if they should be on the list... */
if(i<5) {
candidates[i]=cserver;
if(csize<5) csize++;
/* otherwise discard the server */
} else {
DBG(printf("discarding peer id %d\n", cserver));
}
}
if(csize>0) {
DBG(printf("best server selected: peer %d\n", candidates[0]));
return candidates[0];
} else {
DBG(printf("no peers meeting synchronization criteria :(\n"));
return -1;
}
}
/* do everything we need to get the total average offset
* - we use a certain amount of parallelization with poll() to ensure
* we don't waste time sitting around waiting for single packets.
* - we also "manually" handle resolving host names and connecting, because
* we have to do it in a way that our lazy macros don't handle currently :( */
double offset_request(const char *host, int *status){
int i=0, j=0, ga_result=0, num_hosts=0, *socklist=NULL, respnum=0;
int servers_completed=0, one_written=0, one_read=0, servers_readable=0, best_index=-1;
time_t now_time=0, start_ts=0;
ntp_message *req=NULL;
double avg_offset=0.;
struct timeval recv_time;
struct addrinfo *ai=NULL, *ai_tmp=NULL, hints;
struct pollfd *ufds=NULL;
ntp_server_results *servers=NULL;
/* setup hints to only return results from getaddrinfo that we'd like */
memset(&hints, 0, sizeof(struct addrinfo));
hints.ai_family = address_family;
hints.ai_protocol = IPPROTO_UDP;
hints.ai_socktype = SOCK_DGRAM;
/* fill in ai with the list of hosts resolved by the host name */
ga_result = getaddrinfo(host, "123", &hints, &ai);
if(ga_result!=0){
die(STATE_UNKNOWN, "error getting address for %s: %s\n",
host, gai_strerror(ga_result));
}
/* count the number of returned hosts, and allocate stuff accordingly */
for(ai_tmp=ai; ai_tmp!=NULL; ai_tmp=ai_tmp->ai_next){ num_hosts++; }
req=(ntp_message*)malloc(sizeof(ntp_message)*num_hosts);
if(req==NULL) die(STATE_UNKNOWN, "can not allocate ntp message array");
socklist=(int*)malloc(sizeof(int)*num_hosts);
if(socklist==NULL) die(STATE_UNKNOWN, "can not allocate socket array");
ufds=(struct pollfd*)malloc(sizeof(struct pollfd)*num_hosts);
if(ufds==NULL) die(STATE_UNKNOWN, "can not allocate socket array");
servers=(ntp_server_results*)malloc(sizeof(ntp_server_results)*num_hosts);
if(servers==NULL) die(STATE_UNKNOWN, "can not allocate server array");
memset(servers, 0, sizeof(ntp_server_results)*num_hosts);
/* setup each socket for writing, and the corresponding struct pollfd */
ai_tmp=ai;
for(i=0;ai_tmp;i++){
socklist[i]=socket(ai_tmp->ai_family, SOCK_DGRAM, IPPROTO_UDP);
if(socklist[i] == -1) {
perror(NULL);
die(STATE_UNKNOWN, "can not create new socket");
}
if(connect(socklist[i], ai_tmp->ai_addr, ai_tmp->ai_addrlen)){
die(STATE_UNKNOWN, "can't create socket connection");
} else {
ufds[i].fd=socklist[i];
ufds[i].events=POLLIN;
ufds[i].revents=0;
}
ai_tmp = ai_tmp->ai_next;
}
/* now do AVG_NUM checks to each host. We stop before timeout/2 seconds
* have passed in order to ensure post-processing and jitter time. */
now_time=start_ts=time(NULL);
while(servers_completed<num_hosts && now_time-start_ts <= socket_timeout/2){
/* loop through each server and find each one which hasn't
* been touched in the past second or so and is still lacking
* some responses. For each of these servers, send a new request,
* and update the "waiting" timestamp with the current time. */
one_written=0;
now_time=time(NULL);
for(i=0; i<num_hosts; i++){
if(servers[i].waiting<now_time && servers[i].num_responses<AVG_NUM){
if(verbose && servers[i].waiting != 0) printf("re-");
if(verbose) printf("sending request to peer %d\n", i);
setup_request(&req[i]);
write(socklist[i], &req[i], sizeof(ntp_message));
servers[i].waiting=now_time;
one_written=1;
break;
}
}
/* quickly poll for any sockets with pending data */
servers_readable=poll(ufds, num_hosts, 100);
if(servers_readable==-1){
perror("polling ntp sockets");
die(STATE_UNKNOWN, "communication errors");
}
/* read from any sockets with pending data */
for(i=0; servers_readable && i<num_hosts; i++){
if(ufds[i].revents&POLLIN && servers[i].num_responses < AVG_NUM){
if(verbose) {
printf("response from peer %d: ", i);
}
read(ufds[i].fd, &req[i], sizeof(ntp_message));
gettimeofday(&recv_time, NULL);
DBG(print_ntp_message(&req[i]));
respnum=servers[i].num_responses++;
servers[i].offset[respnum]=calc_offset(&req[i], &recv_time);
if(verbose) {
printf("offset %.10g\n", servers[i].offset[respnum]);
}
servers[i].stratum=req[i].stratum;
servers[i].rtdisp=NTP32asDOUBLE(req[i].rtdisp);
servers[i].rtdelay=NTP32asDOUBLE(req[i].rtdelay);
servers[i].waiting=0;
servers[i].flags=req[i].flags;
servers_readable--;
one_read = 1;
if(servers[i].num_responses==AVG_NUM) servers_completed++;
}
}
/* lather, rinse, repeat. */
}
if (one_read == 0) {
die(STATE_CRITICAL, "NTP CRITICAL: No response from NTP server\n");
}
/* now, pick the best server from the list */
best_index=best_offset_server(servers, num_hosts);
if(best_index < 0){
*status=STATE_UNKNOWN;
} else {
/* finally, calculate the average offset */
for(i=0; i<servers[best_index].num_responses;i++){
avg_offset+=servers[best_index].offset[j];
}
avg_offset/=servers[best_index].num_responses;
}
/* cleanup */
for(j=0; j<num_hosts; j++){ close(socklist[j]); }
free(socklist);
free(ufds);
free(servers);
free(req);
freeaddrinfo(ai);
if(verbose) printf("overall average offset: %.10g\n", avg_offset);
return avg_offset;
}
int process_arguments(int argc, char **argv){
int c;
int option=0;
static struct option longopts[] = {
{"version", no_argument, 0, 'V'},
{"help", no_argument, 0, 'h'},
{"verbose", no_argument, 0, 'v'},
{"use-ipv4", no_argument, 0, '4'},
{"use-ipv6", no_argument, 0, '6'},
{"quiet", no_argument, 0, 'q'},
{"warning", required_argument, 0, 'w'},
{"critical", required_argument, 0, 'c'},
{"timeout", required_argument, 0, 't'},
{"hostname", required_argument, 0, 'H'},
{0, 0, 0, 0}
};
if (argc < 2)
usage ("\n");
while (1) {
c = getopt_long (argc, argv, "Vhv46qw:c:t:H:", longopts, &option);
if (c == -1 || c == EOF || c == 1)
break;
switch (c) {
case 'h':
print_help();
exit(STATE_OK);
break;
case 'V':
print_revision(progname, revision);
exit(STATE_OK);
break;
case 'v':
verbose++;
break;
case 'q':
quiet = 1;
break;
case 'w':
owarn = optarg;
break;
case 'c':
ocrit = optarg;
break;
case 'H':
if(is_host(optarg) == FALSE)
usage2(_("Invalid hostname/address"), optarg);
server_address = strdup(optarg);
break;
case 't':
socket_timeout=atoi(optarg);
break;
case '4':
address_family = AF_INET;
break;
case '6':
#ifdef USE_IPV6
address_family = AF_INET6;
#else
usage4 (_("IPv6 support not available"));
#endif
break;
case '?':
/* print short usage statement if args not parsable */
usage5 ();
break;
}
}
if(server_address == NULL){
usage4(_("Hostname was not supplied"));
}
return 0;
}
char *perfd_offset (double offset)
{
return fperfdata ("offset", offset, "s",
TRUE, offset_thresholds->warning->end,
TRUE, offset_thresholds->critical->end,
FALSE, 0, FALSE, 0);
}
int main(int argc, char *argv[]){
int result, offset_result;
double offset=0;
char *result_line, *perfdata_line;
setlocale (LC_ALL, "");
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
result = offset_result = STATE_OK;
if (process_arguments (argc, argv) == ERROR)
usage4 (_("Could not parse arguments"));
set_thresholds(&offset_thresholds, owarn, ocrit);
/* initialize alarm signal handling */
signal (SIGALRM, socket_timeout_alarm_handler);
/* set socket timeout */
alarm (socket_timeout);
offset = offset_request(server_address, &offset_result);
if (offset_result == STATE_UNKNOWN) {
result = (quiet == 1 ? STATE_UNKNOWN : STATE_CRITICAL);
} else {
result = get_status(fabs(offset), offset_thresholds);
}
switch (result) {
case STATE_CRITICAL :
asprintf(&result_line, _("NTP CRITICAL:"));
break;
case STATE_WARNING :
asprintf(&result_line, _("NTP WARNING:"));
break;
case STATE_OK :
asprintf(&result_line, _("NTP OK:"));
break;
default :
asprintf(&result_line, _("NTP UNKNOWN:"));
break;
}
if(offset_result == STATE_UNKNOWN){
asprintf(&result_line, "%s %s", result_line, _("Offset unknown"));
asprintf(&perfdata_line, "");
} else {
asprintf(&result_line, "%s %s %.10g secs", result_line, _("Offset"), offset);
asprintf(&perfdata_line, "%s", perfd_offset(offset));
}
printf("%s|%s\n", result_line, perfdata_line);
if(server_address!=NULL) free(server_address);
return result;
}
void print_help(void){
print_revision(progname, revision);
printf ("Copyright (c) 2006 Sean Finney\n");
printf (COPYRIGHT, copyright, email);
printf ("%s\n", _("This plugin checks the clock offset with the ntp server"));
printf ("\n\n");
print_usage();
printf (_(UT_HELP_VRSN));
printf (_(UT_HOST_PORT), 'p', "123");
printf (" %s\n", "-q, --quiet");
printf (" %s\n", _("Returns UNKNOWN instead of CRITICAL if offset cannot be found"));
printf (" %s\n", "-w, --warning=THRESHOLD");
printf (" %s\n", _("Offset to result in warning status (seconds)"));
printf (" %s\n", "-c, --critical=THRESHOLD");
printf (" %s\n", _("Offset to result in critical status (seconds)"));
printf (_(UT_TIMEOUT), DEFAULT_SOCKET_TIMEOUT);
printf (_(UT_VERBOSE));
printf("\n");
printf("%s\n", _("Notes:"));
printf(" %s\n", _("This plugin checks the clock offset between the local host and a"));
printf(" %s\n", _("remote NTP server. It is independent of any commandline programs or"));
printf(" %s\n\n", _("external libraries."));
printf(" %s\n", _("If you'd rather want to monitor an NTP server, please use"));
printf(" %s\n\n", _("check_ntp_peer."));
printf(" %s\n", _("See:"));
printf(" %s\n", ("http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT"));
printf(" %s\n", _("for THRESHOLD format and examples."));
printf("\n");
printf("%s\n", _("Examples:"));
printf(" %s\n", ("./check_ntp_time -H ntpserv -w 0.5 -c 1"));
printf (_(UT_SUPPORT));
}
void
print_usage(void)
{
printf (_("Usage:"));
printf(" %s -H <host> [-w <warn>] [-c <crit>] [-W <warn>] [-C <crit>]\n", progname);
printf(" [-j <warn>] [-k <crit>] [-v verbose]\n");
}

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 2000-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-04-23 08:30:47 +0100 (Mon, 23 Apr 2007) $
* Last Modified: $Date: 2007-10-25 21:43:04 +0100 (Thu, 25 Oct 2007) $
*
* Description:
*
@ -30,12 +30,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: check_ping.c 1699 2007-04-23 07:30:47Z hweiss $
$Id: check_ping.c 1810 2007-10-25 20:43:04Z tonvoon $
******************************************************************************/
const char *progname = "check_ping";
const char *revision = "$Revision: 1699 $";
const char *revision = "$Revision: 1810 $";
const char *copyright = "2000-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -548,7 +548,7 @@ print_help (void)
{
print_revision (progname, revision);
printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>");
printf ("Copyright (c) 1999 Ethan Galstad <nagios@nagios.org>\n");
printf (COPYRIGHT, copyright, email);
printf (_("Use ping to check connection statistics for a remote host."));

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-09-26 11:57:44 +0100 (Wed, 26 Sep 2007) $
* Last Modified: $Date: 2007-12-10 07:52:00 +0000 (Mon, 10 Dec 2007) $
*
* Description:
*
@ -30,12 +30,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_radius.c 1800 2007-09-26 10:57:44Z hweiss $
* $Id: check_radius.c 1859 2007-12-10 07:52:00Z dermoth $
*
*******************************************************************************/
const char *progname = "check_radius";
const char *revision = "$Revision: 1800 $";
const char *revision = "$Revision: 1859 $";
const char *copyright = "2000-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -287,7 +287,7 @@ process_arguments (int argc, char **argv)
}
if (server == NULL)
usage4 (_("Host not specified"));
usage4 (_("Hostname was not supplied"));
if (username == NULL)
usage4 (_("User not specified"));
if (password == NULL)

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-09-15 15:25:56 +0100 (Sat, 15 Sep 2007) $
* Last Modified: $Date: 2007-11-09 21:17:03 +0000 (Fri, 09 Nov 2007) $
*
* Description:
*
@ -31,12 +31,12 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*
* $Id: check_smtp.c 1780 2007-09-15 14:25:56Z hweiss $
* $Id: check_smtp.c 1817 2007-11-09 21:17:03Z dermoth $
*
******************************************************************************/
const char *progname = "check_smtp";
const char *revision = "$Revision: 1780 $";
const char *revision = "$Revision: 1817 $";
const char *copyright = "2000-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -45,6 +45,7 @@ const char *email = "nagiosplug-devel@lists.sourceforge.net";
#include "common.h"
#include "netutils.h"
#include "utils.h"
#include "base64.h"
#ifdef HAVE_SSL
int check_cert = FALSE;
@ -122,46 +123,6 @@ enum {
UDP_PROTOCOL = 2,
};
/* written by lauri alanko */
static char *
base64 (const char *bin, size_t len)
{
char *buf = (char *) malloc ((len + 2) / 3 * 4 + 1);
size_t i = 0, j = 0;
char BASE64_END = '=';
char base64_table[64];
strncpy (base64_table, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", 64);
while (j < len - 2) {
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)];
buf[i++] = base64_table[((bin[j + 1] & 15) << 2) | (bin[j + 2] >> 6)];
buf[i++] = base64_table[bin[j + 2] & 63];
j += 3;
}
switch (len - j) {
case 1:
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[(bin[j] & 3) << 4];
buf[i++] = BASE64_END;
buf[i++] = BASE64_END;
break;
case 2:
buf[i++] = base64_table[bin[j] >> 2];
buf[i++] = base64_table[((bin[j] & 3) << 4) | (bin[j + 1] >> 4)];
buf[i++] = base64_table[(bin[j + 1] & 15) << 2];
buf[i++] = BASE64_END;
break;
case 0:
break;
}
buf[i] = '\0';
return buf;
}
int
main (int argc, char **argv)
@ -567,6 +528,7 @@ process_arguments (int argc, char **argv)
break;
case 'A':
authtype = optarg;
use_ehlo = TRUE;
break;
case 'U':
authuser = optarg;

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2007 nagios-plugins team
*
* Last Modified: $Date: 2007-05-29 06:22:32 +0100 (Tue, 29 May 2007) $
* Last Modified: $Date: 2007-12-10 07:52:00 +0000 (Mon, 10 Dec 2007) $
*
* Description:
*
@ -30,12 +30,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_snmp.c 1721 2007-05-29 05:22:32Z dermoth $
* $Id: check_snmp.c 1859 2007-12-10 07:52:00Z dermoth $
*
******************************************************************************/
const char *progname = "check_snmp";
const char *revision = "$Revision: 1721 $";
const char *revision = "$Revision: 1859 $";
const char *copyright = "1999-2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -148,6 +148,7 @@ main (int argc, char **argv)
int result = STATE_DEPENDENT;
char input_buffer[MAX_INPUT_BUFFER];
char *command_line = NULL;
char *cl_hidden_auth = NULL;
char *response = NULL;
char *outbuff;
char *output;
@ -186,11 +187,17 @@ main (int argc, char **argv)
asprintf(&command_line, "%s -t %d -r %d -m %s -v %s %s %s:%s %s",
PATH_TO_SNMPGETNEXT, timeout_interval, retries, miblist, proto,
authpriv, server_address, port, oid);
asprintf(&cl_hidden_auth, "%s -t %d -r %d -m %s -v %s %s %s:%s %s",
PATH_TO_SNMPGETNEXT, timeout_interval, retries, miblist, proto,
"[authpriv]", server_address, port, oid);
}else{
asprintf (&command_line, "%s -t %d -r %d -m %s -v %s %s %s:%s %s",
PATH_TO_SNMPGET, timeout_interval, retries, miblist, proto,
authpriv, server_address, port, oid);
asprintf(&cl_hidden_auth, "%s -t %d -r %d -m %s -v %s %s %s:%s %s",
PATH_TO_SNMPGET, timeout_interval, retries, miblist, proto,
"[authpriv]", server_address, port, oid);
}
if (verbose)
@ -200,14 +207,14 @@ main (int argc, char **argv)
/* run the command */
child_process = spopen (command_line);
if (child_process == NULL) {
printf (_("Could not open pipe: %s\n"), command_line);
printf (_("Could not open pipe: %s\n"), cl_hidden_auth);
exit (STATE_UNKNOWN);
}
#if 0 /* Removed May 29, 2007 */
child_stderr = fdopen (child_stderr_array[fileno (child_process)], "r");
if (child_stderr == NULL) {
printf (_("Could not open stderr for %s\n"), command_line);
printf (_("Could not open stderr for %s\n"), cl_hidden_auth);
}
#endif
@ -219,12 +226,16 @@ main (int argc, char **argv)
ptr = output;
strcat(perfstr, "| ");
strncat(perfstr, "| ", sizeof(perfstr)-strlen(perfstr)-1);
while (ptr) {
char *foo;
unsigned int copylen;
foo = strstr (ptr, delimiter);
strncat(perfstr, ptr, foo-ptr);
copylen = foo-ptr;
if (copylen > sizeof(perfstr)-strlen(perfstr)-1)
copylen = sizeof(perfstr)-strlen(perfstr)-1;
strncat(perfstr, ptr, copylen);
ptr = foo;
if (ptr == NULL)
@ -357,11 +368,11 @@ main (int argc, char **argv)
i++;
strcat(perfstr, "=");
strcat(perfstr, show);
strncat(perfstr, "=", sizeof(perfstr)-strlen(perfstr)-1);
strncat(perfstr, show, sizeof(perfstr)-strlen(perfstr)-1);
if (type)
strcat(perfstr, type);
strcat(perfstr, " ");
strncat(perfstr, type, sizeof(perfstr)-strlen(perfstr)-1);
strncat(perfstr, " ", sizeof(perfstr)-strlen(perfstr)-1);
} /* end while (ptr) */
@ -369,7 +380,7 @@ main (int argc, char **argv)
die (STATE_UNKNOWN,
_("%s problem - No data received from host\nCMD: %s\n"),
label,
command_line);
cl_hidden_auth);
#if 0 /* Removed May 29, 2007 */
/* WARNING if output found on stderr */
@ -510,7 +521,7 @@ process_arguments (int argc, char **argv)
/* Test parameters */
case 'c': /* critical time threshold */
if (strspn (optarg, "0123456789:,") < strlen (optarg))
usage2 (_("Invalid critical threshold: %s\n"), optarg);
usage2 (_("Invalid critical threshold"), optarg);
for (ptr = optarg; ptr && jj < MAX_OIDS; jj++) {
if (llu_getll (&lower_crit_lim[jj], ptr) == 1)
eval_method[jj] |= CRIT_LT;
@ -521,7 +532,7 @@ process_arguments (int argc, char **argv)
break;
case 'w': /* warning time threshold */
if (strspn (optarg, "0123456789:,") < strlen (optarg))
usage2 (_("Invalid warning threshold: %s\n"), optarg);
usage2 (_("Invalid warning threshold"), optarg);
for (ptr = optarg; ptr && ii < MAX_OIDS; ii++) {
if (llu_getll (&lower_warn_lim[ii], ptr) == 1)
eval_method[ii] |= WARN_LT;
@ -939,14 +950,14 @@ print_help (void)
/* Authentication Tokens*/
printf (" %s\n", "-C, --community=STRING");
printf (" %s\n", _("Optional community string for SNMP communication"));
printf (_("(default is \"%s\")"),DEFAULT_COMMUNITY);
printf (" %s ", _("Optional community string for SNMP communication"));
printf ("(%s \"%s\")\n", _("default is") ,DEFAULT_COMMUNITY);
printf (" %s\n", "-U, --secname=USERNAME");
printf (" %s\n", _("SNMPv3 username"));
printf (" %s\n", "-A, --authpassword=PASSWORD");
printf (" %s\n", _("SNMPv3 authentication password"));
printf (" %s\n", "-X, --privpasswd=PASSWORD");
printf (" %s\n", _("SNMPv3 crypt passwd (DES)"));
printf (" %s\n", _("SNMPv3 privacy password"));
/* OID Stuff */
printf (" %s\n", "-o, --oid=OID(s)");

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 1999-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-01-28 21:46:41 +0000 (Sun, 28 Jan 2007) $
* Last Modified: $Date: 2007-11-09 13:08:43 +0000 (Fri, 09 Nov 2007) $
*
* Description:
*
@ -31,12 +31,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_ssh.c 1590 2007-01-28 21:46:41Z hweiss $
* $Id: check_ssh.c 1813 2007-11-09 13:08:43Z dermoth $
*
******************************************************************************/
const char *progname = "check_ssh";
const char *revision = "$Revision: 1590 $";
const char *revision = "$Revision: 1813 $";
const char *copyright = "2000-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -221,7 +221,7 @@ ssh_connect (char *haddr, int hport, char *remote_version)
char *ssh_server = NULL;
char rev_no[20];
sscanf ("$Revision: 1590 $", "$Revision: %[0123456789.]", rev_no);
sscanf ("$Revision: 1813 $", "$Revision: %[0123456789.]", rev_no);
result = my_tcp_connect (haddr, hport, &sd);
@ -233,6 +233,7 @@ ssh_connect (char *haddr, int hport, char *remote_version)
recv (sd, output, BUFF_SZ, 0);
if (strncmp (output, "SSH", 3)) {
printf (_("Server answer: %s"), output);
close(sd);
exit (STATE_CRITICAL);
}
else {
@ -252,6 +253,7 @@ ssh_connect (char *haddr, int hport, char *remote_version)
printf
(_("SSH WARNING - %s (protocol %s) version mismatch, expected '%s'\n"),
ssh_server, ssh_proto, remote_version);
close(sd);
exit (STATE_WARNING);
}

View file

@ -6,7 +6,7 @@
* Copyright (c) 2000 Karl DeBisschop (kdebisschop@users.sourceforge.net)
* Copyright (c) 2000-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-02-07 14:06:11 +0000 (Wed, 07 Feb 2007) $
* Last Modified: $Date: 2007-12-10 07:52:00 +0000 (Mon, 10 Dec 2007) $
*
* Description:
*
@ -28,12 +28,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_swap.c 1613 2007-02-07 14:06:11Z hweiss $
* $Id: check_swap.c 1859 2007-12-10 07:52:00Z dermoth $
*
*****************************************************************************/
const char *progname = "check_swap";
const char *revision = "$Revision: 1613 $";
const char *revision = "$Revision: 1859 $";
const char *copyright = "2000-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -543,8 +543,7 @@ print_help (void)
printf (" %s\n", _("Exit with CRITCAL status if less than PERCENT of swap space is free"));
printf (" %s\n", "-a, --allswaps");
printf (" %s\n", _("Conduct comparisons for all swap partitions, one by one"));
printf (" %s\n", "-v, --verbose");
printf (" %s\n", _("Verbose output. Up to 3 levels"));
printf (_(UT_VERBOSE));
printf ("\n");
printf ("%s\n", _("Notes:"));
printf (" %s\n", _("On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s.\n"));

View file

@ -8,7 +8,7 @@
* 2004 Arnaud Quette <arnaud.quette@mgeups.com>
* Copyright (c) 2002-2006 nagios-plugins team
*
* Last Modified: $Date: 2007-05-09 10:16:33 +0100 (Wed, 09 May 2007) $
* Last Modified: $Date: 2007-10-25 21:43:04 +0100 (Thu, 25 Oct 2007) $
*
* Description:
*
@ -33,12 +33,12 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: check_ups.c 1709 2007-05-09 09:16:33Z psychotrahe $
* $Id: check_ups.c 1810 2007-10-25 20:43:04Z tonvoon $
*
******************************************************************************/
const char *progname = "check_ups";
const char *revision = "$Revision: 1709 $";
const char *revision = "$Revision: 1810 $";
const char *copyright = "2002-2006";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -598,7 +598,7 @@ print_help (void)
print_revision (progname, revision);
printf ("Copyright (c) 2000 Tom Shields");
printf ("Copyright (c) 2000 Tom Shields\n");
printf ("Copyright (c) 2004 Alain Richard <alain.richard@equation.fr>\n");
printf ("Copyright (c) 2004 Arnaud Quette <arnaud.quette@mgeups.com>\n");
printf (COPYRIGHT, copyright, email);

View file

@ -5,7 +5,7 @@
* License: GPL
* Copyright (c) 2002-2007 nagios-plugins team
*
* Last Modified: $Date: 2007-09-23 13:29:36 +0100 (Sun, 23 Sep 2007) $
* Last Modified: $Date: 2007-12-10 07:52:00 +0000 (Mon, 10 Dec 2007) $
*
* Description:
*
@ -29,7 +29,7 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
* $Id: negate.c 1793 2007-09-23 12:29:36Z psychotrahe $
* $Id: negate.c 1859 2007-12-10 07:52:00Z dermoth $
@@-<article>
@ -69,7 +69,7 @@
******************************************************************************/
const char *progname = "negate";
const char *revision = "$Revision: 1793 $";
const char *revision = "$Revision: 1859 $";
const char *copyright = "2002-2007";
const char *email = "nagiosplug-devel@lists.sourceforge.net";
@ -206,7 +206,7 @@ process_arguments (int argc, char **argv)
break;
case 'o': /* replacement for OK */
if ((state[STATE_OK] = translate_state(optarg)) == ERROR)
usage4 (_("Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-4)."));
usage4 (_("Ok must be a valid state name (OK, WARNING, CRITICAL, UNKNOWN) or integer (0-3)."));
permute = FALSE;
break;
@ -305,7 +305,7 @@ print_help (void)
printf (_(UT_HELP_VRSN));
printf (_(UT_TIMEOUT), DEFAULT_TIMEOUT);
printf (" %s\n", _("Keep timeout lower than the plugin timeout to retain CRITICAL status."));
printf (" %s\n", _("Keep timeout longer than the plugin timeout to retain CRITICAL status."));
printf(" -o,--ok=STATUS\n");
printf(" -w,--warning=STATUS\n");
@ -325,8 +325,8 @@ print_help (void)
printf ("%s\n", _("Notes:"));
printf ("%s\n", _("This plugin is a wrapper to take the output of another plugin and invert it."));
printf ("%s\n", _("The full path of the plugin must be provided."));
printf ("%s\n", _("If the wrapped plugin returns STATE_OK, the wrapper will return STATE_CRITICAL."));
printf ("%s\n", _("If the wrapped plugin returns STATE_CRITICAL, the wrapper will return STATE_OK."));
printf ("%s\n", _("If the wrapped plugin returns OK, the wrapper will return CRITICAL."));
printf ("%s\n", _("If the wrapped plugin returns CRITICAL, the wrapper will return OK."));
printf ("%s\n", _("Otherwise, the output state of the wrapped plugin is unchanged."));
printf (_(UT_SUPPORT));

View file

@ -2,7 +2,7 @@
#
# Load Average Tests via check_load
#
# $Id: check_load.t 1700 2007-04-25 22:10:13Z tonvoon $
# $Id: check_load.t 1851 2007-12-10 00:19:27Z psychotrahe $
#
use strict;
@ -11,10 +11,11 @@ use NPTest;
my $res;
my $successOutput = '/^OK - load average: [0-9]+\.?[0-9]+, [0-9]+\.?[0-9]+, [0-9]+\.?[0-9]+/';
my $failureOutput = '/^CRITICAL - load average: [0-9]+\.?[0-9]+, [0-9]+\.?[0-9]+, [0-9]+\.?[0-9]+/';
my $loadValue = "[0-9]+\.?[0-9]+";
my $successOutput = "/^OK - load average: $loadValue, $loadValue, $loadValue/";
my $failureOutput = "/^CRITICAL - load average: $loadValue, $loadValue, $loadValue/";
plan tests => 6;
plan tests => 11;
$res = NPTest->testCmd( "./check_load -w 100,100,100 -c 100,100,100" );
cmp_ok( $res->return_code, 'eq', 0, "load not over 100");
@ -28,3 +29,9 @@ $res = NPTest->testCmd( "./check_load -r -w 0,0,0 -c 0,0,0" );
cmp_ok( $res->return_code, 'eq', 2, "Load over 0 with per cpu division");
like( $res->output, $failureOutput, "Output OK");
$res = NPTest->testCmd( "./check_load -w 100 -c 100,110" );
cmp_ok( $res->return_code, 'eq', 0, "Plugin can handle non-triplet-arguments");
like( $res->output, $successOutput, "Output OK");
like( $res->perf_output, "/load1=$loadValue;100.000;100.000/", "Test handling of non triplet thresholds (load1)");
like( $res->perf_output, "/load5=$loadValue;100.000;110.000/", "Test handling of non triplet thresholds (load5)");
like( $res->perf_output, "/load15=$loadValue;100.000;110.000/", "Test handling of non triplet thresholds (load15)");

View file

@ -2,14 +2,17 @@
#
# Testing NTP
#
# $Id: check_ntp.t 1468 2006-08-14 08:42:23Z tonvoon $
# $Id: check_ntp.t 1865 2007-12-11 13:54:23Z dermoth $
#
use strict;
use Test::More;
use NPTest;
plan tests => 4;
my @PLUGINS1 = ('check_ntp', 'check_ntp_peer', 'check_ntp_time');
my @PLUGINS2 = ('check_ntp_peer');
plan tests => (12 * scalar(@PLUGINS1)) + (6 * scalar(@PLUGINS2));
my $res;
@ -25,33 +28,84 @@ my $host_nonresponsive = getTestParameter( "NP_HOST_NONRESPONSIVE",
"The hostname of system not responsive to network requests",
"10.0.0.1" );
my $hostname_invalid = getTestParameter( "NP_HOSTNAME_INVALID",
my $hostname_invalid = getTestParameter( "NP_HOSTNAME_INVALID",
"An invalid (not known to DNS) hostname",
"nosuchhost");
SKIP: {
skip "No NTP server defined", 1 unless $ntp_service;
my $ntp_okmatch1 = '/^NTP\sOK:\sOffset\s-?[0-9]+(\.[0-9]+)?(e-[0-9]{2})?\ssecs/';
my $ntp_warnmatch1 = '/^NTP\sWARNING:\sOffset\s-?[0-9]+(\.[0-9]+)?(e-[0-9]{2})?\ssecs/';
my $ntp_critmatch1 = '/^NTP\sCRITICAL:\sOffset\s-?[0-9]+(\.[0-9]+)?(e-[0-9]{2})?\ssecs/';
my $ntp_okmatch2 = '/^NTP\sOK:\sOffset\s-?[0-9]+(\.[0-9]+)?(e-[0-9]{2})?\ssecs,\sjitter=[0-9]+\.[0-9]+,\sstratum=[0-9]{1,2}/';
my $ntp_warnmatch2 = '/^NTP\sWARNING:\sOffset\s-?[0-9]+(\.[0-9]+)?(e-[0-9]{2})?\ssecs,\sjitter=[0-9]+\.[0-9]+,\sstratum=[0-9]{1,2}/';
my $ntp_critmatch2 = '/^NTP\sCRITICAL:\sOffset\s-?[0-9]+(\.[0-9]+)?(e-[0-9]{2})?\ssecs,\sjitter=[0-9]+\.[0-9]+,\sstratum=[0-9]{1,2}/';
my $ntp_noresponse = '/^(CRITICAL - Socket timeout after 3 seconds)|(NTP CRITICAL: No response from NTP server)$/';
my $ntp_nosuchhost = '/^check_ntp.*: Invalid hostname/address - ' . $hostname_invalid . '/';
foreach my $plugin (@PLUGINS1) {
SKIP: {
skip "No NTP server defined", 1 unless $ntp_service;
$res = NPTest->testCmd(
"./$plugin -H $ntp_service -w 1000 -c 2000"
);
cmp_ok( $res->return_code, '==', 0, "$plugin: Good NTP result (simple check)" );
like( $res->output, $ntp_okmatch1, "$plugin: Output match OK (simple check)" );
$res = NPTest->testCmd(
"./$plugin -H $ntp_service -w 1000: -c 2000"
);
cmp_ok( $res->return_code, '==', 1, "$plugin: Warning NTP result (simple check)" );
like( $res->output, $ntp_warnmatch1, "$plugin: Output match WARNING (simple check)" );
$res = NPTest->testCmd(
"./$plugin -H $ntp_service -w 1000 -c 2000:"
);
cmp_ok( $res->return_code, '==', 2, "$plugin: Critical NTP result (simple check)" );
like( $res->output, $ntp_critmatch1, "$plugin: Output match CRITICAL (simple check)" );
}
SKIP: {
skip "No bad NTP server defined", 1 unless $no_ntp_service;
$res = NPTest->testCmd(
"./$plugin -H $no_ntp_service -t 3"
);
cmp_ok( $res->return_code, '==', 2, "$plugin: No NTP service" );
like( $res->output, $ntp_noresponse, "$plugin: Output match no NTP service" );
}
$res = NPTest->testCmd(
"./check_ntp -H $ntp_service"
"./$plugin -H $host_nonresponsive -t 3"
);
cmp_ok( $res->return_code, '==', 0, "Got good NTP result");
cmp_ok( $res->return_code, '==', 2, "$plugin: Server not responding" );
like( $res->output, $ntp_noresponse, "$plugin: Output match non-responsive" );
$res = NPTest->testCmd(
"./$plugin -H $hostname_invalid"
);
cmp_ok( $res->return_code, '==', 3, "$plugin: Invalid hostname/address" );
like( $res->output, $ntp_nosuchhost, "$plugin: Output match invalid hostname/address" );
}
SKIP: {
skip "No bad NTP server defined", 1 unless $no_ntp_service;
$res = NPTest->testCmd(
"./check_ntp -H $no_ntp_service"
);
cmp_ok( $res->return_code, '==', 2, "Got bad NTP result");
foreach my $plugin (@PLUGINS2) {
SKIP: {
skip "No NTP server defined", 1 unless $ntp_service;
$res = NPTest->testCmd(
"./$plugin -H $ntp_service -w 1000 -c 2000 -W 20 -C 21 -j 100000 -k 200000"
);
cmp_ok( $res->return_code, '==', 0, "$plugin: Good NTP result with jitter and stratum check" );
like( $res->output, $ntp_okmatch2, "$plugin: Output match OK with jitter and stratum" );
$res = NPTest->testCmd(
"./$plugin -H $ntp_service -w 1000 -c 2000 -W \\~:-1 -C 21 -j 100000 -k 200000"
);
cmp_ok( $res->return_code, '==', 1, "$plugin: Warning NTP result with jitter and stratum check" );
like( $res->output, $ntp_warnmatch2, "$plugin: Output match WARNING with jitter and stratum" );
$res = NPTest->testCmd(
"./$plugin -H $ntp_service -w 1000 -c 2000 -W 20 -C 21 -j 100000 -k \\~:-1"
);
cmp_ok( $res->return_code, '==', 2, "$plugin: Critical NTP result with jitter and stratum check" );
like( $res->output, $ntp_critmatch2, "$plugin: Output match CRITICAL with jitter and stratum" );
}
}
$res = NPTest->testCmd(
"./check_ntp -H $host_nonresponsive"
);
cmp_ok( $res->return_code, '==', 2, "Got critical if server not responding");
$res = NPTest->testCmd(
"./check_ntp -H $hostname_invalid"
);
cmp_ok( $res->return_code, '==', 3, "Got critical if server hostname invalid");

View file

@ -8,8 +8,8 @@
* Copyright (c) 2006 Nagios Plugin Development Team
* License: GPL
*
* $Revision: 1752 $
* $Date: 2007-07-07 13:02:45 +0100 (Sat, 07 Jul 2007) $
* $Revision: 1829 $
* $Date: 2007-11-23 04:18:16 +0000 (Fri, 23 Nov 2007) $
****************************************************************************/
#define LOCAL_TIMEOUT_ALARM_HANDLER
@ -53,6 +53,33 @@ max_state (int a, int b)
return max (a, b);
}
/* **************************************************************************
* max_state_alt(STATE_x, STATE_y)
* compares STATE_x to STATE_y and returns result based on the following
* STATE_OK < STATE_DEPENDENT < STATE_UNKNOWN < STATE_WARNING < STATE_CRITICAL
*
* The main difference between max_state_alt and max_state it that it doesn't
* allow setting a default to UNKNOWN. It will instead prioritixe any valid
* non-OK state.
****************************************************************************/
int
max_state_alt (int a, int b)
{
if (a == STATE_CRITICAL || b == STATE_CRITICAL)
return STATE_CRITICAL;
else if (a == STATE_WARNING || b == STATE_WARNING)
return STATE_WARNING;
else if (a == STATE_UNKNOWN || b == STATE_UNKNOWN)
return STATE_UNKNOWN;
else if (a == STATE_DEPENDENT || b == STATE_DEPENDENT)
return STATE_DEPENDENT;
else if (a == STATE_OK || b == STATE_OK)
return STATE_OK;
else
return max (a, b);
}
void usage (const char *msg)
{
printf ("%s\n", msg);

View file

@ -18,7 +18,7 @@ suite of plugins. */
/* Standardize version information, termination */
/* $Id: utils.h 1590 2007-01-28 21:46:41Z hweiss $ */
/* $Id: utils.h 1829 2007-11-23 04:18:16Z dermoth $ */
void support (void);
char *clean_revstring (const char *);
@ -76,6 +76,7 @@ char *strpcpy (char *, const char *, const char *);
char *strpcat (char *, const char *, const char *);
int max_state (int a, int b);
int max_state_alt (int a, int b);
void usage (const char *) __attribute__((noreturn));
void usage2(const char *, const char *) __attribute__((noreturn));

View file

@ -1,4 +1,5 @@
plugins/check_by_ssh.c
plugins/check_cluster.c
plugins/check_dig.c
plugins/check_disk.c
plugins/check_dns.c
@ -15,6 +16,8 @@ plugins/check_mysql.c
plugins/check_nagios.c
plugins/check_nt.c
plugins/check_ntp.c
plugins/check_ntp_peer.c
plugins/check_ntp_time.c
plugins/check_nwstat.c
plugins/check_overcr.c
plugins/check_pgsql.c

BIN
po/de.gmo

Binary file not shown.

1041
po/de.po

File diff suppressed because it is too large Load diff

BIN
po/fr.gmo

Binary file not shown.

1361
po/fr.po

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -14,7 +14,7 @@ use Sys::Hostname;
use Cwd;
use Time::Local;
my $Version = '$Revision: 1767 $';
my $Version = '$Revision: 1866 $';
my $myhost = hostname;
chomp($myhost);
@ -266,8 +266,8 @@ sub make {
sub maketest {
# Tests
print LOG "LANG=C make test 2>&1\n";
open( MAKE, "LANG=C make test && make install DESTDIR=$TmpDir/tinderbox_build.$$ && make install-strip DESTDIR=$TmpDir/tinderbox_build2.$$ 2>&1 |");
print LOG "LANG=C make test-debug 2>&1\n";
open( MAKE, "LANG=C make test-debug && make install DESTDIR=$TmpDir/tinderbox_build.$$ && make install-strip DESTDIR=$TmpDir/tinderbox_build2.$$ 2>&1 |");
while ( <MAKE> ) {
print $_;
print LOG $_;