Sindbad~EG File Manager

Current Path : /proc/2715199/root/usr/libexec/kcare/python/kcarectl/__pycache__/
Upload File :
Current File : //proc/2715199/root/usr/libexec/kcare/python/kcarectl/__pycache__/kcare.cpython-36.pyc

3

��"h�%�@s�ddlZddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddlm
Z
ddlmZddlm
Z
dd	lmZd
Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�ZGdd�de�ZGdd�de�ZGdd�de�Zdd �Zd!d"�Zejd#d$��Zejd%d&��Z ejd'd(��Z!d)d*�Z"d+d,�Z#d-d.�Z$d/d0�Z%d1d2�Z&d3d4�Z'ejd5d6��Z(d7d8�Z)d9d:�Z*d;d<�Z+d=d>�Z,dS)?�N�)�config)�	constants)�	log_utils)�
process_utils)�utils)�SafeExceptionWrapper)�json_loads_nstrzuname: cCstj|�p|dkS)Nz.-_+)�str�isalnum)�c�r
�+/usr/libexec/kcare/python/kcarectl/kcare.py�
is_uname_charsrc
Csjt�}tt||tj�d�}z@x:|j�D].}|jt�r&djt	t
|tt�d�j���Sq&WWd|j
�XdS)N�r�)�get_kernel_hash�open�get_cache_pathr�
PATCH_INFO�	readlines�
startswith�UNAME_LABEL�join�filterr�len�strip�close)�patch_level�khash�f�liner
r
r�parse_unames
(
r"cCsJtjjtj�rFy"ttjd�}|j|�|j�dStk
rDYnXdS)N�wTF)	�os�path�existsr�KCARE_UNAME_FILEr�writer�	Exception)�new_versionr r
r
r�kcare_update_effective_version*s
r+c
Cs.ttjd�}ztj|j��j�S|j�XdS)N�rb)rr�KERNEL_VERSION_FILE�hashlib�sha1�read�	hexdigestr)r r
r
rr6srcCs�tjjtjd�}tjj|�r�t|d��V}|j�j�}yt	|�Wn6t
k
rdtt	tjj|���St
k
rvdSX|SQRXdS)z:Returns timestamp from PATCH_CACHE/stoped.at if its exsitsz
stopped.atr�errorNz-1)r$r%rr�PATCH_CACHEr&rr0�rstrip�int�
ValueErrorr
�getctimer))Zstopped_at_filenameZfh�valuer
r
r�
get_last_stopAs
r9cCsPtjpd}tjpd}dj||t|�|g�}tjd|f}|rD||f7}tjj|�S)N�none�default�-�patches)	r�PREFIX�
PATCH_TYPErr
rr3r$r%)r�plevel�fname�prefix�ptypeZ	patch_dir�resultr
r
rrRs


