Everything IP!

Updated IpRange to fix an undefined index (where it tried to convert an
IP to a ip/bits format but some didn't contain that, so absolute ip
addresses will just have /32 appended)

Implemented the logic into WebContextManager.php
This commit is contained in:
Nikita Petko 2021-12-31 06:12:38 +00:00 committed by Github Enterprise
parent b08cc53828
commit 23f608e173
3 changed files with 6 additions and 1 deletions

View File

@ -182,6 +182,9 @@ namespace Alphaland\Web {
*/ */
public static function IsIpInCidrRange(string $ip, string $cidr) public static function IsIpInCidrRange(string $ip, string $cidr)
{ {
if (strpos($cidr, '/') === false)
$cidr = "$cidr/32";
list($subnet, $bits) = explode('/', $cidr); list($subnet, $bits) = explode('/', $cidr);
if ($bits === null) { if ($bits === null) {
$bits = 32; $bits = 32;

View File

@ -3,6 +3,7 @@
namespace Alphaland\Web { namespace Alphaland\Web {
use PDO; use PDO;
use Alphaland\Web\IpHelper;
class WebContextManager class WebContextManager
{ {
@ -16,7 +17,7 @@ namespace Alphaland\Web {
$currentIp = WebContextManager::GetCurrentIPAddress(); $currentIp = WebContextManager::GetCurrentIPAddress();
$ipWhitelist = explode(";", WebsiteSettings::GetSetting("webservice_whitelist", "127.0.0.0/8;192.168.0.0/16;10.0.0.0/8")); $ipWhitelist = explode(";", WebsiteSettings::GetSetting("webservice_whitelist", "127.0.0.0/8;192.168.0.0/16;10.0.0.0/8"));
return in_array($currentIp, $ipWhitelist); return IpHelper::IsIpInCidrNetmaskOrRangeList($currentIp, $ipWhitelist);
} }
public static function CanBypassMaintenance() public static function CanBypassMaintenance()

View File

@ -125,6 +125,7 @@ try
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Economy/EconomyHelper.php"; include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Economy/EconomyHelper.php";
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Groups/Group.php"; include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Groups/Group.php";
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Web/WebsiteSettings.php"; include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Web/WebsiteSettings.php";
include "C:/Webserver/nginx/Alphaland/globals/Dependencies/Web/IpRange.php";
//authenticator //authenticator
$authenticator = new PHPGangsta_GoogleAuthenticator(); $authenticator = new PHPGangsta_GoogleAuthenticator();