????

Your IP : 18.116.100.166


Current Path : /lib/python3.6/site-packages/certbot/_internal/plugins/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/certbot/_internal/plugins/__pycache__/disco.cpython-36.pyc

3

گa�A�@s�dZddlZddlZddlZddlmZddlmZddlmZddlmZddlm	Z	ddlm
Z
dd	lmZdd
lmZddlm
Z
ddlmZddlZddlZddlZddlZdd
lmZddlmZddlmZddlmZddlmZddlmZeje�Z dddddddddddddd d!d"d#gZ!Gd$d%�d%�Z"Gd&d'�d'e�Z#d(Z$d)Z%d*Z&d+Z'e
ej(e
e)d,�d-d.�Z*e
ej(e
e)d,�d/d0�Z+ej(e
ej(e
e)d1�d2d3�Z,dS)4z.Utilities for plugins discovery and selection.�N)�Callable)�cast)�Dict)�Iterable)�Iterator)�List)�Mapping)�Optional)�Type)�Union)�
configuration)�errors)�
interfaces)�	constants)�os)�Error�certbotzcertbot-apachezcertbot-dns-cloudflarezcertbot-dns-cloudxnszcertbot-dns-digitaloceanzcertbot-dns-dnsimplezcertbot-dns-dnsmadeeasyzcertbot-dns-gehirnzcertbot-dns-googlezcertbot-dns-linodezcertbot-dns-luadnszcertbot-dns-nsonezcertbot-dns-ovhzcertbot-dns-rfc2136zcertbot-dns-route53zcertbot-dns-sakuracloudz
certbot-nginxc@s�eZdZdZdZd2ejedd�dd�Ze	e
ed�dd	�Zeejee
d�d
d��Z
ee
d�d
d��Zee
d�dd��Zee
d�dd��Zeje
dd�dd��Zeed�dd��Zejedd�dd��Zeeed�dd�Zeed�dd��Zd3e	ejejd�dd �Zeeed!�d"d#�Zeed�d$d%��Zeee fd�d&d'�Z!eed�d(d)��Z"ee	e#d�d*d+��Z$eed�d,d-��Z%e
d�d.d/�Z&e
d�d0d1�Z'dS)4�PluginEntryPointzPlugin entry point.NF)�entry_point�with_prefix�returncCs@|j||�|_|j�|_||_d|_d|_d|_d|_d|_	dS)NF)
�entry_point_to_plugin_name�name�load�
plugin_clsr�warning_message�_initialized�	_prepared�_hidden�_long_description)�selfrr�r!�/usr/lib/python3.6/disco.py�__init__:s
zPluginEntryPoint.__init__)rrcCs$||jkr |jrtj|j�dSdS)z(Check if the name refers to this plugin.TF)rr�logger�warning)r rr!r!r"�
check_nameDs

zPluginEntryPoint.check_namecCs6|r0|jstjd|j�d���|jjd|jS|jS)z)Unique plugin name for an ``entry_point``zEntrypoint z has no distribution!�:)�distr
rr�key)�clsrrr!r!r"rLs
z+PluginEntryPoint.entry_point_to_plugin_name)rcCs|jjS)zDescription of the plugin.)r�description)r r!r!r"r+VszPluginEntryPoint.descriptioncCsdj|j|j�S)z$Description with name. Handy for UI.z	{0} ({1}))�formatr+r)r r!r!r"�description_with_name[sz&PluginEntryPoint.description_with_namecCs|jr|jSt|jd|j�S)zLong description of the plugin.�long_description)r�getattrrr+)r r!r!r"r.`sz!PluginEntryPoint.long_description)r+rcCs
||_dS)N)r)r r+r!r!r"r.gscCs|jpt|jdd�S)z%Should this plugin be hidden from UI?�hiddenF)rr/r)r r!r!r"r0kszPluginEntryPoint.hidden)�hidercCs
||_dS)N)r)r r1r!r!r"r0ps)�
ifaces_groupsrcs|pt�fdd�|D��S)z2Does plugin implements specified interface groups?c3s$|]}t�fdd�|D��VqdS)c3s|]}t�j|�VqdS)N)�_implementsr)�.0�iface)r r!r"�	<genexpr>wsz4PluginEntryPoint.ifaces.<locals>.<genexpr>.<genexpr>N)�all)r4�ifaces)r r!r"r6wsz*PluginEntryPoint.ifaces.<locals>.<genexpr>)�any)r r2r!)r r"r8ts
zPluginEntryPoint.ifacescCs
|jdk	S)z(Has the plugin been initialized already?N)r)r r!r!r"�initialized{szPluginEntryPoint.initialized)�configrcCs&|js |jj�|j||j�|_|jS)zMemoized plugin initialization.)rrZrequirerr)r r;r!r!r"�init�s
zPluginEntryPoint.init)r8rcCs6|jstd��x"|D]}t|j�|j|�sdSqWdS)z<Verify that the plugin conforms to the specified interfaces.zPlugin is not initialized.FT)r:�
ValueError�_verifyr<r)r r8r5r!r!r"�verify�s
zPluginEntryPoint.verifycCs|jstjd|�|jdk	S)z%Has the plugin been prepared already?z$.prepared called on uninitialized %rN)r:r$�debugr)r r!r!r"�prepared�szPluginEntryPoint.preparedcCs�|jdkrtd��|jdkr�y|jj�Wn�tjk
rf}ztjd||dd�||_WYdd}~Xn|tjk
r�}ztjd||dd�||_WYdd}~XnBtj	k
r�}ztjd||dd�||_WYdd}~XnXd|_t
ttt
f|j�S)zMemoized plugin preparation.NzPlugin is not initialized.zMisconfigured %r: %sT)�exc_infozNo installation (%r): %szOther error:(%r): %s)rr=r�preparer
�MisconfigurationErrorr$r@ZNoInstallationErrorZPluginErrorrr�boolr)r �errorr!r!r"rC�s"

zPluginEntryPoint.preparecCst|jtj�S)zIs plugin misconfigured?)�
isinstancerr
rD)r r!r!r"�
misconfigured�szPluginEntryPoint.misconfiguredcCst|jt�r|jSdS)zGReturn the Exception raised during plugin setup, or None if all is wellN)rGr�	Exception)r r!r!r"�problem�szPluginEntryPoint.problemcCs|jdkp|jS)z4Is plugin available, i.e. prepared or misconfigured?T)rrH)r r!r!r"�	available�szPluginEntryPoint.availablecCsdj|j�S)NzPluginEntryPoint#{0})r,r)r r!r!r"�__repr__�szPluginEntryPoint.__repr__cCs�dj|j�dj|jj�djdjdd�|jj�D���dj|j�g}|jrv|jdj|j	���|j
rv|jd	j|j���d
j|�S)Nz* {0}zDescription: {0}zInterfaces: {0}z, css|]}|jdkr|jVqdS)zcertbot.interfacesN)�
__module__�__name__)r4r*r!r!r"r6�sz+PluginEntryPoint.__str__.<locals>.<genexpr>zEntry point: {0}zInitialized: {0}z	Prep: {0}�
)r,rrr+�join�mrorr:�appendr<rArC)r �linesr!r!r"�__str__�s
zPluginEntryPoint.__str__)F)N)(rNrM�__qualname__�__doc__�__hash__�
pkg_resources�
EntryPointrEr#r	�strr&�classmethodr�propertyr+r-r.�setterr0rr
r8r:r�NamespaceConfigr�Pluginr<r?rArrrCrHrIrJrKrLrTr!r!r!r"r4sF
	
rc@sNeZdZdZeeefdd�dd�Zedd�dd��Z	ee
jeeefe
ed	�d
d��Zeed�d
d�Zeed�dd�Zed�dd�Zejeejd�dd�Zeege
fdd�dd�Zdd�dd�Zeedd�dd�Zeedd�dd �Z ee!e
e"fd�d!d"�Z#dd�d#d$�Z$eje%ed%�d&d'�Z&ed�d(d)�Z'ed�d*d+�Z(dS),�PluginsRegistryzPlugins registry.N)�pluginsrcCstt|j���|_dS)N)�dict�sorted�items�_plugins)r rar!r!r"r#�szPluginsRegistry.__init__)rc
Cs�i}tjd�}|r|jd�ng}tjj|�x|D]}tjj|�q2Wt	j
tjtj
�tjtj��}xr|D]j}|j||dd�}|jdk	s�t�|jjtkrh|j||dd�}d|_dj|j|j�}	|	|_dj|	|j�|_qhW||�S)	z+Find plugins using setuptools entry points.ZCERTBOT_PLUGIN_PATHr'F)rNTzRPlugin legacy name {0} may be removed in a future version. Please use {1} instead.z(WARNING: {0}) {1})r�getenv�split�sys�path�extendrXZworking_setZ	add_entry�	itertools�chainZiter_entry_pointsrZSETUPTOOLS_PLUGINS_ENTRY_POINTZ"OLD_SETUPTOOLS_PLUGINS_ENTRY_POINT�_load_entry_pointr(�AssertionErrorr)�PREFIX_FREE_DISTRIBUTIONSr0r,rrr.)
r*raZplugin_paths_stringZplugin_pathsZplugin_pathZentry_pointsr�	plugin_epZprefixed_plugin_ep�messager!r!r"�find_all�s.



