PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /usr/libexec/kcare/python/kcarectl/__pycache__/
Server: Linux red.truehostdns.com 4.18.0-553.150.1.el8_10.x86_64 #1 SMP Fri Jul 31 15:23:31 EDT 2026 x86_64
IP: 51.161.15.103
Choose File :

Url:
Dir : //usr/libexec/kcare/python/kcarectl/__pycache__/config_handlers.cpython-36.pyc

3

0�j�&�5@s�ddlZddlZddlZddlmZmZmZmZmZddl	m
Z
dZdddd	d
ddd
gZe
�Zdd�Zdd�Zejd�Zdd�Zdd�deddd�eeeedeeeeeeeeedd�eeeeeeeedd�ejdd�dd�ejdejdd�dd�eeeeejddejeeeddeed�4Zdd �Zd!d"�ZGd#d$�d$e�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Z ej!ej"d-�d.d/��Z#ej!ej"d-�d0d1��Z$dS)2�N�)�config�	constants�
http_utils�	log_utils�utils)�ConfigParserz/etc/sysconfig/kcare/kcare.conf�USE_CONTENT_FILE_V3�FORCE_JSON_SIG_V3�ENABLE_CRASHREPORTER�KCORE_OUTPUT�KMSG_OUTPUT�SEND_PERF_METRICS�KERNEL_ANOMALY_REPORT_ENABLE�FORCE_DOCTOR_FALLBACKcCs|j�dkS)N�1�TRUE�YES�Y)rrrr)�upper)�value�r�5/usr/libexec/kcare/python/kcarectl/config_handlers.py�bool_converter#srcCsdd�|jd�D�S)NcSs g|]}|j�r|j�j��qSr)�strip�lower)�.0�itemrrr�
<listcomp>(szcomma_list.<locals>.<listcomp>�,)�split)rrrr�
comma_list'sr!z^[a-z][a-z0-9_.+\-]*$cCsRgg}}x(t|�D]}tj|�r&|n|j|�qW|rNtjdjdj|���|S)Nz3LIBCARE_LIBS: ignoring invalid library name(s): {0}z, )r!�_LIBCARE_LIB_NAME_RE�match�appendr�logwarn�format�join)rZvalid�invalid�tokenrrr�libcare_libs_list0s
r*cCs|j�S)N)r)�vrrr�<lambda>@sr,cCs|j�S)N)r)r+rrrr,DscCs
|jd�S)N�/)�rstrip)r+rrrr,SscCs|pdS)Nr)r+rrrr,\scCs
|jd�S)Nr-)r.)r+rrrr,^scCs
|jd�S)Nr-)r.)r+rrrr,_scCs
|jd�S)Nr-)r.)r+rrrr,cscCs
|jd�S)Nr-)r.)r+rrrr,ds)4�AFTER_UPDATE_COMMAND�AUTO_STICKY_PATCHSET�AUTO_UPDATE�AUTO_UPDATE_DELAY�BEFORE_UPDATE_COMMAND�CHECK_SSL_CERTS�DOCTOR_REPORT_MAX_SIZE_BYTESrr�	FORCE_GID�
FORCE_IPV4�
FORCE_IPV6r
�HTTP_TIMEOUT�HTTP_UPLOAD_TIMEOUT�IGNORE_FEATURE_FLAGS�IGNORE_UNKNOWN_KERNELr�KCORE_OUTPUT_SIZE�
KDUMPS_DIRr�$KERNEL_ANOMALY_REPORT_MAX_SIZE_BYTESr
�LIBCARE_DISABLED�LIBCARE_LIBS�!LIBCARE_PIDLOGS_MAX_TOTAL_SIZE_MB�LIBCARE_SOCKET_TIMEOUT�LIB_AUTO_UPDATE�PATCH_LEVEL�PATCH_METHOD�PATCH_SERVER�PATCH_SERVER_IPV6�
PATCH_TYPE�PREFIX�PREV_PATCH_TYPE�REGISTRATION_URL�REGISTRATION_URL_IPV6�PRINT_LEVEL�REPORT_FQDN�SILENCE_ERRORS�STATUS_CHANGE_GAP�STICKY_PATCH�STICKY_PATCHSET�UPDATE_DELAY�
UPDATE_POLICY�UPDATE_SYSCTL_CONFIG�USERSPACE_PATCHESr	�KERNEL_VERSION_FILE�KCARE_UNAME_FILE�SUCCESS_TIMEOUTrc	Ks�tt�}|j�}|j�x�|j�D]�\}}d}|d}|d}x^tt|��D]N}||j|�sl||j|�rL|dkr|||=n|dt|�d||<d}PqLW|s"|j	|dt|�d�q"Wt
jtdj|��dS)NF�=� z = �
T�)
�open�CONFIG�	readlines�close�items�range�len�
startswith�strr$r�atomic_writer')	�kwargsZcf�linesZpropr�updatedZprop_eqZprop_sp�irrr�
update_configws"rmc
Cs�i}tjd�}xD|D]<}|j|�}|r<|j�\}}|sHd}ntd|��|||<qWt|�tt�}|r~tddjt|����x`|j	�D]T\}}t|}	|dks�|	dkr�q�y|	|�Wq�t
k
r�td||f��Yq�Xq�Wtf|�dS)Nz^([^=]+)=([^=]*)$z8Invalid parameter format: %s. Format should be KEY=VALUEzUnknown parameter: %sz, zBad value for %s: %s)�re�compiler#�groups�
SystemExit�set�POSSIBLE_CONFIG_OPTIONSr'�sortedrc�	Exceptionrm)
�paramsZparams_for_update�pattern�paramr#�keyrZunknown_params�var_name�convertrrr�update_config_from_args�s,


r|c@s$eZdZdd�Zdd�Zdd�ZdS)�FakeSecHeadcCs||_d|_dS)Nz[asection]
)�fp�sechead)�selfr~rrr�__init__�szFakeSecHead.__init__cCs&|jrz|jSd|_Xn
|jj�SdS)N)rr~�readline)r�rrrr��s

zFakeSecHead.readlineccs.|jr|jVd|_x|jD]
}|VqWdS)N)rr~)r��linerrr�__iter__�s
zFakeSecHead.__iter__N)�__name__�
__module__�__qualname__r�r�r�rrrrr}�s	r}c
s�i�tddd�d��y,ttt��}tjr4�j|�n
�j|�Wntk
rTiSXd��fdd�	}x4dD],\}}t	j
|�sl�jd
|�}|rl|tj
|<qlWx tj�D]\}}|||d�q�W�S)Nr^)�
HTTP_PROXY�HTTPS_PROXY)�defaultscsJy�jd|�}Wntk
r(|}YnX|dk	rF|r>||�}|�|<dS)N�asection)�getru)�name�defaultr{r)�cp�resultrr�read_var�s
z%get_config_settings.<locals>.read_var�httpr��httpsr�r�)r{)NN�r�r��r�r�)r�r�)rr}r_r`r�PY2�readfp�	read_filerur�get_proxy_from_envr��os�environrsrc)rr��scheme�variable�proxyrzr{r)r�r�r�get_config_settings�s$
r�cCs(tj�t�}tjj|�tj|�dS)N)�_CONFIG_OPTIONS�clearr�r�__dict__�update)Zsettingsrrr�set_settings_from_config_file�sr�cCs�i}xv|j�D]j\}}|j�}|jd�s*q|jdd�jdd�}ytt|��||<Wqtk
rvtjj	d||�YqXqW|S)ak
    Checking headers for feature flags which start with 'KC-Flag-' and
    reformat it to dictionary with keys in upper case and without 'KC-Flag-' prefix
    and dashes replaced with underscores. For unification all header keys are checked in upper case.
    For example:
    'KC-Flag-Some-Value' -> 'SOME_VALUE'
    :return: dict {'SOME_VALUE': bool, ...}
    zKC-FLAG-r^�-�_z(Invalid feature flag header value %s: %s)
