mirror of
https://github.com/phpbb/phpbb.git
synced 2025-10-12 15:34:31 +02:00
[ticket/17477] Support non-prefixed whois servers
Referral servers lacking the whois:// prefix are not currently supported. This ticket adds support for those servers. At the moment, this is mainly an issue for RIPE entries on ARIN. They will now be detected and followed. PHPBB-17477
This commit is contained in:
@@ -1482,7 +1482,8 @@ function user_ipwhois($ip)
|
|||||||
$match = array();
|
$match = array();
|
||||||
|
|
||||||
// Test for referrals from $whois_host to other whois databases, roll on rwhois
|
// Test for referrals from $whois_host to other whois databases, roll on rwhois
|
||||||
if (preg_match('#ReferralServer:[\x20]*whois://(.+)#im', $ipwhois, $match))
|
// Search for referral servers with or without the "whois://" prefix
|
||||||
|
if (preg_match('#ReferralServer:[\x20]*whois://(.+)#im', $ipwhois, $match) || preg_match('#ReferralServer:[\x20]*([^/]+)$#im', $ipwhois, $match))
|
||||||
{
|
{
|
||||||
if (strpos($match[1], ':') !== false)
|
if (strpos($match[1], ':') !== false)
|
||||||
{
|
{
|
||||||
|
@@ -33,8 +33,10 @@ class phpbb_functions_user_whois_test extends phpbb_test_case
|
|||||||
public function ips_data()
|
public function ips_data()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['2001:4860:4860::8888'], // Google public DNS
|
['2001:4860:4860::8888'], // Google public DNS (ARIN)
|
||||||
['64.233.161.139'], // google.com
|
['64.233.161.139'], // google.com (ARIN)
|
||||||
|
['1.1.1.1'], // Cloudflare (APNIC via whois:// referral)
|
||||||
|
['213.133.116.44'], // Hetzner (RIPE via non-whois:// referral)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,5 +49,6 @@ class phpbb_functions_user_whois_test extends phpbb_test_case
|
|||||||
$this->assertStringNotContainsString('Query terms are ambiguous', $ip_whois);
|
$this->assertStringNotContainsString('Query terms are ambiguous', $ip_whois);
|
||||||
$this->assertStringNotContainsString('no entries found', $ip_whois);
|
$this->assertStringNotContainsString('no entries found', $ip_whois);
|
||||||
$this->assertStringNotContainsString('ERROR', $ip_whois);
|
$this->assertStringNotContainsString('ERROR', $ip_whois);
|
||||||
|
$this->assertStringNotContainsString('Allocated to RIPE NCC', $ip_whois); // This only shows if the referral isn't found
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user