HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //lib/python3.6/site-packages/ipaclient/remote_plugins/__pycache__/schema.cpython-36.pyc
3

�d[e�I�
@sddlmZmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ
ddlZddlmZmZddlmZmZmZddlmZddlmZddlmZdd	lmZdd
lmZm Z m!Z!m"Z"ddl#m$Z$ddl%m&Z&dd
l'm(Z(ddl)m*Z*ej+e,�Z-dZ.ej/�re0Z1e(e*e1e2d�ee3e4e5e6e7e1e
j8d�Z9ej:ej;ej<ej=ej>ej?ej@ejAejBej"ej8d�ZCdd�ZDGdd�de�ZEGdd�de�ZFGdd�de�ZGGdd�d�ZHGdd�deH�ZIGdd�deH�ZJGd d!�d!e�ZKGd"d#�d#eL�ZMGd$d%�d%�ZNd&d'�ZOdS)(�)�Mapping�SequenceN)�x509)�
ClientCommand�ClientMethod)�errors�
parameters�plugable)�USER_CACHE_PATH)�SchemaUpToDate)�Object)�Output)�DefaultFrom�Flag�Password�Str)�ipautil)�fsdecode)�DN)�DNSName�1)rr�	PrincipalZNoneTyper�bool�dict�int�list�tuple�unicode�Certificate)�Decimalrrrr�bytesZdatetimerr�strrcCst|t�r|jd�St�dS)Nzutf-8)�
isinstancer �decode�	TypeError)�obj�r&�/usr/lib/python3.6/schema.py�json_defaultDs

r(c@seZdZdS)�_SchemaCommandN)�__name__�
__module__�__qualname__r&r&r&r'r)Jsr)c@s$eZdZedd��Zedd��ZdS)�
_SchemaMethodcCs|jj|jjS)N)�apir�
obj_full_name�name)�selfr&r&r'�obj_nameOsz_SchemaMethod.obj_namecCs|jj|jjS)N)r.rr/�version)r1r&r&r'�obj_versionSsz_SchemaMethod.obj_versionN)r*r+r,�propertyr2r4r&r&r&r'r-Nsr-c@seZdZdS)�
_SchemaObjectN)r*r+r,r&r&r&r'r6Xsr6c@sTeZdZdZdZdd�Zedd��Zedd��Zdd	�Z	d
d�Z
dd
�Zdd�ZdS)�
_SchemaPluginNcCs*|jd�\|_}|_||_||_d|_dS)N�/)�	partitionr0r3�	full_name�_schema�_class)r1�schemar:�_slashr&r&r'�__init__`sz_SchemaPlugin.__init__cCsF|jdk	r|jjS|j|j|j}y|dStk
r@dSXdS)N�doc)r<r@r;�
schema_keyr:�KeyError)r1r=r&r&r'r@fs
z_SchemaPlugin.doccCsN|jdk	r|jjS|j|jj|j�}y|dStk
rHd|jSXdS)N�summaryz<%s>)r<rCr;rA�get_helpr:rB)r1�halpr&r&r'rCqs
z_SchemaPlugin.summarycsT|j�����fdd���r*�fdd�}n�fdd�}dj|j��|_t|f���S)Ncs8tt�|��}�jjt��t��g|d�d}|j��S)N)�params�kw�result)r�zipZCommandZcommand_defaultsr�get)�argsrGrH)r.�cmd_name�keysr0r&r'�get_defaultsz7_SchemaPlugin._create_default_from.<locals>.get_defaultcs�|�S)Nr&)rK)rNr&r'�callback�sz4_SchemaPlugin._create_default_from.<locals>.callbackcs��S)Nr&r&)rNr&r'rO�sz{0}_{1}_default)r:�formatr0r*r)r1r.r0rMrOr&)r.rLrNrMr0r'�_create_default_from|s	z"_SchemaPlugin._create_default_fromc
s�t|d�}t|d�}|jdd�}|dkr:|r:t}d}n`|dkrtd|krt|ddd	krt|jd
d�rtt}|d=n&yt|}Wntk
r�t}YnXi}d}x�|j�D]�\}	}
|	d kr�|
||	<q�|	d!kr�t|
�||	<q�|	dk�r�|
||	<q�|	dk�r|
}q�|	dk�r0tdd�|
D��}|j	|||�|d<q�|	d"kr�tdd�|
D��||	<q�W|dk	�r�||ft
|dd����j�r�t�fdd�|D��}n�j|d�}||d<d|k�s�d|k�r�|j
d
d�|d<||f|�}|�r�tj|dd�|S)#Nr0�type�	sensitiveFr!r�defaultr�False�	alwaysaskr@�label�
multivalue�
no_convert�option_group�required�cli_metavar�cli_nameZconfirmZdefault_from_paramcss|]}t|�VqdS)N)r!)�.0�kr&r&r'�	<genexpr>�sz._SchemaPlugin._create_param.<locals>.<genexpr>Zdefault_from�exclude�includecss|]}t|�VqdS)N)r!)r^�vr&r&r'r`�s)rYc3s|]}�j|�VqdS)N)�_convert_scalar)r^�d)�tmpr&r'r`�sZautofillZpasswordT)rVr@rWrXrYrZr[)r\r])rarb)r!rJrr�_PARAMSrBr�itemsrrQrrXrd�pop�object�__setattr__)
r1r.r=r0Z	type_namerS�cls�kwargsrT�key�valuerMZparamr&)rfr'�
_create_param�sf






