Вход Регистрация
Файл: library/XenForo/DnsBl.php
Строк: 61
<?php

class XenForo_DnsBl
{
    protected 
$_host;

    public function 
__construct($host)
    {
        
$this->_host $host;
    }

    public function 
checkIp($ip)
    {
        
$parts explode('.'trim($ip));
        if (
count($parts) != 4)
        {
            return 
false;
        }

        
$parts array_map('intval'$parts);
        
$parts array_reverse($parts);

        
$query sprintf($this->_hostimplode('.'$parts));

        
$result gethostbyname($query);
        if (!
$result)
        {
            return 
false;
        }

        if (
$result === $query)
        {
            
// not found
            
return false;
        }

        
$resultParts explode('.'$result);
        if (
count($resultParts) < 4)
        {
            return 
false;
        }

        return 
$resultParts;
    }

    public static function 
getFinalOctetIf($resultParts$part0 '127'$part1 '0'$part2 '0')
    {
        if (!
is_array($resultParts) || count($resultParts) != 4)
        {
            return 
false;
        }

        if (
$resultParts[0] == $part0 && $resultParts[1] == $part1 && $resultParts[2] == $part2)
        {
            return 
intval($resultParts[3]);
        }
        else
        {
            return 
false;
        }
    }

    public static function 
checkSpamhaus($ip)
    {
        
$dnsBl = new self('%s.zen.spamhaus.org');
        
$result self::getFinalOctetIf($dnsBl->checkIp($ip));

        
// on the SBL or XBL
        
return ($result && $result >= && $result <= 7);
    }

    public static function 
checkTornevall($ip)
    {
        
$dnsBl = new self('%s.dnsbl.tornevall.org');
        
$result self::getFinalOctetIf($dnsBl->checkIp($ip));

        
// bitmask 64 is abusive
        
return ($result && $result 64);
    }

    public static function 
checkProjectHoneyPot($ip$key$minThreatLevel 10$dateCutOff 31)
    {
        
$dnsBl = new self($key '.%s.dnsbl.httpbl.org');
        
$result $dnsBl->checkIp($ip);
        if (!
$result)
        {
            return 
false;
        }

        return (
$result[0] == '127'
            
&& intval($result[1]) <= $dateCutOff
            
&& intval($result[2]) >= $minThreatLevel
            
&& intval($result[3])
        );
    }
}
Онлайн: 0
Реклама