§
    HºiÌ/  ã                   ó  — d Z ddlmZmZ ddlZddlZddlZddlZddl	Zddl
ZddlZddlZddlZddlZddlZ G d„ dej        j        ¦  «        Z G d„ dej        j        ¦  «        ZeZej        Zej        Zej        Zej        ZdS )zDNS Dynamic Update Supporté    )ÚAnyÚListNc                   ó8   — e Zd ZdZdZdZdZdZed„ ¦   «         Z	dS )ÚUpdateSectionzUpdate sectionsr   é   é   é   c                 ó   — dS )Nr	   © )Úclss    úO/home/mmwave/public_html/mmwave/venv/lib/python3.11/site-packages/dns/update.pyÚ_maximumzUpdateSection._maximum+   s   € àˆqó    N)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚZONEÚPREREQÚUPDATEÚ
ADDITIONALÚclassmethodr   r   r   r   r   r   #   sG   € € € € € ØÐà€DØ€FØ€FØ€Jàðð ñ „[ðð ð r   r   c                   ó  ‡ — e Zd ZeZdej        j        ddej        j	        dfdej
        j        ez  dz  dej        j        dedz  dej
        j        dz  dej
        j        ez  dedz  fˆ fd„Zed	eej        j                 fd
„¦   «         Zej        d„ ¦   «         Zed	eej        j                 fd„¦   «         Zej        d„ ¦   «         Zed	eej        j                 fd„¦   «         Zej        d„ ¦   «         Zdd„Zd„ Zdej
        j        ez  ded	dfd„Zdej
        j        ez  ded	dfd„Zdej
        j        ez  ded	dfd„Zdej
        j        ez  ded	dfd„Z	 ddej
        j        ez  dej        j         ez  dz  d	dfd„Z!d„ Z"d„ Z#ˆ xZ$S )ÚUpdateMessageNÚzoneÚrdclassÚkeyringÚkeynameÚkeyalgorithmÚidc                 ó>  •— t          ¦   «                              |¬¦  «         | xj        t          j                             t          j        j        ¦  «        z  c_        t          |t          ¦  «        rt          j	         
                    |¦  «        }|| _        t          j        j                             |¦  «        }|| _        | j        r4|                      | j        | j        |t          j        j        dd¬¦  «         |�|                      |||¬¦  «         dS dS )ax  Initialize a new DNS Update object.

        See the documentation of the Message class for a complete
        description of the keyring dictionary.

        *zone*, a ``dns.name.Name``, ``str``, or ``None``, the zone
        which is being updated.  ``None`` should only be used by dnspython's
        message constructors, as a zone is required for the convenience
        methods like ``add()``, ``replace()``, etc.

        *rdclass*, an ``int`` or ``str``, the class of the zone.

        The *keyring*, *keyname*, and *keyalgorithm* parameters are passed to
        ``use_tsig()``; see its documentation for details.
        )r    T)ÚcreateÚforce_uniqueN)Ú	algorithm)ÚsuperÚ__init__ÚflagsÚdnsÚopcodeÚto_flagsr   Ú
