#!/usr/bin/php -q
<?php
# This script is a plugin which can be used in Nagios to check
# the status of Barracuda Spam and Virus firewalls.
# Copyright Mike Seigafuse and released under the GNU GPL
# See the README file included with this script for more details
# 
# Change the line below to match your environment.  Expected
# values are either 3 or 4
$cuda_firmware = "4"; 
#

$numbparams = sizeof($argv);
# should be 5
if ($numbparams < 5 ) {
        echo "Usage: check_cuda <host ip> <community string> <queue> <warn> <crit>\n";
	   if ($cuda_firmware == "3") {
        	echo "     Queue can be either in, out or bounce\n";
	   } elseif ($cuda_firmware == "4") {
		echo "     Queue can be either in, out, deferred or latency\n";
	   } else {
		echo "Please set a valid firmware version\n";
		exit;
	   }     
        echo "     Warning and Critical values should be positive integers\n";
        exit;
}
$host = $argv[1];
$cstring = $argv[2];
$checkqueue = strtoupper($argv[3]);
$warn = $argv[4];
$crit = $argv[5];

if ($cuda_firmware == 3) {
	$mailinqueue = "1.3.6.1.4.1.2021.8.1.101.1";
	$mailoutqueue = "1.3.6.1.4.1.2021.8.1.101.2";
	$mailbouncequeue = "1.3.6.1.4.1.2021.8.1.101.3";
} elseif ($cuda_firmware == 4) {
	$mailinqueue = "1.3.6.1.4.1.20632.2.2";
	$mailoutqueue = "1.3.6.1.4.1.20632.2.3";
	$maildeferredqueue = "1.3.6.1.4.1.20632.2.4";
	$maillatency = "1.3.6.1.4.1.20632.2.5";
} else {
	echo "Please set a valid firmware version\n";
	exit;
}

function getsnmpvalue($host, $cstring, $oid) {
     if ($valuestring = snmpget($host, $cstring, $oid)) {
     	$colpos = strpos($valuestring, ":");
     	$subvalue = trim(substr($valuestring, $colpos+1));
     	return $subvalue;
     } else {
        $format = '%s Critical - SNMP response timeout';
        printf($format);
        exit(2);
     }
}

# Ready set go, time to do the real work

if ($checkqueue == "IN") {
        $queuelen = getsnmpvalue($host, $cstring, $mailinqueue);
} elseif ($checkqueue == "OUT") {
         $queuelen = getsnmpvalue($host, $cstring, $mailoutqueue);
} elseif ($checkqueue == "BOUNCE") {
         $queuelen = getsnmpvalue($host, $cstring, $mailbouncequeue);
} elseif ($checkqueue == "DEFFERED") {
        $queuelen = getsnmpvalue($host, $cstring, $maildefferedqueue);
} elseif ($checkqueue == "LATENCY") {
         $queuelen = getsnmpvalue($host, $cstring, $mailoutqueue);
}
if ($queuelen < $warn) {
        $format = '%s OK - %d messages queued |Mail%sQueue=%d;%d;%d';
        printf($format, $checkqueue, $queuelen, $checkqueue, $queuelen, $warn, $crit);
        exit(0);
}
if (($queuelen > $warn) && ($queuelen < $crit)) {
        $format = '%s Warning - %d messages queued |Mail%sQueue=%d;%d;%d';
        printf($format, $checkqueue, $queuelen, $checkqueue, $queuelen, $warn, $crit);
        exit(1);
}
if ($queuelen > $crit) {
        $format = '%s Critical - %d messages queued |Mail%sQueue=%d;%d;%d';
        printf($format, $checkqueue, $queuelen, $checkqueue, $queuelen, $warn, $crit);
        exit(2);
}
?>
