Вход Регистрация
Файл: inc/tools/whois_checker/lib/whois.ip.php
Строк: 268
<?php
/*
Whois.php        PHP classes to conduct whois queries

Copyright (C)1999,2005 easyDNS Technologies Inc. & Mark Jeftovic

Maintained by David Saez (david@ols.es)

For the most recent version of this package visit:

http://www.phpwhois.org

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 */

/* ipw.whois    1.00    David Saez 12/07/2001 */
/*              1.01    David Saez 06/07/2002  Added support for */
/*                      BRNIC, KRNIC, TWNIC and LACNIC */

/* Check with 218.165.121.114 (apnic)  */
/*            62.97.102.115   (ripe)   */
/*            207.217.120.54  (arin)   */
/*            200.165.206.74  (brnic)  */
/*            210.178.148.129 (krnic)  */
/*              200.44.33.31    (lacnic) */

if (!defined('__IP_HANDLER__'))
    
define('__IP_HANDLER__'1);

require_once(
'whois.ip.lib.php');

class 
ip_handler extends WhoisClient
    
{
    
// Deep whois ?
    
var $deep_whois true;
    
    var 
$HANDLER_VERSION '1.0';

    var 
$REGISTRARS = array(
                        
'European Regional Internet Registry/RIPE NCC' =>    'whois.ripe.net',
                        
'RIPE Network Coordination Centre' => 'whois.ripe.net',
                        
'Asia Pacific Network Information    Center' => 'whois.apnic.net',
                        
'Asia Pacific Network Information Centre' => 'whois.apnic.net',
                        
'Latin American and Caribbean IP address Regional Registry'    => 'whois.lacnic.net',
                        
'African Network Information Center' => 'whois.afrinic.net'
                         
);

    var 
$HANDLERS = array(
                        
'whois.krnic.net' => 'krnic',
                        
'whois.apnic.net' => 'apnic',
                        
'whois.ripe.net' => 'ripe',
                        
'whois.arin.net' =>    'arin',
                        
'whois.registro.br' => 'bripw',
                        
'whois.lacnic.net' => 'lacnic',
                        
'whois.afrinic.net' => 'afrinic'
                         
);

    function 
parse($data$query)
        {
        
$result['regrinfo'] = array();
        
$result['regyinfo'] = array();
        
$result['regyinfo']['registrar'] = 'American Registry for Internet Numbers (ARIN)';
        
$result['rawdata'] = array();
        
        if (!
$this->deep_whois) return null;

        
$this->Query = array();
        
$this->Query['server'] = 'whois.arin.net';
        
$this->Query['string'] = $query;

        
reset($this->REGISTRARS);

        
$rawdata $data['rawdata'];
        
$orgname trim($rawdata[0]);

        if (
$orgname == '')
            
$orgname trim($rawdata[1]);

        while (list(
$string$whois) = each($this->REGISTRARS))
            if (
strstr($orgname$string) != '')
                {
                
$this->Query['server'] = $whois;
                
$result['regyinfo']['registrar'] = $string;
                break;
                }

        
// More queries to get more accurated data
        
$more_data = array();
        
        switch (
$this->Query['server'])
            {
            case 
'whois.apnic.net':
                
$rawdata $this->GetData($query);
                
                if (!isset(
$rawdata['rawdata']))
                    {
                    
$rawdata $data['rawdata'];
                    break;
                    }
                    
                
$rawdata $rawdata['rawdata'];

                while (list(
$ln$line) = each($rawdata))
                    {
                    if (
strstr($line'KRNIC whois server at whois.krnic.net') ||
                        
strstr($line'KRNIC-KR'))
                        {
                        
$this->Query['server'] = 'whois.krnic.net';
                        
$result['regyinfo']['registrar'] = 'Korea Network Information Center (KRNIC)';
                        
$rawdata $this->GetData($query);
                        
$rawdata $rawdata['rawdata'];
                        break;
                        }
                    }
                break;

            case 
'whois.arin.net':
                
$newquery '';

                while (list(
$ln$line) = each($rawdata))
                    {
                    
$s strstr($line'(NETBLK-');
                    
                    if (
$s == '')
                        
$s strstr($line'(NET-');
                        
                    if (
$s != '')
                        {
                        
$netname substr(strtok($s') '), 1);
                        
                        if (
$newquery == '')
                            
$newquery $netname;
                        else
                            
$more_data[] = array (
                                                
'query' => '!'.$netname,
                                                
'server' => 'whois.arin.net',
                                                
'handler' => 'arin'
                                                
);
                        }
                    }

                if (
$newquery != '')
                    {
                    
$result['regyinfo']['netname'] = $newquery;

                    if (
strstr($newquery'BRAZIL-BLK'))
                        {
                        
$this->Query['server'] = 'whois.registro.br';
                        
$result['regyinfo']['registrar'] = 'Comite Gestor da Internet no Brasil';
                        
$rawdata $this->GetData($query);
                        
$rawdata $rawdata['rawdata'];
                        break;
                        }

                    
$rawdata $this->GetData('!'.$newquery);
                    
$rawdata $rawdata['rawdata'];
                    }
                    
                break;

            case 
'whois.lacnic.net':
                
$rawdata $this->GetData($query);
                
                if (!isset(
$rawdata['rawdata']))
                    {
                    
$rawdata $data['rawdata'];
                    break;
                    }
                    
                
$rawdata $rawdata['rawdata'];

                while (list(
$ln$line) = each($rawdata))
                    {
                    
$s strstr($line'at whois.registro.br or ');
                    
                    if (
$s == '')
                        
$s strstr($line'Copyright registro.br');
                        
                    if (
$s != '')
                        {
                        
$this->Query['server'] = 'whois.registro.br';
                        
$result['regyinfo']['registrar'] = 'Comite Gestor da Internet do Brazil';
                        
$rawdata $this->GetData($query);
                        
$rawdata $rawdata['rawdata'];
                        break;
                        }
                    }
                break;

            case 
'whois.ripe.net':
                
$rawdata $this->GetData($query);
                
                if (!isset(
$rawdata['rawdata']))
                    {
                    
$rawdata $data['rawdata'];
                    break;
                    }
                    
                
$rawdata $rawdata['rawdata'];

                while (list(
$ln$line) = each($rawdata))
                    {
                    if (
strstr($line'AFRINIC-NET-TRANSFERRED-'))
                        {
                        
$this->Query['server'] = 'whois.afrinic.net';
                        
$result['regyinfo']['registrar'] = 'African Network Information Center';
                        
$rawdata $this->GetData($query);
                        
$rawdata $rawdata['rawdata'];
                        break;
                        }
                    }
                break;
                
            default:
                
$rawdata $this->GetData($query);
                
                if (isset(
$rawdata['rawdata']))
                    
$rawdata $rawdata['rawdata'];
                else
                    
$rawdata $data['rawdata'];
            }

        
$result['rawdata'] = $rawdata;        
        
$result['regyinfo']['whois'] = $this->Query['server'];

        if (isset(
$this->HANDLERS[$this->Query['server']]))
            
$this->Query['handler'] = $this->HANDLERS[$this->Query['server']];

        if (!empty(
$this->Query['handler']))
            {
            
$this->Query['file'] = sprintf('whois.ip.%s.php'$this->Query['handler']);
            
$result['regrinfo'] = $this->Process($result['rawdata']);
            }

        
// Arrange inetnum/cdir
        
        
if (isset($result['regrinfo']['network']['inetnum']) && strpos($result['regrinfo']['network']['inetnum'], '/') != false)
            {
            
//Convert CDIR to inetnum
            
$result['regrinfo']['network']['cdir'] = $result['regrinfo']['network']['inetnum'];
            
$result['regrinfo']['network']['inetnum'] = cidr_conv($result['regrinfo']['network']['cdir']);
            }

        if (!isset(
$result['regrinfo']['network']['inetnum']) && isset($result['regrinfo']['network']['cdir']))
            {
            
//Convert CDIR to inetnum
            
$result['regrinfo']['network']['inetnum'] = cidr_conv($result['regrinfo']['network']['cdir']);
            }

        
// Try to find abuse email address
        
        
if (!isset($result['regrinfo']['abuse']['email']))
            {
            
reset($result['rawdata']);

            while (list(
$key$line) = each($result['rawdata']))
                {
                
$email_regex "/([-_w.]+)(@)([-_w.]+)b/i";
                                
                if (
strpos($line,'abuse') !== false && preg_match($email_regex,$line,$matches)>0)
                    {
                    
$result['regrinfo']['abuse']['email'] = $matches[0];
                    break;
                    }
                }
            }
            
        
//Check if Referral rwhois server has been reported

        
if (isset($result['regrinfo']['rwhois']))
            {
            
$more_data[] = array (
                                    
'query' => $query,
                                    
'server' => $result['regrinfo']['rwhois'],
                                    
'handler' => 'rwhois'
                                    
);
            
$result['regyinfo']['rwhois'] = $result['regrinfo']['rwhois'];
            unset(
$result['regrinfo']['rwhois']);
            }
            
        
// more queries can be done to get more accurated data

        
foreach ($more_data as $srv_data)        
            {            
            
$this->Query['server'] = $srv_data['server'];
            unset(
$this->Query['handler']);            
            
$rwdata $this->GetData($srv_data['query']);

            if (!empty(
$rwdata))
                {
                
// Merge rawdata results
                
$result['rawdata'][] = '';
                
                foreach (
$rwdata['rawdata'] as $line)
                    
$result['rawdata'][] = $line;
                
                
$this->Query['handler'] = $srv_data['handler'];
                
$this->Query['file'] = 'whois.'.$this->Query['handler'].'.php';
                
$rwres $this->Process($rwdata['rawdata']);
                
                if (isset(
$rwres['network']))
                    
$result['regrinfo']['network'] = $rwres['network'];
                    
                if (isset(
$rwres['owner']))
                    {
                    if (!isset(
$result['regrinfo']['provider']))
                        
$result['regrinfo']['provider'] = $result['regrinfo']['owner'];
                    
$result['regrinfo']['owner'] = $rwres['owner'];
                    }
                    
                if (isset(
$rwres['tech']))
                    {
                    
$result['regrinfo']['tech'] = $rwres['tech'];
                    }                

                if (isset(
$rwres['abuse']))
                    {
                    
$result['regrinfo']['abuse'] = $rwres['abuse'];
                    }
                }
            }

        
// IP or AS ?
        
        
if (isset($result['regrinfo']['AS']))
            
$result['regyinfo']['type'] = 'AS';
        else
            
$result['regyinfo']['type'] = 'ip';
            
        return 
$result;
        }
    }
?>
Онлайн: 1
Реклама