isinstanceÚstrÚnameÚ	from_textÚoriginÚ
rdataclassÚ
RdataClassÚmakeÚzone_rdclassÚ
find_rrsetr   Ú	rdatatypeÚSOAÚuse_tsig)Úselfr   r   r   r   r   r    Ú	__class__s          €r   r&   zUpdateMessage.__init__4   s  ø€ õ0 	‰Œ×Ò˜BÐÑÔÐØˆ
Œ
•c”j×)Ò)­#¬*Ô*;Ñ<Ô<Ñ<ˆ
Œ
Ý�d�CÑ Ô ð 	,Ý”8×%Ò% dÑ+Ô+ˆDØˆŒÝ”.Ô+×0Ò0°Ñ9Ô9ˆØ#ˆÔØŒ;ð 	Ø�OŠOØ”	Ø”ØÝ”Ô!ØØ!ð ñ ô ð ð ÐØ�MŠM˜' 7°lˆMÑCÔCÐCÐCÐCð Ðr   Úreturnc                 ó   — | j         d         S )zThe zone section.r   ©Úsections©r8   s    r   r   zUpdateMessage.zone_   ó   € ð Œ}˜QÔÐr   c                 ó   — || j         d<   d S )Nr   r<   ©r8   Úvs     r   r   zUpdateMessage.zoned   ó   € àˆŒ�aÑÐÐr   c                 ó   — | j         d         S )zThe prerequisite section.r   r<   r>   s    r   ÚprerequisitezUpdateMessage.prerequisiteh   r?   r   c                 ó   — || j         d<   d S )Nr   r<   rA   s     r   rE   zUpdateMessage.prerequisitem   rC   r   c                 ó   — | j         d         S )zThe update section.r   r<   r>   s    r   ÚupdatezUpdateMessage.updateq   r?   r   c                 ó   — || j         d<   d S )Nr   r<   rA   s     r   rH   zUpdateMessage.updatev   rC   r   c           
      ó¸   — |€| j         }|                     ¦   «         }|                      ||| j        |j        ||dd¦  «        }|                     ||¦  «         dS )z&Add a single RR to the update section.NT)rH   Úcoversr4   r3   ÚrdtypeÚadd)r8   r-   ÚttlÚrdÚdeletingÚsectionrK   Úrrsets           r   Ú_add_rrzUpdateMessage._add_rrz   sc   € ð ˆ?Ø”kˆGØ—’‘”ˆØ—’Ø�T˜4Ô,¨b¬i¸ÀÈ4ÐQUñ
ô 
ˆð 	�	Š	�"�cÑÔÐÐÐr   c                 ó¬  — t          |t          ¦  «        r t          j                             |d¦  «        }t          |d         t          j        j        ¦  «        rG|D ]B}|r|                      ||j        ¦  «         |D ] }|  	                    ||j
        ||¬¦  «         Œ!ŒCdS t          |¦  «        }t          |                     d¦  «        ¦  «        }t          |d         t          j        j        ¦  «        rC|r!|                      ||d         j        ¦  «         |D ]}|  	                    ||||¬¦  «         ŒdS t          j        j                             |                     d¦  «        ¦  «        }|r|                      ||¦  «         |D ]G}	t          j                             | j        ||	| j        ¦  «        }|  	                    ||||¬¦  «         ŒHdS )a°  Add records.

        *replace* is the replacement mode.  If ``False``,
        RRs are added to an existing RRset; if ``True``, the RRset
        is replaced with the specified contents.  The second
        argument is the section to add to.  The third argument
        is always a name.  The other arguments can be:

                - rdataset...

                - ttl, rdata...

                - ttl, rdtype, string...
        Nr   )rQ   )r+   r,   r(   r-   r.   ÚrdatasetÚRdatasetÚdeleterL   rS   rN   ÚlistÚintÚpopÚrdataÚRdatar5   Ú	RdataTyper2   r3   r/   )
