HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/libexec/kcare/python/kcarectl/__pycache__/kcare.cpython-38.pyc
U

n�h�%�@slddlZddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZddlm
Z
ddlmZdZdd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�ZGdd�de�ZGdd�de�ZGdd�de�Zdd�Zdd�Zej dd ��Z!ej d!d"��Z"ej d#d$��Z#d%d&�Z$d'd(�Z%d)d*�Z&d+d,�Z'd-d.�Z(d/d0�Z)ej d1d2��Z*d3d4�Z+d5d6�Z,d7d8�Z-d9d:�Z.dS);�N�)�config�	constants�	log_utils�
process_utils�utils)�SafeExceptionWrapper)�json_loads_nstrzuname: cCst�|�p|dkS)Nz.-_+)�str�isalnum)�c�r
�+/usr/libexec/kcare/python/kcarectl/kcare.py�
is_uname_charsrcCsnt�}tt||tj�d�}zD|��D]6}|�t�r$d�	t
t|tt�d��
���W�Sq$W5|��XdS)N�r�)�get_kernel_hash�open�get_cache_pathr�
PATCH_INFO�close�	readlines�
startswith�UNAME_LABEL�join�filterr�len�strip)�patch_level�khash�f�liner
r
r�parse_unames
.
r"cCsLtj�tj�rHz$ttjd�}|�|�|��WdStk
rFYnXdS)N�wTF)	�os�path�existsr�KCARE_UNAME_FILEr�writer�	Exception)�new_versionr r
r
r�kcare_update_effective_version&s
r+cCs2ttjd�}zt�|�����W�S|��XdS)N�rb)rr�KERNEL_VERSION_FILEr�hashlib�sha1�read�	hexdigest�r r
r
rr2src
Cs�tj�tjd�}tj�|�r�t|d��~}|����}zt	|�WnRt
k
rttt	tj�|���YW5QR�St
k
r�YW5QR�dSX|W5QR�SQRXdS)z:Returns timestamp from PATCH_CACHE/stoped.at if its exsitsz
stopped.atr�errorz-1)r$r%rr�PATCH_CACHEr&rr0�rstrip�int�
ValueErrorr
�getctimer))Zstopped_at_filenameZfh�valuer
r
r�
get_last_stop=s$r:cCsPtjpd}tjpd}d�||t|�|g�}tjd|f}|rD||f7}tjj|�S)N�none�default�-�patches)	r�PREFIX�
PATCH_TYPErr
rr4r$r%)r�plevel�fname�prefix�ptypeZ	patch_dir�resultr
r
rrNs


