/
usr
/
libexec
/
kcare
/
python
/
kcarectl
/
__pycache__
/
Upload File
HOME
3 �;j�) � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZddlm Z m Z mZmZm Z ddlmZ ddlmZ dZdd� Zd d � Zdd� Zd d� Zdd� Zdd� Zdd� ZG dd� de�ZG dd� de�ZG dd� de�Zdd� Zdd� Zdd � Z d!d"� Z!d#d$� Z"d%d&� Z#d'd(� Z$d)d*� Z%e j&d+d,� �Z'e j&d-d.� �Z(e j&d/d0� �Z)d1d2� Z*d3d4� Z+d5d6� Z,d7d8� Z-d9d:� Z.d;d<� Z/e j&d=d>� �Z0d?d@� Z1dAdB� Z2dCdD� Z3dEdF� Z4dS )G� N� )�config� constants� log_utils� process_utils�utils)�SafeExceptionWrapper)�json_loads_nstrzuname: c C s t j| �p| dkS )Nz.-_+)�str�isalnum)�c� r �+/usr/libexec/kcare/python/kcarectl/kcare.py� is_uname_char s r c C sf t � }tt|| tj�d��B}x:|j� D ].}|jt�r&djt t |tt�d � j� ��S q&W W d Q R X dS )N�r� ) �get_kernel_hash�open�get_cache_pathr � PATCH_INFO� readlines� startswith�UNAME_LABEL�join�filterr �len�strip)�patch_level�khash�f�liner r r �parse_uname s .r! c C sJ t jjtj�rFy"ttjd�}|j| � |j� dS tk rD Y nX dS )N�wTF) �os�path�existsr �KCARE_UNAME_FILEr �write�close� Exception)�new_versionr r r r �kcare_update_effective_version% s r+ c C s. t tjd�} ztj| j� �j� S | j� X d S )N�rb)r r �KERNEL_VERSION_FILE�hashlib�sha1�read� hexdigestr( )r r r r r 1 s r c C s� t jjtjd�} t jj| �r�t| d��V}|j� j� }yt |� W n6 t k rd tt t jj| ���S t k rv dS X |S Q R X dS )z:Returns timestamp from PATCH_CACHE/stoped.at if its exsitsz stopped.atr �errorNz-1)r# r$ r r �PATCH_CACHEr% r r0 �rstrip�int� ValueErrorr �getctimer) )Zstopped_at_filenameZfh�valuer r r � get_last_stop<