HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib/python3.9/site-packages/cockpit/__pycache__/bridge.cpython-39.pyc
a

���el)�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZm
Z
mZmZmZddlmZddlmZmZddlmZddlmZddlmZdd	lmZdd
lmZm Z ddl!m"Z"ddl#m$Z$m%Z%m&Z&dd
l'm(Z(m)Z)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4e�5e6�Z7Gdd�d�Z8Gdd�de0e*�Z9dd�dd�Z:dd�Z;e<d�dd�Z=dd�dd �Z>d!d"�e<dd#�d$d%�Z?e6d&k�r�e?�dS)'�N)�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>9�z(InternalBus.__init__.<locals>.<listcomp>)	�socket�
socketpairr	ZBus�new�detachZclientr"r)r)r Z
client_socketZ
server_socketr#r(r*�__init__5szInternalBus.__init__N)r&�obj�returncCs|j�|j�||��dS�N)r�appendr"r$)r)r&r2r#r#r*�export;szInternalBus.export)�__name__�
__module__�__qualname__rr	ZSlot�__annotations__rr�strrZ
BaseObjectr1r6r#r#r#r*r2s
 rcs�eZdZUeed<eeed<eeed<e	j
ed<e	j
d��fdd�Zedd	��Z
ed
d�dd
�Zd
d�dd�Zd
d�dd�Zed��fdd�Z�ZS)�Bridge�internal_bus�packages�bridge_configs�args)r@cs�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)rAZspawn�environz	/packages)rrr=r?r@rrA�superuser_ruler6rrr�
peers_rule�beipack�set_configsrr>r�packages_loaded�superr1rrr)r)r@��	__class__r#r*r1Es8

��
�zBridge.__init__cCs�ztddd�}WnHtyXztddd�}Wn$tyRt�d�iYYS0Yn0i}|��D]f}|��}|rf|�d�r�qfz|�d�\}}t�|�\}Wn"t	y�t�d|�YqfYn0|||<qf|S)	Nz/etc/os-releasezutf-8)�encodingz/usr/lib/os-releasez6Neither /etc/os-release nor /usr/lib/os-release exists�#�=z'Ignoring invalid line in os-release: %r)
�open�FileNotFoundError�logger�warning�	readlines�strip�
startswith�split�shlex�
ValueError)�fileZ
os_release�line�k�vZv_parsedr#r#r*�get_os_releasejs*


zBridge.get_os_releaseN)�messager3cCsDt�t��&t|d�}|j�|�Wd�n1s60YdS)N�	superuser)�
contextlib�suppressrrrD�init)r)r^r_r#r#r*�do_init�s
zBridge.do_init�r3cCsLddi|��d�}|jdur2dd�|jjD�|d<|jfddd	�|��dS)
Nzexplicit-superuserT)Zcapabilitiesz
os-releasecSsi|]
}|d�qSr4r#)r%�pr#r#r*�
<dictcomp>�r,z'Bridge.do_send_init.<locals>.<dictcomp>r>rbr)�command�version)r]r>Z
write_control)r)Z	init_argsr#r#r*�do_send_init�s�
zBridge.do_send_initcCs@|js
J�|j��}|j|kr<|j�|�|j�|�||_dSr4)r>�get_bridge_configsr?rDrGrE)r)r?r#r#r*rH�s


zBridge.packages_loadedcs|j��t���Sr4)rDZ
cancel_promptrI�eof_receivedr(rJr#r*rk�s
zBridge.eof_received)r7r8r9rr:rrrr�argparse�	Namespacer1�staticmethodr]rrcrirH�boolrk�
__classcell__r#r#rJr*r<?s

%
r<rdc	�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.)rQ�debug�pwd�getpwuid�os�getuid�pw_dirrC�pw_shell�pw_namer<r�asyncioZget_running_loopZcommunicate�BrokenPipeError�ConnectionResetError)r@�me�routerr#r#r*�run�s


rc
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)�fdsrz	ferny.end)
r-r.rrg�filenoZrecv_fds�OSErrorru�dup2�close)ZoursZtheirsZ_msgr�Z_flagsZ_addrZ	stderr_fdr!r#r#r*�try_to_receive_stderr�s 48�r��rrcCspt�dd�}tjdd�|s$|dkr8t��jtjd�n4|rl|�d�D]$}|��}|sXqFt�|��tj�qFdS)	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)	ru�getenv�loggingZbasicConfig�	getLoggerZsetLevel�DEBUGrVrT)rr�modules�moduler#r#r*�
setup_logging�sr�c
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�rW�readlinerU�replacerurCZ	terminate�waitrPrQrrr�rR)�proc�token�excr#r#r*�start_ssh_agent�s

�
r�F)rF)rFr3cCst��tjdd�}|jdddd�|jdddd�|jd	dd
d�|jdddd�|jd
ddd�|��}||_|jr~t�t	|j
d�|jr�t��
�dS|jr�tdt�d��dS|jr�ttjt���dd��dSdtjvr�|js�t�tt|�|j
d�dS)Nz@cockpit-bridge is run automatically inside of a Cockpit session.)�descriptionrB�
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 informationr�z	Version: z
Protocol: 1r�)�indentr�)r�installrl�ArgumentParser�add_argument�
parse_argsrFrAr�r�rrr>rZshowrh�printr
Zbridges�json�dumpsrjrurCr�r
r)rF�parserr@r#r#r*�main�s0
r��__main__)@rlrzr`r�r�rursrWr-r��typingrrrrrrZcockpit._vendor.fernyrZcockpit._vendor.systemd_ctypesr	r
r�rZ_versionr
ZchannelrZchannelsrZconfigrrZinternal_endpointsrZjsonutilrrrr>rrrZpeerrZremoterr~rr_rZ
transportsrr�r7rQrr<rr�ror�r�r�r#r#r#r*�<module>sF 

e+