r8   ÚreplacerQ   r-   ÚargsÚrdsrO   rN   rL   Úss
             r   Ú_addzUpdateMessage._add…   sï  € õ  �d�CÑ Ô ð 	2Ý”8×%Ò% d¨DÑ1Ô1ˆDÝ�d˜1”g�sœ|Ô4Ñ5Ô5ð 	AØð Eð E�Øð 2Ø—K’K  c¤jÑ1Ô1Ð1Øð Eð E�BØ—L’L  s¤w°¸G�LÑDÔDÐDÐDðEðEð Eõ ˜‘:”:ˆDÝ�d—h’h˜q‘k”kÑ"Ô"ˆCÝ˜$˜qœ'¥3¤9¤?Ñ3Ô3ð AØð 6Ø—K’K  d¨1¤g¤nÑ5Ô5Ð5Øð Að A�BØ—L’L  s¨B¸�LÑ@Ô@Ð@Ð@ðAð Aõ œÔ0×5Ò5°d·h²h¸q±k´kÑBÔB�Øð .Ø—K’K  fÑ-Ô-Ð-Øð Að A�AÝœ×,Ò,¨TÔ->ÀÈÈ4Ì;ÑWÔW�BØ—L’L  s¨B¸�LÑ@Ô@Ð@Ð@ðAð Ar   r-   r_   c                 ó0   —  | j         d| j        |g|¢R Ž  dS )zÒAdd records.

        The first argument is always a name.  The other
        arguments can be:

                - rdataset...

                - ttl, rdata...

                - ttl, rdtype, string...
        FN©rb   rH   ©r8   r-   r_   s      r   rM   zUpdateMessage.add­   s*   € ð 	ˆŒ	�%˜œ dÐ2¨TÐ2Ð2Ð2Ð2Ð2Ð2r   c           
      ó˜  — t          |t          ¦  «        r t          j                             |d¦  «        }t          |¦  «        dk    r_|                      | j        |t          j        j	        t          j
        j	        t          j
        j        t          j        j	        dd¦  «         dS t          |d         t          j        j        ¦  «        r3|D ].}|D ])}|                      |d|t          j        j        ¦  «         Œ*Œ/dS t          |¦  «        }t          |d         t          j        j        ¦  «        r.|D ])}|                      |d|t          j        j        ¦  «         Œ*dS t          j
        j                             |                     d¦  «        ¦  «        }t          |¦  «        dk    rF|                      | j        || j        |t          j
        j        t          j        j	        dd¦  «         dS |D ]U}t          j                             | j        ||| j        ¦  «        }|                      |d|t          j        j        ¦  «         ŒVdS )zèDelete records.

        The first argument is always a name.  The other
        arguments can be:

                - *empty*

                - rdataset...

                - rdata...

                - rdtype, [string...]
        Nr   T)r+   r,   r(   r-   r.   Úlenr4   rH   r0   ÚANYr5   ÚNONErU   rV   rS   rX   r[   r\   r]   r2   rZ   r3   r/   )r8   r-   r_   r`   rO   ÚlargsrL   ra   s           r   rW   zUpdateMessage.delete¼   sD  € õ �d�CÑ Ô ð 	2Ý”8×%Ò% d¨DÑ1Ô1ˆDÝˆt‰9Œ9˜Š>ˆ>Ø�OŠOØ”ØÝ”Ô"Ý”Ô!Ý”Ô"Ý”Ô"ØØñ	ô 	ð 	ð 	ð 	õ ˜˜Qœ¥¤Ô!6Ñ7Ô7ð 	GØð Cð C�Øð Cð C�BØ—L’L  q¨"­c¬nÔ.AÑBÔBÐBÐBðCðCð Cõ ˜‘J”JˆEÝ˜% œ(¥C¤I¤OÑ4Ô4ð GØð Cð C�BØ—L’L  q¨"­c¬nÔ.AÑBÔBÐBÐBðCð Cõ œÔ0×5Ò5°e·i²iÀ±l´lÑCÔC�Ý�u‘:”: ’?�?Ø—O’OØœØØÔ)ØÝœÔ*ÝœÔ*ØØñ	ô 	ð 	ð 	ð 	ð #ð Gð G˜Ý œY×0Ò0Ø Ô-Ø"ØØ œKñ	ô ˜ð Ÿš T¨1¨bµ#´.Ô2EÑFÔFÐFÐFðGð Gr   c                 ó0   —  | j         d| j        |g|¢R Ž  dS )ab  Replace records.

        The first argument is always a name.  The other
        arguments can be:

                - rdataset...

                - ttl, rdata...

                - ttl, rdtype, string...

        Note that if you want to replace the entire node, you should do
        a delete of the name followed by one or more calls to add.
        TNrd   re   s      r   r^   zUpdateMessage.replaceø   s*   € ð  	ˆŒ	�$˜œ TÐ1¨DÐ1Ð1Ð1Ð1Ð1Ð1r   c           
      ó²  — t          |t          ¦  «        r t          j                             |d¦  «        }t          |¦  «        dk    rP|                      | j        |t          j        j	        t          j
        j	        t          j
        j        ddd¦  «         dS t          |d         t          j        j        ¦  «        s8t          |d         t          j        j        ¦  «        st          |¦  «        dk    rxt          |d         t          j        j        ¦  «        s<t!          |¦  «        }|                     dd¦  «          | j        d| j        |g|¢R Ž  dS  | j        d| j        |g|¢R Ž  dS t          j
        j                             |d         ¦  «        }|                      | j        |t          j        j	        |t          j
        j        ddd¦  «         dS )aS  Require that an owner name (and optionally an rdata type,
        or specific rdataset) exists as a prerequisite to the
        execution of the update.

        The first argument is always a name.
        The other arguments can be:

                - rdataset...

                - rdata...

                - rdtype, string...
        Nr   Tr   F)r+   r,   r(   r-   r.   rg   r4   rE   r0   rh   r5   ri   rU   rV   r[   r\   rX   Úinsertrb   r]   r2   )r8   r-   r_   rj   rL   s        r   ÚpresentzUpdateMessage.present
  s¸  € õ �d�CÑ Ô ð 	2Ý”8×%Ò% d¨DÑ1Ô1ˆDÝˆt‰9Œ9˜Š>ˆ>Ø�OŠOØÔ!ØÝ”Ô"Ý”Ô!Ý”Ô"ØØØñ	ô 	ð 	ð 	ð 	õ �t˜A”w¥¤Ô 5Ñ6Ô6ð	å˜$˜qœ'¥3¤9¤?Ñ3Ô3ð	õ �4‰yŒy˜1Š}ˆ}å˜d 1œg¥s¤|Ô'<Ñ=Ô=ð Aå˜T™
œ
�Ø—’˜Q Ñ"Ô"Ð"Ø�”	˜% Ô!2°DÐA¸5ÐAÐAÐAÐAÐAÐAà�”	˜% Ô!2°DÐ@¸4Ð@Ð@Ð@Ð@Ð@Ð@å”]Ô,×1Ò1°$°q´'Ñ:Ô:ˆFØ�OŠOØÔ!ØÝ”Ô"ØÝ”Ô"ØØØñ	ô 	ð 	ð 	ð 	r   rL   c           
      óÚ  — t          |t          ¦  «        r t          j                             |d¦  «        }|€P|                      | j        |t          j        j        t          j	        j
        t          j	        j        ddd¦  «         dS t          j	        j                             |¦  «        }|                      | j        |t          j        j        |t          j	        j        ddd¦  «         dS )z‚Require that an owner name (and optionally an rdata type) does
        not exist as a prerequisite to the execution of the update.NT)r+   r,   r(   r-   r.   r4   rE   r0   ri   r5   rh   r]   r2   )r8   r-   rL   s      r   ÚabsentzUpdateMessage.absent?  sÛ   € õ �d�CÑ Ô ð 	2Ý”8×%Ò% d¨DÑ1Ô1ˆDØˆ>Ø�OŠOØÔ!ØÝ”Ô#Ý”Ô!Ý”Ô"ØØØñ	ô 	ð 	ð 	ð 	õ ”]Ô,×1Ò1°&Ñ9Ô9ˆFØ�OŠOØÔ!ØÝ”Ô#ØÝ”Ô"ØØØñ	ô 	ð 	ð 	ð 	r   c                 ó   — dS )NTr   )r8   Úvalues     r   Ú_get_one_rr_per_rrsetz#UpdateMessage._get_one_rr_per_rrseta  s   € àˆtr   c                 óº  — d }d}|t           j        k    rMt          j                             |¦  «        s|t          j        j        k    s| j        rt          j        j	        ‚nu| j        st          j        j	        ‚|t          j        j
        t          j        j        fv r9|}| j        d         j        }|t          j        j
        k    p|t           j        k    }||||fS )NFr   )r   r   r(   r0   Úis_metaclassr5   r6   r   Ú	exceptionÚ	FormErrorrh   ri   r   r   )r8   rQ   r-   r   rL   rP   Úemptys          r   Ú_parse_rr_headerzUpdateMessage._parse_rr_headere  sÒ   € ØˆØˆØ•mÔ(Ò(Ð(å”×+Ò+¨GÑ4Ô4ð.à�Sœ]Ô.Ò.Ð.Ø”9ð /õ ”mÔ-Ð-ð /ð
 ”9ð .Ý”mÔ-Ð-Ø�3œ>Ô-­s¬~Ô/BÐCÐCÐCØ"�Øœ) Aœ,Ô.�à¥¤Ô 2Ò2ÐU°gÅÔAUÒ6Uð ð ˜ ¨5Ð1Ð1r   )NN)N)%r   r   r   r   Ú_section_enumr(   r0   ÚINÚtsigÚdefault_algorithmr-   ÚNamer,   r1   r   rY   r&   Úpropertyr   rR   ÚRRsetr   ÚsetterrE   rH   rS   rb   rM   rW   r^   rn   r5   r]   rp   rs   ry   Ú__classcell__)r9   s   @r   r   r   0   s,  ø€ € € € € à!€Mð ,0Ø-0¬^Ô->Ø"Ø(,Ø,/¬HÔ,FØð)Dð )DàŒhŒm˜cÑ! DÑ(ð)Dð ”Ô*ð)Dð �t‘ð	)Dð
 ”” Ñ%ð)Dð ”h”m cÑ)ð)Dð �$‰Jð)Dð )Dð )Dð )Dð )Dð )DðV ð �d˜3œ9œ?Ô+ð  ð  ð  ñ „Xð ð 
„[ðð ñ „[ðð ð ˜d 3¤9¤?Ô3ð  ð  ð  ñ „Xð ð Ôðð ñ Ôðð ð ˜˜SœYœ_Ô-ð  ð  ð  ñ „Xð ð „]ðð ñ „]ðð	ð 	ð 	ð 	ð&Að &Að &AðP3˜œœ¨Ñ+ð 3°Cð 3¸Dð 3ð 3ð 3ð 3ð:G˜3œ8œ=¨3Ñ.ð :G°sð :G¸tð :Gð :Gð :Gð :Gðx2˜CœHœM¨CÑ/ð 2¸ð 2Àð 2ð 2ð 2ð 2ð$3˜CœHœM¨CÑ/ð 3¸ð 3Àð 3ð 3ð 3ð 3ðp 8<ð ð  àŒhŒm˜cÑ!ð ð ”Ô'¨#Ñ-°Ñ4ð ð 
ð	 ð  ð  ð  ðDð ð ð2ð 2ð 2ð 2ð 2ð 2ð 2r   r   )r   Útypingr   r   Údns.enumr(   Údns.exceptionÚdns.messageÚdns.nameÚ
dns.opcodeÚ	dns.rdataÚdns.rdataclassÚdns.rdatasetÚdns.rdatatypeÚ	dns.rrsetÚdns.tsigÚenumÚIntEnumr   ÚmessageÚMessager   ÚUpdater   r   r   r   r   r   r   ú<module>r”      s4  ðð$ !Ð  à Ð Ð Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€ð
ð 
ð 
ð 
ð 
�C”HÔ$ñ 
ô 
ð 
ðH2ð H2ð H2ð H2ð H2�C”KÔ'ñ H2ô H2ð H2ðX
 
€ð Ô€Ø	Ô	€Ø	Ô	€ØÔ%€
€
€
r   