package.xml 0000644 0001750 0001750 00000013447 11620526402 012570 0 ustar kguest kguest
Net_Whoispear.php.netThe PEAR::Net_Whois class provides a tool to query internet domain name and network number directory servicesThe PEAR::Net_Whois looks up records in the databases maintained by several Network Information Centers (NICs).Seamus Venassesvenassesvenasse@gmail.comyesKen Guestkguestken@linux.ieyes2011-08-101.0.51.0.3stablestablePHP
* Fix Bug #18005: Whois Server: not defined. [kguest]
* Fix Bug #18699: Net_Whois does not return results for .de domains. [kguest]
4.0.01.4.0b1Net_Socketpear.php.net1.01.0stablestable2008-12-20PHP
Bug #579 Net_Whois fails
Bug #1301 Not "optimized" in a call to PEAR_ERROR
Bug #1304 Syntax error in line 165
Bug #2052 Syntax error in line 248 & 249
Bug #2053 Syntax error in line 264
Bug #4859 DB_FETCHMODE_ASSOC and CaseSensitiveField
Bug #6348 Using = before domain name hangs ?
Bug #14799 Improve PHPCS results
1.0.11.0stablestable2008-12-20PHP
Bug #579 Net_Whois fails
Bug #1301 Not "optimized" in a call to PEAR_ERROR
Bug #1304 Syntax error in line 165
Bug #2052 Syntax error in line 248 & 249
Bug #2053 Syntax error in line 264
Bug #4859 DB_FETCHMODE_ASSOC and CaseSensitiveField
Bug #6348 Using = before domain name hangs ?
Bug #14799 Improve PHPCS results
1.0.23stablestable2009-11-06PHP
Request #16763 authoritative info only: do not have server names included in output
1.0.41.0.3stablestable2010-07-25PHP
* Fix Bug #17443: Tarball distribute files dated in 1970 [kguest]
* Fix Bug #17476: [test.com] Undefined index: server [kguest]
* Fix Bug #17480: Query for co.za multiple errors [kguest]
* Fix Bug #17493: Remove whois.nic.mil and .mil supprt [kguest]
* Fix Bug #17496: $_nicServers should be FQDN [kguest]
* Fix Bug #17498: PHP Version [kguest]
* Fix Bug #17540: GNICHOST is redundant [kguest]
* Fix Bug #17541: construct cleanup [kguest]
* Fix Bug #17564: regex too strict for authoritative lookups [kguest]
* Fix Bug #17569: ReferralServer support [kguest]
* Fix Bug #17571: Fix E_STRICT error in _chooseServer [kguest]
* Fix Bug #17614: Notice: Undefined variable: domain in .../Whois.php on line 362 [kguest]
* Fix Bug #17615: looping bug with domains on the "whois.tucows.com" whois server. [kguest]
* Implement Feature #17449: Please, consider realising under PHP 3.01 license [kguest]
1.0.51.0.3stablestable2010-08-10PHP
* Fix Bug #18005: Whois Server: not defined. [kguest]
* Fix Bug #18699: Net_Whois does not return results for .de domains. [kguest]
Net_Whois-1.0.5/tests/test.php 0000644 0001750 0001750 00000000133 11620526402 015627 0 ustar kguest kguest query ("linux.ie");
?>
Net_Whois-1.0.5/tests/test2.php 0000644 0001750 0001750 00000000370 11620526402 015714 0 ustar kguest kguest
query($query, $server);
echo $data;
?>
Net_Whois-1.0.5/tests/test6348.php 0000644 0001750 0001750 00000000237 11620526402 016161 0 ustar kguest kguest query("=THIS-DOMAIN-FOR-SALE.COM",
"com.whois-servers.net");
echo nl2br($data);
?>
Net_Whois-1.0.5/tests/test17476.php 0000644 0001750 0001750 00000001566 11620526402 016253 0 ustar kguest kguest
* @license GPL (see http://www.gnu.org/licenses/gpl.txt)
* @version CVS:
* @link test17476.php
* @todo
*/
?>
setAuthoritative(1);
} elseif ($tld=='name') {
$q='domain = '.$q;
}
$data=htmlspecialchars($whois->query($q,$s));
echo "
$data
";
}
?>
Net_Whois-1.0.5/tests/testza.php 0000644 0001750 0001750 00000000137 11620526402 016166 0 ustar kguest kguest query ('ananzi.co.za');
?>
Net_Whois-1.0.5/tests/test_authoritative.php 0000644 0001750 0001750 00000000172 11620526402 020602 0 ustar kguest kguest authoritative = true;
echo $nw->query ("facebook.com");
?>
Net_Whois-1.0.5/tests/test_mult.php 0000644 0001750 0001750 00000000137 11620526402 016674 0 ustar kguest kguest query ("facebook.com");
?>
Net_Whois-1.0.5/Whois.php 0000644 0001750 0001750 00000032024 11620526402 014603 0 ustar kguest kguest
* @copyright 1997-2003 The PHP Group
* @copyright 1980-1993 The Regents of the University of California (Portions)
* @license http://www.php.net/license/3_01.txt PHP 3.01
* @version CVS: $Id: Whois.php 314693 2011-08-10 00:31:45Z kguest $
* @link http://pear.php.net/package/Net_Whois
*/
require_once 'PEAR.php';
/**
* Looks up records in the databases maintained by several Network Information
* Centres (NICs). This class uses PEAR's Net_Socket:: class.
*
* @category Net
* @package Net_Whois
* @author Seamus Venasse
* @license http://www.php.net/license/3_01.txt PHP 3.01
* @link http://pear.php.net/package/Net_Whois
*/
class Net_Whois extends PEAR
{
// {{{ properties
/**
* Retrieve authoritative definition only
*
* @var boolean
* @access public
*/
var $authoritative = false;
/**
* Port for whois servers
*
* @var int
* @access public
*/
var $port = 43;
/**
* See options for stream_context_create.
*
* @param array
* @access public
*/
var $options = null;
/**
* List of NICs to query
*
* @var array
* @access private
*/
var $_nicServers = array (
'NICHOST' => 'whois.crsnic.net.',
'INICHOST' => 'whois.networksolutions.com.',
'GNICHOST' => 'whois.nic.gov.',
'ANICHOST' => 'whois.arin.net.',
'RNICHOST' => 'whois.ripe.net.',
'PNICHOST' => 'whois.apnic.net.',
'RUNICHOST' => 'whois.ripn.net.',
'MNICHOST' => 'whois.ra.net.',
'QNICHOST_TAIL' => '.whois-servers.net.',
'SNICHOST' => 'whois.6bone.net.',
'BNICHOST' => 'whois.registro.br.'
);
/**
* Search string of server to search on
*
* @var string
* @access private
*/
var $_whoisServerID = 'Whois Server: ';
/**
* Server to search for IP address lookups
*
* @var array
* @access private
*/
var $_ipNicServers = array ('RNICHOST', 'PNICHOST', 'BNICHOST');
/**
* List of error codes and text
*
* @var array
* @access private
*/
var $_errorCodes = array (
010 => 'Unable to create a socket object',
011 => 'Unable to open socket',
012 => 'Write to socket failed',
013 => 'Read from socket failed',
014 => 'Specified server is null or empty',
);
/**
* Number of seconds to wait on socket connections before assuming
* there's no more data from the Whois server. Defaults to no timeout.
* @var integer $timeout
* @access private
*/
var $_timeout = false;
// }}}
// {{{ constructor
/**
* Constructs a new Net_Whois object
*
* @access public
*/
function Net_Whois()
{
$this->PEAR();
$this->setPort();
$this->setAuthoritative();
$this->setTimeout();
}
// }}}
// {{{ setTimeout()
/**
* Set timeout value - number of seconds afterwhich an attempt to connect
* to a whois server should be aborted.
*
* @param integer $timeout false is also an acceptable value
*
* @access public
* @return void
*/
function setTimeout($timeout = false)
{
$this->_timeout = $timeout;
}
// }}}
// {{{ getTimeout()
/**
* Retrieve timeout value
*
* @access public
*
* @return mixed either false or an integer value
*/
function getTimeout()
{
return $this->_timeout;
}
// }}}
// {{{ setTimeout()
/**
* setAuthoritative
*
* @param bool $authoritative defaults to false
*
* @access public
* @return void
*/
function setAuthoritative($authoritative = false)
{
$this->authoritative = $authoritative;
}
// }}}
// {{{ getAuthoritative()
/**
* getAuthoritative
*
* @return bool Query for authoritative result?
*/
function getAuthoritative()
{
return (bool) $this->authoritative;
}
// }}}
/**
* set which port should be used
*
* @param integer $port Port to use
*
* @access public
* @return void
*/
function setPort($port = false)
{
$port = is_numeric($port) ? $port : getservbyname('whois', 'tcp');
$this->port = $port ? $port : 43;
}
// }}}
// {{{ getPort()
/**
* Retrieve which port to connect to.
*
* @return integer port to connect to
*/
function getPort()
{
return $this->port;
}
// }}}
/**
* setOptions
*
* @param mixed $options
* @return void
*/
function setOptions($options)
{
if ((!is_null($options)) && (!is_array($options))) {
return;
}
$this->options = $options;
}
// {{{ getOptions()
/**
* Retrieve which port to connect to.
*
* @return array
*/
function getOptions()
{
return $this->options;
}
// }}}
// {{{ query()
/**
* Connect to the necessary servers to perform a domain whois query. Prefix
* queries with a "!" to lookup information in InterNIC handle database.
* Add a "-arin" suffix to queries to lookup information in ARIN handle
* database.
*
* @param string $domain IP address or host name
* @param string $userWhoisServer server to query (optional)
*
* @access public
* @return mixed returns a PEAR_Error on failure, or a string on success
*/
function query($domain, $userWhoisServer = null)
{
$domain = trim($domain);
if (isset($userWhoisServer)) {
$whoisServer = $userWhoisServer;
} elseif (preg_match('/^!.*/', $domain)) {
$whoisServer = $this->_nicServers['INICHOST'];
} elseif (preg_match('/.*?-arin/i', $domain)) {
$whoisServer = $this->_nicServers['ANICHOST'];
} else {
$whoisServer = $this->_chooseServer($domain);
}
$_domain = $this->authoritative ? 'domain ' . $domain : $domain;
$whoisData = $this->_connect($whoisServer, $_domain);
if (PEAR::isError($whoisData)) {
return $whoisData;
}
if ($this->authoritative) {
$pattern = '/\s+' . preg_quote($this->_whoisServerID) . '(.+?)\n/i';
if (preg_match($pattern, $whoisData, $matches)) {
$whoisData = $this->_connect(trim(array_pop($matches)), $domain);
}
}
return $whoisData;
}
// }}}
// {{{ queryAPNIC()
/**
* Use the Asia/Pacific Network Information Center (APNIC) database.
* It contains network numbers used in East Asia, Australia, New
* Zealand, and the Pacific islands.
*
* @param string $domain IP address or host name
*
* @access public
* @return mixed returns a PEAR_Error on failure, or a string on success
*/
function queryAPNIC($domain)
{
return $this->query($domain, $this->_nicServers['PNICHOST']);
}
// }}}
// {{{ queryIPv6()
/**
* Use the IPv6 Resource Center (6bone) database. It contains network
* names and addresses for the IPv6 network.
*
* @param string $domain IP address or host name
*
* @access public
* @return mixed returns a PEAR_Error on failure, or a string on success
*/
function queryIPv6($domain)
{
return $this->query($domain, $this->_nicServers['SNICHOST']);
}
// }}}
// {{{ queryRADB()
/**
* Use the Route Arbiter Database (RADB) database. It contains
* route policy specifications for a large number of operators'
* networks.
*
* @param string $ipAddress IP address
*
* @access public
* @return mixed returns a PEAR_Error on failure, or a string on success
*/
function queryRADB($ipAddress)
{
return $this->query($ipAddress, $this->_nicServers['MNICHOST']);
}
// }}}
// {{{ _chooseServer()
/**
* Determines the correct server to connect to based upon the domain
*
* @param string $query IP address or host name
*
* @access private
* @return string whois server host name
*/
function _chooseServer($query)
{
if (!strpos($query, '.')) {
return $this->_nicServers['NICHOST'];
}
$TLD = substr($query, strrpos($query, '.') + 1);
if (is_numeric($TLD)) {
$whoisServer = $this->_nicServers['ANICHOST'];
} else {
$whoisServer = $this->getDomainServer($query);
}
return $whoisServer;
}
// }}}
// {{{ getDomainServer()
/**
* Determines the correct whois server to connect to based upon the domain
*
* @param string $q domain name
*
* @access public
* @return string whois server ip address
*/
function getDomainServer($q)
{
$tail = $this->_nicServers['QNICHOST_TAIL'];
if (strchr($q, '.')) {
//get the last 2 parts
$q = array_reverse(explode('.', $q));
$a = array($q[1] . '.' . $q[0], $q[0]);
} else {
$a = array($q);
}
foreach ($a as $q) {
//check host has real ip
$q = gethostbyname($q . $tail);
if (filter_var($q, FILTER_VALIDATE_IP)) {
return $q;
}
}
}
// }}}
// {{{ _connect()
/**
* Connects to the whois server and retrieves domain information
*
* @param string $nicServer FQDN of whois server to query
* @param string $domain Domain name to query
*
* @access private
* @return mixed returns a PEAR_Error on failure, string of whois data on success
*/
function _connect($nicServer, $domain)
{
include_once 'Net/Socket.php';
if (is_null($nicServer) || (empty($nicServer))) {
return new PEAR_Error($this->_errorCodes[014], 14);
}
if (PEAR::isError($socket = new Net_Socket())) {
return new PEAR_Error($this->_errorCodes[010], 10);
}
$result = $socket->connect(
$nicServer,
$this->getPort(),
null,
$this->getTimeout(),
$this->getOptions()
);
if (PEAR::isError($result)) {
return new PEAR_Error($this->_errorCodes[011], 11);
}
$socket->setBlocking(false);
// Querying denic.de requires some special coaxing for a domain query.
// http://www.denic.de/en/faq-single/2978/1115.html
if (substr($domain, -3) == '.de') {
if (PEAR::isError($socket->writeLine("-T dn,ace " . $domain))) {
return new PEAR_Error($this->_errorCodes[012], 12);
}
} else {
if (PEAR::isError($socket->writeLine($domain))) {
return new PEAR_Error($this->_errorCodes[012], 12);
}
}
$nHost = null;
$whoisData = $socket->readAll();
if (PEAR::isError($whoisData)) {
return new PEAR_Error($this->_errorCodes[013], 13);
}
$data = explode("\n", $whoisData);
foreach ($data as $line) {
$line = rtrim($line);
// check for whois server redirection
if (!isset($nHost)) {
$pattern='/'.$this->_whoisServerID.'([a-z0-9.]+)\n/i';
if (preg_match($pattern, $line, $matches)) {
$nHost = $matches[1];
} elseif ($nicServer == $this->_nicServers['ANICHOST']) {
foreach ($this->_ipNicServers as $ipNicServer) {
$server = trim($this->_nicServers[$ipNicServer], '.');
if (strstr($line, $server)) {
$nHost = $this->_nicServers[$ipNicServer];
}
}
}
}
}
// this should fail, but we'll call it anyway and ignore the error
$socket->disconnect();
if ($nHost && $nHost != $nicServer) {
$tmpBuffer = $this->_connect($nHost, $domain);
if (PEAR::isError($tmpBuffer)) {
return $tmpBuffer;
}
$whoisData .= $tmpBuffer;
}
return $whoisData;
}
// }}}
}
?>