HEX
Server: Apache
System: Linux 185.122.168.184.host.secureserver.net 5.14.0-570.52.1.el9_6.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 15 06:39:08 EDT 2025 x86_64
User: barbeatleanalyti (1024)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/lib/python3.9/site-packages/cockpit/__pycache__/bridge.cpython-39.opt-1.pyc
a

�/�h,�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZm
Z
mZmZmZmZmZddlmZddlmZmZddlmZddlmZddlmZdd	lmZdd
l m!Z!m"Z"ddl#m$Z$ddl%m&Z&m'Z'm(Z(dd
l)m*Z*m+Z+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6e�7e8�Z9Gdd�d�Z:Gdd�de2e,�Z;dd�dd�Z<dd�Z=e>d�dd�Z?e>dd�dd �Z@eAeeAeAfd!�d"d#�ZBdd�d$d%�ZCd&d'�e>dd(�d)d*�ZDe8d+k�r�eD�dS),�N)�Dict�Iterable�List�Optional�Sequence�Tuple�Type)�interaction_client)�bus�	run_async�)�	polyfills)�__version__)�ChannelRoutingRule)�
CHANNEL_TYPES)�Config�Environment)�EXPORTS)�	JsonError�
JsonObject�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__6szInternalBus.__init__N)r'�obj�returncCs|j�|j�||��dS�N)r �appendr#r%)r*r'r3r$r$r+�export<szInternalBus.export)�__name__�
__module__�__qualname__rr
ZSlot�__annotations__rr�strrZ
BaseObjectr2r7r$r$r$r+r3s
 rcs�eZdZUeed<eeed<eeed<e	j
ed<e	j
d��fdd�Zedd	��Z
ed
d�dd
�Zd
d�dd�Zd
d�dd�Z�ZS)�Bridge�internal_bus�packages�bridge_configs�args)rAcs�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|�|jt|t�|jg�dS)
N)�
privilegedz
/superuserz/configz/environmentT)Zsudoz-kz-AZpython3z-icz# cockpit-bridge�--privilegedzSUDO_ASKPASS=ferny-askpass)rBZspawn�environz	/packages)rrr>r@rArrB�superuser_ruler7rrr�
peers_rule�beipack�set_configsrr?r�packages_loaded�superr2rrr)r*rA��	__class__r$r+r2Fs8

��
�zBridge.__init__cCsfztddd�}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+�get_os_releaseks
zBridge.get_os_releaseN)�messager4cCsDt�t��&t|d�}|j�|�Wd�n1s60YdS)N�	superuser)�
contextlib�suppressrrrE�init)r*rVrWr$r$r+�do_initxs
zBridge.do_init�r4cCs@ddid|��dd�}|jdur2t�|jj�|d<|�|�dS)Nzexplicit-superuserTrZr)Zcapabilities�commandz
os-release�versionr?)rUr?�dict�fromkeysZ
write_control)r*Z	init_argsr$r$r+�do_send_inits�
zBridge.do_send_initcCs6|j��}|j|kr2|j�|�|j�|�||_dSr5)r?�get_bridge_configsr@rErHrF)r*r@r$r$r+rI�s


zBridge.packages_loaded)r8r9r:rr;rrrr�argparse�	Namespacer2�staticmethodrUrr[rarI�
__classcell__r$r$rKr+r=@s

%
r=r\c	�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.)rP�debug�pwd�getpwuid�os�getuid�pw_dirrD�pw_shell�pw_namer=r�asyncioZget_running_loopZcommunicate�BrokenPipeError�ConnectionResetError)rA�me�routerr$r$r+�run�s


ruc
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.r/r	r]�filenoZrecv_fds�OSErrorrk�dup2�close)ZoursZtheirsZ_msgrwZ_flagsZ_addrZ	stderr_fdr"r$r$r+�try_to_receive_stderr�s 48�r|cCsNt�t�d�j�sdSzddl}Wnty6YdS0tj�	|j
���dS)NrvFrT)�stat�S_ISSOCKrk�fstat�st_modeZsystemd.journal�ImportError�logging�rootZ
addHandlerZjournalZJournalHandler)Zsystemdr$r$r+�setup_journald�sr�)rhr4cCsvt�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)
rk�getenvr�r�ZbasicConfig�	getLoggerZsetLevel�DEBUG�split�strip)rh�modules�moduler$r$r+�
setup_logging�sr�)�textr4c	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�
ValueErrorrPrQ)r�Z
os_release�line�k�vZv_parsedr$r$r+rR�s

rRc
Cs�zjtjgd�tjtjdd�}tj|j��dd�D]&}|�d�r0|�ddd�tj	d<qhq0|�
�|��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��replacerkrDZ	terminate�waitrOrPrhryrQ)�proc�token�excr$r$r+�start_ssh_agent�s

�
r�F)rG)rGr4cCst��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.)�descriptionrC�
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)rhz	Version: z
Protocol: 1cSsg|]
}|j�qSr$)�__dict__)r&�configr$r$r+r,3r-zmain.<locals>.<listcomp>rv)�indentr�)r
�installrc�ArgumentParser�add_argument�
parse_argsrGrBr|r�rhr?rZshowr^�printrZbridges�json�dumpsrbrkrDr�rru)rG�parserrAr$r$r+�mains0
"r��__main__)ErcrprXr�r�rkrir�r.r}r��typingrrrrrrrZcockpit._vendor.fernyr	Zcockpit._vendor.systemd_ctypesr
rr�r
�_versionrZchannelrZchannelsrr�rrZinternal_endpointsrZjsonutilrrrr?rrrZpeerrZremoterrtrrWrZ
transportsrr�r8rPrr=rur|�boolr�r�r<rRr�r�r$r$r$r+�<module>sL$

V+