HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/ipaclient/remote_plugins/__pycache__/schema.cpython-39.pyc
a

}�f�I�
@sddlmZmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ
ddlZddlmZmZddlmZmZmZddlmZddlmZddlmZdd	lmZmZmZm Z dd
l!m"Z"ddl#m$Z$ddl%m&Z&dd
l'm(Z(e�)e*�Z+dZ,ej-�re.Z/e&e(e/e0d�ee1e2e3e4e5e/e
j6d�Z7ej8ej9ej:ej;ej<ej=ej>ej?ej@ej ej6d�ZAdd�ZBGdd�de�ZCGdd�de�ZDGdd�de�ZEGdd�d�ZFGdd�deF�ZGGdd�deF�ZHGdd �d e�ZIGd!d"�d"eJ�ZKGd#d$�d$�ZLd%d&�ZMdS)'�)�Mapping�SequenceN)�x509)�
ClientCommand�ClientMethod)�errors�
parameters�plugable)�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|�d�St�dS�N�utf-8)�
isinstancer �decode�	TypeError)�obj�r(�C/usr/lib/python3.9/site-packages/ipaclient/remote_plugins/schema.py�json_defaultCs

r*c@seZdZdS)�_SchemaCommandN��__name__�
__module__�__qualname__r(r(r(r)r+Isr+c@s$eZdZedd��Zedd��ZdS)�
_SchemaMethodcCs|jj|jjS�N)�apir�
obj_full_name�name��selfr(r(r)�obj_nameNsz_SchemaMethod.obj_namecCs|jj|jjSr1)r2rr3�versionr5r(r(r)�obj_versionRsz_SchemaMethod.obj_versionN)r-r.r/�propertyr7r9r(r(r(r)r0Ms
r0c@seZdZdS)�
_SchemaObjectNr,r(r(r(r)r;Wsr;c@sTeZdZdZdZdd�Zedd��Zedd��Zdd	�Z	d
d�Z
dd
�Zdd�ZdS)�
_SchemaPluginNcCs*|�d�\|_}|_||_||_d|_dS)N�/)�	partitionr4r8�	full_name�_schema�_class)r6�schemar?�_slashr(r(r)�__init___sz_SchemaPlugin.__init__cCsH|jdur|jjS|j|j|j}z
|dWStyBYdS0dS)N�doc)rArEr@�
schema_keyr?�KeyError)r6rBr(r(r)rEes

z_SchemaPlugin.doccCsR|jdur|jjS|j|j�|j�}z
|dWStyLd|jYS0dS)N�summaryz<%s>)rArHr@rF�get_helpr?rG�r6�halpr(r(r)rHps

z_SchemaPlugin.summarycsV|j�����fdd���r*�fdd�}n�fdd�}d�|j��|_t|g��R�S)Ncs8tt�|��}�jjt��t��g|d�d}|���S)N)�params�kw�result)r�zipZCommandZcommand_defaultsr�get)�argsrMrN)r2�cmd_name�keysr4r(r)�get_default~s��z7_SchemaPlugin._create_default_from.<locals>.get_defaultcs�|�Sr1r(�rQ�rTr(r)�callback�sz4_SchemaPlugin._create_default_from.<locals>.callbackcs��Sr1r(r(rVr(r)rW�sz{0}_{1}_default)r?�formatr4r-r
)r6r2r4rSrWr()r2rRrTrSr4r)�_create_default_from{s	z"_SchemaPlugin._create_default_fromc
s�t|d�}t|d�}|�dd�}|dkr:|r:t}d}n\|dkrrd|vrr|ddd	krr|�d
d�srt}|d=n$zt|}Wnty�t}Yn0i}d}|��D]�\}	}
|	dvr�|
||	<q�|	dvr�t|
�||	<q�|	d
kr�|
||	<q�|	dkr�|
}q�|	dk�r&tdd�|
D��}|�	|||�|d<q�|	dvr�tdd�|
D��||	<q�|du�r�||fit
|dd�����j�r�t�fdd�|D��}n��|d�}||d<d|v�s�d|v�r�|�
d
d�|d<||fi|��}|�r�t�|dd�|S)Nr4�type�	sensitiveFr!r�defaultr�False�	alwaysask)r^rEZlabel�
multivalue�
no_convertZoption_group�required)Zcli_metavarZcli_nameZconfirmZdefault_from_paramcss|]}t|�VqdSr1�r!)�.0�kr(r(r)�	<genexpr>��z._SchemaPlugin._create_param.<locals>.<genexpr>Zdefault_from)�excludeZincludecss|]}t|�VqdSr1rb)rc�vr(r(r)re�rf)r`c3s|]}��|�VqdSr1)�_convert_scalar)rc�d��tmpr(r)re�rfZautofill�passwordT)r!rPrr�_PARAMSrGr�itemsrrYrr_ri�pop�object�__setattr__)
r6r2rBr4�	type_namer[�cls�kwargsr\�key�valuerSZparamr(rkr)�
_create_param�s`��
�



