aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes/functions_user.php
diff options
context:
space:
mode:
authorAndreas Fischer <bantu@phpbb.com>2010-06-27 21:07:38 +0200
committerAndreas Fischer <bantu@phpbb.com>2010-07-11 01:19:27 +0200
commited44235d26180c539eaf7af5e5b15c7fcb96ce45 (patch)
tree459dff09349da2acd5182bb4fc57c546aeab0ff4 /phpBB/includes/functions_user.php
parente46745ed34386c5884c7dacb1f3d8a8ca0c333dd (diff)
downloadforums-ed44235d26180c539eaf7af5e5b15c7fcb96ce45.tar
forums-ed44235d26180c539eaf7af5e5b15c7fcb96ce45.tar.gz
forums-ed44235d26180c539eaf7af5e5b15c7fcb96ce45.tar.bz2
forums-ed44235d26180c539eaf7af5e5b15c7fcb96ce45.tar.xz
forums-ed44235d26180c539eaf7af5e5b15c7fcb96ce45.zip
[ticket/9534] Adding support for IPv6 addresses in user_ipwhois().
whois.arin.net does currently not refer to other servers (using ReferralServer) when queried for an IPv6 address. whois.sixxs.net however works in this case. This also adds '.' to the hostname to make sure we're querying the dns root. PHPBB3-9534
Diffstat (limited to 'phpBB/includes/functions_user.php')
-rw-r--r--phpBB/includes/functions_user.php27
1 files changed, 20 insertions, 7 deletions
diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php
index 6f6d7526b7..c2ea8445d1 100644
--- a/phpBB/includes/functions_user.php
+++ b/phpBB/includes/functions_user.php
@@ -1235,16 +1235,29 @@ function user_unban($mode, $ban)
*/
function user_ipwhois($ip)
{
- $ipwhois = '';
+ if (empty($ip))
+ {
+ return '';
+ }
- // Check IP
- // Only supporting IPv4 at the moment...
- if (empty($ip) || !preg_match(get_preg_expression('ipv4'), $ip))
+ 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 '';
}
- if (($fsk = @fsockopen('whois.arin.net', 43)))
+ $ipwhois = '';
+
+ if (($fsk = @fsockopen($whois_host, 43)))
{
// CRLF as per RFC3912
fputs($fsk, "$ip\r\n");
@@ -1257,7 +1270,7 @@ function user_ipwhois($ip)
$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 (strpos($match[1], ':') !== false)
@@ -1285,7 +1298,7 @@ function user_ipwhois($ip)
@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;
}