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__/beiboot.cpython-39.opt-1.pyc
a

���e�,�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
mZmZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddl m!Z!m"Z"dd
l#m$Z$ddl%m&Z&ddl'm(Z(m)Z)ddl*m+Z+e�,e-�Z.e
d�dd�Z/e
e0d�dd�Z1Gdd�de"�Z2ddiej3�Z3Gdd�de)�Z4Gdd�dej5�Z6Gdd�de$�Z7Gd d!�d!e(�Z8dd�d"d#�Z9dd�d$d%�Z:e-d&k�r�e:�dS)'�N)�Path)�Dict�Iterable�Optional�Sequence)�	polyfills)�ferny)�
bootloader)�BridgeBeibootHelper)�
setup_logging)�ChannelRoutingRule)�PackagesChannel)�
JsonObject)�Packages�PackagesLoader)�Peer)�CockpitProblem)�Router�RoutingRule)�StdioTransport��returnc	Cs�tj�tj�d}|��}tj�d�}|dur:tj	�
d�}tj|dd�t|d�}t
�d|�z:|��|krzt
�d�t�|��jd	@s�t
�d
�t�Wn4ttfy�t
�d�|�|�|�d�Yn0|S)
Nzinteraction_client.pyZXDG_CACHE_HOMEz~/.cacheT)�exist_okzcockpit-client-askpasszChecking if %s exists...z.  ... it exists but is not the same version...�@z;  ... it has the correct contents, but is not executable...z  ... writing contents.i�)�	importlibZ	resources�filesr�__name__�
read_bytes�os�environ�get�path�
expanduser�makedirsr�logger�debug�
ValueError�stat�st_mode�FileNotFoundError�write_bytes�chmod)Zsrc_pathZsrc_dataZxdg_cache_homeZ	dest_path�r,�3/usr/lib/python3.9/site-packages/cockpit/beiboot.py�ensure_ferny_askpass.s(




r.ccs<t��D].}|jD]"}|jdvrt|jt�r|jVqqdS)N)�path-exists�path-not-exists)rZload_manifestsZ
conditions�name�
isinstance�value�str)Zmanifest�	conditionr,r,r-�get_interesting_filesJs
r6c@sFeZdZUeeefed<eeed�dd�Zeeefd�dd�Z	dS)	�ProxyPackagesLoader�file_status)r5r3rcCs.|dkr|j|S|dkr&|j|St�dS)Nr/r0)r8�KeyError)�selfr5r3r,r,r-�check_conditionTs

z#ProxyPackagesLoader.check_condition�r8cCs
||_dS�Nr<)r:r8r,r,r-�__init___szProxyPackagesLoader.__init__N)
r�
__module__�__qualname__rr4�bool�__annotations__�objectr;r>r,r,r,r-r7Qs
r7�
report_existsz�
    import os
    def report_exists(files):
        command('cockpit.report-exists', {name: os.path.exists(name) for name in files})
    csLeZdZUeed<eed��fdd�Zeed�dd�Zdd	�d
