shell bypass 403

Cubjrnet7 Shell


name : versioned.cpython-39.opt-1.pyc
a

�M�e�-�@s�dZddlZddlZddlmZmZmZmZmZddl	Z
ddlZ
ddlZ
ddl
Z
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
Gdd�de
jj�Ze
jjZe
jjZe
jjZe
jjZe
jjZe
jjZGdd�de
jj�ZdS)zDNS Versioned Zones.�N)�Callable�Deque�Optional�Set�Unionc@seZdZdZdS)�UseTransactionz-To alter a versioned zone, use a transaction.N)�__name__�
__module__�__qualname__�__doc__�rr�1/usr/lib/python3.9/site-packages/dns/versioned.pyrsrc	sXeZdZgd�ZeZejjddfe	e
ejje
fejjee	edege	efd��fdd�
Zd7e	ee	eed�dd	�Zd8eed�dd
�Zdd�Zdd�Zdd�Ze	edd�dd�Ze	edege	efdd�dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Z d$d%�Z!d9e
ejje
feej"jd&��fd'd(�
Z#e
ejje
fdd)�d*d+�Z$ej%j&d
fe
ejje
fe
ej%j'e
fe
ej%j'e
feej(j)d,��fd-d.�
Z*ej%j&d
fe
ejje
fe
ej%j'e
fe
ej%j'e
fee	ej(j)d,��fd/d0�
Z+ej%j&fe
ejje
fe
ej%j'e
fe
ej%j'e
fdd1�d2d3�Z,e
ejje
fej(j)dd4�d5d6�Z-�Z.S):�Zone)�	_versionsZ_versions_lock�
_write_txn�_write_waiters�_write_event�_pruning_policy�_readersTN)�origin�rdclass�
relativize�pruning_policycstt��|||�t��|_t��|_|dur6|j|_	n||_	d|_
d|_t��|_t
�|_|�dt|dd�|�dS)a�Initialize a versioned zone object.

        *origin* is the origin of the zone.  It may be a ``dns.name.Name``,
        a ``str``, or ``None``.  If ``None``, then the zone's origin will
        be set by the first ``$ORIGIN`` line in a zone file.

        *rdclass*, an ``int``, the zone's rdata class; the default is class IN.

        *relativize*, a ``bool``, determine's whether domain names are
        relativized to the zone's origin.  The default is ``True``.

        *pruning policy*, a function taking a ``Zone`` and a ``Version`` and returning
        a ``bool``, or ``None``.  Should the version be pruned?  If ``None``,
        the default policy, which retains one version is used.
        NT)�replacement)�super�__init__�collections�dequer�	threading�Lock�
_version_lock�_default_pruning_policyrrrr�setr�_commit_version_unlocked�WritableVersion)�selfrrrr��	__class__rr
r.s



�z
Zone.__init__)�id�serial�returnc	Cs,|dur|durtd��|j���|durbd}t|j�D]}|j|kr8|}qPq8|dur�td��n�|dur�|jrztjj	}n|j
}d}t|j�D]@}|j�|�}|r�|�
|jtjj�}|r�|dj|kr�|}q�q�|dur�td��n
|jd}t|d|�}|j�|�|Wd�S1�s0YdS)Nz!cannot specify both id and serialzversion not foundrzserial not found���F)�
ValueErrorr �reversedrr(�KeyErrorr�dns�name�emptyr�nodes�get�get_rdatasetr�	rdatatypeZSOAr)�Transactionr�add)	r%r(r)�version�vZoname�nZrds�txnrrr
�readerSs:





zZone.readerF)rr*cCs�d}|j�\|jdurD||jkrDt||dd�|_d|_Wd�q�t��}|j�|�Wd�n1sl0Y|��q|j�	�|jS)NT)Zmake_immutable)
r rrr6r�Eventr�append�waitZ_setup_version)r%rZeventrrr
�writerws�*