z_SchemaPlugin._create_paramcs�i}t|d�|d<t|d�|d<t|d�|d<d|krH|d|d<d|krlt|d�jd�d|d<nd|d<t��fd	d
�|jdg�D��|d<�j�j|fS)
Nr0r3r:r@�topic_topicr8r�topicc3s|]}�j�|�VqdS)N)rp)r^�s)r.r1r&r'r`�sz._SchemaPlugin._create_class.<locals>.<genexpr>rF�takes_params)r!r9rrJr0�bases)r1r.r=�
class_dictr&)r.r1r'�
_create_class�sz_SchemaPlugin._create_classcCsF|jdkr<|j|j|j}|j||�\}}}t|||�|_|j|�S)N)r<r;rAr:rwrR)r1r.r=r0rurvr&r&r'�__call__�s

z_SchemaPlugin.__call__)
r*r+r,rurAr?r5r@rCrQrprwrxr&r&r&r'r7\s@r7csFeZdZefZdZedd��Zedd��Zdd�Z	�fdd	�Z
�ZS)
�_SchemaCommandPlugin�commandscCsV|jdk	r|jjS|j|jj|j�}yt|d�jd�dStk
rPdSXdS)Nrqr8r)	r<rrr;rArDr:r!r9rB)r1rEr&r&r'rr�s
z_SchemaCommandPlugin.topiccCs:|jdk	r|jjS|j|jj|j�}d|jdg�kSdS)N�clira)r<�NO_CLIr;rArDr:rJ)r1rEr&r&r'r|�s
z_SchemaCommandPlugin.NO_CLIcCs�|jdd�r0ttf}|jdd�sr|td�f}nByt|d}Wntk
rXd}YnX|jdd�sr|td�f}i}||d<d|kr�|d|d<|jdd�r�d
|d<tt|d	�f|�S)NrXFr[TrRr@�
no_display�flagsr0)r})rJrrrR�_TYPESrBr
r!)r1r.r=Z	type_typermr&r&r'�_create_outputs"
z#_SchemaCommandPlugin._create_outputcs�tt��j�|�\}}}d|ks(d|kr.tf}d|krFt|d�|d<d|kr^t|d�|d<d|krzd|dkrzd|d<tdd	�|d
D���t�fdd	�|dD��|d
<t�fdd	�|dD��|d<|d=t��fdd	�|dD��|d<|||fS)NZ	obj_classZ	attr_namer/rar{Tr|css.|]&}|jd|jdd��rt|d�VqdS)Z
positionalr[Tr0N)rJr!)r^rsr&r&r'r`,sz5_SchemaCommandPlugin._create_class.<locals>.<genexpr>rFc3s|]}|j�kr|VqdS)N)r0)r^�p)rKr&r'r`/srtZ
takes_argsc3s|]}|j�kr|VqdS)N)r0)r^r�)rKr&r'r`1sZ
takes_optionsc3s|]}�j�|�VqdS)N)r�)r^rs)r.r1r&r'r`5s�outputZ
has_output)�superryrwr-r!�setr)r1r.r=r0rurv)�	__class__)r.rKr1r'rws$z"_SchemaCommandPlugin._create_class)r*r+r,r)rurAr5rrr|r�rw�
__classcell__r&r&)r�r'ry�sryc@seZdZefZdZdS)�_SchemaObjectPlugin�classesN)r*r+r,r6rurAr&r&r&r'r�:sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�_SchemaNameSpacecCs||_||_dS)N)r0r;)r1r=r0r&r&r'r?Asz_SchemaNameSpace.__init__cCs2y|jj|j|�Stk
r,t|��YnXdS)N)r;�read_namespace_memberr0rB)r1rnr&r&r'�__getitem__Esz_SchemaNameSpace.__getitem__ccs"x|jj|j�D]
}|VqWdS)N)r;�iter_namespacer0)r1rnr&r&r'�__iter__Ksz_SchemaNameSpace.__iter__cCstt|jj|j���S)N)�lenrr;r�r0)r1r&r&r'�__len__Osz_SchemaNameSpace.__len__cCs2y|jj|j|�Stk
r,t|��YnXdS)N)r;rDr0rB)r1rnr&r&r'rDRsz_SchemaNameSpace.get_helpN)r*r+r,r?r�r�r�rDr&r&r&r'r�?s
r�c@seZdZdS)�NotAvailableN)r*r+r,r&r&r&r'r�Ysr�c@s�eZdZdZdddhZejjedde	�Z
dd	d
�Zddd
�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS) �Schemaa�
    Store and provide schema for commands and topics

    Create api instance
    >>> from ipalib import api
    >>> api.bootstrap(context='cli')
    >>> api.finalize()

    Get schema object
    >>> m = Schema(api)

    From now on we can access schema for commands stored in cache
    >>> m['commands'][u'ping'][u'doc']
    u'Ping a remote server.'

    >>> m['topics'][u'ping'][u'doc']
    u'Ping the remote IPA server to ...'

    r�rz�topicsZipar=NrcCsi|_i|_d|_x(|jD]}i|j|<t||�|j|<qWd}|dk	r�y|j|�Wn6tk
