Update ipaddr.php

This commit is contained in:
deepend-tildeclub 2024-01-05 11:56:38 -07:00 committed by GitHub
parent a197ed6e54
commit 830f26f26c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 14 deletions

View File

@ -7,11 +7,10 @@
static function NormalizeIP($ipaddr) static function NormalizeIP($ipaddr)
{ {
$ipv4addr = ""; $ipv4addr = "";
$ipv6addr = "";
// Generate IPv6 address. // Generate IPv6 address.
$ipaddr = strtolower(trim($ipaddr)); $ipaddr = strtolower(trim($ipaddr));
if (strpos($ipaddr, ":") === false) $ipaddr = "::ffff:" . $ipaddr; if (!str_contains($ipaddr, ":")) $ipaddr = "::ffff:" . $ipaddr;
$ipaddr = explode(":", $ipaddr); $ipaddr = explode(":", $ipaddr);
if (count($ipaddr) < 3) $ipaddr = array("", "", "0"); if (count($ipaddr) < 3) $ipaddr = array("", "", "0");
$ipaddr2 = array(); $ipaddr2 = array();
@ -27,7 +26,7 @@
} }
} }
// Convert ::ffff:123.123.123.123 format. // Convert ::ffff:123.123.123.123 format.
if (strpos($ipaddr2[count($ipaddr2) - 1], ".") !== false) if (str_contains($ipaddr2[count($ipaddr2) - 1], "."))
{ {
$x = count($ipaddr2) - 1; $x = count($ipaddr2) - 1;
if ($ipaddr2[count($ipaddr2) - 2] != "ffff") $ipaddr2[$x] = "0"; if ($ipaddr2[count($ipaddr2) - 2] != "ffff") $ipaddr2[$x] = "0";
@ -51,7 +50,7 @@
$ipv6addr = implode(":", $ipaddr); $ipv6addr = implode(":", $ipaddr);
// Extract IPv4 address. // Extract IPv4 address.
if (substr($ipv6addr, 0, 30) == "0000:0000:0000:0000:0000:ffff:") $ipv4addr = hexdec(substr($ipv6addr, 30, 2)) . "." . hexdec(substr($ipv6addr, 32, 2)) . "." . hexdec(substr($ipv6addr, 35, 2)) . "." . hexdec(substr($ipv6addr, 37, 2)); if (str_starts_with($ipv6addr, "0000:0000:0000:0000:0000:ffff:")) $ipv4addr = hexdec(substr($ipv6addr, 30, 2)) . "." . hexdec(substr($ipv6addr, 32, 2)) . "." . hexdec(substr($ipv6addr, 35, 2)) . "." . hexdec(substr($ipv6addr, 37, 2));
// Make a short IPv6 address. // Make a short IPv6 address.
$shortipv6 = $ipv6addr; $shortipv6 = $ipv6addr;
@ -73,7 +72,7 @@
static function GetRemoteIP($proxies = array()) static function GetRemoteIP($proxies = array())
{ {
$ipaddr = self::NormalizeIP(isset($_SERVER["REMOTE_ADDR"]) ? $_SERVER["REMOTE_ADDR"] : "127.0.0.1"); $ipaddr = self::NormalizeIP($_SERVER["REMOTE_ADDR"] ?? "127.0.0.1");
// Check for trusted proxies. Stop at first untrusted IP in the chain. // Check for trusted proxies. Stop at first untrusted IP in the chain.
if (isset($proxies[$ipaddr["ipv6"]]) || ($ipaddr["ipv4"] != "" && isset($proxies[$ipaddr["ipv4"]]))) if (isset($proxies[$ipaddr["ipv6"]]) || ($ipaddr["ipv4"] != "" && isset($proxies[$ipaddr["ipv4"]])))
@ -85,8 +84,7 @@
{ {
$found = false; $found = false;
if (isset($proxies[$ipaddr["ipv6"]])) $header = $proxies[$ipaddr["ipv6"]]; $header = $proxies[$ipaddr["ipv6"]] ?? $proxies[$ipaddr["ipv4"]];
else $header = $proxies[$ipaddr["ipv4"]];
$header = strtolower($header); $header = strtolower($header);
if ($header == "xforward" && count($xforward) > 0) if ($header == "xforward" && count($xforward) > 0)
@ -109,7 +107,7 @@
{ {
if (is_string($ipaddr)) $ipaddr = self::NormalizeIP($ipaddr); if (is_string($ipaddr)) $ipaddr = self::NormalizeIP($ipaddr);
if (strpos($pattern, ":") !== false) if (str_contains($pattern, ":"))
{ {
// Pattern is IPv6. // Pattern is IPv6.
$pattern = explode(":", strtolower($pattern)); $pattern = explode(":", strtolower($pattern));
@ -128,7 +126,7 @@
$piece = $piece[0]; $piece = $piece[0];
if ($piece == "*") $found = true; if ($piece == "*") $found = true;
else if (strpos($piece, "-") !== false) else if (str_contains($piece, "-"))
{ {
$range = explode("-", $piece); $range = explode("-", $piece);
$range[0] = hexdec($range[0]); $range[0] = hexdec($range[0]);
@ -148,7 +146,7 @@
$val2 = hexdec(substr($ipaddr[$num], 2, 2)); $val2 = hexdec(substr($ipaddr[$num], 2, 2));
if ($piece[0] == "*") $found2 = true; if ($piece[0] == "*") $found2 = true;
else if (strpos($piece[0], "-") !== false) else if (str_contains($piece[0], "-"))
{ {
$range = explode("-", $piece[0]); $range = explode("-", $piece[0]);
if ($range[0] > $range[1]) $range[0] = $range[1]; if ($range[0] > $range[1]) $range[0] = $range[1];
@ -157,7 +155,7 @@
else if ($piece[0] == $val) $found2 = true; else if ($piece[0] == $val) $found2 = true;
if ($piece[1] == "*") $found3 = true; if ($piece[1] == "*") $found3 = true;
else if (strpos($piece[1], "-") !== false) else if (str_contains($piece[1], "-"))
{ {
$range = explode("-", $piece[1]); $range = explode("-", $piece[1]);
if ($range[0] > $range[1]) $range[0] = $range[1]; if ($range[0] > $range[1]) $range[0] = $range[1];
@ -189,7 +187,7 @@
$piece = trim($piece); $piece = trim($piece);
if ($piece == "*") $found = true; if ($piece == "*") $found = true;
else if (strpos($piece, "-") !== false) else if (str_contains($piece, "-"))
{ {
$range = explode("-", $piece); $range = explode("-", $piece);
if ($range[0] > $range[1]) $range[0] = $range[1]; if ($range[0] > $range[1]) $range[0] = $range[1];
@ -207,4 +205,3 @@
return true; return true;
} }
} }
?>