zPluginsRegistry.find_all)rrarrcCs�t||�}|j|kr^||j}|jjr0|jjjnd}|jjrF|jjjnd}tdj|j||���t|jt	j
�rx|||j<ntjd|�|S)N�unknownz+Duplicate plugin name {0} from {1} and {2}.z)%r does not inherit from Plugin, skipping)
rrrr(r)rIr,�	_providesrrr_r$r%)r*rrarrpZother_epZplugin1Zplugin2r!r!r"rms


z!PluginsRegistry._load_entry_point)rrcCs
|j|S)N)re)r rr!r!r"�__getitem__szPluginsRegistry.__getitem__cCs
t|j�S)N)�iterre)r r!r!r"�__iter__szPluginsRegistry.__iter__cCs
t|j�S)N)�lenre)r r!r!r"�__len__szPluginsRegistry.__len__)r;rcs�fdd�|jj�D�S)z'Initialize all plugins in the registry.csg|]}|j���qSr!)r<)r4rp)r;r!r"�
<listcomp>sz(PluginsRegistry.init.<locals>.<listcomp>)re�values)r r;r!)r;r"r<s
zPluginsRegistry.init)�predrcs t|��fdd�|jj�D��S)z"Filter plugins based on predicate.csi|]\}}�|�r||�qSr!r!)r4rrp)r|r!r"�
<dictcomp>$sz*PluginsRegistry.filter.<locals>.<dictcomp>)�typererd)r r|r!)r|r"�filter"szPluginsRegistry.filtercCs|jdd��S)z#Filter plugins based on visibility.cSs|jS)N)r0)rpr!r!r"�<lambda>)sz)PluginsRegistry.visible.<locals>.<lambda>)r)r r!r!r"�visible'szPluginsRegistry.visible)r2rcs|j�fdd��S)z#Filter plugins based on interfaces.cs
|j��S)N)r8)�p_ep)r2r!r"r�-sz(PluginsRegistry.ifaces.<locals>.<lambda>)r)r r2r!)r2r"r8+szPluginsRegistry.ifaces)r8rcs|j�fdd��S)z%Filter plugins based on verification.cs
|j��S)N)r?)r�)r8r!r"r�1sz(PluginsRegistry.verify.<locals>.<lambda>)r)r r8r!)r8r"r?/szPluginsRegistry.verifycCsdd�|jj�D�S)z$Prepare all plugins in the registry.cSsg|]}|j��qSr!)rC)r4rpr!r!r"rz5sz+PluginsRegistry.prepare.<locals>.<listcomp>)rer{)r r!r!r"rC3szPluginsRegistry.preparecCs|jdd��S)z%Filter plugins based on availability.cSs|jS)N)rK)r�r!r!r"r�9sz+PluginsRegistry.available.<locals>.<lambda>)r)r r!r!r"rK7szPluginsRegistry.available)�pluginrcs8�fdd�|jj�D�}t|�dks(t�|r4|dSdS)aMFind an initialized plugin.

        This is particularly useful for finding a name for the plugin::

          # plugin is an instance providing Plugin, initialized
          # somewhere else in the code
          plugin_registry.find_init(plugin).name

        Returns ``None`` if ``plugin`` is not found in the registry.

        cs"g|]}|jr|j��kr|�qSr!)r:r<)r4rp)r�r!r"rzIsz-PluginsRegistry.find_init.<locals>.<listcomp>�rN)rer{rxrn)r r�Z