rcrrf�replace�bool�int�
ValueErrorr�kcarelog�error)�headers�flagsZhdr_nameZ	hdr_valueZ
upper_name�
param_namerrr� convert_headers_to_feature_flags�s	
r�cCst|�tjst�dS)N)�save_feature_flags_cacherr;�set_feature_flags_from_cache)r�rrr�set_feature_flags_from_headerssr�)�loggercCs"t|�}tjtjtj|�d�dS)N)�content)r�rrhr�FEATURE_FLAGS_CACHE�json�dumps)r��
feature_flagsrrrr�	sr�cCsztjjtj�sdSttj��}tj|�}WdQRXxB|j�D]6\}}|t	krNq<|t
krXq<|tj|<t
jjd||�q<WdS)z�
    Set global variables using feature flag from cached values received with patchserver headers.
    Checks that option is allowed by whitelist and update global variable
    using globals()
    :return: None
    Nz$feature flags config override: %s=%s)r��path�existsrr�r_r��loadrc�FEATURE_FLAGS_WHITELISTr�rr�rr��info)�fr�ryrrrrr�s
r�)%r�r�rnr^rrrrr�py23rr`r�rrr�rr!ror"r*r�rgrrrsrmr|�objectr}r�r�r�r��catch_errorsr%r�r�rrrr�<module>s�
%