| Current Path : /var/www/html/administrator/components/com_rsfirewall/helpers/ip/protocols/ |
| Current File : /var/www/html/administrator/components/com_rsfirewall/helpers/ip/protocols/base.php |
<?php
/*
* @package RSFirewall!
* @copyright (c) 2009 - 2024 RSJoomla!
* @link https://www.rsjoomla.com/joomla-extensions/joomla-security.html
* @license GNU General Public License https://www.gnu.org/licenses/gpl-3.0.en.html
*/
\defined('_JEXEC') or die;
use Joomla\CMS\Language\Text;
class RSFirewallIPBase
{
// Hold our IP address in human readable format.
protected $ip;
// Constructor
public function __construct($ip) {
// Assign provided IP for class access.
$this->ip = $ip;
}
// Returns the human readable format of the IP address.
// @return string
public function toAddress() {
return $this->ip;
}
// Returns the binary representation of the IP address.
// @return string
public function toBinary() {
$unpacked = str_split($this->toUnpacked());
$bin = '';
foreach ($unpacked as $char) {
$bin .= str_pad(decbin(ord($char)), 8, '0', STR_PAD_LEFT);
}
return $bin;
}
// Returns the packed representation of IP (in_addr).
// @return string
public function toPacked() {
if (function_exists('inet_pton')) {
$packed = @inet_pton($this->ip);
} else {
$packed = $this->inet_pton($this->ip);
}
if ($packed === false) {
throw new Exception(Text::sprintf('COM_RSFIREWALL_COULD_NOT_TRANSFORM_PTON', $this->ip));
}
return $packed;
}
// Applies a mask to current IP to get the bits.
// @return string
public function applyMask($mask) {
return substr($this->toBinary(), 0, $this->cleanMask($mask));
}
}