HEX
Server: LiteSpeed
System: Linux srv146.niagahoster.com 4.18.0-553.30.1.lve.el8.x86_64 #1 SMP Tue Dec 3 01:21:19 UTC 2024 x86_64
User: kodi1989 (1633)
PHP: 8.1.34
Disabled: symlink,shell_exec,exec,popen,system,dl,passthru,escapeshellarg,escapeshellcmd,show_source,pcntl_exec
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/pydnsbl/__pycache__/checker.cpython-37.pyc
B

��f��@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
ejdkr�ejdkr�e�e���Gdd�d�ZGd	d
�d
�ZGdd�dej�ZGd
d�de�ZGdd�de�ZGdd�de�ZdS)z�
DNSBL async checker
Basic usage:
    checker = DNSBLChecker()
    result = cheker.check_ip('...')
    print(result.blacklisted)
    print(result.categories)
    print(result.detected_by)
�N�)�Provider�BASE_PROVIDERS�BASE_DOMAIN_PROVIDERS�win32)��c@s*eZdZdZd	dd�Zdd�Zdd�ZdS)
�DNSBLResultaA
    DNSBL Result class to keep all info about ip request results.

    Attributes:
        * addr - checked ip
        * providers - dnsbl that was asked for response while checking
        * failed_provider - dnsbl that was unable to provide result due
            to connection issues (connection timeout etc...)
        * detected_by - dnsbl that have ip listed and categories detected by
            this dnsbls. dict: {'dnsbl_list_name': list(categories_from_this_dnsbl)}
        * categories - set of dnsbl categories from all providers (subset of DNSBL_CATEGORIES)
    NcCs8||_||_d|_g|_g|_i|_t�|_|��dS)NF)	�addr�_results�blacklisted�	providers�failed_providers�detected_by�set�
categories�process_results)�selfr
�results�r�@/opt/alt/python37/lib/python3.7/site-packages/pydnsbl/checker.py�__init__(szDNSBLResult.__init__cCsrxl|jD]b}|j}|j�|�|jr2|j�|�q|js:qd|_|�|j�}|j	�
|�|_	t|�|j|j
<qWdS)z Process results by providers TN)r�providerr
�append�errorr�responser�process_responser�union�listr�host)r�resultrZprovider_categoriesrrrr2szDNSBLResult.process_resultscCs,|jr
dnd}d|j|t|j�t|j�fS)Nz
[BLACKLISTED]�z<DNSBLResult: %s %s (%d/%d)>)rr
�lenrr
)rrrrr�__repr__BszDNSBLResult.__repr__)NN)�__name__�
__module__�__qualname__�__doc__rrr#rrrrr	s

r	c@seZdZdZddd�ZdS)�
DNSBLResponsez
    DNSBL Response object
    NcCs||_||_||_||_dS)N)r
rrr)rr
rrrrrrrKszDNSBLResponse.__init__)NNNN)r$r%r&r'rrrrrr(Gsr(c@sReZdZdZeddddfdd�Zdd	�Zejd
d��Z	dd
�Z
dd�Zdd�ZdS)�BaseDNSBLCheckerz� BASE Checker for DNSBL lists
        Arguments:
            * providers(list) - list of providers (Provider instance or str)
            * timeout(int) - timeout of dns requests will be passed to resolver
            * tries(int) - retry times
    ����NcCs�g|_x*|D]"}t|t�s"td��|j�|�qW|sjt��t��krRt�	�|_
qpt��|_
t�|j
�n||_
t
j|||j
d�|_t�|�|_dS)Nz0providers should contain only Provider instances)�timeout�tries�loop)r
�
isinstancer�
ValueErrorr�	threading�current_thread�main_thread�asyncioZget_event_loop�_loopZnew_event_loopZset_event_loop�aiodnsZDNSResolver�	_resolver�	Semaphore�
_semaphore)rr
r-r.�concurrencyr/rrrrrYs