r�}ztjd|�d}d}WYdd}~XnX|dkr�|j	||d�\}}|j
|j�|_y|j|�Wn.tk
r�}ztjd|�WYdd}~XnX||_||_
dS)NFzFailed to read schema: %sT)�ignore_cachezFailed to write schema: %s)�_dict�_namespaces�_help�
namespacesr��_read_schema�	Exception�logger�warning�_fetch�_generate_help�
_write_schema�fingerprint�ttl)r1�clientr�r��nsZread_failed�er&r&r'r?ts.
zSchema.__init__Fc Cs*|j�s|jdd�g}|sLydd�tj|j�D�}Wntk
rJYnXddi}|r`||d<y|jd|�d	}Wntjk
r�t	��YnXyX|d
}|j
d�}|j
d�x6|j�D]*\}}	||jkr�dd
�|	D�}	|	|j
|<q�WWn6tk
�r }
ztjd|
�t	��WYdd}
~
XnX||fS)NF)�verbosecSsg|]}t|��qSr&)r)r^�fr&r&r'�
<listcomp>�sz!Schema._fetch.<locals>.<listcomp>r3z2.170Zknown_fingerprintsr=rHr�r�cSsi|]}||d�qS)r:r&)r^�mr&r&r'�
<dictcomp>�sz!Schema._fetch.<locals>.<dictcomp>zFailed to fetch schema: %s)r=)ZisconnectedZconnect�os�listdir�_DIR�EnvironmentErrorZforwardrZCommandErrorr�rirhr�r�rBr�r�)r1r�r�Zfpsrmr=�fpr�rnror�r&r&r'r��s6


z
Schema._fetchcCs�tjj|j|�}tj|d��\}xT|j�D]H}|jd�\}}}||jkr\|j	|�|j
||<q(|dkr(|j	|�|_q(WWdQRXdS)N�rr8r�)r��path�joinr��zipfile�ZipFileZnamelistr9r��readr�r�)r1r��filenamer=r0r�r>rnr&r&r'r��s
zSchema._read_schemacCs*y
|j|Stk
r$|j|SXdS)N)r�rBr�)r1rnr&r&r'r��s
zSchema.__getitem__cCs�i}x�dD]�}i||<x�||j�D]t}|d}||j|i�}|d|d<d|krp|djdd�dj�|d	<d
|kr�|d
|d
<d|kr$|d|d<q$Wq
W|S)
Nrzr�r:r0r@z

�rrCrqra)rzr�)�values�
setdefault�split�strip)r1r=rE�	namespaceZ
member_schemaZmember_full_namerrr&r&r'r��s
zSchema._generate_helpc"Cs�ytj|j�Wn0tk
r@}z|jtjkr0�WYdd}~XnXtjd||jdd��d}y |j|�t	j
|�|j�Wn"tk
r�tj
|j��YnXtj|jtjj|j|��WdQRXdS)N�wbF)�prefix�dir�delete)r��makedirsr�r��errnoZEEXIST�tempfileZNamedTemporaryFile�_write_schema_datarZ
flush_sync�closer��unlinkr0�renamer�r�)r1r�r�r�r&r&r'r��s

zSchema._write_schemac	
Cs�tj|dtj���}x||jj�D]n\}}||jkrt|}xV|D]4}dj||�}tj||t	d�}|j
||jd��q:Wq|j
|tj|�jd��qW|j
dtj|jt	d�jd��WdQRXdS)N�wz{}/{})rTzutf-8r�)
r�r�ZZIP_DEFLATEDr�rhr�rP�json�dumpsr(Zwritestr�encoder�)	r1Zfileobjr=rnror��memberr�rsr&r&r'r��s

zSchema._write_schema_datacCs:|j||}t|t�r6tj|jd��}||j||<|S)Nzutf-8)r�r"r r��loadsr#)r1r�r�ror&r&r'r�s

zSchema.read_namespace_membercCst|j|�S)N)�iterr�)r1r�r&r&r'r�szSchema.iter_namespacecCs.t|jt�r tj|jjd��|_|j||S)Nzutf-8)r"r�r r�r�r#)r1r�r�r&r&r'rDszSchema.get_help)Nr)F)r*r+r,�__doc__r�r�r�r�r
�FORMATr�r?r�r�r�r�r�r�r�r�rDr&r&r&r'r�]s

!
"	r�c(Cs�t�}|}|j�r|jd|�}|dk	r�yXy ||kr<t|�}n
t||�}Wn2tk
rz}zt||j|j�}WYdd}~XnXWnHtk
r�d}d}Yn:tk
r�}z|j}|j}WYdd}~XnX|j}|j}||d<|j|�|dkr�t��t	|�}dj
t|�}dj
tj
jt�d|�}y
tj|Stk
�r@YnXtj|�}	tj
j|d�|	_dg|	_|	tj|<dj|df�}
tj|
�}tj
j|d�|_tj�|_xBttfD]6}x.||jD] }
||t	|
��}|j�|�}�q�W�q�W|tj|
<x�tj|d	�D]�\}
}t	|d
�}dj||f�}
ytj|
}Wn@tk
�rntj|
�}tj|
<tj
j|dj
|��|_YnX|jd�|_d
|k�r�|d
}t|t ��r�|j!d�}t	|�j"d�d|_#nd|_#�q�W|	S)Nr�iz{}${}rz__init__.pyZplugins�.z
plugins.pyr�r0z{}.pyr@rqzutf-8r8)$rjZis_validrJr�rr�r�r�Zupdate_validityr!rPr*r�r��splitext�__file__�sys�modulesrB�types�
ModuleTyper�r	ZRegistry�registerryr�rA�sixZ	iteritemsr�r"r r#r9rr)Zserver_infor�ZNO_FINGERPRINTr�r=r�r�Zpackage_nameZpackage_dir�packageZmodule_name�moduleZ
plugin_clsr:Zpluginrrr0rsr&r&r'�get_packagesx
&








r�)P�collections.abcrrr�r�Zloggingr�r�r�r�r�ZcryptographyrZcrypto_x509r�Zipaclient.frontendrrZipalibrrr	Zipalib.constantsr
Z
ipalib.errorsrZipalib.frontendrZ
ipalib.outputr
Zipalib.parametersrrrrZ	ipapythonrZipapython.ipautilrZipapython.dnrZipapython.dnsutilrZ	getLoggerr*r�r�ZPY3r!rrRrrrrrrrrZDNParamZDNSNameParamrZBoolZBytesZDateTimeZDictZIntrgr(r)r-r6r7ryr�r�r�r�r�r�r&r&r&r'�<module>sz



L;