rcGstjtjf|��S)N)r�get_patch_server_urlrr>)�partsr
r
r�get_kernel_prefixed_url\srGc@seZdZdd�Zdd�ZdS)�BaseKernelPatchLevelcGst|jt|�f|��S)N)rrr
)�selfrFr
r
r�
cache_pathaszBaseKernelPatchLevel.cache_pathcCs|j|j|j|jd�S)N)�levelr�baseurl�release)rKrrLrM)rIr
r
r�as_dictdszBaseKernelPatchLevel.as_dictN)�__name__�
__module__�__qualname__rJrNr
r
r
rrH`srHcs8eZdZd
�fdd�	Zddd�Zdd�Zdd	�Z�ZS)�KernelPatchLevelNcst||�j||�S)N)�super�__new__)�clsrrKrLrM)�	__class__r
rrTnszKernelPatchLevel.__new__cCs||_||_||_||_dS)N)rKrrLrM)rIrrKrLrMr
r
r�__init__qszKernelPatchLevel.__init__cGstj|j|jf|��S)N)rrErLr)rIrFr
r
r�kmod_urlwszKernelPatchLevel.kmod_urlcGstj|j|jt|�f|��S)N)rrErLrr
)rIrFr
r
r�file_urlzszKernelPatchLevel.file_url)N)N)rOrPrQrTrWrXrY�
__classcell__r
r
)rVrrRms
rRcs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)�LegacyKernelPatchLevelcsByt||�j||�Stk
r<}zt|��WYdd}~XnXdS)N)rSrTr6r)rUrrK�exc)rVr
rrTszLegacyKernelPatchLevel.__new__cCs||_||_d|_d|_dS)N)rKrrLrM)rIrrKr
r
rrW�szLegacyKernelPatchLevel.__init__cGs0dtjkr t|jt|�f|��St|jf|��S)Nzpatches.kernelcare.com)r�PATCH_SERVERrGrr
)rIrFr
r
rrX�s
zLegacyKernelPatchLevel.kmod_urlcGst|jt|�f|��S)N)rGrr
)rIrFr
r
rrY�szLegacyKernelPatchLevel.file_urlcCst|jt|�|�S)N)rRrr5)rIrLr
r
r�upgrade�szLegacyKernelPatchLevel.upgrade)	rOrPrQrTrWrXrYr^rZr
r
)rVrr[~s
r[cCs^y6ttjjtjd�d��}tj|j�|�WdQRXWn"t	k
rXt
jddd�YnXdS)Nzkernel_patch_level.jsonr#z!failed to dump kernel patch levelF)�	print_msg)rr$r%rrr3�json�dumprNr)r�logexc)Zkernel_patch_levelr r
r
r�dump_kernel_patch_level�s
rccCsTy,ttjjtjd���}t|j��SQRXWn"tk
rNt	j
ddd�YnXdS)Nzkernel_patch_level.jsonz(failed to read dumped kernel patch levelF)r_)rr$r%rrr3r	r0r)rrb)r r
r
r�read_dumped_kernel_patch_level�s
rdcCs�d}d}tjjd�rZtdd��6}x.|D]&}|j�}|jd�r&|jdd�\}}q&WWdQRXtjj|�r�tjtjj	|d��}|r�t
dd�|D��}|S)	Nz
/var/crashz/etc/kdump.confrzpath rz*/vmcorecss|]}tjj|�VqdS)N)r$r%r7)�.0�itr
r
r�	<genexpr>�sz0kdumps_latest_event_timestamp.<locals>.<genexpr>)r$r%�isfilerrr�split�isdir�globr�max)Z
kdump_pathrDZ
kdump_confr!�_Zvmcore_listr
r
r�kdumps_latest_event_timestamp�s

rncCs>tjstjjtj�r:tjtjddgddd�\}}}|j�SdS)Nz	is-activeZkdumpT)�catch_stdout�catch_stderrzsystemd-absent)	r�SKIP_SYSTEMCTL_CHECKr$r%rh�	SYSTEMCTLr�run_commandr)rm�stdoutr
r
r�kdump_status�srucCs8tjjtj�sdStjtj�}|s&dStdd�|D��S)Ncss&|]}tjjtjjtj|��VqdS)N)r$r%r7rr�
KDUMPS_DIR)rerfr
r
rrg�sz7crashreporter_latest_event_timestamp.<locals>.<genexpr>)r$r%rjrrv�listdirrl)Z
files_listr
r
r�$crashreporter_latest_event_timestamp�srxc	Cs:d}tjj|�sdSt|d��}|j�j�}WdQRX|S)Nz/sys/module/kcare/versionr)r$r%r&rr0r)Zkmod_version_filer �versionr
r
r�get_current_kmod_version�srzcCs6t�}|sdStjdddt||tj�g�j�}||kS)NTz
/sbin/modinfoz-Fry)rzr�check_outputrr�KMOD_BINr)rr@Zold_versionr*r
r
r�is_kmod_version_changed�sr}cCst�}|stj�St|�S)N)�loaded_patch_level�platformrMr")rr
r
r�kcare_uname_su�sr�cCs,tjjtj�r"ttjd�j�j�St�SdS)Nr)	r$r%r&rr'rr0rr�r
r
r
r�kcare_uname�sr�cCs`tt��d}|r\yt|�Wn0tk
rN}zt|dt���WYdd}~XnXtt�|�SdS)Nzpatch-levelzUnexpected patch state)�parse_patch_description�loaded_patch_descriptionr5r6r�_patch_infor[r)�pl�er
r
rr~�s r~cCstjtjdg�S)N�info)rr{r�
KPATCH_CTLr
r
r
rr��sr�cCsRydd�td�D�Sttfk
rL}ztjdt|�dd�gSd}~XnXdS)NcSsg|]}|j�d�qS)r)ri)rer!r
r
r�
<listcomp>sz&get_loaded_modules.<locals>.<listcomp>z
/proc/modulesz#Error getting loaded modules list: F)r_)r�OSError�IOErrorr�logerrorr
)�exr
r
r�get_loaded_moduless
r�cCsdt�krdStt�d�S)N�kcarezkpatch-description)r��get_patch_valuer�r
r
r
rr�
s
r�cCstj|�j|�S)N)r�data_as_dict�get)r�Zlabelr
r
rr�sr�c	Csrddddd�}|s|S|jd�\}}}|jd�\}}}|jd�\}}}|pLd|d<|pXd|d<||d	<||d
<|S)Nr;r)zpatch-levelz
patch-typezlast-updatezkernel-version�;�:r<zpatch-levelz
patch-typezlast-updatezkernel-version)�	partition)	ZdescrDZlevel_type_timestamprmZkernelZ
level_type�	timestampr�
patch_typer
r
rr�sr�cCshtjjtjd�}tjj|�rdt|d��8}y|j�}tj	|�St
ttt
tfk
rXYnXWdQRXdS)Nzkcare.stater)r$r%rrr3r&rr0�astZliteral_eval�SyntaxErrorr�r6�	TypeError�UnicodeDecodeError)Z
state_filer �stater
r
r�	get_state*s
r�)-r�r`r$r.rkrrrrrrr�errorsr�py23r	rrr"r+rr9rrGr5rHrRr[rcrd�cachedrnrurxrzr}r�r�r~r�r�r�r�r�r�r
r
r
r�<module>sN


	
	

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists