3
0Q=jŽ. ã @ sî d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d dlm Z d dl
mZ d d lm
Z
mZ y4d dlZd dlZd d
lmZmZmZmZmZmZ W nD ek
rô d dljZd dljZeZeZeZe Ze!Ze!Ze"Z#Y nX d dl$Z$e$j%ddd
�Z&e'e&dƒ�s e&j$e&_(e&j(Z)dZ*dZ+dddddœZ,dd„ e,j-ƒ D ƒZ.d dlm/Z/ e/j0ƒ Z1ej2ƒ Z3dd„ Z4dd„ Z5dd„ Z6e e7dœd d!„Z8e7d"œd#d$„Z9d6d&d'„Z:d7e7d(œd)d*„Z;d+d,„ Zd2d3„ Z?d4d5„ Z@dS )9é N)Úup2dateUtils)Ú
up2dateErrors)Úup2dateAuth)Ú rhnserver)Ú
up2dateLog)Ú
statistics)ÚgetPlatform)ÚustrÚsstr)ÚListTypeÚ TupleTypeÚ
StringTypeÚUnicodeTypeÚDictTypeÚDictionaryTypezrhn-client-toolsT)ZfallbackÚugettextz/etc/sysconfig/rhnz/etc/sysconfig/rhn/jwt.tokenZ
shared_proÚsharedÚsoloÚadmin)zCloudLinux OS Shared ProzCloudLinux OS SharedzCloudLinux OS SolozCloudLinux OS Adminc C s i | ]\}}||“qS © r )Ú.0ÚkÚvr r ú/usr/lib/python3.6/rhnreg.pyú
5 s r )Úconfigc C s t jtd t jƒS )NÚsystemIdPath)ÚosÚaccessÚcfgÚR_OKr r r r Ú
registered= s r! c C sÆ t jj| ƒ}t j|t jƒsdS t jj| ƒrJyt j| | d ƒ W n
dS t j| t jt j B t j
B t jB t jB dƒ}yt j
|dƒ}W n tk
r¢ t j|ƒ ‚ Y nX z|jt|ƒƒ W d|jƒ X dS )z; Write a file to disk that is not readable by other users. Fz.savei€ ÚwNT)r ÚpathÚdirnamer ÚW_OKÚlexistsÚrenameÚopenÚO_WRONLYÚO_CREATÚ
O_NOFOLLOWÚO_EXCLÚ O_CLOEXECÚfdopenÚ ExceptionÚcloseÚwriter
)Zsecure_fileZ
file_contentsZdir_nameÚfdZfd_filer r r Ú_write_secure_file@ s*
r3 c C s t td | ƒ}|S )Nr )r3 r )ÚsystemIdÚresr r r Ú
writeSystemIdd s r6 )ÚtokenÚallowTransitionc C sz ddl }ddl}|jjdƒs dS ddg}|r6|jdƒ |j||jd�}|j| jƒ d�\}}|j dkrvt
jd ||f ƒ dS )
zH
Execute binary file which we use as hook for jwt token updates
r Nz /opt/cloudlinux/venv/bin/python3z/usr/sbin/cl-pre-jwt-updatez--new-token-stdinz--allow-transition)Ústdin)Úinputz7Pre jwt update hook failed with stdout=%s and stderr=%s)Ú
subprocessr r# ÚexistsÚappendÚPopenÚPIPEÚcommunicateÚencodeÚ
returncodeÚlogÚlog_me)r7 r8 r; r ÚcmdÚpÚstdoutÚstderrr r r Ú_execute_pre_jwt_update_hooki s
rI )r8 c C sj ddl }ddl}|jjdƒs dS dg}| r4|jdƒ |j|ƒ}|jƒ \}}|jdkrftj d||f ƒ dS )zH
Execute binary file which we use as hook for jwt token updates
r Nz /opt/cloudlinux/venv/bin/python3z/usr/sbin/cl-post-jwt-updatez--allow-transitionz8Post jwt update hook failed with stdout=%s and stderr=%s)
r; r r# r<