????

Your IP : 216.73.217.84


Current Path : /usr/lib/python3.9/site-packages/netaddr/ip/__pycache__/
Upload File :
Current File : //usr/lib/python3.9/site-packages/netaddr/ip/__pycache__/iana.cpython-39.pyc

a

��gv6�@sdZddlZddlmZmZddlmZmZddl	m
Z
mZmZm
Z
ddlmZmZmZiiiid�ZGdd	�d	ej�ZGd
d�de�ZGdd
�d
e�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�Zdd�Zddd�Zdd�Zdd�Ze�dS)a
Routines for accessing data published by IANA (Internet Assigned Numbers
Authority).

More details can be found at the following URLs :-

    - IANA Home Page - http://www.iana.org/
    - IEEE Protocols Information Home Page - http://www.iana.org/protocols/
�N)�make_parser�handler)�	Publisher�
Subscriber)�	IPAddress�	IPNetwork�IPRange�cidr_abbrev_to_verbose)�_dict_items�	_callable�_open_binary)�IPv4�IPv6�IPv6_unicast�	multicastc@s.eZdZd
dd�Zdd�Zdd�Zdd	�ZdS)�SaxRecordParserNcCs.d|_d|_d|_d|_d|_d|_||_dS)NrF)�_level�
_is_active�_record�
_tag_level�_tag_payload�_tag_feeding�	_callback)�self�callback�r�3/usr/lib/python3.9/site-packages/netaddr/ip/iana.py�__init__2szSaxRecordParser.__init__cCs�|jd7_|jdurL|dkr�d|_|j|_i|_d|vr�|d|jd<n^|j|jdkr�|dkr�d|vr�d|vr�|j�|dg�}|�|d�q�g|_d|_nd|_dS)	N�F�recordT�date�xref�type�data)rrrr�
setdefault�appendrr)r�name�attrs�lrrr�startElement;s 
zSaxRecordParser.startElementcCs�|jdur~|dkrH|j|jkrHd|_d|_t|j�r@|�|j�d|_n6|j|jdkr~|dkr~d�|j�|j|<d|_d|_|jd8_dS)NTrFrr!�)	rrrrrr�joinrr)rr&rrr�
endElementPs

zSaxRecordParser.endElementcCs|jdur|j�|�dS)NT)rrr%)rZcontentrrr�
characters`s
zSaxRecordParser.characters)N)�__name__�
__module__�__qualname__rr)r,r-rrrrr1s
	rcs8eZdZdZ�fdd�Zdd�Zdd�Zdd	�Z�ZS)
�XMLRecordParserzP
    A configurable Parser that understands how to parse XML based records.
    cs>tt|���t�|_|j�t|j��||_|j	�
|�dS)z`
        Constructor.

        fh - a valid, open file handle to XML based record data.
        N)�superr1rr�	xmlparserZsetContentHandlerr�consume_record�fh�__dict__�update�rr5�kwargs��	__class__rrrjs
zXMLRecordParser.__init__cCs|S)a
        This is the callback method invoked for every record. It is usually
        over-ridden by base classes to provide specific record-based logic.

        Any record can be vetoed (not passed to registered Subscriber objects)
        by simply returning None.
        r)r�recrrr�process_recordyszXMLRecordParser.process_recordcCs |�|�}|dur|�|�dS)N)r=�notify�rr<rrrrr4�s
zXMLRecordParser.consume_recordcCs|j�|j�dS)z
        Parse and normalises records, notifying registered subscribers with
        record data as it is encountered.
        N)r3�parser5)rrrrr@�szXMLRecordParser.parse)	r.r/r0�__doc__rr=r4r@�
__classcell__rrr:rr1es

r1cs(eZdZdZ�fdd�Zdd�Z�ZS)�
IPv4Parserz�
    A XMLRecordParser that understands how to parse and retrieve data records
    from the IANA IPv4 address space file.

    It can be found online here :-

        - http://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xml
    cstt|��|�dS)z�
        Constructor.

        fh - a valid, open file handle to an IANA IPv4 address space file.

        kwargs - additional parser options.
        N)r2rCrr8r:rrr�szIPv4Parser.__init__cCspi}dD]}t|�|d����||<qd|dvr\|d�d�\}}dt|�t|�f|d<|d��|d<|S)�l
        Callback method invoked for every record.

        See base class method for more details.
        )�prefixZdesignationr �whois�statusr*�/rEz%d/%drG)�str�get�strip�split�int�
capitalize)rr<r�keyZoctetrErrrr=�szIPv4Parser.process_record�r.r/r0rArr=rBrrr:rrC�s	
rCcs(eZdZdZ�fdd�Zdd�Z�ZS)�
IPv6Parserz�
    A XMLRecordParser that understands how to parse and retrieve data records
    from the IANA IPv6 address space file.

    It can be found online here :-

        - http://www.iana.org/assignments/ipv6-address-space/ipv6-address-space.xml
    cstt|��|�dS�z�
        Constructor.

        fh - a valid, open file handle to an IANA IPv6 address space file.

        kwargs - additional parser options.
        N)r2rQrr8r:rrr�szIPv6Parser.__init__cCsFt|�dd����t|�dd����t|�ddg�d���d�}|S)rDrEr*�descriptionZrfc���)rEZ
