<?php
/**
* Deze functie geeft de mogelijkheid om te controleren of een bepaalde ip adres toegestaan is volgens de
* ingestelde whitelist. Deze whitelist dient aangeleverd te worden als een array, waarbij elk element in
* deze array een aparte accessmask is.
*
* De accessmask kan in de volgende formaten aangeleverd worden;
* - 192.168.0.1 Om één enkel ip adres toe te staan
* - 192.168.0.* Om één range van ip adressen toe te staan
* - 192.168.0 Om één range van ip adressen toe te staan, zelfde als hierboven
*
* Omdat deze functie gebruik maakt van reguliere expressies is het tevens mogelijk om zelf gebruik te
* maken van een regex om te controleren. Voorbeelden hiervan zijn:
* - 192.168.(0|1).* Om twee ranges van ip adressen toe te staan, namelijk 192.168.0.* en 192.168.1.*
* - 192.168.(13[3-9]|1[4-5][0-9]|16[0-3]).* Om de range 192.168.33.0 tot 192.168.63.255 toe te staan
*
* @version 1.0
* @author Gerard Klomp <gerard.klomp@sitemasters.be>
* @license http://sitemasters.be/mit-license.txt MIT License
* @param string $ipaddress Het ip adres wat gecontroleerd dient te worden
* @param array $whitelist De array met de accessmasks, elke in een apart element
* @return boolean True wanneer ip is toegestaan, anders False
*/
function isAllowedHost($ipaddress, $whitelist)
{
foreach ($whitelist as $accessmask)
{
$maskparts = explode('.', $accessmask);
for ($i = 0; $i < 4; $i++)
{
if ((isset($maskparts[$i]) && $maskparts[$i] == '*') || !isset($maskparts[$i])) {
$maskparts[$i] = '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
}
}
{
return true;
}
}
return false;
}