zZone.writercCs(t|j�dkr$|j��|_|j��dS)Nr)�lenr�popleftrr")r%rrr
�!_maybe_wakeup_one_waiter_unlocked�sz&Zone._maybe_wakeup_one_waiter_unlockedcCsdS)NTr)r%�zoner8rrr
r!�szZone._default_pruning_policycCsbt|j�dkr$tdd�|jD��}n|jdj}|jdj|kr^|�||jd�r^|j��q0dS)Nrcss|]}|jjVqdS�N)r8r()�.0r;rrr
�	<genexpr>��z0Zone._prune_versions_unlocked.<locals>.<genexpr>r+)rAr�minrr(rrB)r%Z
least_keptrrr
�_prune_versions_unlocked�s	
�zZone._prune_versions_unlocked)�max_versionsr*csD�dur�dkrtd���dur*dd�}n�fdd�}|�|�dS)zYSet a pruning policy that retains up to the specified number
        of versions
        N�zmax versions must be at least 1cSsdS)NFr�rD�_rrr
�policy�sz%Zone.set_max_versions.<locals>.policycst|j��kSrE)rArrM�rKrr
rO�s)r,�set_pruning_policy)r%rKrOrrPr
�set_max_versions�s
zZone.set_max_versions)rOr*cCsF|dur|j}|j�||_|��Wd�n1s80YdS)a�Set the pruning policy for the zone.

        The *policy* function takes a `Version` and returns `True` if
        the version should be pruned, and `False` otherwise.  `None`
        may also be specified for policy, in which case the default policy
        is used.

        Pruning checking proceeds from the least version and the first
        time the function returns `False`, the checking stops.  I.e. the
        retained versions are always a consecutive sequence.
        N)r!r rrJ)r%rOrrr
rQ�s
zZone.set_pruning_policycCs>|j�$|j�|�|��Wd�n1s00YdSrE)r r�removerJ�r%r;rrr
�	_end_read�szZone._end_readcCsd|_|��dSrE)rrCrTrrr
�_end_write_unlocked�szZone._end_write_unlockedcCs4|j�|�|�Wd�n1s&0YdSrE)r rVrTrrr
�
_end_write�szZone._end_writecCsB|j�|�|��|j|_|jdur,||_|dur>|�|�dSrE)rr>rJr2rrV�r%r;r8rrrr
r#�s
zZone._commit_version_unlockedcCs8|j�|�|||�Wd�n1s*0YdSrE)r r#rXrrr
�_commit_versionszZone._commit_versioncCs(t|j�dkr |jdjd}nd}|S)Nrr+rL)rArr()r%r(rrr
�_get_next_version_idszZone._get_next_version_id)r0�creater*cs|rt�t��|�SrE)rr�	find_node)r%r0r[r&rr
r\szZone.find_node)r0r*cCst�dSrE�r)r%r0rrr
�delete_nodeszZone.delete_node)r0�rdtype�coversr[r*cs$|rt�t��|||�}tj�|�SrE)rr�
find_rdatasetr/�rdataset�ImmutableRdataset�r%r0r_r`r[rbr&rr
raszZone.find_rdatasetcs4|rt�t��|||�}|dur,tj�|�SdSdSrE)rrr4r/rbrcrdr&rr
r4$szZone.get_rdataset)r0r_r`r*cCst�dSrEr])r%r0r_r`rrr
�delete_rdataset3szZone.delete_rdataset)r0rr*cCst�dSrEr])r%r0rrrr
�replace_rdataset;szZone.replace_rdataset)NN)F)F)/rr	r
�	__slots__�NodeZnode_factoryr/Z
rdataclass�INrrr0�Name�strZ
RdataClass�boolr�Versionr�intr6r<r@rCr!rJrRrQrUrVrWr#rYrZZnoder\r^r5ZNONEZ	RdataTyperbZRdatasetrar4rerf�
__classcell__rrr&r
r!s�
��&��$1�
�����
���	�r) rrr�typingrrrrrZ
dns.exceptionr/Z
dns.immutableZdns.nameZdns.nodeZdns.rdataclassZdns.rdatasetZ
dns.rdatatypeZdns.rdtypes.ANY.SOAZdns.zone�	exceptionZDNSExceptionrrDZ
VersionedNoderhZImmutableVersionedNodeZ
ImmutableNodermr$ZImmutableVersionr6rrrrr
�<module>s(

© 2025 Cubjrnet7