d�Z	�Z
S)�DefaultRoutingRule�peer)�routerrFcst��|�||_dSr=)�superr>rF)r:rGrF��	__class__r,r-r>pszDefaultRoutingRule.__init__)�optionsrcCs|jSr=)rF)r:rKr,r,r-�
apply_ruletszDefaultRoutingRule.apply_ruleNrcCs|j��dSr=)rF�close�r:r,r,r-�shutdownwszDefaultRoutingRule.shutdown)rr?r@rrBrr>rrLrO�
__classcell__r,r,rIr-rEms
rEc@sZeZdZUdZeed<ed�dd�Zeeeeed�dd�Z	ee
eeed	d
�dd�Z
d	S)
�AuthorizeResponder)z
ferny.askpass�cockpit.report-existsrG�rGcCs
||_dSr=rS)r:rGr,r,r-r>szAuthorizeResponder.__init__)�messages�prompt�hintrc�sr|dkrdSdt�|�����}|jj||||dd�IdH}|�d���}t�|�����}t	�
dt|��|S)NZnonezX-Conversation - F)rTrUrVZechozX-Conversation -zReturning a %d chars password)�base64Z	b64encode�encode�decoderGZrequest_authorization�removeprefix�stripZ	b64decoder$r%�len)r:rTrUrVZ	challengeZresponseZb64�passwdr,r,r-�
do_askpass�s�zAuthorizeResponder.do_askpassN)�command�args�fds�stderrrc�sNt�d|||�|dkrJ|\}tt|�d�|j_|jj�dt|jt	g��dS)NzGot ferny command %s %s %srR)�loaderr)
r$r%rr7rG�packagesZ
routing_rules�insertrr
)r:r_r`rarbr8r,r,r-�do_custom_command�s
z$AuthorizeResponder.do_custom_command)rr?r@ZcommandsrrBr>r4rr^�tuple�list�intrfr,r,r,r-rQ{s

rQcsVeZdZUeed<eeejd��fdd�Z	dd�dd�Z
eedd	��fd
d�Z�Z
S)�SshPeer�always)rG�destinationr`cs||_|j|_t��|�dSr=)rlrkrHr>)r:rGrlr`rIr,r-r>�szSshPeer.__init__Nrc	�st|�}t�t|j��}|�|�d}d}|jdkr\t�}d|��ddf}d|jt�	|�f}t
j�d�r�d	d
gdd�|D��|�R}d}t
�d
||�|j|||dd�IdH}|js�ddgffg}ng}tjg|�dtt��gf�|j�td�}|�|���|��IdHdS)N)Zpython3z-icz# cockpit-bridger,Z	localhostzSSH_ASKPASS=z	DISPLAY=xzSSH_ASKPASS_REQUIRE=forceZsshz/.flatpak-infoz
flatpak-spawnz--hostcss|]}d|��VqdS)z--env=Nr,)�.0Zkvr,r,r-�	<genexpr>��z/SshPeer.do_connect_transport.<locals>.<genexpr>z Launching command: cmd=%s env=%sT)rbZstart_new_sessionZtry_execzcockpit-bridgerD)Zgadgets)r
rZInteractionAgentrQrGZadd_handlerrlr.�shlex�joinrr!�existsr$r%Zspawnrkr	Zmake_bootloaderrhr6Zsteps�BEIBOOT_GADGETS�writerX�communicate)	r:Zbeiboot_helperZagent�cmd�envZssh_askpassZ	transportZexec_cockpit_bridge_stepsZstage1r,r,r-�do_connect_transport�sF

�������zSshPeer.do_connect_transport)r_�messagercs|dkrdSt��||�dS)NZ	authorize)rH�transport_control_received)r:r_ryrIr,r-rz�sz"SshPeer.transport_control_received)rr?r@rArBrr4�argparse�	Namespacer>rxrrzrPr,r,rIr-rj�s
.rjcsNeZdZUdZeeed<eed<ej	d��fdd�Z
dd�Zd	d
�Z�Z
S)�	SshBridgeNrd�ssh_peer)r`cs*t||j|�|_t��t||j�g�dSr=)rjrlr~rHr>rE)r:r`rIr,r-r>�s
�zSshBridge.__init__cCsdSr=r,rNr,r,r-�do_send_init�szSshBridge.do_send_initcCs:t|�d�t�r|jdd�d|d<|jjfi|��dS)NZ	superuserzsuperuser-init-done)r_F)r2r �dict�
write_controlr~)r:ryr,r,r-�do_init�szSshBridge.do_init)rr?r@rdrrrBrjr{r|r>rr�rPr,r,rIr-r}�s

r}c
�sJt�d�t|�}tt��|�z~|j��IdH}|�di�}t	|t
�s^|jdddd�WdSd|d<|jr�d	d
�|jjD�|d<|jfi|��|j�
�Wnttjy�}zt�t|��WYd}~nJd}~0t�y}z(|jfd|jd�|j��WYd}~dSd}~00t�d
�z|��IdHWnt�yDYn0dS)NzHi. How are you today?�capabilities�initzprotocol-errorzcapabilities must be a dict)r_�problemryTzexplicit-superusercSsi|]
}|d�qSr=r,)rm�pr,r,r-�
<dictcomp>rozrun.<locals>.<dictcomp>rd)r_r�z/Startup done.  Looping until connection closes.)r$r%r}r�asyncioZget_running_loopr~�start�
setdefaultr2r�r�rdZ
thaw_endpointrZInteractionError�sys�exitr4rr��kwargsru�BrokenPipeError)r`Zbridgeryr��excr,r,r-�runs0

"
r�cCslt��tjdd�}|jdddd�|jddd�|jd	d
d�|��}t|jd�tj	t	|�|jd�dS)
Nz@cockpit-bridge is run automatically inside of a Cockpit session.)�descriptionz--always�
store_truez/Never try to run cockpit-bridge from the system)�action�helpz--debug)r�rlz5Name of the remote host to connect to, or 'localhost')r�)r%)
r�installr{�ArgumentParser�add_argument�
parse_argsrr%r�r�)�parserr`r,r,r-�main)sr��__main__);r{r�rWZimportlib.resourcesrZloggingrrpr��pathlibr�typingrrrrZcockpitrZcockpit._vendorrZcockpit._vendor.beir	Zcockpit.beipackr
Zcockpit.bridgerZcockpit.channelrZcockpit.channelsr
Zcockpit.jsonutilrZcockpit.packagesrrZcockpit.peerrZcockpit.protocolrZcockpit.routerrrZcockpit.transportsrZ	getLoggerrr$r.r4r6r7rsrEZInteractionResponderrQrjr}r�r�r,r,r,r-�<module>sL
��
/?&