%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3.9/site-packages/cockpit/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3.9/site-packages/cockpit/__pycache__/bridge.cpython-39.pyc

a

��h0�@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
mZmZmZmZmZmZddlmZddlmZmZddlmZddlmZddlmZdd	lm Z dd
l!m"Z"m#Z#ddl$m%Z%ddl&m'Z'm(Z(m)Z)m*Z*dd
l+m,Z,m-Z-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7m8Z8e�9e:�Z;Gdd�d�Z<Gdd�de4e.�Z=dd�dd�Z>dd�dd�Z?e@d�dd�ZAe@dd�dd �ZBeCe
eCeCfd!�d"d#�ZDdd�d$d%�ZEd&d'�e@dd(�d)d*�ZFe:d+k�reF�dS),�N)�Dict�Iterable�List�Optional�Sequence�Tuple�Type)�interaction_client)�bus�	run_async�)�	polyfills)�__version__)�ChannelRoutingRule)�
CHANNEL_TYPES)�Config�Environment)�EXPORTS)�	JsonError�
JsonObject�	JsonValue�get_dict)�BridgeConfig�Packages�PackagesListener)�PeersRoutingRule)�HostRoutingRule)�Router)�SuperuserRoutingRule)�StdioTransportc@sPeZdZUeejed<eee	e
ejfd�dd�Ze	ejdd�dd�Z
dS)	�InternalBus�	exportees)�exportscsNt��\}}tjj|��d��_tjj|��dd��_�fdd�|D��_dS)N)�fdT)r#�servercs g|]\}}�j�||���qS�)r$�
add_object)�.0�path�cls��selfr%�2/usr/lib/python3.9/site-packages/cockpit/bridge.py�
<listcomp>;�z(InternalBus.__init__.<locals>.<listcomp>)	�socket�
socketpairr
ZBus�new�detachZclientr$r!)r+r"Z
client_socketZ
server_socketr%r*r,�__init__7szInternalBus.__init__N)r(�obj�returncCs|j�|j�||��dS�N)r!�appendr$r&)r+r(r4r%r%r,�export=szInternalBus.export)�__name__�
__module__�__qualname__rr
ZSlot�__annotations__rr�strrZ
BaseObjectr3r8r%r%r%r,r 4s
 r cs�eZdZUeed<eed<eeed<ee	ed<e
jed<e
jd��fdd�Ze
d	�d
d�Zee
d	�dd
��Ze
dd�dd�Zdd	�dd�Zdd	�dd�Z�ZS)�Bridge�channels�internal_bus�packages�bridge_configs�args)rCcs�tt�|_g|_||_t||jd�|_|j�d|j�|j�dt	��|j�dt
��t|�|_|j
r�|j�tdgd�dgd��f�d|_n0|jr�d|_n"t|�|_|j�d	|j�|��t|t�|_t��t|�|j|j|jg�dS)
N)�
privilegedz
/superuserz/configz/environmentT)Zsudoz-kz-AZpython3z-icz# cockpit-bridge�--privilegedzSUDO_ASKPASS=ferny-askpass)rDZspawn�environz	/packages)r rr@rBrCrrD�superuser_ruler8rrr�
peers_rule�beipack�set_configsrrAr�packages_loadedrrr?�superr3r)r+rC��	__class__r%r,r3Hs:

��
�zBridge.__init__�r5cCs�t�t���}t�|j�j}|g}t��D]&}|j	|j
vr*|j|vr*|�|j�q*|j�
�|��|j|j|||j|j	|j|jd�d�S)N)�fullname�gid�group�groups�home�name�shell�uid)r?�
os_release�user)�pwd�getpwuid�os�getuid�grp�getgrgid�pw_gid�gr_name�getgrall�pw_name�gr_memr7r?�capabilities�get_os_release�pw_gecos�pw_dir�pw_shell�pw_uid)r+ZpwrRrSZgrr%r%r,�infoos$��zBridge.infocCsfztddd�}WnHtyXztddd�}Wn$tyRt�d�iYYS0Yn0t|���S)Nz/etc/os-releasezutf-8)�encodingz/usr/lib/os-releasez6Neither /etc/os-release nor /usr/lib/os-release exists)�open�FileNotFoundError�logger�warning�parse_os_release�read)�filer%r%r,rf�s
zBridge.get_os_releaseN)�messager5cCsDt�t��&t|d�}|j�|�Wd�n1s60YdS)N�	superuser)�
contextlib�suppressrrrG�init)r+rtrur%r%r,�do_init�s
zBridge.do_initcCs@ddid|��dd�}|jdur2t�|jj�|d<|�|�dS)Nzexplicit-superuserTrxr)re�commandz
os-release�versionrA)rfrA�dict�fromkeysZ
write_control)r+Z	init_argsr%r%r,�do_send_init�s�
zBridge.do_send_initcCs@|js
J�|j��}|j|kr<|j�|�|j�|�||_dSr6)rA�get_bridge_configsrBrGrJrH)r+rBr%r%r,rK�s