candidatesr!)r�r"�	find_init<s

zPluginsRegistry.find_initcCs&dj|jjdjdd�|jj�D���S)Nz{0}({1})�,css|]}t|�VqdS)N)�repr)r4r�r!r!r"r6Ssz+PluginsRegistry.__repr__.<locals>.<genexpr>)r,�	__class__rNrPrer{)r r!r!r"rLPs
zPluginsRegistry.__repr__cCs$|js
dSdjdd�|jj�D��S)Nz
No pluginsz

css|]}t|�VqdS)N)rZ)r4r�r!r!r"r6Xsz*PluginsRegistry.__str__.<locals>.<genexpr>)rerPr{)r r!r!r"rTUszPluginsRegistry.__str__))rNrMrUrVrrZrr#r[rrrXrYrrErmrurrw�intryrr^rrr_r<rrr�rr
r8r?rrrCrKr	r�rLrTr!r!r!r"r`�s*
r`zbZope interface certbot.interfaces.IPlugin is deprecated, use ABC certbot.interface.Plugin instead.zpZope interface certbot.interfaces.IAuthenticator is deprecated, use ABC certbot.interface.Authenticator instead.zhZope interface certbot.interfaces.IInstaller is deprecated, use ABC certbot.interface.Installer instead.ziZope interface certbot.interfaces.IPluginFactory is deprecated, use ABC certbot.interface.Plugin instead.)�target_classr5rcCsBt||�rdS|tjkr>tjj|�r>tjt�tj	tt
�dSdS)NTF)�
issubclassrr_ZIPluginFactoryZ
providedBy�loggingr%�_DEPRECATION_FACTORY�warnings�warn�DeprecationWarning)r�r5r!r!r"rths

rtcCs�t||�rdS|tjkr>tjj|�r>tjt�tj	tt
�dS|tjkrntjj|�rntjt
�tj	t
t
�dS|tjkr�tjj|�r�tjt�tj	tt
�dSdS)NTF)r�rr_�IPlugin�
implementedByr�r%�_DEPRECATION_PLUGINr�r�r��
Authenticator�IAuthenticator�_DEPRECATION_AUTHENTICATOR�	Installer�
IInstaller�_DEPRECATION_INSTALLER)r�r5r!r!r"r3ts



r3)�target_instancer�r5rcCs�t||�rdSd}d}|tjkr*tj}t}|tjkr>tj}t}|tjkrRtj	}t
}|sftd|j����y*t
jjj||�tj|�tj|t�dSt
jjjk
r�}z&|j|�r�tjd||j|dd�WYdd}~XnXdS)NT�zUnexpected type: z/%s implements %s but object does not verify: %s)rBF)r�rr_r�r�r�r�r�r�r�r�r=rN�zopeZ	interfacer?ZverifyObjectr�r%r�r�r��
exceptionsZBrokenImplementationr�r$r@)r�r�r5Z
zope_ifacerqrFr!r!r"r>�s4





"r>)-rVrkr�rhZtypingrrrrrrrr	r
rr�rXZzope.interfacer�Zzope.interface.verifyrrr
rZcertbot._internalrZcertbot.compatrZcertbot.errorsrZ	getLoggerrNr$rorr`r�r�r�r�r_rErtr3r>r!r!r!r"�<module>sj
$