HEX
Server: LiteSpeed
System: Linux baran.dnsprotection.me 4.18.0-553.83.1.lve.el8.x86_64 #1 SMP Wed Nov 12 10:04:12 UTC 2025 x86_64
User: ddir12 (3618)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/imunify360/venv/lib/python3.11/site-packages/im360/utils/__pycache__/net.cpython-311.pyc
�

r�LjK����ddlZddlZddlZddlmZmZmZmZmZm	Z	m
Z
ddlmZm
Z
mZmZddlZddlmZddlmZmZeje��Zejdej��Zd\ZZZd\ZZ eee	fZ!d	Z"dd
e
efd�Z#deeeeffd
�Z$d�Z%dZ&d�Z'de(fd�Z)d�Z*deeeffd�Z+deee	fdee(e(e(ffd�Z,de(de(de(de!fd�Z-de.dedee	ffd�Z/dS)�N)�
IPV4LENGTH�
IPV6LENGTH�IPv4Address�IPv4Network�IPv6Address�IPv6Network�
ip_network)�Iterable�Optional�Tuple�Union)�get_kernel_module_parameter)�IP�	IPVersions^nameserver ([\w.:]+))�tcp�udp�all)�in�outz/etc/resolv.conf�
ip_versionc#�K�	ttd��5}|���}ddd��n#1swxYwYn#t$rgcYSwxYwt�|��D]K}|�d��}tj|��r |�tj	|��|ks|�|V��LdS)N�rb�ascii)
�open�RESOLV_CONF_FILE�read�OSError�DNS_IP_TEMPLATE�findall�decoder�is_valid_ip�type_of)r�f�content�ips    �D/opt/imunify360/venv/lib/python3.11/site-packages/im360/utils/net.py�local_dns_from_resolv_confr' s�����
�"�D�
)�
)�	�Q��f�f�h�h�G�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��������	�	�	������%�%�g�.�.����
�Y�Y�w�
�
��
�>�"���	��&�2�:�b�>�>�Z�+G�+G��#������
�s.�A�:�A�>�A�>�A�A�A�returnc#�HK�tj�����D]y}|D]t}|jtjkrt
|j��V��.|jtjkr1t|j�
dd���d��V��u�zdS)z8Return a list of IP address assigned to local interfaces�%�)�maxsplitrN)�psutil�net_if_addrs�values�family�socket�AF_INETr�address�AF_INET6r�split)�ipsr%s  r&�local_ip_addressesr70s������"�$�$�+�+�-�-�H�H���	H�	H�B��y�F�N�*�*�!�"�*�-�-�-�-�-�-���f�o�-�-�"�"�*�"2�"2�3��"2�"C�"C�A�"F�G�G�G�G�G��
	H�H�H�c��|ttfvsJ�|tkrd}nd}td�tj|��D����S)zZ
    Return listening ports for ipv4 services

    :param proto: tcp/udp
    :return:
    �tcp4�udp4c3�|K�|]7}|jddk�|jtjk�(|jdV��8dS)rz	127.0.0.1r+N)�laddr�statusr-�CONN_LISTEN)�.0�cs  r&�	<genexpr>z"listening_ports.<locals>.<genexpr>IsT������
�
�G�A�J�+�%�%�!�(�f�6H�*H�*H�	
���
�*H�*H�*H�*H��r8)�TCP�UDP�setr-�net_connections)�proto�kinds  r&�listening_portsrI<sg���S�#�J�������|�|����������'��-�-������r8z(/proc/sys/net/ipv6/conf/all/disable_ipv6c��	tdd���}|dkrdSn2#t$r%}t�|��Yd}~dSd}~wwxYw	t	t
��5}|������dkr	ddd��dS	ddd��n#1swxYwYn#t$rYnwxYwdS)	a`
    Checks whether IPv6 is enabled at the kernel level.

    Returns False when either:
    - the ipv6 module parameter ``disable`` is set to ``1`` (boot-time),
    - the sysctl ``net.ipv6.conf.all.disable_ipv6`` is ``1`` (runtime), or
    - the ipv6 kernel module is absent.

    No @lru_cache: admins toggle the sysctl at runtime, and a stale cached
    result would cause generated firewall rules to diverge from kernel
    state until the agent process restarts. The module-param read shells
    out via get_kernel_module_parameter (~tens of ms), but in practice this
    function is called rarely.
    �ipv6�disable)�module_name�	parameter�0FN�1T)	r�
ValueError�logger�warningr�_SYSCTL_DISABLE_IPV6r�stripr)rL�er#s   r&�is_ipv6_enabledrWSsP���-��)�
�
�
��
�c�>�>��5����������q�����u�u�u�u�u���������
�
�&�
'�
'�	�1��v�v�x�x�~�~���3�&�&��	�	�	�	�	�	�	�	�&�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����
�
�
���
�����4sP��
A�A�A�B5�#,B)�B5�B5�)B-�-B5�0B-�1B5�5
C�Cr%c�h�t�|�ddd���dd���S)N��bigT��signedF)�int�
from_bytes�to_bytes�r%s r&�_signed_to_unsignedra|s6���>�>�
���A�u�T��*�*�E�%����r8c��|dkr|}n)t|||dz
z�����}||z
}||z	}d|zdz
}||kr/|dz}|�|d��}d}t||z���|S)a(Return prefix length from the bitwise netmask.
    Copied from ipaddress private method

    Args:
        ip_int: An integer, the netmask in expanded bitwise format

    Returns:
        An integer, the prefix length.

    Raises:
        ValueError: If the input intermingles zeroes & ones
    rr+rYrZz&Netmask pattern %r mixes zeroes & ones)�min�
bit_lengthr_rQ)	�ip_int�prefix_maxlength�trailing_zeroes�	prefixlen�leading_ones�all_ones�byteslen�details�msgs	         r&�_prefix_from_maskrn�s�����{�{�*������w�&�1�*�5�A�A�C�C�
�
��!�?�2�I��_�,�L��Y��!�#�H��x���#�q�(���/�/�(�E�2�2��6����w��'�'�'��r8�
ip_addressc��|jdkr*t�|jdd�dd���St|��S)N�rYrZTr[)�versionr]r^�packed)ros r&�pack_ip_addressrt�s@����Q����~�~�j�/����3�U�4�~�H�H�H��:���r8r	c�f�t|j��}t|j��}|||jfS�N)rt�network_address�netmaskrr)r	�net�masks   r&�pack_ip_networkr{�s4���*�4�
5�
5�C��:�-�.�.�D���j�(�(�(r8ryrzrrc���|dkrJt|��dz}t|��dz}t|t��}t||f��St|t��}t||f��S)Nrq�@)rarnrrrr)ryrzrr�prefixs    r&�unpack_ip_networkr�sq���!�|�|�!�#�&�&�"�,��"�4�(�(�B�.��"�4��4�4���C��=�)�)�)�"�4��4�4���C��=�)�)�)r8c�D�	t|��S#t$rYdSwxYwrv)r	rQr`s r&�is_netr��s5����"�~�~��������t�t����s��
�rv)0�logging�rer1�	ipaddressrrrrrrr	�typingr
rrr
r-�defence360agent.utilsr�defence360agent.utils.validaterr�	getLogger�__name__rR�compile�MrrCrD�ALL�IN�OUT�	IPNetworkrr'r7rIrTrWr]rarnrtr{r�strr��r8r&�<module>r�s�������	�	�	�	�
�
�
�
�������������������4�3�3�3�3�3�3�3�3�3�3�3�
�
�
�
�=�=�=�=�=�=�8�8�8�8�8�8�8�8�	��	�8�	$�	$���"�*�6���=�=��#�
��S�#�
���C��+�{�*�+�	�%��
�
�8�I�+>�
�
�
�
� 	H�H�U�;��+C�%D�E�	H�	H�	H�	H����(B��&�&�&�R�C��������>��k�;�&>� ?�����)��k�;�.�/�)�
�3��S�=��)�)�)�)�*�3�*�c�*�C�*�I�*�*�*�*��s��u�T�;��;�<������r8