HEX
Server: Apache
System: Linux a16-asgard6.hospedagemuolhost.com.br 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: maoristu4c3dbd03 (1436)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //lib/python3.9/site-packages/dnf-plugins/__pycache__/spacewalk.cpython-39.pyc
a

�߾g�7�@sfddlmZddlmZddlmZmZddlZddlZddlZddl	Z	ddl
Z
ddlZddlmZddl
mZddlZddlZddlZddlZddlmZddlmZd	Zed
�Zed�Zed�Zed
�Zed�Zed�Zed�Zed�Zed�Z ed�Z!ed�Z"ed�Z#ed�Z$Gdd�dej%�Z&Gdd�dej'j(�Z)dd�Z*Gdd�de+�Z,dd �Z-d!d"�Z.dS)#�)�absolute_import)�unicode_literals)�_�loggerN)�copy)�PRIO_PLUGINCONFIG)�ustr)�
up2dateErrorsz_spacewalk.jsonz7CloudLinux Network based repositories will be disabled.z4CloudLinux Network channel support will be disabled.z@There was an error communicating with CloudLinux Network server.z=This system is not registered with CloudLinux Network server.z.This system is not subscribed to any channels.zSystemId could not be acquired.z%You can use rhn_register to register.z@This system is receiving updates from CloudLinux Network server.z�For security reasons packages from CloudLinux Network based repositories can be verified only with locally installed gpg keys. GPG key '%s' has been rejected.z.Package profile information could not be sent.z=Missing required login information for CloudLinux Network: %sz'Leapp upgrade is running - using cache.z>Spacewalk plugin has to be run under with the root privileges.csZeZdZdZ�fdd�Zdd�Zdd�Zdd	d
�Zdd�Zd
d�Z	dd�Z
dd�Z�ZS)�	SpacewalkZ	spacewalkcs�tt|��||�||_||_tj�|jjj	t
�|_d|_i|_
t|jj�|_|�|j�|_d|j��vr�|j�d�}|D]\}}|j�||t�qztj��s�t�t�d|j_|jjs�dSt�d�|��dS)NF�mainzinitialized Spacewalk plugin)�superr
�__init__�base�cli�os�path�join�confZ
persistdir�STORED_CHANNELS_NAME�stored_channels_path�connected_to_spacewalk�up2date_cfgrZread_config�parser�sections�items�
_set_valuer�dnf�utilZ	am_i_rootr�warning�MUST_BE_ROOT�enabled�debug�activate_channels)�selfrr�options�key�value��	__class__��9/usr/lib/python3.9/site-packages/dnf-plugins/spacewalk.pyr
;s*�


zSpacewalk.__init__cCs$|jjsdS|jsdSd|jj_dS)NT)rr rZdemandsZ	root_user�r#r)r)r*�configRs
zSpacewalk.configcCst�d�dS)Nz$/usr/sbin/clnreg_ks --strict-edition)r�systemr+r)r)r*�clnreg^szSpacewalk.clnregTc
Cs�i}d}d}d}d}|��}|s(|}�n�tj�d�rFt�t�|}�n�tj�	�|_
t|j
�}|j
df}d}|s�ztjj
|jjd�}d}Wqltjy�}	z>|dkr�|��d}WYd}	~	qlt�dtt|	�WYd}	~	dSd}	~	00ql|�st�dtt�|�i�dSztjj|jjd�}
Wn�tj�yX}	zt�dtt|	�WYd}	~	dSd}	~	0tj�y�t�dtt�|�i�YdStj�y�t�d	ttt t�YdS0d|_!t�"t#�|
D]$}|d
�r�t$|�%��||d<�q�|�|�|j&j'}|�%�D]�\}
}|�(|
�}d}|�r*|�(d
�}t)|j�}|
|j*�+�v�rn|j*�%|
�}|D]\}}|�,||t-��qTt.||j&j||j|||||j/|j0d�	�}|�1|��qt�2|�dS)
Nrz/etc/cln_leapp_in_progressZuseNoSSLForPackagesF��timeoutT�%s
%s
%sz%s
%sz%s %s
%s
%s�version�label)	r�proxyr0�	sslcacert�
force_http�cached_version�
login_info�gpgcheckr )3�_read_channels_filerr�isfilerr�LEAPP_IN_PROGRESS�up2date_clientr,ZinitUp2dateConfigr�get_ssl_ca_certZup2dateAuthZgetLoginInforr0r	�RhnServerExceptionr.�error�COMMUNICATION_ERROR�RHN_DISABLED�NOT_REGISTERED_ERROR�_write_channels_fileZ
rhnChannelZgetChannelDetailsZCommunicationErrorZNoChannelsError�NOT_SUBSCRIBED_ERROR�CHANNELS_DISABLEDZNoSystemIdError�NO_SYSTEM_ID_ERROR�USE_RHNREGISTERr�info�UPDATES_FROM_SPACEWALK�dictrr�repos�getrrrrr�
SpacewalkRepor9r �addr!)r#Z
networkingZenabled_channelsr5r6Z	proxy_urlr8Zcached_channelsZclnreg_tried�eZsvrChannels�channelrLZ
channel_idZchannel_dictZcached_channelr7rr$r%r&�repor)r)r*r"as�


�

�





�zSpacewalk.activate_channelsc
Cs�|jjsdS|jsdS|jddkr8|��}tj�|�ztjj|jj	d�Wn6t
jy�}zt�
dtt|�WYd}~n
d}~00dS)z, Update system's profile after transaction. NZwriteChangesToLog�r/r1)rr rr�_make_package_deltar=ZrhnPackageInfoZlogDeltaPackagesZupdatePackageProfiler0r	r?rr@rA�PROFILE_NOT_SENT)r#�deltarPr)r)r*�transaction�s�
zSpacewalk.transactionc
Cs�zHt|jd��(}|��}t�|�}|Wd�WS1s<0YWn\ttfy~}z|jtjkrj�WYd}~n0d}~0tj	j
y�}zWYd}~n
d}~00iS)N�r)�openr�read�json�loads�FileNotFoundError�IOError�errno�ENOENT�decoderZJSONDecodeError)r#�
channels_fileZcontentZchannelsrPr)r)r*r:�s
(zSpacewalk._read_channels_filec
Cs|z@t|jd�� }tj||dd�Wd�n1s40YWn6ttfyv}z|jtjkrb�WYd}~n
d}~00dS)N�w�)�indent)rYrr[�dumpr]r^r_r`)r#�varrbrPr)r)r*rD�s2zSpacewalk._write_channels_filecCs.dd�|jjjD�dd�|jjjD�d�}|S)NcSs$g|]}|j|j|j|j|jf�qSr)��namer2�releaseZepochZarch��.0�pr)r)r*�
<listcomp>�s�z1Spacewalk._make_package_delta.<locals>.<listcomp>cSs$g|]}|j|j|j|j|jf�qSr)rhrkr)r)r*rn�s�)ZaddedZremoved)rrWZinstall_setZ
remove_set)r#rVr)r)r*rT�s���zSpacewalk._make_package_delta)T)
�__name__�
__module__�__qualname__rir
r,r.r"rWr:rDrT�
__classcell__r)r)r'r*r
7s
Yr
cs>eZdZdZgd�Z�fdd�Zdd�Zd
�fdd	�	Z�ZS)rNzB
    Repository object for Spacewalk. Uses up2date libraries.
    )zX-RHN-Server-IdzX-RHN-Auth-User-Idz
X-RHN-AuthzX-RHN-Auth-Server-TimezX-RHN-Auth-Expire-Offsetc
sVtt���t|d�|�d��t|d��_�fdd�|dD��_|�d��_|�d��_zt	|d	��_
Wn>ty�}z&t�
ttj�|��g�_
WYd}~n
d}~00|d
|�d�kr�d�_|�d
��_d�_d�_d�_d�_|�d��_|�d��_|�d��_|�d��r&���n���t�d��rR���}|�rR��|�dS)Nr3rricsg|]}|d�j�qS)z	/GET-REQ/)�id)rl�urlr+r)r*rn��z*SpacewalkRepo.__init__.<locals>.<listcomp>rtr5r4Zgpg_key_urlr2r7rSr8rr0r9r6r �set_http_headers) rrNr
rrMriZbaseurlr5r4�get_gpg_key_urlsZgpgkey�InvalidGpgKeyLocationrr�GPG_KEY_REJECTEDrZi18nZucdZmetadata_expirer8Z	keepaliveZ	bandwidthZretriesZthrottler0r9r6�enable�disable�hasattr�create_http_headersrv)r#rQZoptsrP�http_headersr'r+r*r
�s:�
zSpacewalkRepo.__init__cCs�g}|js|S|jD]X}||jvr6t|}tj�|��|j|dvrT|�d|�q|�d||j|f�q|js~|�d�|S)N)N�z*%s: 
X-libcurl-Empty-Header-Workaround: *z%s: %sz.X-RHN-Transport-Capability: follow-redirects=3)r8�needed_headers�MISSING_HEADERr�ErrorZ	RepoError�appendr6)r#r~�headerr@r)r)r*r}s


z!SpacewalkRepo.create_http_headersTcs0tt|��||�}|��}|r,|�tj|�|S)N)rrN�_handle_new_remoter}Zsetopt�librepoZLRO_HTTPHEADER)r#ZdestdirZmirror_setupZhandler~r'r)r*r�-s
z SpacewalkRepo._handle_new_remote)T)	rorprq�__doc__r�r
r}r�rrr)r)r'r*rN�s
%rNcCs&|��}|D]}t|�st|��q|S)a
    Parse the key urls and validate them.

    key_url_string is a space seperated list of gpg key urls that must be
    located in /etc/pkg/rpm-gpg/.
    Return a list of strings containing the key urls.
    Raises InvalidGpgKeyLocation if any of the key urls are invalid.
    )�split�is_valid_gpg_key_urlrx)Zkey_url_stringZkey_urls�key_urlr)r)r*rw9s
	
rwc@seZdZdS)rxN)rorprqr)r)r)r*rxHsrxcCsP|�d�}t|�dkrdS|\}}|��dkr2dStj�|�}|�d�sLdSdS)Nz://�F�filez/etc/pki/rpm-gpg/T)r��len�lowerrr�normpath�
startswith)r�Zproto_split�protorr)r)r*r�Ks

r�cCs4d|vr|dst�|d}t|�tkr0|dS|S)NZ	sslCACertr)ZBadSslCaCertConfig�type�list)rZca_certsr)r)r*r>Ysr>)/Z
__future__rrZdnfpluginscorerrrZdnf.exceptionsr_r[r�rrZdnf.conf.configrZup2date_client.up2dateAuthr=Zup2date_client.configZup2date_client.rhnChannelZup2date_client.rhnPackageInfoZrhn.i18nrr	rrBrFrArCrErGrHrJryrUr�r<rZPluginr
rRZReporNrw�	Exceptionrxr�r>r)r)r)r*�<module>sJ4O