HEX
Server: LiteSpeed
System: Linux 112.webhostingindonesia.co.id 5.14.0-570.62.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 10:10:59 EST 2025 x86_64
User: iyfwylsv (10313)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: //lib/python3.9/site-packages/fail2ban/server/__pycache__/ipdns.cpython-39.opt-2.pyc
a

OZR�=��~�@s�dZdZdZddlZddlZddlZddlmZddlm	Z	e	e
�Zd	d
�Zddd
�Z
Gdd�d�ZGdd�de�Zedd�e_Gdd�de�Zddd�Zee�e_dS)zJFail2Ban Developers, Alexander Koeppe, Serg G. Brester, Yaroslav Halchenkoz+Copyright (c) 2004-2016 Fail2ban DevelopersZGPL�N�)�Utils�)�	getLoggercCst|t�r|St|�S)z8A little helper to guarantee ip being an IPAddr instance��
isinstance�IPAddr��ip�r�9/usr/lib/python3.9/site-packages/fail2ban/server/ipdns.py�asip's
r
�c	Cs�zn|pt��}dd�t�|ddtjdtj�D�}|rl|d}d}|D] }|�|�r\|WS|sD|}qD|WSWntjy�Yn0t�|�S)z�Get fully-qualified hostname of given host, thereby resolve of an external
	IPs and name will be preferred before the local domain (or a loopback), see gh-2438
	css|]}|dr|dVqdS)�Nr)�.0�airrr�	<genexpr>3s�zgetfqdn.<locals>.<genexpr>Nr�.)�socket�gethostname�getaddrinfoZ
SOCK_DGRAMZAI_CANONNAME�
startswith�error�getfqdn)�name�namesZpref�firstrrrrr-s$��



rc@s�eZdZejddd�Zejddd�Zedd��Zedd��Z	edd	��Z
eddd��Zd
Zedd��Z
dZedd��ZdZedd��ZdZedd��Zedd��ZdZedd��ZdS)�DNSUtilsi��,�ZmaxCountZmaxTimecCs�tj�|�}|dur|St�}d}t��r6tjtjfntjfD]�}zdt�|d|dtj	�D]J}t
|�dksXt
|d�svqXtt|dd�t�
|��}|jrX|�|�qXWq>ty�}z|}WYd}~q>d}~00q>|s�|r�t�d||�tj�||�|S)z_ Convert a DNS into an IP address using the Python socket module.
			Thanks to Kevin Drapel.
		Nr�z4Unable to find a corresponding IP address for %s: %s)r�CACHE_nameToIp�get�set�
IPv6IsAllowedr�AF_INET�AF_INET6rZIPPROTO_TCP�lenr�str�_AF2FAM�isValid�add�	Exception�logSys�warning)�dns�ipsZsaveerr�fam�resultr
�errr�dnsToIpSs$ zDNSUtils.dnsToIpc
Csxtj�|d�}|dkr|Szt�|�d}Wn8tjyd}zt�d||�d}WYd}~n
d}~00tj�||�|S)Nrrz'Unable to find a name for the IP %s: %s)	r�CACHE_ipToNamer"rZ
gethostbyaddrrr-�debugr#)r
�vr3rrr�ipToNameqszDNSUtils.ipToNamecCsnt�}t�|�}|dur0t|�}|jr0|�|�|dvrj|sjt�|�}|�|�|rj|dkrjt�	d||�|S)z/ Return the IP of DNS found in a given text.
		N)�yes�warnr:z'Determined IP using DNS Lookup: %s = %s)
r#r�searchIPr*r+rr4�updater-r.)�textZuseDnsZipListZplainIPr
rrr�textToIp�s



