/
opt
/
imunify360
/
venv
/
versions
/
imunify-core-8.14.0-1
/
defence360agent
/
utils
/
/opt/imunify360/venv/versions/imunify-core-8.14.0-1/defence360agent/utils
mkdir
upload
Name
Size
Mode
Actions
__pycache__/
-
0755
rm
antivirus_mode.py
497
0644
edit
dl
rm
async_utils.py
718
0644
edit
dl
rm
benchmark.py
538
0644
edit
dl
rm
buffer.py
1945
0644
edit
dl
rm
check_db.py
7988
0644
edit
dl
rm
check_lock.py
856
0644
edit
dl
rm
cli.py
9273
0644
edit
dl
rm
common.py
14757
0644
edit
dl
rm
completions.py
9988
0644
edit
dl
rm
config.py
1695
0644
edit
dl
rm
cronjob.py
902
0644
edit
dl
rm
doctor.py
5503
0644
edit
dl
rm
fd_ops.py
7573
0644
edit
dl
rm
hyperscan.py
149
0644
edit
dl
rm
importer.py
2722
0644
edit
dl
rm
ipecho.py
3247
0644
edit
dl
rm
json.py
953
0644
edit
dl
rm
kwconfig.py
1756
0644
edit
dl
rm
net.py
595
0644
edit
dl
rm
net_transport.py
16289
0644
edit
dl
rm
parsers.py
11879
0644
edit
dl
rm
resource_limits.py
5158
0644
edit
dl
rm
safe_fileops.py
13672
0644
edit
dl
rm
safe_sequence.py
363
0644
edit
dl
rm
serialization.py
2410
0644
edit
dl
rm
sshutil.py
15174
0644
edit
dl
rm
subprocess.py
1570
0644
edit
dl
rm
support.py
5329
0644
edit
dl
rm
tenant_path.py
4456
0644
edit
dl
rm
threads.py
1005
0644
edit
dl
rm
validate.py
4375
0644
edit
dl
rm
whmcs.py
7784
0644
edit
dl
rm
wordpress_mu_plugin.py
1440
0644
edit
dl
rm
zipsafe.py
720
0644
edit
dl
rm
_shutil.py
4019
0644
edit
dl
rm
__init__.py
69706
0644
edit
dl
rm
Edit:
/opt/imunify360/venv/versions/imunify-core-8.14.0-1/defence360agent/utils/validate.py
(4375B)
from enum import Enum from ipaddress import ( IPV4LENGTH, IPV6LENGTH, AddressValueError, IPv4Address, IPv4Network, IPv6Address, IPv6Network, ip_address, ip_network, ) from typing import Literal, Optional, Union IPVersion = Literal["ipv4", "ipv6"] class LocalhostIP(str, Enum): ipv4 = "127.0.0.1" ipv6 = "::1" def __str__(self): return self.value class NumericIPVersion(int, Enum): """Example: (IPListRecord.version==NumericIPVersion[ip_version])""" ipv4 = 4 ipv6 = 6 def __str__(self): return str(self.value) @classmethod def from_ip_version( cls, ip_version: Optional[IPVersion] ) -> Optional["NumericIPVersion"]: if ip_version is None: return None return cls.ipv4 if ip_version == IP.V4 else cls.ipv6 def is_valid_ipv4_addr(addr): return IP.is_valid_ipv4_addr(addr) def is_valid_ipv4_network(addr, strict=False): return IP.is_valid_ipv4_network(addr, strict) class IP: V4: IPVersion = "ipv4" V6: IPVersion = "ipv6" @classmethod def check_ip_ver(cls, version): return any(version == ver for ver in [cls.V4, cls.V6]) @classmethod def is_valid_ip(cls, addr): try: ip_address(addr) except ValueError: return False return True @classmethod def is_valid_ip_network(cls, *args, **kwargs): return cls.is_valid_ipv4_network( *args, **kwargs ) or cls.is_valid_ipv6_network(*args, **kwargs) @classmethod def is_valid_ipv4_addr(cls, addr): try: IPv4Address(addr) except AddressValueError: return False return True @classmethod def is_valid_ipv6_addr(cls, addr): try: IPv6Address(addr) except AddressValueError: return False return True @classmethod def is_valid_ipv4_network( cls, addr: Union[str, IPv4Network, IPv6Network], strict=False ): try: ip = IPv4Network(addr) except ValueError: return False if strict: # IPV4LENGTH - netmask for host return ip.prefixlen != IPV4LENGTH return True @classmethod def is_valid_ipv6_network( cls, addr: Union[str, IPv4Network, IPv6Network], strict=False ): try: ip = IPv6Network(addr) except ValueError: return False if strict: # IPV6LENGTH - netmask for host return ip.prefixlen != IPV6LENGTH return True @classmethod def type_of(cls, addr): if cls.is_valid_ipv4_network(addr): return IP.V4 elif cls.is_valid_ipv6_network(addr): return IP.V6 raise ValueError("Invalid ip address") @classmethod def convert_to_ipv6_network(cls, ip, mask="/64"): """Conver ipv6 addr to ipv6 network with mask :param str ip: ip for converting :param str mask: ip network mask """ network = IPv6Network(ip + mask, strict=False) return str(network) @staticmethod def adopt_to_ipvX_network( ip_arg: Union[str, IPv4Address, IPv4Network, IPv6Address, IPv6Network] ) -> Union[IPv4Network, IPv6Network]: """ Eliminate str from the Union :raise ValueError: if cannot convert ip_arg str to ip network """ if isinstance(ip_arg, (IPv4Network, IPv6Network)): return ip_arg elif isinstance(ip_arg, (IPv4Address, IPv6Address)): prefixlen = IPV4LENGTH if ip_arg.version == 4 else IPV6LENGTH return ip_network((int(ip_arg), prefixlen)) return ip_network(ip_arg) @classmethod def ip_net_to_string(cls, net: Union[IPv4Network, IPv6Network]) -> str: """ IPv4Network('192.168.1.1/32') -> '192.168.1.1' IPv4Network('192.168.1.0/24') -> '192.168.1.0/24' """ if not int(net.hostmask): return str(net.network_address) return str(net) @classmethod def ipv6_to_64network( cls, ip: Union[IPv4Address, IPv6Address, str] ) -> Union[IPv4Address, IPv6Network]: if isinstance(ip, IPv6Address): return IPv6Network(cls.convert_to_ipv6_network(str(ip))) return ip
Save
cmd:
run