cvs: pearbot / PEARbot.php

From: Date: Sun, 27 Apr 2003 20:20:23 +0000
Subject: cvs: pearbot / PEARbot.php
Groups: php.pear.bot 
Request: Send a blank email to pear-bot+get-10@lists.php.net to get a copy of this message
meebey Sun Apr 27 16:20:23 2003 EDT Modified files: /pearbot PEARbot.php Log: - added !who command. - modified verify() to return username instead of true. Index: pearbot/PEARbot.php diff -u pearbot/PEARbot.php:1.5 pearbot/PEARbot.php:1.6 --- pearbot/PEARbot.php:1.5 Mon Feb 3 10:58:26 2003 +++ pearbot/PEARbot.php Sun Apr 27 16:20:23 2003 @@ -1,7 +1,7 @@ -#!/home/meebey/PEARbot/php +#!/home/meebey/php <?php /** - * $Id: PEARbot.php,v 1.5 2003/02/03 15:58:26 meebey Exp $ + * $Id: PEARbot.php,v 1.6 2003/04/27 20:20:23 meebey Exp $ * * PEARbot * this is an IRC service bot for #pear written in PHP @@ -49,6 +49,47 @@ class CPEARbot { + function nick2pearusername(&$irc, $nickname) + { + $query = "SELECT pearusername FROM dnsentries WHERE nickname='".$nickname."'"; + $result = dbquery($query); + $row = mysql_fetch_array($result); + return $row['pearusername']; + } + + function reverseverify(&$irc, $host, $nick) + { + $query = "SELECT nickname,dnsalias FROM dnsentries"; + $result = dbquery($query); + + $list = array(); + $foundnick = false; + $userip = gethostbyname($host); + while ($row = mysql_fetch_array($result)) { + $dbip = gethostbyname($row['dnsalias']); + $dbnickname = $row['nickname']; + + if ($userip == $dbip) { + if ($dbnickname != $nick) { + $foundnick = $dbnickname; + } + + break; + } + } + + if ($foundnick !== false) { + $result = $this->verify($irc, $foundnick, $nick); + } else { + $result = $this->verify($irc, $nick); + } + + if ($result !== false) + return $result; + else + return false; + } + function verify(&$irc, $nickname, $ircnickname = null) { $who = $nickname; @@ -76,12 +117,13 @@ $dnsaliasip = gethostbyname($row['dnsalias']); if ($dnsaliasip == $ip) { - return true; + return $row['nickname']; } } - return false; } + + return false; } } @@ -92,37 +134,36 @@ return; if ($data->channel == '#pear') { - $query = "SELECT nickname,dnsalias FROM dnsentries"; - $result = dbquery($query); - - $list = array(); - $foundnick = false; - $userip = gethostbyname($data->host); - while ($row = mysql_fetch_array($result)) { - $dbip = gethostbyname($row['dnsalias']); - $dbnickname = $row['nickname']; - - if ($userip == $dbip) { - if ($dbnickname != $data->nick) { - $foundnick = $dbnickname; - } - - break; - } - } + $result = $this->reverseverify($irc, $data->host, $data->nick); - - if ($foundnick !== false) { - $result = $this->verify($irc, $foundnick, $data->nick); - } else { - $result = $this->verify($irc, $data->nick); - } - - if ($result === true) { + if ($result !== false) { $irc->op('#pear', $data->nick); } } } + + function packagelist() + { + } + + function who(&$irc, &$data) + { + $requester = $data->nick; + $lookupfor = $data->messageex[1]; + $lowerlookupfor = strtolower($data->messageex[1]); + + if (isset($irc->channel['#pear']->users[$lowerlookupfor])) { + $host = $irc->channel['#pear']->users[$lowerlookupfor]->host; + } else { + $irc->message(SMARTIRC_TYPE_CHANNEL, '#pear', $requester.": ".$lookupfor." is not in this channel"); + return; + } + + $result = $this->reverseverify($irc, $host, $lookupfor); + + if ($result !== false) + $irc->message(SMARTIRC_TYPE_CHANNEL, '#pear', $requester.": ".$lookupfor." is ".$result); + } } $bot = &new CPEARbot(); @@ -137,9 +178,10 @@ $irc->setReceiveTimeout(600); $irc->setTransmitTimeout(600); $irc->registerActionhandler(SMARTIRC_TYPE_JOIN, '.*', $bot, 'onjoin'); +$irc->registerActionhandler(SMARTIRC_TYPE_CHANNEL|SMARTIRC_TYPE_QUERY, '^!who ', $bot, 'who'); $irc->connect('efnet.skynet.be', 6668); $irc->login($config['nick'], $config['real_name'], 8, $config['ident']); $irc->join('#pear'); $irc->listen(); $irc->disconnect(); -?> +?> \ No newline at end of file

« previous php.pear.bot (#10) next »