�
Ϫ�f�B � �� � d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl Z ddl
Z
ddlZddlm
Z
mZmZ ddlmZ ddlmZ ddlmZ ddlmZ dd lmZmZmZ dd
lmZ ddlmZm Z m!Z! ddl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( dd
l)m*Z* ddl+m,Z, ddl-m.Z. ddl/m0Z0 ddl1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7Z7 ee*jr � G d� d� � Z: G d� de� Z; ee� G d� d� � Z< ee� G d� d� � Z= ee� G d� d� � Z> G d� d� Z? e4j� e=e;ej6 � e4j� e<e;e!j2 � y# e8$ r dZ7Y ��w xY w) z
A UNIX SSH server.
� )�annotationsN)�Callable�Dict�Tuple)�implementer)�ttymodes)� ConchUser)�
ConchError)�ISession� ISFTPFile�ISFTPServer)�lsLine)�filetransfer�
forwarding�session)�
FXF_APPEND� FXF_CREAT�FXF_EXCL�FXF_READ� FXF_TRUNC� FXF_WRITE)�portal)�LoginDenied)�ProcessExitedAlready)�IListeningPort)�Logger)�
components)�nativeStringc �$ � e Zd Z dd�Zy)�UnixSSHRealmc � � t |t � st d� �t |j � � }|d ||j
fS )Nz5UNIX SSH realm does not authorize anonymous sessions.r )�
isinstance�bytesr �
UnixConchUser�decode�logout)�self�username�mind�
interfaces�users �4/usr/lib/python3/dist-packages/twisted/conch/unix.py�
requestAvatarzUnixSSHRealm.requestAvatar5 s@ � � �(�E�*��U�V�V��X�_�_�.�/���!�}�d�D�K�K�/�/� N)r( zbytes | Tuple[()]r) �objectr* zportal._InterfaceItself�returnzATuple[portal._InterfaceItself, UnixConchUser, Callable[[], None]])�__name__�
__module__�__qualname__r- � r. r, r r 3 s. � � 0�#� 0� � 0� -� 0�
K� 0r. r c �F � e Zd Zdd�Zd� Zd� Zd� Zd� Zd� Zd� Z dd�Z
d � Zy
)
r$ c �� � t j | � || _ t j | j � | _ | j
d g}t
j � D ] \ }}}}||v s�
|j |� � || _ i | _
| j j t j t j d�� | j" |