zBridge.packages_loaded)r9r:r;rr<r rrrr�argparse�	Namespacer3rrk�staticmethodrfryr~rK�
__classcell__r%r%rMr,r>As

'r>rOc	�s�t�d�t�t���}|jtjd<|jtjd<|j	tjd<t�d�t
|�}tt�
�|�t�d�z|��IdHWnttfy�Yn0dS)NzHi. How are you today?�HOMEZSHELLZUSERzStarting the router.z/Startup done.  Looping until connection closes.)ro�debugrZr[r\r]rhrFrircr>r�asyncioZget_running_loopZcommunicate�BrokenPipeError�ConnectionResetError)rC�me�routerr%r%r,�run�s


r�c
Cs�z�t��\}}|�`|�&tjdd|��gd�Wd�n1sD0Yt�|dd�\}}}}Wd�n1sx0YWnty�YdS0z6|\}t�dd�t�|d�W|D]}t�	|�q�n|D]}t�	|�q�0dS)N�zcockpit.send-stderr)�fdsrz	ferny.end)
r/r0r	rz�filenoZrecv_fds�OSErrorr\�dup2�close)ZoursZtheirsZ_msgr�Z_flagsZ_addrZ	stderr_fdr#r%r%r,�try_to_receive_stderr�s 48�r�cCsNt�t�d�j�sdSzddl}Wnty6YdS0tj�	|j
���dS)Nr�FrT)�stat�S_ISSOCKr\�fstat�st_modeZsystemd.journal�ImportError�logging�rootZ
addHandlerZjournalZJournalHandler)Zsystemdr%r%r,�setup_journald�sr�)r�r5cCsvt�dd�}t�stjdd�|s*|dkr>t��jtjd�n4|rr|�d�D]$}|�	�}|s^qLt�|��tj�qLdS)	zOSetup our logger with optional filtering of modules if COCKPIT_DEBUG env is setZ
COCKPIT_DEBUG�z#%(name)s-%(levelname)s: %(message)s)�format�all)�level�,N)
r\�getenvr�r�ZbasicConfig�	getLoggerZsetLevel�DEBUG�split�strip)r��modules�moduler%r%r,�
setup_logging�sr�)�textr5c	Csxi}|��D]f}|��}|r|�d�r(qz|�d�\}}t�|�\}Wn"tyht�d|�YqYn0|||<q|S)N�#�=z'Ignoring invalid line in os-release: %r)�
splitlinesr��
startswithr��shlex�
ValueErrorrorp)r�rX�line�k�vZv_parsedr%r%r,rqs

rqc
Cs�zxtjgd�tjtjdd�}|jdus*J�tj|j��dd�D]&}|�d�r>|�ddd�tj	d<qvq>|�
�|��WnJty�t
�d	�Yn0ty�}zt
�d
|�WYd}~n
d}~00dS)N)z	ssh-agent�shz-ecz)echo SSH_AUTH_SOCK=$SSH_AUTH_SOCK; read aT)�stdin�stdoutZuniversal_newlines)Zpunctuation_charszSSH_AUTH_SOCK=r�r�
SSH_AUTH_SOCKz,Couldn't start ssh-agent (FileNotFoundError)zCould not start ssh-agent: %s)�
subprocess�Popen�PIPEr�r��readliner��replacer\rFZ	terminate�waitrnror�r�rp)�proc�token�excr%r%r,�start_ssh_agents

�
r�F)rI)rIr5cCst��tjdd�}|jdddd�|jdddd�|jd	dd
d�|jdddd�|jd
ddd�|��}||_|jr~t�t	|j
d�|jr�t��
�dS|jr�tdt�d��dS|jr�ttjdd�t���D�dd��dSdtjvr�|js�t�tt|�|j
d�dS)Nz@cockpit-bridge is run automatically inside of a Cockpit session.)�descriptionrE�
store_truezPrivileged copy of the bridge)�action�helpz
--packagesz Show Cockpit package informationz	--bridgesz Show Cockpit bridges informationz--debugz"Enable debug output (very verbose)z	--versionz Show Cockpit version information)r�z	Version: z
Protocol: 1cSsg|]
}|j�qSr%)�__dict__)r'�configr%r%r,r-Qr.zmain.<locals>.<listcomp>r�)�indentr�)r
�installr��ArgumentParser�add_argument�
parse_argsrIrDr�r�r�rArZshowr{�printrZbridges�json�dumpsrr\rFr�rr�)rI�parserrCr%r%r,�main1s0
"r��__main__)Gr�r�rvr^r�r�r\rZr�r/r�r��typingrrrrrrrZcockpit._vendor.fernyr	Zcockpit._vendor.systemd_ctypesr
rr�r
�_versionrZchannelrr?rr�rrZinternal_endpointsrZjsonutilrrrrrArrrZpeerrZremoterr�rrurZ
transportsrr�r9ror r>r�r��boolr�r�r=rqr�r�r%r%r%r,�<module>sN$

s+


Zerion Mini Shell 1.0