�
z_SchemaPlugin._create_paramcs�i}t|d�|d<t|d�|d<t|d�|d<d|vrH|d|d<d|vrlt|d��d�d|d<nd|d<t��fd	d
�|�dg�D��|d<�j�j|fS)
Nr4r8r?rE�topic_topicr=r�topicc3s|]}���|�VqdSr1)rx�rc�s�r2r6r(r)re�s�z._SchemaPlugin._create_class.<locals>.<genexpr>rL�takes_params)r!r>rrPr4�bases)r6r2rB�
class_dictr(r}r)�
_create_class�s
�z_SchemaPlugin._create_classcCsF|jdur<|j|j|j}|�||�\}}}t|||�|_|�|�Sr1)rAr@rFr?r�rZ�r6r2rBr4rr�r(r(r)�__call__�s

z_SchemaPlugin.__call__)
r-r.r/rrFrDr:rErHrYrxr�r�r(r(r(r)r<[s



@r<csFeZdZefZdZedd��Zedd��Zdd�Z	�fdd	�Z
�ZS)
�_SchemaCommandPlugin�commandscCsX|jdur|jjS|j|j�|j�}zt|d��d�dWStyRYdS0dS)Nryr=r)	rArzr@rFrIr?r!r>rGrJr(r(r)rz�s
z_SchemaCommandPlugin.topiccCs:|jdur|jjS|j|j�|j�}d|�dg�vSdS)N�clirg)rA�NO_CLIr@rFrIr?rPrJr(r(r)r��s
z_SchemaCommandPlugin.NO_CLIcCs�|�dd�r0ttf}|�dd�sp|td�f}n@zt|d}WntyVd}Yn0|�dd�sp|td�f}i}||d<d|vr�|d|d<|�dd�r�d|d	<tt|d
�fi|��S)Nr_FraTrZrE�
no_display)r��flagsr4)rPrrrZ�_TYPESrGrr!)r6r2rBZ	type_typerur(r(r)�_create_outputs"
z#_SchemaCommandPlugin._create_outputcs�tt����|�\}}}d|vs(d|vr.tf}d|vrFt|d�|d<d|vr^t|d�|d<d|vrzd|dvrzd|d<tdd	�|d
D���t�fdd	�|dD��|d
<t�fdd	�|dD��|d<|d=t��fdd	�|dD��|d<|||fS)NZ	obj_classZ	attr_namer3rgr�Tr�css.|]&}|�d|�dd��rt|d�VqdS)Z
positionalraTr4N)rPr!r{r(r(r)re+s�z5_SchemaCommandPlugin._create_class.<locals>.<genexpr>rLc3s|]}|j�vr|VqdSr1�r4�rc�prUr(r)re-sr~Z
takes_argsc3s|]}|j�vr|VqdSr1r�r�rUr(r)re/sZ
takes_optionsc3s|]}���|�VqdSr1)r�r{r}r(r)re3s�outputZ
has_output)�superr�r�r0r!�setrr���	__class__)r2rQr6r)r�s,����z"_SchemaCommandPlugin._create_class)r-r.r/r+rrFr:rzr�r�r��
__classcell__r(r(r�r)r��s


r�c@seZdZefZdZdS)�_SchemaObjectPlugin�classesN)r-r.r/r;rrFr(r(r(r)r�9sr�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�_SchemaNameSpacecCs||_||_dSr1)r4r@)r6rBr4r(r(r)rD@sz_SchemaNameSpace.__init__cCs2z|j�|j|�WSty,t|��Yn0dSr1)r@�read_namespace_memberr4rG�r6rvr(r(r)�__getitem__Dsz_SchemaNameSpace.__getitem__ccs|j�|j�D]
}|VqdSr1)r@�iter_namespacer4r�r(r(r)�__iter__Jsz_SchemaNameSpace.__iter__cCstt|j�|j���Sr1)�lenrr@r�r4r5r(r(r)�__len__Nsz_SchemaNameSpace.__len__cCs2z|j�|j|�WSty,t|��Yn0dSr1)r@rIr4rGr�r(r(r)rIQsz_SchemaNameSpace.get_helpN)r-r.r/rDr�r�r�rIr(r(r(r)r�>s
r�c@seZdZdS)�NotAvailableNr,r(r(r(r)r�Xsr�c@sleZdZdZhd�Zddd�Zddd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�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�r��topicsNrc
Cs tj�|jjjdt�|_i|_i|_	d|_
|jD]}i|j|<t||�|j	|<q0d}|dur�z|�
|�Wn8ty�}z t�d|�d}d}WYd}~n
d}~00|du�r|j||d�\}}|�|j�|_
z|�|�Wn2t�y}zt�d|�WYd}~n
d}~00||_||_dS)NrBFzFailed to read schema: %sT)�ignore_cachezFailed to write schema: %s)�os�path�joinr2�envZ	cache_dir�FORMAT�_dir�_dict�_namespaces�_help�
namespacesr��_read_schema�	Exception�logger�warning�_fetch�_generate_help�
_write_schema�fingerprint�ttl)r6�clientr�r��nsZread_failed�er(r(r)rDrs0


"zSchema.__init__Fc
Cs(|��s|jdd�g}|sJzdd�t�|j�D�}WntyHYn0ddi}|r^||d<z|jdi|��d	}Wntjy�t	��Yn0zT|d
}|�
d�}|�
d�|��D]*\}}	||jvr�dd
�|	D�}	|	|j
|<q�Wn8t�y}
zt�d|
�t	��WYd}
~
n
d}
~
00||fS)NF)�verbosecSsg|]}t|��qSr(r)rc�fr(r(r)�
<listcomp>�rfz!Schema._fetch.<locals>.<listcomp>r8z2.170Zknown_fingerprintsrBrNr�r�cSsi|]}|d|�qS)r?r()rc�mr(r(r)�
<dictcomp>�rfz!Schema._fetch.<locals>.<dictcomp>zFailed to fetch schema: %s)rB)ZisconnectedZconnectr��listdirr��EnvironmentErrorZforwardrZCommandErrorr�rpror�r�rGr�r�)r6r�r�ZfpsrurB�fpr�rvrwr�r(r(r)r��s6


z
Schema._fetchcCs�tj�|j|�}t�|d��b}|��D]H}|�d�\}}}||jvrZ|�	|�|j
||<q&|dkr&|�	|�|_q&Wd�n1s�0YdS)N�rr=r�)r�r�r�r��zipfile�ZipFileZnamelistr>r��readr�r�)r6r��filenamerBr4r�rCrvr(r(r)r��s
zSchema._read_schemacCs.z|j|WSty(|j|YS0dSr1)r�rGr�r�r(r(r)r��szSchema.__getitem__cCs�i}dD]�}i||<||��D]t}|d}||�|i�}|d|d<d|vrl|d�dd�d��|d<d	|vr�|d	|d	<d
|vr |d
|d
<q q|S)N)r�r�r?r4rEz