zBaseDNSBLChecker.__init__c
�s�d}d}d|�|�|jf}y8|j4IdH�|j�|d�IdH}WdQIdHRXWn8tjjk
r�}z|jddkr||}Wdd}~XYnXt	||||d�S)a
        Make lookup to dnsbl provider for ip
        Parameters:
            * addr (string) - ip address to check
            * provider (string) - dnsbl provider

        Returns:
            * DNSBLResponse object

        Raises:
            * ValueError
        Nz%s.%s�Ar�)r
rrr)
�
prepare_queryrr:r8�queryr7rZDNSError�argsr()r�requestrrrZdnsbl_query�excrrr�
dnsbl_requestls
(zBaseDNSBLChecker.dnsbl_requestcCstS)z(
        Prepare query to dnsbl
        )�NotImplemented)rrArrrr>�szBaseDNSBLChecker.prepare_queryc�sBg}x |jD]}|�|�||��qWtj|�IdH}t||d�S)N)r
r)r
rrCr5�gatherr	)rrA�tasksrrrrr�check_async�s
zBaseDNSBLChecker.check_asynccCs|j�|�|��S)N)r6�run_until_completerG)rrArrr�check�szBaseDNSBLChecker.checkcCs4g}x|D]}|�|�|��q
W|j�tj|��S)N)rrGr6rHr5rE)r�requestsrFrArrr�
bulk_check�s
zBaseDNSBLChecker.bulk_check)
r$r%r&r'rrrC�abc�abstractmethodr>rGrIrKrrrrr)Qsr)c@seZdZdZdd�ZdS)�DNSBLIpCheckerz
    Checker for ips
    cCsdt�|�}|jdkr(d�t|�d���S|jdkrX|j�dd�}d�tdd�|D���Std��dS)	Nr=�.��:r!cSsg|]}|�qSrr)�.0�xrrr�
<listcomp>�sz0DNSBLIpChecker.prepare_query.<locals>.<listcomp>zunknown ip version)	�	ipaddress�
ip_address�version�join�reversed�split�exploded�replacer1)rrA�addressZrequest_strippedrrrr>�s


zDNSBLIpChecker.prepare_queryN)r$r%r&r'r>rrrrrN�srNcs>eZdZdZe�d�Zeddddf�fdd�	Zd	d
�Z	�Z
S)�DNSBLDomainCheckerz
    Checker for domains
    zq^(((?!-))(xn--|_{1,1})?[a-z0-9-]{0,61}[a-z0-9]{1,1}\.)*(xn--[a-z0-9][a-z0-9\-]{0,60}|[a-z0-9-]{1,30}\.[a-z]{2,})$r*r+r,Ncst�j|||||d�dS)N)r
r-r.r;r/)�superr)rr
r-r.r;r/)�	__class__rrr�s
zDNSBLDomainChecker.__init__cCs2|��}t�|���}|j�|�s.td|��|S)Nzshould be valid domain, got %s)�lower�idna�encode�decode�DOMAIN_REGEX�matchr1)rrAZdomain_idnarrrr>�s
z DNSBLDomainChecker.prepare_query)r$r%r&r'�re�compilererrr>�
__classcell__rr)r`rr^�s

r^cs0eZdZdZ�fdd�Zdd�Zdd�Z�ZS)�DNSBLCheckerz0
    Will be deprecated, use DNSBLIpChecker
    cst�dt�t�j||�dS)Nzdeprecated, use DNSBLIpChecker)�warnings�warn�DeprecationWarningr_r)rr@�kwargs)r`rrr�szDNSBLChecker.__init__cCst�dt�|�|�S)Nz$deprecated, use check method instead)rkrlrmrI)rr
rrr�check_ip�szDNSBLChecker.check_ipcCst�dt�|�|�S)Nz)deprecated, use bulk check method instead)rkrlrmrK)r�addrsrrr�	check_ips�szDNSBLChecker.check_ips)r$r%r&r'rrorqrirr)r`rrj�srj)r'rLr5rbrUrg�sysr2rkr7r
rrr�platform�version_infoZset_event_loop_policyZWindowsSelectorEventLoopPolicyr	r(�ABCr)rNr^rjrrrr�<module>	s$,
L