allocationZ	reference�rIrJrKr?rrrr=�s
�zIPv6Parser.process_recordrPrrr:rrQ�s	
rQcs(eZdZdZ�fdd�Zdd�Z�ZS)�IPv6UnicastParsera!
    A XMLRecordParser that understands how to parse and retrieve data records
    from the IANA IPv6 unicast address assignments file.

    It can be found online here :-

        - http://www.iana.org/assignments/ipv6-unicast-address-assignments/ipv6-unicast-address-assignments.xml
    cstt|��|�dSrR)r2rVrr8r:rrr�szIPv6UnicastParser.__init__c	Csdt|�dd����t|�dd����t|�dd����t|�dd����t|�dd����d�}|S)rDrGr*rSrEr rF)rGrSrEr rFrUr?rrrr=�s�z IPv6UnicastParser.process_recordrPrrr:rrV�s
rVcs0eZdZdZ�fdd�Zdd�Zdd�Z�ZS)�MulticastParserz�
    A XMLRecordParser that knows how to process the IANA IPv4 multicast address
    allocation file.

    It can be found online here :-

        - http://www.iana.org/assignments/multicast-addresses/multicast-addresses.xml
    cstt|��|�dS)z�
        Constructor.

        fh - a valid, open file handle to an IANA IPv4 multicast address
             allocation file.

        kwargs - additional parser options.
        N)r2rWrr8r:rrrs	zMulticastParser.__init__cCs�d|vr^|�d�\}}|���d�}|���d�}dd�dd�|D��d�dd�|D��fS|���d�}d�dd�|D��SdS)	zX
        Removes variations from address entries found in this particular file.
        �-�.z%s-%scSsg|]}tt|���qSr�rIrM��.0�irrr�
<listcomp>$�z2MulticastParser.normalise_addr.<locals>.<listcomp>cSsg|]}tt|���qSrrZr[rrrr^%r_cSsg|]}tt|���qSrrZr[rrrr^(r_N)rLrKr+)r�addrZa1Za2Zo1Zo2rrr�normalise_addrs�zMulticastParser.normalise_addrcCs4d|vr0|�t|d��t|�dd��d�}|SdS)rDr`rSr*)�addressZdescrN)rarIrJr?rrrr=*s
�zMulticastParser.process_record)r.r/r0rArrar=rBrrr:rrWs	rWc@s eZdZdZdd�Zdd�ZdS)�DictUpdaterzc
    Concrete Subscriber that inserts records received from a Publisher into a
    dictionary.
    cCs||_||_||_dS)z�
        Constructor.

        dct - lookup dict or dict like object to insert records into.

        topic - high-level category name of data to be processed.

        unique_key - key name in data dict that uniquely identifies it.
        N)�dct�topic�
unique_key)rrdrerfrrrr?s
zDictUpdater.__init__cCs�||j}|jdkr,tt|��}||j|<n�|jdkrNtt|��}||j|<n||jdkrlt|�}||j|<n^|jdkr�d}d|vr�|�d�\}}t||�}|��}t|�dkr�|d}nt	|�}||j|<dS)	z�
        Callback function used by Publisher to notify this Subscriber about
        an update. Stores topic based information into dictionary passed to
        constructor.
        r
rrrNrXrr)
rfrerr	rdrLr�cidrs�lenr)rr#Zdata_id�cidr�iprange�first�lastrgrrrr7Ms(






zDictUpdater.updateN)r.r/r0rArr7rrrrrc9srccCs�tttd��}|�ttddd��|��tttd��}|�ttddd��|��tttd��}|�ttddd��|��t	ttd��}|�ttd	d	d
��|��dS)zd
    Parse and load internal IANA data lookups with the latest information from
    data files.
    zipv4-address-space.xmlr
rEzipv6-address-space.xmlrz$ipv6-unicast-address-assignments.xmlrzmulticast-addresses.xmlrrbN)
rCr�__package__Zattachrc�	IANA_INFOr@rQrVrW)Zipv4Zipv6Zipv6uaZmcastrrr�	load_infols�rocCs�|durtj}tt�D]r}|�dt|�d�|�|d�|�dt|�d�t|}t|�D]"}||}|�d||d�qdqdS)z7
    Pretty prints IANA information to filehandle.
    NrX�
z%-45r)�_sys�stdout�sortedrn�writerh)r5�categoryZiprangesrj�detailsrrr�pprint_info�srwcCs6t|d�r||vSt|d�r$||kStd|f��dS)Nrk�valuez$Unsupported IP range or address: %r!)�hasattr�	Exception)�ipZip_rangerrr�_within_bounds�s


r|cCsi}|jdkr�ttd�D],\}}t||�r|�dg�|d�|�q|��r�ttd�D],\}}t||�r\|�dg�|d�|�q\n�|jdk�rttd�D],\}}t||�r�|�dg�|d�|�q�ttd�D],\}}t||�r�|�dg�|d�|�q�|S)z7Returns informational data specific to this IP address.�r
rZ	Multicast�rr)�versionr
rnr|r$r%�is_multicast)Zip_addr�inforirrjrrr�query�s*




r�)N)rA�sysrqZxml.saxrrZnetaddr.corerrZ
netaddr.iprrrr	Znetaddr.compatr
rrrnZContentHandlerrr1rCrQrVrWrcrorwr|r�rrrr�<module>s,
�4+)*$23