U
    ¹~Hjt
  ã                   @   s¢   d Z ddlZddlZddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZ ddlmZ dd	lmZmZ G d
d„ dejejƒZdd„ ZdS )z
Shiny new words service maker
é    N)ÚListÚOptionalÚSequence)Úplugin)Ústrports)ÚMultiService)ÚcheckersÚcredentialsÚportalÚstrcred)Úusage)ÚiwordsÚservicec                   @   s¸   e Zd ZU ejgZdde ¡ dfgZe	e
ee   ed< ejdgd�Zi ZdZe ej¡D ]>Zejekslt‚eeej< e ejd dddej d	 f¡ qZ[d
d„ Zdd„ Zdd„ ZdS )ÚOptionsÚhostnameNz*Name of this server; purely an informativeÚoptParametersÚgroup)ZmultiUseú-portz2strports description of the port to bind for the  z serverc                 O   s    t jj| f|ž|Ž g | d< d S )NÚgroups)r   r   Ú__init__)ÚselfÚaÚkw© r   ú5/tmp/pip-unpacked-wheel-ewod1tgb/twisted/words/tap.pyr   2   s    zOptions.__init__c                 C   s   | d   | tjj¡¡ dS )z"Specify a group which should existr   N)ÚappendÚdecodeÚsysÚstdinÚencoding)r   Únamer   r   r   Ú	opt_group6   s    zOptions.opt_groupc                 C   s   |   t |¡¡ dS )z•
        Name of a passwd-style file. (This is for
        backwards-compatibility only; you should use the --auth
        command instead.)
        N)Z
addCheckerr   ZFilePasswordDB)r   Úfilenamer   r   r   Ú
opt_passwd:   s    zOptions.opt_passwd)Ú__name__Ú
__module__Ú__qualname__r	   ZIUsernamePasswordZsupportedInterfacesÚsocketÚgethostnamer   r   r   r   ÚstrÚ__annotations__r   ZCompletionsZcompDataÚinterfacePluginsZplgr   Z
getPluginsr   ZIProtocolPluginr    ÚAssertionErrorr   r   r!   r#   r   r   r   r   r      s8   
üÿ	
ÿþüÿ
r   c           
      C   s’   |   dg ¡}t | d ¡}t ||¡}tƒ }| jD ]B}|   |d ¡}|d k	r2| j|  ||¡}t ||¡}| 	|¡ q2| d D ]}	| 
|	¡ q~|S )NÚcredCheckersr   r   r   )Úgetr   ZInMemoryWordsRealmr
   ZPortalr   r+   Z
getFactoryr   ZsetServiceParentZcreateGroup)
Úconfigr-   Z
wordsRealmZwordsPortalZmsvcZplgNameÚportÚfactoryZsvcÚgr   r   r   ÚmakeServiceC   s     

 ÿr3   )Ú__doc__r'   r   Útypingr   r   r   Ztwistedr   Ztwisted.applicationr   Ztwisted.application.servicer   Ztwisted.credr   r	   r
   r   Ztwisted.pythonr   Ztwisted.wordsr   r   r   ZAuthOptionMixinr3   r   r   r   r   Ú<module>   s   /