HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberPanel/lib64/python3.10/site-packages/asyncssh/__pycache__/config.cpython-310.pyc
o

�h9e�@sBdZddlZddlZddlZddlZddlZddlmZddlm	Z	m
Z
ddlmZddlm
Z
mZmZmZmZmZddlmZmZmZmZdd	lmZdd
lmZddlmZmZmZddlm Z m!Z!edeeefZ"e�#d
�Z$e�#d�Z%de&de'fdd�Z(Gdd�de)�Z*Gdd�d�Z+Gdd�de+�Z,Gdd�de+�Z-dS)zParser for OpenSSH config files�N)�sha1)�Path�PurePath)�DEVNULL)�Callable�Dict�List�NoReturn�Optional�Sequence)�Set�Tuple�Union�cast�)�DEFAULT_PORT)�logger)�DefTuple�FilePath�
ip_address)�HostPatternList�WildcardPatternListz%(.)z\${(.*)}�cmd�returncCstj|ddtttd�jdkS)z0Execute a command and return if exit status is 0FT)�check�shell�stdin�stdout�stderrr)�
subprocess�runr�
returncode)r�r"�E/usr/local/CyberPanel/lib/python3.10/site-packages/asyncssh/config.py�_exec0s
��r$c@seZdZdZdS)�ConfigParseErrorzConfiguration parsing exceptionN)�__name__�
__module__�__qualname__�__doc__r"r"r"r#r%7sr%c@s�eZdZUdZdhZe�Zeee	d<dhZ
iZeee
eeffe	d<deddeded	efd
d�Zded
efdd�Zded
efdd�ZdEdd�Zdd�Zedd��Zded
efdd�Zdedeed
dfdd�Zdedeed
dfd d!�Zdedeed
dfd"d#�Zdedeed
dfd$d%�Zdedeed
dfd&d'�Z dedeed
dfd(d)�Z!dedeed
dfd*d+�Z"dedeed
dfd,d-�Z#dedeed
dfd.d/�Z$dedeed
dfd0d1�Z%dedeed
dfd2d3�Z&dedeed
dfd4d5�Z'd
efd6d7�Z(d8e)d
dfd9d:�Z*ded
eeeffd;d<�Z+e,dedd=e-deded	eded
dfd>d?��Z.dFded@ed
efdAdB�Z/d
e0efdCdD�Z1dS)G�	SSHConfigz$Settings from an OpenSSH config file�match�	_no_split�AuthorizedKeysFile�	_handlers�last_config�reload�	canonical�finalcCsl|r	|�|�|_ni|_||_|rdnd|_tdd���|_t�|_d|_d|_	|j�
�|_i|_d|_
dS)NT�~z.sshrF)�get_options�
_last_options�
_canonical�_finalr�
expanduser�
_default_path�_path�_line_no�	_matching�copy�_options�_tokens�loaded)�selfr/r0r1r2r"r"r#�__init__Cs
zSSHConfig.__init__�reasonrcCst|j�d|j�d|����)z#Raise a configuration parsing errorz line z: )r%r:r;)rArCr"r"r#�_errorUszSSHConfig._errorcC�t�)�6Return the value to match against in a match condition��NotImplementedError�rAr+r"r"r#�
_match_valZ�zSSHConfig._match_valNcCrE)�.Set the tokens available for percent expansionrG�rAr"r"r#�_set_tokens_rKzSSHConfig._set_tokenscCsXz|�d�}|j|WSty+|dkrtd�d�|dkr$td�d�td|�d�w)z Expand a percent token referencer�dzHome directory is not availableN�izUser id not availablezInvalid token expansion: )�groupr?�KeyErrorr%)rAr+�tokenr"r"r#�
_expand_tokends 
�
���zSSHConfig._expand_tokencCs4z|�d�}tj|WStytd|�d�w)z(Expand an environment variable referencerzInvalid environment expansion: N)rQ�os�environrRr%)r+�varr"r"r#�_expand_envts
���zSSHConfig._expand_env�valuecCst�|jt�|j|��S)z;Perform percent token and environment expansion on a string)�_env_pattern�subrX�_token_patternrT)rArYr"r"r#�_expand_vals�zSSHConfig._expand_val�option�argscCs�|j}|D];}t|���}|jr!tt|jdd���}t|j�}n|j}t|�|��}|s6t	�
d|�d��|D]}|�|�q8q||_|��dS)z-Read config from a list of other config filesrNzConfig pattern "z" matched no files)
r:rr8�anchor�str�partsr9�list�globr�debug1�parse�clear)rAr^r_�old_path�pattern�path�pathsr"r"r#�_include�s�zSSHConfig._includecCs^d}|r�|�d���}|ddkr|dd�}d}nd}|dkr(|jdur(d|_|dkr/d}nq|d	kr7|j}ni|dkrBtt|j�}n^|�|�}|d
krW|durW|�d|���z|�d�}Wntyp|�d|�d
��Ynw|r�|d
kr|t	|�}n$|dvr�t
|�}	|r�ttt|��nd}
|	�
d||
�}n	t|�}|�
|�}|r�||kr�d}|s||_dS)zBegin a conditional blockTr�!rNFr2�allr1�execzInvalid match condition �Missing z match pattern)�address�localaddress)�pop�lowerr7r6r�boolrJrD�
IndexErrorr$rrra�matchesrr<)rAr^r_�matchingr+�negated�result�	match_val�arg�host_pat�ip�wild_patr"r"r#�_match�sN
�
��
�
,zSSHConfig._matchcCs\|�d���}|dvrd}n|dvrd}n|�d|�d|���||jvr,||j|<dSdS)	zSet a boolean config optionr��yes�trueT��no�falseF�Invalid z boolean value: N�rsrtrDr>�rAr^r_�	value_strrYr"r"r#�	_set_bool�s
�zSSHConfig._set_boolcCsN|�d�}|��}|dvrd}n	|dvrd}n|}||jvr%||j|<dSdS)z%Set a boolean or string config optionrr�Tr�FN�rsrtr>)rAr^r_r��value_lowerrYr"r"r#�_set_bool_or_str�s

