fix ipinfo parsing
This commit is contained in:
parent
58e2b413f2
commit
9b8faee10d
|
@ -106,19 +106,93 @@ function getIspInfo($ip)
|
||||||
*/
|
*/
|
||||||
function getIsp($rawIspInfo)
|
function getIsp($rawIspInfo)
|
||||||
{
|
{
|
||||||
if (
|
if (is_array($rawIspInfo)) {
|
||||||
!is_array($rawIspInfo)
|
/* variant with no token
|
||||||
|| !array_key_exists('org', $rawIspInfo)
|
has json like:
|
||||||
|| !is_string($rawIspInfo['org'])
|
{
|
||||||
|| empty($rawIspInfo['org'])
|
"ip": "xxx.xxx.xxx.xxx",
|
||||||
) {
|
"hostname": "example.com",
|
||||||
return 'Unknown ISP';
|
"city": "Vienna",
|
||||||
|
"region": "Vienna",
|
||||||
|
"country": "AT",
|
||||||
|
"loc": "48.2085,16.3721",
|
||||||
|
"org": "ASxxxx T-Mobile Austria GmbH",
|
||||||
|
"postal": "nnnn",
|
||||||
|
"timezone": "Europe/Vienna",
|
||||||
|
"readme": "https://ipinfo.io/missingauth"
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
if (
|
||||||
|
array_key_exists('org', $rawIspInfo)
|
||||||
|
&& is_string($rawIspInfo['org'])
|
||||||
|
&& !empty($rawIspInfo['org'])
|
||||||
|
) {
|
||||||
// Remove AS##### from ISP name, if present
|
// Remove AS##### from ISP name, if present
|
||||||
return preg_replace('/AS\\d+\\s/', '', $rawIspInfo['org']);
|
return preg_replace('/AS\\d+\\s/', '', $rawIspInfo['org']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
variant with valid token has json:
|
||||||
|
{
|
||||||
|
"ip": "xxx.xxx.xxx.xxx",
|
||||||
|
"hostname": "example.com",
|
||||||
|
"city": "Vienna",
|
||||||
|
"region": "Vienna",
|
||||||
|
"country": "AT",
|
||||||
|
"loc": "48.2085,16.3721",
|
||||||
|
"postal": "1010",
|
||||||
|
"timezone": "Europe/Vienna",
|
||||||
|
"asn": {
|
||||||
|
"asn": "ASxxxx",
|
||||||
|
"name": "T-Mobile Austria GmbH",
|
||||||
|
"domain": "t-mobile.at",
|
||||||
|
"route": "xxx.xxx.xxx.xxx/xx",
|
||||||
|
"type": "isp"
|
||||||
|
},
|
||||||
|
"company": {
|
||||||
|
"name": "XX",
|
||||||
|
"domain": "example.com",
|
||||||
|
"type": "isp"
|
||||||
|
},
|
||||||
|
"privacy": {
|
||||||
|
"vpn": true,
|
||||||
|
"proxy": false,
|
||||||
|
"tor": false,
|
||||||
|
"relay": false,
|
||||||
|
"hosting": false,
|
||||||
|
"service": ""
|
||||||
|
},
|
||||||
|
"abuse": {
|
||||||
|
"address": "...",
|
||||||
|
"country": "AT",
|
||||||
|
"email": "abuse@example.com",
|
||||||
|
"name": "XXX",
|
||||||
|
"network": "xxx.xxx.xxx.xxx-xxx.xxx.xxx.xxx",
|
||||||
|
"phone": ""
|
||||||
|
},
|
||||||
|
"domains": {
|
||||||
|
"total": 0,
|
||||||
|
"domains": [
|
||||||
|
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
if (
|
||||||
|
array_key_exists('asn', $rawIspInfo)
|
||||||
|
&& is_string($rawIspInfo['asn'])
|
||||||
|
&& !empty($rawIspInfo['asn'])
|
||||||
|
&& array_key_exists('name', $rawIspInfo['asn'])
|
||||||
|
&& is_string($rawIspInfo['asn']['name'])
|
||||||
|
) {
|
||||||
|
// Remove AS##### from ISP name, if present
|
||||||
|
return $rawIspInfo['asn']['name'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 'Unknown ISP';
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return string|null
|
* @return string|null
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue