Author: glen                         Date: Tue Jun 26 09:22:07 2012 GMT
Module: packages                      Tag: HEAD
---- Log message:
- v1.1: support nsca 2.9 multiline

---- Files affected:
packages/nagios-ocpd:
   nagios-ocpd.spec (1.4 -> 1.5) , ocpd.init (1.5 -> 1.6) , ocpd.pl (1.4 -> 
1.5) 

---- Diffs:

================================================================
Index: packages/nagios-ocpd/nagios-ocpd.spec
diff -u packages/nagios-ocpd/nagios-ocpd.spec:1.4 
packages/nagios-ocpd/nagios-ocpd.spec:1.5
--- packages/nagios-ocpd/nagios-ocpd.spec:1.4   Tue Jun 26 10:51:25 2012
+++ packages/nagios-ocpd/nagios-ocpd.spec       Tue Jun 26 11:22:01 2012
@@ -2,7 +2,7 @@
 %include       /usr/lib/rpm/macros.perl
 Summary:       Obsessive Compulsive Host/Service Processor Daemon for Nagios
 Name:          nagios-ocpd
-Version:       1.0
+Version:       1.1
 Release:       1
 License:       GPL v2+
 Group:         Networking/Daemons
@@ -39,8 +39,7 @@
 %prep
 %setup -qcT
 install -p %{SOURCE0} .
-cp -a %{SOURCE1} .
-%{__sed} -i -e 's,/usr/local/nagios/bin/send_nsca,/usr/sbin/send_nsca,' ocpd.pl
+cp -p %{SOURCE1} .
 
 %build
 %{__perl} -c ocpd.pl
@@ -49,6 +48,7 @@
 rm -rf $RPM_BUILD_ROOT
 install -d $RPM_BUILD_ROOT{%{_libdir},%{_spooldir},/etc/rc.d/init.d}
 install -p ocpd.pl $RPM_BUILD_ROOT%{_libdir}/ocpd
+%{__sed} -i -e 's,/usr/local/nagios/bin/send_nsca,/usr/sbin/send_nsca,' 
$RPM_BUILD_ROOT%{_libdir}/ocpd
 touch $RPM_BUILD_ROOT%{_spooldir}/host-perfdata.fifo
 touch $RPM_BUILD_ROOT%{_spooldir}/service-perfdata.fifo
 install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/%{name}
@@ -87,6 +87,9 @@
 All persons listed below can be reached at <cvs_login>@pld-linux.org
 
 $Log$
+Revision 1.5  2012/06/26 09:22:01  glen
+- v1.1: support nsca 2.9 multiline
+
 Revision 1.4  2012/06/26 08:51:25  glen
 - default send_nsca path
 

================================================================
Index: packages/nagios-ocpd/ocpd.init
diff -u packages/nagios-ocpd/ocpd.init:1.5 packages/nagios-ocpd/ocpd.init:1.6
--- packages/nagios-ocpd/ocpd.init:1.5  Mon Oct 12 17:23:11 2009
+++ packages/nagios-ocpd/ocpd.init      Tue Jun 26 11:22:01 2012
@@ -165,6 +165,8 @@
        local nsca_host=$(awk '!/#/ { print }' $nsca_central_file)
        local hostfifo=$(awk -F= '/^host_perfdata_file=/{print $2}' $nagios_cfg)
        local servicefifo=$(awk -F= '/^service_perfdata_file=/{print $2}' 
$nagios_cfg)
+       local nsca_version=$($nsca | awk '/^NSCA Client/{ split($NF, v, /\./); 
printf("%d.%d\n", v[1], v[2]) }')
+       local nsca_multiline=$(awk -vv=$nsca_version 'BEGIN { if (v >= 2.9) 
print "-M" }')
 
        if [ ! -p "$hostfifo" ]; then
                mkfifo -m 600 "$hostfifo"
@@ -177,7 +179,7 @@
 
        # XXX daemon() can't do --user and --fork without start-stop-daemon
        export RC_LOGGING=no
-       daemon --user nagios --fork /usr/lib/nagios/ocpd -f 
$hostfifo,$servicefifo -n $nsca -H $nsca_host -c $nsca_cfg -r 1
+       daemon --user nagios --fork /usr/lib/nagios/ocpd -f 
$hostfifo,$servicefifo -n $nsca -H $nsca_host -c $nsca_cfg -r 1 $nsca_multiline
 
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nagios-ocpd
@@ -190,12 +192,16 @@
        local nsca_host=$(awk '!/#/ { print }' $nsca_central_file)
        local hostfifo=$(awk -F= '/^host_perfdata_file=/{print $2}' $nagios_cfg)
        local servicefifo=$(awk -F= '/^service_perfdata_file=/{print $2}' 
$nagios_cfg)
+       local nsca_version=$($nsca | awk '/^NSCA Client/{ split($NF, v, /\./); 
printf("%d.%d\n", v[1], v[2]) }')
+       local nsca_multiline=$(awk -vv=$nsca_version 'BEGIN { if (v >= 2.9) 
print "-M" }')
 
        echo "Host fifo: $hostfifo"
        echo "Service FIFO: $servicefifo"
        echo "send_nsca: $nsca"
        echo "NSCA Host: $nsca_host"
        echo "send_nsca config: $nsca_cfg"