rcGstjtjf|��S�N)r�get_patch_server_urlrr?)�partsr
r
r�get_kernel_prefixed_urlXsrIc@seZdZdd�Zdd�ZdS)�BaseKernelPatchLevelcGst|jt|�f|��SrF)rrr
��selfrHr
r
r�
cache_path]szBaseKernelPatchLevel.cache_pathcCs|j|j|j|jd�S)N��levelr�baseurl�releaserN)rLr
r
r�as_dict`s
�zBaseKernelPatchLevel.as_dictN)�__name__�
__module__�__qualname__rMrRr
r
r
rrJ\srJcs8eZdZd
�fdd�	Zddd�Zdd�Zdd	�Z�ZS)�KernelPatchLevelNcst||��||�SrF)�super�__new__)�clsrrOrPrQ��	__class__r
rrXjszKernelPatchLevel.__new__cCs||_||_||_||_dSrFrN)rLrrOrPrQr
r
r�__init__mszKernelPatchLevel.__init__cGstj|j|jf|��SrF)rrGrPrrKr
r
r�kmod_urlsszKernelPatchLevel.kmod_urlcGstj|j|jt|�f|��SrF)rrGrPrr
rKr
r
r�file_urlvszKernelPatchLevel.file_url)N)N)rSrTrUrXr\r]r^�
__classcell__r
r
rZrrVis
rVcs<eZdZ�fdd�Zdd�Zdd�Zdd�Zd	d
�Z�ZS)�LegacyKernelPatchLevelc
sDzt||��||�WStk
r>}zt|��W5d}~XYnXdSrF)rWrXr7r)rYrrO�excrZr
rrX{szLegacyKernelPatchLevel.__new__cCs||_||_d|_d|_dSrFrN)rLrrOr
r
rr\�szLegacyKernelPatchLevel.__init__cGs0dtjkr t|jt|�f|��St|jf|��S)Nzpatches.kernelcare.com)r�PATCH_SERVERrIrr
rKr
r
rr]�s
zLegacyKernelPatchLevel.kmod_urlcGst|jt|�f|��SrF)rIrr
rKr
r
rr^�szLegacyKernelPatchLevel.file_urlcCst|jt|�|�SrF)rVrr6)rLrPr
r
r�upgrade�szLegacyKernelPatchLevel.upgrade)	rSrTrUrXr\r]r^rcr_r
r
rZrr`zs
r`c	Cs^z6ttj�tjd�d��}t�|��|�W5QRXWn"t	k
rXt
jddd�YnXdS)N�kernel_patch_level.jsonr#z!failed to dump kernel patch levelF��	print_msg)rr$r%rrr4�json�dumprRr)r�logexc)Zkernel_patch_levelr r
r
r�dump_kernel_patch_level�s
rjc
Csbz:ttj�tjd���}t|���W5QR�WSQRXWn"tk
r\t	j
ddd�YnXdS)Nrdz(failed to read dumped kernel patch levelFre)rr$r%rrr4r	r0r)rrir2r
r
r�read_dumped_kernel_patch_level�s
$rkc	Cs�d}d}tj�d�rVtdd��2}|D]&}|��}|�d�r$|�dd�\}}q$W5QRXtj�|�r�t�tj�	|d��}|r�t
dd�|D��}|S)	Nz
/var/crashz/etc/kdump.confrzpath rz*/vmcorecss|]}tj�|�VqdSrF)r$r%r8��.0�itr
r
r�	<genexpr>�sz0kdumps_latest_event_timestamp.<locals>.<genexpr>)r$r%�isfilerrr�split�isdir�globr�max)Z
kdump_pathrEZ
kdump_confr!�_Zvmcore_listr
r
r�kdumps_latest_event_timestamp�s
rvcCs>tjstj�tj�r:tjtjddgddd�\}}}|��SdS)Nz	is-activeZkdumpT)�catch_stdout�catch_stderrzsystemd-absent)	r�SKIP_SYSTEMCTL_CHECKr$r%rp�	SYSTEMCTLr�run_commandr)ru�stdoutr
r
r�kdump_status�sr}cCs8tj�tj�sdSt�tj�}|s&dStdd�|D��S)Ncss&|]}tj�tj�tj|��VqdSrF)r$r%r8rr�
KDUMPS_DIRrlr
r
rro�sz7crashreporter_latest_event_timestamp.<locals>.<genexpr>)r$r%rrrr~�listdirrt)Z
files_listr
r
r�$crashreporter_latest_event_timestamp�sr�c	Cs:d}tj�|�sdSt|d��}|����}W5QRX|S)Nz/sys/module/kcare/versionr)r$r%r&rr0r)Zkmod_version_filer �versionr
r
r�get_current_kmod_version�sr�c	Cs6t�}|sdSt�dddt||tj�g���}||kS)NTz
/sbin/modinfoz-Fr�)r�r�check_outputrr�KMOD_BINr)rrAZold_versionr*r
r
r�is_kmod_version_changed�s�r�cCst�}|st��St|�SrF)�loaded_patch_level�platformrQr")rr
r
r�kcare_uname_su�sr�cCs,tj�tj�r"ttjd�����St�SdS)Nr)	r$r%r&rr'rr0rr�r
r
r
r�kcare_uname�sr�c
Cs`tt��d}|r\zt|�Wn0tk
rN}zt|dt���W5d}~XYnXtt�|�SdS)N�patch-levelzUnexpected patch state)�parse_patch_description�loaded_patch_descriptionr6r7r�_patch_infor`r)�pl�er
r
rr��s r�cCst�tjdg�S)N�info)rr�r�
KPATCH_CTLr
r
r
rr��sr�c
Cs^zdd�td�D�WSttfk
rX}z"tjdt|�dd�gWY�Sd}~XYnXdS)NcSsg|]}|��d�qS)r)rq)rmr!r
r
r�
<listcomp>sz&get_loaded_modules.<locals>.<listcomp>z
/proc/modulesz#Error getting loaded modules list: Fre)r�OSError�IOErrorr�logerrorr
)�exr
r
r�get_loaded_modules�s
r�cCsdt�krdStt�d�S)N�kcarezkpatch-description)r��get_patch_valuer�r
r
r
rr�s
r�cCst�|��|�SrF)r�data_as_dict�get)r�Zlabelr
r
rr�sr�c	Csrddddd�}|s|S|�d�\}}}|�d�\}}}|�d�\}}}|pLd|d<|pXd|d<||d	<||d
<|S)Nr<r)r��
patch-type�last-update�kernel-version�;�:r=r�r�r�r�)�	partition)	ZdescrEZlevel_type_timestampruZkernelZ
level_type�	timestamprZ
patch_typer
r
rr�sr�c
Csvtj�tjd�}tj�|�rrt|d��F}z |��}t�	|�WW5QR�St
ttt
tfk
rfYnXW5QRXdS)Nzkcare.stater)r$r%rrr4r&rr0�astZliteral_eval�SyntaxErrorr�r7�	TypeError�UnicodeDecodeError)Z
state_filer �stater
r
r�	get_state&sr�)/r�rsr.rgr$r�rrrrrr�errorsr�py23r	�Optional�Tuplerrr"r+rr:rrIr6rJrVr`rjrk�cachedrvr}r�r�r�r�r�r�r�r�r�r�r�r�r
r
r
r�<module>sN