�rrHryrg)�values�
setdefault�split�strip)r6rBrK�	namespaceZ
member_schemaZmember_full_namerzr(r(r)r��s�zSchema._generate_helpc
Cs�zt�|j�Wn2tyB}z|jtjkr.�WYd}~n
d}~00tjd||jdd��l}z |�|�t	�
|�|��Wn ty�t�
|j��Yn0t�|jtj�|j|��Wd�n1s�0YdS)N�wbF)�prefix�dir�delete)r��makedirsr�r��errnoZEEXIST�tempfileZNamedTemporaryFile�_write_schema_datarZ
flush_sync�closer��unlinkr4�renamer�r�)r6r�r�r�r(r(r)r��s"�

zSchema._write_schemac		Cs�t�|dtj���}|j��D]j\}}||jvrn|}|D]4}d�||�}tj||t	d�}|�
||�d��q6q|�
|t�|��d��q|�
dtj|jt	d��d��Wd�n1s�0YdS)N�wz{}/{})r\r#r�)
r�r��ZIP_DEFLATEDr�ror�rX�json�dumpsr*Zwritestr�encoder�)	r6ZfileobjrBrvrwr��memberr�r|r(r(r)r��s
�zSchema._write_schema_datacCs:|j||}t|t�r6t�|�d��}||j||<|Sr")r�r$r r��loadsr%)r6r�r�rwr(r(r)r�s

