mirror of
https://github.com/phpbb/phpbb.git
synced 2025-05-11 01:55:24 +02:00
Merge branch 'ticket/bantu/9534' into develop-olympus
* ticket/bantu/9534: [ticket/9534] Update function documentation for user_ipwhois(). [ticket/9534] Adding support for IPv6 addresses in user_ipwhois().
This commit is contained in:
commit
6343e67fab
@ -1229,22 +1229,39 @@ function user_unban($mode, $ban)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whois facility
|
* Internet Protocol Address Whois
|
||||||
|
* RFC3912: WHOIS Protocol Specification
|
||||||
*
|
*
|
||||||
* @link http://tools.ietf.org/html/rfc3912 RFC3912: WHOIS Protocol Specification
|
* @param string $ip Ip address, either IPv4 or IPv6.
|
||||||
|
*
|
||||||
|
* @return string Empty string if not a valid ip address.
|
||||||
|
* Otherwise make_clickable()'ed whois result.
|
||||||
*/
|
*/
|
||||||
function user_ipwhois($ip)
|
function user_ipwhois($ip)
|
||||||
{
|
{
|
||||||
$ipwhois = '';
|
if (empty($ip))
|
||||||
|
|
||||||
// Check IP
|
|
||||||
// Only supporting IPv4 at the moment...
|
|
||||||
if (empty($ip) || !preg_match(get_preg_expression('ipv4'), $ip))
|
|
||||||
{
|
{
|
||||||
return '';
|
return '';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($fsk = @fsockopen('whois.arin.net', 43)))
|
if (preg_match(get_preg_expression('ipv4'), $ip))
|
||||||
|
{
|
||||||
|
// IPv4 address
|
||||||
|
$whois_host = 'whois.arin.net.';
|
||||||
|
}
|
||||||
|
else if (preg_match(get_preg_expression('ipv6'), $ip))
|
||||||
|
{
|
||||||
|
// IPv6 address
|
||||||
|
$whois_host = 'whois.sixxs.net.';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
$ipwhois = '';
|
||||||
|
|
||||||
|
if (($fsk = @fsockopen($whois_host, 43)))
|
||||||
{
|
{
|
||||||
// CRLF as per RFC3912
|
// CRLF as per RFC3912
|
||||||
fputs($fsk, "$ip\r\n");
|
fputs($fsk, "$ip\r\n");
|
||||||
@ -1257,7 +1274,7 @@ function user_ipwhois($ip)
|
|||||||
|
|
||||||
$match = array();
|
$match = array();
|
||||||
|
|
||||||
// Test for referrals from ARIN to other whois databases, roll on rwhois
|
// Test for referrals from $whois_host to other whois databases, roll on rwhois
|
||||||
if (preg_match('#ReferralServer: whois://(.+)#im', $ipwhois, $match))
|
if (preg_match('#ReferralServer: whois://(.+)#im', $ipwhois, $match))
|
||||||
{
|
{
|
||||||
if (strpos($match[1], ':') !== false)
|
if (strpos($match[1], ':') !== false)
|
||||||
@ -1285,7 +1302,7 @@ function user_ipwhois($ip)
|
|||||||
@fclose($fsk);
|
@fclose($fsk);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the result from ARIN if we don't get any result here
|
// Use the result from $whois_host if we don't get any result here
|
||||||
$ipwhois = (empty($buffer)) ? $ipwhois : $buffer;
|
$ipwhois = (empty($buffer)) ? $ipwhois : $buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user