
    \dt
                         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j                  Zd ZdS )z
Shiny new words service maker
    N)ListOptionalSequence)plugin)strports)MultiService)checkerscredentialsportalstrcred)usage)iwordsservicec                   h   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 ]CZej        evsJ eeej        <   e                    ej        dz   dddej        z   d	z   f           D[d
 Zd Zd ZdS )OptionshostnameNz*Name of this server; purely an informativeoptParametersgroup)multiUse-portz2strports description of the port to bind for the  z serverc                 D    t          j        j        | g|R i | g | d<   d S )Ngroups)r   r   __init__)selfakws      1lib/python3.11/site-packages/twisted/words/tap.pyr   zOptions.__init__2   s2    t.a...2...X    c                     | d                              |                    t          j        j                             dS )z"Specify a group which should existr   N)appenddecodesysstdinencoding)r   names     r   	opt_groupzOptions.opt_group6   s1    Xdkk#)*<==>>>>>r   c                 T    |                      t          j        |                     dS )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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      sC        &89 F  8		
4M4#/0    !u 7)444H
C v !788 
 
x/////%("7"D(			
 		
 		
 		
 	  ? ? ?; ; ; ; ;r   r   c                    |                      dg           }t          j        | d                   }t          j        ||          }t                      }| j        D ]g}|                      |dz             }|K| j        |                             ||          }t          j        ||          }|	                    |           h| d         D ]}	|
                    |	           |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11L+F:,>??J-
L99K>>D * ' 'zz'G+,,-g6AAK G "41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      s     



 + + + + + + + + + +       ( ( ( ( ( ( 4 4 4 4 4 4 ? ? ? ? ? ? ? ? ? ? ? ?             ) ) ) ) ) ) ) ),; ,; ,; ,; ,;emW4 ,; ,; ,;^    r   