�zDNSUtils.textToIpTcCs�dd|f}tj�|�}|dur"|Sd}|r4ttjfntjtfD]F}z|�}Wq�Wq>ty�}zt�d|�WYd}~q>d}~00q>tj�	||�|S)z;Get short hostname or fully-qualified hostname of host self�self�hostnameNrz#Retrieving own hostnames failed: %s)
rr5r"rrrr,r-r.r#)Zfqdn�keyrr@r3rrr�getHostname�s
�
$zDNSUtils.getHostname)r?r/cCsRtj�tj�}|dur|Stdt�d�t�d�g�tdg�}tj�tj|�|S)zGet own host names of selfNZ	localhostFTr)rr5r"�_getSelfNames_keyr#rB)rrrr�getSelfNames�s��zDNSUtils.getSelfNames)Znetintrfr0cCs\tj�tj�}|dur|Sztdd�t��D��}Wnt�}Yn0tj�tj|�|S)�Get own IP addresses of selfNcSsg|]\}}|�qSrr)rZni�arrr�
<listcomp>��z+DNSUtils.getNetIntrfIPs.<locals>.<listcomp>)rr!r"�_getNetIntrfIPs_key�	IPAddrSet�_NetworkInterfacesAddrsr#)r0rrr�getNetIntrfIPs�szDNSUtils.getNetIntrfIPs)r?r0cCs�tj�tj�}|dur|Stt���}t��D]N}z|tt�|��O}Wq.tyz}zt	�
d||�WYd}~q.d}~00q.tj�tj|�|S)rENz#Retrieving own IPs of %s failed: %s)rr!r"�_getSelfIPs_keyrJrLrDr4r,r-r.r#)r0r@r3rrr�
getSelfIPs�s&zDNSUtils.getSelfIPsNc
CsVtjs
dSz>tdd�� }t|���Wd�WS1s<0YWnYn0d}z�z.t�tjtj�}|�d�WW|r�|��dSt	�y.}z�t
|d��rddl}|jdks�|j|j|j
fvr�WYd}~W|r�|��dS|j|j|jfv�rWYd}~W|�r|��dSWYd}~n
d}~00W|�rR|��n|�rP|��0dS)NFz(/proc/sys/net/ipv6/conf/all/disable_ipv6�rb)rrT�errnor)rZhas_ipv6�open�int�readr&ZSOCK_STREAMZbind�closer,�hasattrrPZ
EADDRNOTAVAILZEAFNOSUPPORTZ
EADDRINUSEZEACCES)�f�sr3rPrrr�_IPv6IsSupportedBySystem�s62
��� z!DNSUtils._IPv6IsSupportedBySystemcCs*|t_t�d|dur |rdq"dnd�|S)Nz
IPv6 is %s�on�off�auto)r�_IPv6IsAllowedr-r6)�valuerrr�setIPv6IsAllowed
s zDNSUtils.setIPv6IsAllowed)r?zipv6-allowedcCs�tjdurtjStj�tj�}|dur*|St��}|durzt��}|shdt_zt��}Wdt_ndt_0tdd�|D��}tj�	tj|�|S)NTcss|]}d|jvVqdS)�:N)�ntoa)rr
rrrr$rHz)DNSUtils.IPv6IsAllowed.<locals>.<genexpr>)
rr\r!r"�_IPv6IsAllowed_keyrXrLrN�anyr#)r7r0rrrr$s 

zDNSUtils.IPv6IsAllowed)T)�__name__�
__module__�__qualname__r�Cacher!r5�staticmethodr4r8r>rBrCrDrIrLrMrNr\rXr^rar$rrrrrMs6







rcs�eZdZdZdZdZe�deef�Ze�deeeef�Z	dZ
dZej
dd	d
�ZdZdZeejZeejZed
d��Zef�fdd�	Zedd��Zefdd�Zdd�Zdd�Zdd�Zedd��Zedd��Z ejdejd iZ!ed!d"��Z"ed#d$��Z#ed%d&��Z$ed'd(��Z%ed)d*��Z&d+d,�Z'd-d.�Z(d/d0�Z)d1d2�Z*d3d4�Z+d5d6�Z,ed7d8��Z-ed9d:��Z.dQd;d<�Z/d=d>�Z0ed?d@��Z1edAdB��Z2dCdD�Z3dEdF�Z4dGdH�Z5dIdJ�Z6e6�Z7edKdL��Z8edMdN��Z9edOdP��Z:�Z;S)Rrz7Encapsulate functionality for IPv4 and IPv6 addresses
	z(?:\d{1,3}\.){3}\d{1,3}z:(?:[0-9a-fA-F]{1,4}::?|:){1,7}(?:[0-9a-fA-F]{1,4}|(?<=:):)z%^(?:(?P<IPv4>%s)|\[?(?P<IPv6>%s)\]?)$z^(%s|%s)/(?:(\d+)|(%s|%s))$N)�_family�_addr�_plen�	_maskplen�_rawi'rr������cCs
