
    Vht
                         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ej.                  ej0                        Zd Zy)z
Shiny new words service maker
    N)ListOptionalSequence)plugin)strports)MultiService)checkerscredentialsportalstrcred)usage)iwordsservicec                      e Zd ZU ej                  gZdd ej                         dfgZe	e
ee         ed<    ej                  dg      Zi ZdZ ej(                  ej,                        D ]S  Zej.                  evsJ eeej.                  <   ej1                  ej.                  dz   dddej.                  z   d	z   f       U [d
 Zd Zd Zy)OptionshostnameNz*Name of this server; purely an informativeoptParametersgroup)multiUse-portz2strports description of the port to bind for the  z serverc                 T    t        j                  j                  | g|i | g | d<   y )Ngroups)r   r   __init__)selfakws      A/home/dcms/DCMS/lib/python3.12/site-packages/twisted/words/tap.pyr   zOptions.__init__2   s'    t.a.2.X    c                 z    | d   j                  |j                  t        j                  j                               y)z"Specify a group which should existr   N)appenddecodesysstdinencoding)r   names     r   	opt_groupzOptions.opt_group6   s'    Xdkk#))*<*<=>r   c                 L    | j                  t        j                  |             y)z
        Name of a passwd-style file. (This is for
        backwards-compatibility only; you should use the --auth
        command instead.)
        N)
addCheckerr	   FilePasswordDB)r   filenames     r   
opt_passwdzOptions.opt_passwd:   s     	//9:r   )__name__
__module____qualname__r
   IUsernamePasswordsupportedInterfacessocketgethostnamer   r   r   r   str__annotations__r   CompletionscompDatainterfacePluginsplgr   
getPluginsr   IProtocolPluginr%   r    r   r&   r+    r   r   r   r      s    &889 F 8		
4M4#/0  !u  7)4H
C v  !7!78 
xx////%("7"D((			

 	?;r   r   c                    | j                  dg       }t        j                  | d         }t        j                  ||      }t               }| j                  D ]_  }| j                  |dz         }|| j                  |   j                  ||      }t        j                  ||      }|j                  |       a | d   D ]  }	|j                  |	        |S )NcredCheckersr   r   r   )getr   InMemoryWordsRealmr   Portalr   r7   
getFactoryr   setServiceParentcreateGroup)
configr=   
wordsRealmwordsPortalmsvcplgNameportfactorysvcgs
             r   makeServicerM   C   s    ::nb1L++F:,>?J--
L9K>D ** 'zz'G+,--g6AAKG ""41C  &' H "q!" Kr   )__doc__r1   r"   typingr   r   r   twistedr   twisted.applicationr   twisted.application.servicer   twisted.credr	   r
   r   r   twisted.pythonr   twisted.wordsr   r   r   AuthOptionMixinrM   r;   r   r   <module>rW      sK     
 + +  ( 4 ? ?   ),;emmW44 ,;^r   