From: pk910 Date: Sun, 27 May 2012 16:01:40 +0000 (+0200) Subject: added setServerAddr and isServerAddr to IPAddr.class.php to identify users connecting... X-Git-Url: http://git.pk910.de/?p=PHP-P10.git;a=commitdiff_plain;h=cba81599e819e50231c50c531cca7964667a8b0e added setServerAddr and isServerAddr to IPAddr.class.php to identify users connecting to the local server via it's public IP (also added $serverAddr parameter to isLocalAddress) --- diff --git a/Bots/Stats.class.php b/Bots/Stats.class.php index 4fc06a2..df3db8c 100644 --- a/Bots/Stats.class.php +++ b/Bots/Stats.class.php @@ -146,7 +146,7 @@ class {$_NAME} extends Bot { if($user->isAway()) $stats['away']++; else $stats['here']++; if($user->getModes()->hasMode('o')) $stats['opers']++; - if($user->getIP()->isLocalAddress()) $stats['local']++; + if($user->getIP()->isLocalAddress(true)) $stats['local']++; if($user->getIP()->isIPv6()) $stats['ipv6']++; else $stats['ipv4']++; } diff --git a/Uplink/IPAddr.class.php b/Uplink/IPAddr.class.php index 2370cf6..b1912e8 100644 --- a/Uplink/IPAddr.class.php +++ b/Uplink/IPAddr.class.php @@ -28,6 +28,7 @@ class IPAddr { private static $pattern_IPv4 = '/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}(|\/[0-9]{1,2})$/'; private $ip6 = array(); private $addr_is_ipv6 = false; + private $is_server_addr = false; public function __construct($initial_value) { for($i = 0; $i < 8; $i++) { @@ -97,7 +98,15 @@ class IPAddr { return $this->addr_is_ipv6; } - public function isLocalAddress() { + public function setServerAddr($serverAddr) { + $this->is_server_addr = $serverAddr; + } + + public function isServerAddr() { + return $this->is_server_addr; + } + + public function isLocalAddress($serverAddr = false) { /* checks if address is out of: * 127.0.0.1/32 * 10.0.0.0/8 @@ -105,6 +114,8 @@ class IPAddr { * 172.16.0.0/12 * ::1/128 * fc00::/7 + * + * if $serverAddr is true also return true for server IP's */ if($this->addr_is_ipv6) { if( @@ -122,6 +133,8 @@ class IPAddr { ) return true; } + if($serverAddr && $this->is_server_addr) + return true; return false; } diff --git a/Uplink/Uplink.class.php b/Uplink/Uplink.class.php index 6465a98..bef5d05 100644 --- a/Uplink/Uplink.class.php +++ b/Uplink/Uplink.class.php @@ -374,6 +374,8 @@ class Uplink { $modes = implode(" ",array_slice($args, 5, count($args)-8)); $modes = new P10_UserModeSet($modes); $ip = new IPAddr($args[count($args)-3]); + if($host == $server->getName()) + $ip->setServerAddr(true); $realname = $args[count($args)-1]; $user = new P10_User($nick, $numeric, $server, $connect_time, $ident, $host, $ip, $realname, $modes); if($this->eventHandler)