U
    
W[v	                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZmZ ddlmZmZ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)strports)MultiService)usage)plugin)iwordsservice)checkerscredentialsportalstrcredc                   @   s   e Zd ZejgZdde dfgZe	j
dgdZi ZdZeejD ]>ZejeksVteeej< eejd dddej d f qD[d	d
 Zdd Zdd ZdS )OptionshostnameNz*Name of this server; purely an informative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   3/usr/lib/python3/dist-packages/twisted/words/tap.pyr   %   s    zOptions.__init__c                 C   s   | d  |tjj dS )z+Specify a group which should exist
        r   N)appenddecodesysstdinencoding)r   namer   r   r   	opt_group)   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socketZgethostnameZoptParametersr   ZCompletionsZcompDatainterfacePluginsZplgr   Z
getPluginsr   ZIProtocolPluginr   AssertionErrorr   r   r   r   r   r   r   r   r      s*   

 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)
Zconfigr&   Z
wordsRealmZwordsPortalZmsvcZplgNameZportfactoryZsvcgr   r   r   makeService6   s    
r*   )__doc__r   r#   Ztwisted.applicationr   Ztwisted.application.servicer   Ztwisted.pythonr   Ztwistedr   Ztwisted.wordsr   r   Ztwisted.credr   r	   r
   r   r   ZAuthOptionMixinr*   r   r   r   r   <module>   s   $