tj|S�N)r�CIDR_RAW)r7rrrr)EszIPAddr._AF2FAMcs�|tjkrt|ttf�rtj}|tjkrHtt|��|�}|�||�|S||f}tj	�
|�}|durh|S|tjkr�t�|�\}}||f}|tjkr�tj	�
|�}|dur�|Stt|��|�}|�||�|jtjkr�tj	�
||�|Sro)r�CIDR_UNSPECr�tuple�listrp�super�__new__�
_IPAddr__init�	CACHE_OBJr"�_IPAddr__wrap_ipstrrhr#)�cls�ipstr�cidrr
�args��	__class__rrruIs,


zIPAddr.__new__cCs�t|�dkr0|ddkr0|ddkr0|dd�}d|vrB|tjfStj�|�}|dur`|tjfSt|���}|dr�t�|d�|d<|d=zt|d�|d<Wnt	y�|tjfYS0|S)Nrr�[rn�]r�/)
r'rrq�
IP_W_CIDR_CRE�matchrs�groups�
masktoplenrR�
ValueError)rzrWrrrZ__wrap_ipstrds $

zIPAddr.__wrap_ipstrc	Cs�tj|_d|_d|_d|_||_|tjk�rx|durL|tjkrLtj|g}ntj	tj
g}|D]:}zt�||�}||_Wq�Wq\tjy�Yq\Yq\0q\|jtj	kr�t
�d|�\|_d|_|dur�|dkr�d|?}|j|M_||_n�|jtj
k�r�t
�d|�\}}|d>|B|_d|_|du�rP|dk�rPd	|?}|j|M_||_n&|�tj��r�|d@|_tj	|_d|_ntj|_dS)
zP initialize IP object by converting IP address string
			to binary to integer
		rN�!L� ����!QQ�@��	���������)r�	AF_UNSPECrhrirjrkrlrrpr%r&Z	inet_ptonr�structZunpack�isInNet�IP6_4COMPAT)r?rzr{�family�binary�mask�hi�lorrrZ__initzsH



z
IPAddr.__initcCs
t|j�Sro)�reprr`�r?rrr�__repr__�szIPAddr.__repr__cCst|jt�r|jSt|j�Sro)rr`r(r�rrr�__str__�szIPAddr.__str__cCst|jffS)z�IPAddr pickle-handler, that simply wraps IPAddr to the str

		Returns a string as instance to be pickled, because fail2ban-client can't
		unserialize IPAddr objects
		)r(r`r�rrr�
__reduce__�szIPAddr.__reduce__cCs|jSro)rir�rrr�addr�szIPAddr.addrcCs|jSro)rhr�rrrr��sz
IPAddr.familyZinet4Zinet6cCstj�|j�Sro)r�FAM2STRr"rhr�rrr�	familyStr�szIPAddr.familyStrcCs|jSro)rjr�rrr�plen�szIPAddr.plencCs|jS)zlThe raw address

		Should only be set to a non-empty string if prior address
		conversion wasn't possible
		)rlr�rrr�raw�sz
IPAddr.rawcCs|jtjkS)z6Either the object corresponds to a valid IP address
		)rhrr�r�rrrr*�szIPAddr.isValidcCs |jtjdtjdi�|jd�kS)zIReturns whether the object is a single IP address (not DNS and subnet)
		r�r�i���)rjrr%r&r"rhr�rrr�isSingle�szIPAddr.isSinglecCs~|jtjkr t|t�s |j|kSt|t�s>|dur6dSt|�}|j|jkrNdS|jtjkrf|j|jkS|j|jko||j|jkS�NF)	rhrrprrlrr�rirj�r?�otherrrr�__eq__�s


�z
IPAddr.__eq__cCs
||kSrorr�rrr�__ne__�sz
IPAddr.__ne__cCsV|jtjkr t|t�s |j|kSt|t�s>|dur6dSt|�}|j|jkpT|j|jkSr�)rhrrprrlrir�rrr�__lt__�s

