2010-06-13 18:27:38 +00:00
#!/usr/bin/php
< ? php
include ( " includes/defaults.inc.php " );
include ( " config.php " );
include ( " includes/functions.php " );
include ( " includes/discovery/functions.inc.php " );
include_once ( 'Net/SmartIRC.php' );
2010-07-10 12:17:58 +00:00
class observernmsbot
2010-06-13 18:27:38 +00:00
{
function device_info ( & $irc , & $data )
{
$hostname = $data -> 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 " ;
2010-07-10 12:17:58 +00:00
$bot = & new observernmsbot ( );
2010-06-13 18:27:38 +00:00
$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 ( );
?>