zSchema.read_namespace_membercCst|j|�Sr1)�iterr�)r6r�r(r(r)r�
szSchema.iter_namespacecCs.t|jt�r t�|j�d��|_|j||Sr")r$r�r r�r�r%)r6r�r�r(r(r)rI
s

�zSchema.get_help)Nr)F)r-r.r/�__doc__r�rDr�r�r�r�r�r�r�r�rIr(r(r(r)r�\s
"
"	r�c
Cs�t�}|}|��r|�d|�}|dur�zZz ||ur<t|�}n
t||�}Wn4ty|}zt||j|j�}WYd}~n
d}~00WnHty�d}d}Yn<ty�}z|j}|j}WYd}~nd}~00|j}|j}||d<|�|�|dur�t��t	|�}d�
t|�}d�
tj
�t�d|�}ztj|WSt�yBYn0t�|�}	tj
�|d�|	_dg|	_|	tj|<d�|df�}
t�|
�}tj
�|d�|_t��|_ttfD]2}||jD] }
||t	|
��}|��|�}�q��q�|tj|
<t�|d	�D]�\}
}t	|d
�}d�||f�}
ztj|
}Wn>t�ydt�|
�}tj|
<tj
�|d�
|��|_Yn0|�d�|_d
|v�r�|d
}t|t ��r�|�!d�}t	|��"d�d|_#nd|_#�q�|	S)Nr�iz{}${}rz__init__.pyZplugins�.z
plugins.pyr�r4z{}.pyrEryr#r=)$rqZis_validrPr�r
r�r�r�Zupdate_validityr!rXr-r�r��splitext�__file__�sys�modulesrG�types�
ModuleTyper�r	ZRegistry�registerr�r�rF�sixZ	iteritemsr�r$r r%r>rz)Zserver_infor�ZNO_FINGERPRINTr�rBr�r�Zpackage_nameZpackage_dir�packageZmodule_name�moduleZ
plugin_clsr?Zpluginrzr4r|r(r(r)�get_packagesx
*








r�)N�collections.abcrrr�r�Zloggingr�r�r�r�r�ZcryptographyrZcrypto_x509r�Zipaclient.frontendrrZipalibrrr	Z
ipalib.errorsr
Zipalib.frontendrZ
ipalib.outputrZipalib.parametersr
rrrZ	ipapythonrZipapython.ipautilrZipapython.dnrZipapython.dnsutilrZ	getLoggerr-r�r�ZPY3r!rrZrrrrrrr�rZDNParamZDNSNameParamrZBoolZBytesZDateTime�DictZIntrnr*r+r0r;r<r�r�r�r�r�r�r�r(r(r(r)�<module>s|
��
L;