�zSSHConfig._set_bool_or_strc	Cs\|�d�}zt|�}Wnty|�d|�d|���Ynw||jvr,||j|<dSdS)zSet an integer config optionrr�z integer value: N)rs�int�
ValueErrorrDr>r�r"r"r#�_set_int�s
�
�zSSHConfig._set_intcCs<|�d�}|��dkrd}n|}||jvr||j|<dSdS)zSet a string config optionr�noneNr�r�r"r"r#�_set_strings

�zSSHConfig._set_stringcCsj|�d�}|��dkr'||jvrttt|j|��|�dS|g|j|<dS||jvr3g|j|<dSdS)z'Append a string config option to a listrr�N)rsrtr>rrra�append)rAr^r_r�r"r"r#�_append_strings


�zSSHConfig._append_stringcCsP||jvr"t|�dkr|d��dkrg|j|<n	|dd�|j|<|��dS)z8Set whitespace-separated string config options as a listrrr�N)r>�lenrtrg�rAr^r_r"r"r#�_set_string_lists

zSSHConfig._set_string_listcCsD||jvrttt|j|��|�n	|dd�|j|<|��dS)z;Append whitespace-separated string config options to a listN)r>rrra�extendrgr�r"r"r#�_append_string_list's
zSSHConfig._append_string_listcCsp|�d���}|dkrtj}n|dkrtj}n|dkrtj}n|�d|�d|���||jvr6||j|<dSdS)z#Set an address family config optionr�any�inet�inet6r�� value: N)rsrt�socket�	AF_UNSPEC�AF_INET�AF_INET6rDr>r�r"r"r#�_set_address_family1s
�zSSHConfig._set_address_familycCsj|�d���}|dvrd}n|dvrd}n|dkr|}n|�d|�d|���||jvr3||j|<d	Sd	S)
z%Set a canonicalize host config optionrr�Tr�F�alwaysr�r�Nr�r�r"r"r#�_set_canonicalize_hostB�
�z SSHConfig._set_canonicalize_hostcCs^|�d���}|dkr
d}|r|�d���}|dkrd}nd}||jvr-||f|j|<dSdS)zSet rekey limits config optionr�defaultr"r�Nr�)rAr^r_�
byte_limit�
time_limitr"r"r#�_set_rekey_limitsSs�
�zSSHConfig._set_rekey_limitscCs
|jduS)z9Return whether this config includes a 'Match final' blockN)r7rMr"r"r#�has_match_finalfs
zSSHConfig.has_match_finalrjcs�|�_d�_d�_ddi�_t�d|�t|���}|D]�}�jd7_|��}|r0|ddkr1qzt�	|�}Wnt
yQ}z
��t|��WYd}~nd}~wwg}d}d}t
|d�D]c\}	}
|
�d	�rvt|
�dkru|�|
dd��n:|s�|�||	dd��n<|
�d	�r�|�|
dd
��nd	|
vr�|
�	d	d�\}
}|�|
�|�|�n|�|
�|	dkr�|�d���}|�jv}q]|�jvr�|��t|�d���g}�js�|�jvr�qz	�j|\}}
Wn	ty�Yqw|s���d|�d��|
�||�|�r��d
d�|����qWd�n	1�swY����jD]6}z�j|}Wnt�y:Y�q&wt|t��rK�fdd�|D�}nt|t��rV�� |�}|�j|<�q&dS)z=Parse an OpenSSH config file and return matching declarationsrT�%zReading config from "%s"r�#N��=���rpz valuezExtra data at end: � csg|]}��|��qSr")r])�.0�itemrMr"r#�
<listcomp>�sz#SSHConfig.parse.<locals>.<listcomp>)!r:r;r<r?rre�open�strip�shlex�splitr�rDra�	enumerate�
startswithr�r�r��endswithrsrt�
_conditionalsr,�lstripr.rR�joinrN�_percent_expandr>�
isinstancercr])rArj�file�line�
split_args�excr_�loption�allow_equalrPr|�valr^�handlerrYr"rMr#rfks�

��
�



�
����8
�
�zSSHConfig.parsecCs|r|j��S|j��S)z-Return options to base a new config object on)r5r=r>)rAr0r"r"r#r4�szSSHConfig.get_options�config_pathsc
GsV|||||g|�R�}|r)t|ttf�r|g}n|}|D]	}	|�t|	��qd|_|S)z8Load a list of OpenSSH config files into a config objectT)r�rarrfrr@)
�clsr/r�r0r1r2r_�configrkrjr"r"r#�load�szSSHConfig.loadr�cCs|j�||�S)z Get the value of a config option)r>�get)rAr^r�r"r"r#r��sz
SSHConfig.getcCs"|�d�}|durdS|rdSdS)z(Return the compression algorithms to use�CompressionNr"zzlib@openssh.com,zlib,noneznone,zlib@openssh.com,zlib)r�)rA�compressionr"r"r#�get_compression_algs�s
zSSHConfig.get_compression_algs�rN�N)2r&r'r(r)r��setr,rra�__annotations__r�r.rr
rr
rurBr	rD�objectrJrNrT�staticmethodrXr]rrlr�r�r�r�r�r�r�r�r�r�r�r�rrfr4�classmethod�ConfigPathsr�r�rr�r"r"r"r#r*;sb
�
�


5


Q
������r*cs�eZdZdZddhZddhZhd�Zddd	ed
ededed
edede	ddf�fdd�Z
dedefdd�Zdede
eddfdd�Zdede
eddfdd�Zdede
eddfdd�ZdTdd�Zdd �gd!ef�d"ejf�d#ejf�d$ejf�d%ejf�d&ejf�d'ejf�d(ejf�d)ejf�d*ejf�d+ejf�d,ejf�d-ejf�d.ejf�d/ejf�d0ejf�d1ejf�d2ejf�d3ejf�d4ejf�d5ejf�d6ejf�d7ejf�d8ejf�d9ejf�d:ef�d;ejf�d<ejf�d=ejf�d>ejf�d?ejf�d@ejf�dAejf�dBejf�dCejf�dDejf�dEejf�dFejf�dGejf�dHejf�dIejf�dJejf�dKef�dLejf�dMejf�dNejf�dOejf�dPejf�dQejf�dRejf�dSejf�RD�Z�Z S)U�SSHClientConfigz+Settings from an OpenSSH client config file�hostr+�proxycommand�
remotecommand>�ForwardAgent�IdentityFile�ProxyCommand�
IdentityAgent�
RemoteCommand�CertificateFiler/r*r0r1r2�
local_user�user�portrNc		sJt��||||�||_||_|dkr||jd<|dkr#||jd<dSdS)Nr"�User�Port)�superrB�_local_user�
_orig_hostr>)	rAr/r0r1r2r�r�r�r���	__class__r"r#rB�s
�zSSHClientConfig.__init__cCsf|dkr|j�d|j�S|dkr|jS|dkr|jS|dkr&|j�d|j�S|dkr1|j�dd	�Sd
S)rFr��Hostname�originalhost�	localuserr�r��tagged�Tagr�N)r>r�r�r�rIr"r"r#rJ�szSSHClientConfig._match_valr^r_cCs(d�|�}t|��|j�|_|��dS)z*Begin a conditional block matching on host�,N)r�rrwr�r<rg)rAr^r_rir"r"r#�_match_hosts
zSSHClientConfig._match_hostcCsH|�d�}||jvr"tt|j�||j��|jd<|�|�|j|<dSdS)zSet hostname config optionr�hN)rsr>rrar�r�r?r])rAr^r_rYr"r"r#�
_set_hostnames

��zSSHClientConfig._set_hostnamecCsj|�d���}|dvrd}n|dvrd}n|dvr|}n|�d|�d|���||jvr3||j|<d	Sd	S)
z+Set a pseudo-terminal request config optionrr�Tr�F)�force�autor�r�Nr�r�r"r"r#�_set_request_tty!r�z SSHClientConfig._set_request_ttyc
Cs�t��}|�d�}|dkr|n|d|�}tt|j�d|j��}t|j�dt��}tt|j�d�p3|j	�}t
j�d�}d�
||||f�}t|�d	����}	|j�|	||||j|||j	d
��|dkrg||jd<tt
d�rwtt
���|jd
<dSdS)rL�.rNr�r�r�r3r�zutf-8)�Cr��L�l�n�p�r�urO�getuidrP)r��gethostname�findrrar>r�r�rr�rUrjr8r�r�encode�	hexdigestr?�update�hasattrr)
rA�
local_host�idx�short_local_hostr�r�r��home�	conn_info�	conn_hashr"r"r#rN2s.
�	

�zSSHClientConfig._set_tokenscC�i|]\}}|��||f�qSr"�rt�r�r^r�r"r"r#�
<dictcomp>Q�zSSHClientConfig.<dictcomp>�Host�Match�Include�
AddressFamily�BindAddress�CanonicalDomains�CanonicalizeFallbackLocal�CanonicalizeHostname�CanonicalizeMaxDots�CanonicalizePermittedCNAMEs�CASignatureAlgorithmsr��ChallengeResponseAuthentication�Ciphersr��ConnectTimeout�EnableSSHKeySignr��ForwardX11Trusted�GlobalKnownHostsFile�GSSAPIAuthentication�GSSAPIDelegateCredentials�GSSAPIKeyExchange�HostbasedAuthentication�HostKeyAlgorithmsr��HostKeyAlias�IdentitiesOnlyr�r��KbdInteractiveAuthentication�
KexAlgorithms�MACs�PasswordAuthentication�PKCS11Provider�PreferredAuthenticationsr�r��	ProxyJump�PubkeyAuthentication�
RekeyLimitr��
RequestTTY�SendEnv�ServerAliveCountMax�ServerAliveInterval�SetEnvr��TCPKeepAliver��UserKnownHostsFiler�)!r&r'r(r)r�r,r�rurar�rBr�rJrr�r�r�rNr*r�rlr�r�r�r�r�r�r�r�r�r�r.�
__classcell__r"r"r�r#r��s
�������	

�������	�
���
������������������� �!�"�#�$�%�&�'�(�)�*�+�,�-�.�/�0�1�2�3�4�r�cs�eZdZdZdddededededed	ed
ededd
f�fdd�Zdedefdd�Z	d8dd�Z
dd�gdejf�dej
f�dejf�dejf�dejf�dejf�dejf�dejf�dejf�d ejf�d!ejf�d"ejf�d#ejf�d$ejf�d%ejf�d&ejf�d'ejf�d(ejf�d)ejf�d*ejf�d+ejf�d,ejf�d-ejf�d.ejf�d/ejf�d0ejf�d1ejf�d2ejf�d3ejf�d4ejf�d5ejf�d6ejf�d7ejf�RD�Z�ZS)9�SSHServerConfigz+Settings from an OpenSSH server config filer/r*r0r1r2�
local_addr�
local_portr�r��addrrNc

s8t��||||�||_||_||_|p|	|_|	|_dSr�)r�rB�_local_addr�_local_port�_user�_host�_addr)
rAr/r0r1r2r=r>r�r�r?r�r"r#rB�s

zSSHServerConfig.__init__r+cCsN|dkr|jS|dkrt|j�S|dkr|jS|dkr|jS|dkr%|jSdS)rFrr�	localportr�r�rqN)r@rarArBrCrDrIr"r"r#rJ�s
zSSHServerConfig._match_valcCs|j�d|ji�dS)rLrN)r?rrBrMr"r"r#rN�szSSHServerConfig._set_tokenscCrr"rrr"r"r#r�rzSSHServerConfig.<dictcomp>rrrr-�AllowAgentForwardingrrrrrrrrr�ClientAliveCountMax�ClientAliveIntervalr�r$r&r'�HostCertificate�HostKeyr+r,�LoginGraceTimer-r.�	PermitTTYr�r2r3r9�UseDNSr�)r&r'r(r)rurar�rBr�rJrNr*r�rlr�r�r�r�r�r�r�r�r.r;r"r"r�r#r<�s�
��������
�������	�
���
������������������� �!�"�r<).r)rU�rer�r�r�hashlibr�pathlibrrr�typingrrrr	r
rrr
rr�	constantsr�loggingr�miscrrrrirrr��compiler\rZrarur$r�r%r*r�r<r"r"r"r#�<module>s6 

0"