?
Path : /home/admin/public_html/old/plugins/system/nnframework/helpers/assignments/ |
Current File : /home/admin/public_html/old/plugins/system/nnframework/helpers/assignments/ips.php |
<?php /** * NoNumber Framework Helper File: Assignments: IPs * * @package NoNumber Framework * @version 15.5.5 * * @author Peter van Westen <peter@nonumber.nl> * @link http://www.nonumber.nl * @copyright Copyright © 2015 NoNumber All Rights Reserved * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL */ defined('_JEXEC') or die; require_once JPATH_PLUGINS . '/system/nnframework/helpers/assignment.php'; class nnFrameworkAssignmentsIPs extends nnFrameworkAssignment { function passIPs() { if (is_array($this->selection)) { $this->selection = implode(',', $this->selection); } $this->selection = explode(',', str_replace(array(' ', "\r", "\n"), array('', '', ','), $this->selection)); $pass = $this->checkIPList(); return $this->pass($pass); } function checkIPList() { foreach ($this->selection as $range) { // Check next range if this one doesn't match if (!$this->checkIP($range)) { continue; } // Match found, so return true! return true; } // No matches found, so return false return false; } function checkIP($range) { if (empty($range)) { return false; } if (strpos($range, '-') !== false) { // Selection is an IP range return $this->checkIPRange($range); } // Selection is a single IP (part) return $this->checkIPPart($range); } function checkIPRange($range) { $ip = $_SERVER['REMOTE_ADDR']; // Return if no IP address can be found (shouldn't happen, but who knows) if (empty($ip)) { return false; } // check if IP is between or equal to the from and to IP range list($min, $max) = explode('-', trim($range), 2); // Return false if IP is smaller than the range start if ($ip < trim($min)) { return false; } // make the range end value the maximum full IP it can be // So 127.0 becomes 127.0.255.255 $max .= str_repeat('.255', 4 - count(explode('.', $max))); // Return false if IP is larger than the range end if ($ip > trim($max)) { return false; } return true; } function checkIPPart($range) { $ip = $_SERVER['REMOTE_ADDR']; // Return if no IP address can be found (shouldn't happen, but who knows) if (empty($ip)) { return false; } $ip_parts = explode('.', $ip); $range_parts = explode('.', trim($range)); // Trim the IP to the part length of the range $ip = implode('.', array_slice($ip_parts, 0, count($range_parts))); // Return false if ip does not match the range if ($range != $ip) { return false; } return true; } }