+       echo "NSCA version: $nsca_version"
+       echo "NSCA multiline: $([ "$nsca_multiline" = "-M" ] && echo yes || 
echo no)"
 }
 
 stop() {

================================================================
Index: packages/nagios-ocpd/ocpd.pl
diff -u packages/nagios-ocpd/ocpd.pl:1.4 packages/nagios-ocpd/ocpd.pl:1.5
--- packages/nagios-ocpd/ocpd.pl:1.4    Tue Jun 26 11:05:01 2012
+++ packages/nagios-ocpd/ocpd.pl        Tue Jun 26 11:22:01 2012
@@ -4,6 +4,7 @@
 # Copyright (C) 2007 Thomas Guyot-Sionnest <[email protected]>
 # Original code Copyright (C) 2006, 2007 Mark Steele
 #       http://www.control-alt-del.org/code
+# Copyright (C) 2009-2012 Elan Ruusamäe <[email protected]>
 #
 # This program is free software; you can redistribute it and/or
 # modify it under the terms of the GNU General Public License
@@ -24,12 +25,12 @@
 use POSIX;
 use strict;
 use warnings;
-use vars qw($PROGNAME $VERSION $READ_SIZE $MAX_LINE_LENGTH $CHILD_TIMEOUT 
%args);
+use vars qw($PROGNAME $VERSION $READ_SIZE $MAX_LINE_LENGTH $CHILD_TIMEOUT 
$RESULT_SEPARATOR %args);
 
 #####################################################################
 #
 $PROGNAME = 'OCP_daemon';
-$VERSION = '1.0rc4';
+$VERSION = '1.1';
 #
 # Try to get that much data each read. Normally a named pipe
 # can't hold more that 4096 bytes.
@@ -42,12 +43,19 @@
 # updates on a very slow network you'll likely want to increase this.
 $CHILD_TIMEOUT = 60;
 #
+#
+# nsca 2.9 wants different result separator:
+# When submitting multiple simultaneous results, separate each set with the ETB
+# character (^W or 0x17)
+# use -M (multiline) argument to switch to 2.9 behaviour
+$RESULT_SEPARATOR = "";
+
 #####################################################################
 
 # Ignore HUPs in case we've been lazily started from the shell
 $SIG{HUP} = 'IGNORE';
 
-getopts("f:n:H:p:t:c:r:m:l:h", \%args);
+getopts("f:n:H:p:t:c:r:m:Ml:h", \%args);
 
 # Print usage if missing options or -h
 if (!$args{'f'} || !$args{'H'} || $args{'h'}) {
@@ -63,6 +71,7 @@
 my $reaper_delay = $args{'r'} || 1;
 my $max_queue = $args{'m'} || 0;
 my $log_file = $args{'l'} || undef;
+$RESULT_SEPARATOR = "\x17" if $args{'M'};
 
 # Construct send_nsca command
 my $nsca = $args{'n'} || '/usr/local/nagios/bin/send_nsca';
@@ -187,7 +196,7 @@
   # Be safe here...
   $data .= $buf;
   while (my $marker = index ($data, "\n") + 1) {
-    push (@queue, substr ($data, 0, $marker));
+    push (@queue, substr ($data, 0, $marker). $RESULT_SEPARATOR);
     $data = substr ($data, $marker);
 
     if ($max_queue && $max_queue <= @queue) {
@@ -234,6 +243,8 @@
 
   print "  -m <slots>\tMax queue size if reaper_delay is greater than 0\n";
   print "\t\tA flush will be forced if the queue reach this size\n\n";
+
+  print "  -M\t\tSwitch to multiline processing. Needs nsca 2.9\n";
 
   exit 1;
 }
================================================================

---- CVS-web:
    http://cvs.pld-linux.org/packages/nagios-ocpd/nagios-ocpd.spec?r1=1.4&r2=1.5
    http://cvs.pld-linux.org/packages/nagios-ocpd/ocpd.init?r1=1.5&r2=1.6
    http://cvs.pld-linux.org/packages/nagios-ocpd/ocpd.pl?r1=1.4&r2=1.5

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to