From 7b2fc6783782dba7d03ee61df1419480eaf6267b Mon Sep 17 00:00:00 2001 From: Adam Amstrong Date: Sun, 13 Jun 2010 18:27:38 +0000 Subject: [PATCH] prototype irc bot! :D :D :D :D :D :D git-svn-id: http://www.observium.org/svn/observer/trunk@1162 61d68cd4-352d-0410-923a-c4978735b2b8 --- includes/defaults.inc.php | 6 ++++ irc.php | 68 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100755 irc.php diff --git a/includes/defaults.inc.php b/includes/defaults.inc.php index b9961f704..00e5225af 100644 --- a/includes/defaults.inc.php +++ b/includes/defaults.inc.php @@ -33,6 +33,12 @@ $config['syslog_age'] = "1 month"; $config['timestamp_format'] = 'd-m-Y H:i:s'; $config['page_gen'] = 1; +### Alerting Settings + +#$config['alert']['email']]'default'] = NULL; ## Default alert recipient +#$config['alert']['email']['default_only'] = FALSE; ## Only use default recipient +#$config['alert']['email']['enable'] = TRUE; ## Enable email alerts + ### Cosmetics $config['rrdgraph_def_text'] = " -c BACK#EEEEEE00 -c SHADEA#EEEEEE00 -c SHADEB#EEEEEE00 -c FONT#000000 -c CANVAS#FFFFFF -c GRID#a5a5a5"; diff --git a/irc.php b/irc.php new file mode 100755 index 000000000..20c776c52 --- /dev/null +++ b/irc.php @@ -0,0 +1,68 @@ +#!/usr/bin/php +messageex[1]; + + $device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE `hostname` = '".mres($hostname)."'")); + + if($device['status'] == 1) { $status = "Up " . formatUptime($device['uptime'] . " "); } else { $status = "Down "; } + if($device['ignore']) { $status = "*Ignored*"; } + if($device['disabled']) { $status = "*Disabled*"; } + + $irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'id'.$device['device_id'] . " " . $device['os'] . " " . $device['version'] . " " . + $device['features'] . " " . $status); + + } + + function port_info (&$irc, &$data) + { + + $hostname = $data->messageex[1]; + $ifname = $data->messageex[2]; + + $device = mysql_fetch_array(mysql_query("SELECT * FROM `devices` WHERE `hostname` = '".mres($hostname)."'")); + $port = mysql_fetch_Array(mysql_query("SELECT * FROM `ports` WHERE `ifName` = '".$ifname."' OR `ifDescr` = '".$ifname."' AND device_id = '".$device['device_id']."'")); + + $bps_in = formatRates($port['ifInOctets_rate']); + $bps_out = formatRates($port['ifOutOctets_rate']); + $pps_in = format_bi($port['ifInUcastPkts_rate']); + $pps_out = format_bi($port['ifOutUcastPkts_rate']); + + $irc->message(SMARTIRC_TYPE_CHANNEL, $data->channel, 'id' . $port['interface_id'] . " " . $port['ifAdminStatus'] . "/" . $port['ifOperStatus'] . " " . + $bps_in. " > BPS > " . $bps_out . " | " . $pps_in. "pps > PPS > " . $pps_out ."pps"); + + } +} + +$host = "chat.eu.freenode.net"; +$port = 6667; +$nick = "ObserverBOT"; +$chan = "#observernms"; + +$bot = &new observerbot( ); +$irc = &new Net_SmartIRC( ); +$irc->setUseSockets( TRUE ); + +$irc->registerActionhandler( SMARTIRC_TYPE_CHANNEL, '!device', $bot, 'device_info' ); +$irc->registerActionhandler( SMARTIRC_TYPE_CHANNEL, '!port', $bot, 'port_info' ); + +$irc->connect( $host, $port ); +$irc->login( $nick, 'ObserverNMS Bot', 0, $nick ); +$irc->join( array( $chan ) ); +$irc->listen( ); +$irc->disconnect( ); + +?>