z
IPAddr.__lt__cCst|t�st|�}d||fS�Nz%s%srr�rrr�__add__�s
zIPAddr.__add__cCst|t�st|�}d||fSr�rr�rrr�__radd__s
zIPAddr.__radd__cCs
t|j�Sro)�hashr`r�rrr�__hash__szIPAddr.__hash__cCs4|jtjkrd|jS|jtjkr,d|jSdSdS)z<Hex representation of the IP address (for debug purposes)
		z%08xz%032xrN)rhrr%rir&r�rrr�hexdump
s


zIPAddr.hexdumpcCs�d}|jr4t�d|j�}|jr~|jdkr~d|j}nJ|jrx|jd?}|jd@}t�d||�}|jr~|jdkr~d|j}n|jSt�|j	|�|S)	zi represent IP object as text like the deprecated
			C pendant inet.ntoa but address family independent
		rr�r�z/%dr�l����r�r�)
�isIPv4r�Zpackrirj�isIPv6rlr�	inet_ntoprh)r?r+r�r�r�rrrr`s

zIPAddr.ntoacCsT|jr |j�d�}|dur>d}n|jr:|j}|dur>d}ndSdd�t|��|fS)a return the DNS PTR string of the provided IP address object

			If "suffix" is provided it will be appended as the second and top
			level reverse domain.
			If omitted it is implicitly set to the second and top level reverse
			domain of the according IP address family
		rNz
in-addr.arpa.z	ip6.arpa.rz%s.%s)r�r`�splitr�r��join�reversed)r?�suffixZexploded_iprrr�getPTR0sz
IPAddr.getPTRcCst�|j�S)z?Return the host name (DNS) of the provided IP address object
		)rr8r`r�rrr�getHostEszIPAddr.getHostcCs|jtjkS)z4Either the IP object is of address family AF_INET
		)r�rr%r�rrrr�Jsz
IPAddr.isIPv4cCs|jtjkS)z5Either the IP object is of address family AF_INET6
		)r�rr&r�rrrr�Psz
IPAddr.isIPv6cCsl|js |jdkr |t�|j�vS|j|jkr0dS|jrDd|j?}n|jrXd|j?}ndS|j|@|jkS)z9Return either the IP object is in the provided network
		rFr�r�)	r*r�rr4r�r�r�r�r�)r?Znetr�rrrr�VszIPAddr.isInNetcCst|t�o||kp|�|�S)z;Return whether the object (as network) contains given IP
		)rrr��r?r
rrr�containsiszIPAddr.containscCs
|�|�Sro�r�r�rrr�__contains__nszIPAddr.__contains__cCsldd>d}d}|d|dddi}d}tdd�D]8}|d|>O}|dkrVd||||A<d||||A<q.|S)Nrr�r�r�r��)�range)Zm6Zm4Zmmap�m�irrrZ__getMaskMaprszIPAddr.__getMaskMapcCsFd}|jdur|jStj�|j�}|dur<tdt|�f��||_|S)Nrz'invalid mask %r, no plen representation)rkr�MAP_ADDR2MASKPLENr"rir�r()r?Zmplenrrr�maskplen�s
zIPAddr.maskplencCs
t|�jS)zIConvert mask string to prefix length

		To be used only for IPv4 masks
		)rr�)r�rrrr��szIPAddr.masktoplencCs<tj�|�}|sdS|�d�}|dur2|dkr2|S|�d�S)zBSearch if text is an IP address, and return it if so, else None
		NZIPv4rZIPv6)r�
IP_4_6_CREr��group)r=r�rzrrrr;�s
zIPAddr.searchIP)N)<rcrdre�__doc__ZIP_4_REZIP_6_RE�re�compiler�r�r��	__slots__rrfrwrprqrr%ZFAM_IPv4r&ZFAM_IPv6rgr)rurxrvr�r�r��propertyr�r�r�r�r�r�r*r�r�r�r�r�r�r�r�r`r�r�r�r�r�r�r�Z_IPAddr__getMaskMapr�r�r�r;�
__classcell__rrr}rr.s�
��



7














rz
::ffff:0:0�`c@s,eZdZdZgfdd�Zdd�Zdd�ZdS)	rJFcCsNt�}|D]2}t|t�s t|�}|�|�|j|jO_q
t�||�dSro)r#rrr+�	hasSubNetr��__init__)r?r0Zips2r
rrrr��s
zIPAddrSet.__init__cCs4t|t�st|�}|j|jO_t�||�dSro)rrr�r�r#r+r�rrrr+�sz
IPAddrSet.addcs:t�t�st���t�|��p8|jo8t�fdd�|D��S)Nc3s|]}|���VqdSror�)r�nr	rrr�rHz)IPAddrSet.__contains__.<locals>.<genexpr>)rrr#r�r�rbr�rr	rr��szIPAddrSet.__contains__N)rcrdrer�r�r+r�rrrrrJ�srJFc
s��z^ddlm}m}m�m�m�m�m�m�m	}m
}m}m}m
�m�ddl}ddl}G��fdd�d|��
G���fdd�d|��G����fdd�d|��G��
fd	d
�d
|�}Gdd�d|��d
���fd|fd|fd��
�fd��
�fd|fd|fg�_|�|j�d��pd��
�
j�s&td��dd��	d�����fdd�	�d ����	�
��fdd�	}	Wn:t�y�}
z t|
���fdd�}	WYd}
~
n
d}
~
00t|	�t_|	|�S)!Nr)�	Structure�Union�POINTER�pointer�	get_errno�cast�c_ushort�c_byte�c_void_p�c_char_p�c_uint�c_int�c_uint16�c_uint32cs eZdZd�fd�dfgZdS)z0_NetworkInterfacesAddrs.<locals>.struct_sockaddr�	sa_familyZsa_data�N�rcrdre�_fields_r)r�r�rr�struct_sockaddr�s
�r�cs&eZdZd�fd�fd�dfgZdS)z3_NetworkInterfacesAddrs.<locals>.struct_sockaddr_inZ
sin_familyZsin_port�sin_addrr Nr�r)r�r�r�rr�struct_sockaddr_in�s
�r�cs2eZdZd�fd�fd�fd�dfd�fgZdS)z4_NetworkInterfacesAddrs.<locals>.struct_sockaddr_in6Zsin6_familyZ	sin6_portZ
sin6_flowinfo�	sin6_addr�Z
sin6_scope_idNr�r)r�r�r�r�rr�struct_sockaddr_in6�s
�r�cs$eZdZd���fd���fgZdS)z._NetworkInterfacesAddrs.<locals>.union_ifa_ifuZ
ifu_broadaddrZifu_dstaddrNr�r)r�r�rr�
union_ifa_ifu�s

�r�c@seZdZdS)z/_NetworkInterfacesAddrs.<locals>.struct_ifaddrsN)rcrdrerrrr�struct_ifaddrs�sr��ifa_next�ifa_nameZ	ifa_flags�ifa_addr�ifa_netmaskZifa_ifuZifa_data�crz libc.getifaddrs is not availablecss"|j}|V|jsq|jj}qdSro)�contentsr�)�ifap�ifarrr�	ifap_iter�s
z*_NetworkInterfacesAddrs.<locals>.ifap_iterFcs|jj}|j}|tjkr���|�����j}t�||j�}|r�|jj}|dur�|jtjkr���|�����j}|dt�||j�7}t|�S|tj	k�r��|�����j}t�||j
�}|�r
|jj}|du�r
|jtj	k�r
��|�����j}|dt�||j
�7}t|�SdS)Nr�)r�r�r�rr%r�r�r�rr&r�)r��withMaskZsar1r�Znm)r�r�r�r�r�rr�
getfamaddr�s*
z+_NetworkInterfacesAddrs.<locals>.getfamaddrc	3s~����}���|��}|dkr*t����~z@�|�D](}|j�d�}�||�}|r6||fVq6W��|�n��|�0dS)NrzUTF-8)�
getifaddrs�OSErrorr��decodeZfreeifaddrs)r�r�r2r�rr�)r�r�r�r��libcr�r�rrrKs


z8_NetworkInterfacesAddrs.<locals>._NetworkInterfacesAddrscs��dSrorr)�_init_errorrrrKs)F)F)�ctypesr�r�r�r�r�r�r�r�r�r�r�r�r�r�Zctypes.utilr�ZCDLL�utilZfind_libraryr��NotImplementedErrorr,rgrrK)r�r�r�r�r�r�r�r�r�rKr3r)r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrK�s8@


�	"
rK)r)F)�
__author__Z
__copyright__Z__license__rr�r�ZutilsrZhelpersrrcr-r
rr�objectrr�r#rJrKrgrrrr�<module>s&
 bu
j