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__/config_handlers.cpython-38.pyc
U

n�h��-@s ddlZddlZddlmZmZmZmZmZddlm	Z	dZ
dddd	d
gZe�Zdd�Zd
d�deddd�eedeeeeeeedd�eeeeedd�ejdd�dd�ejdejdd�dd�eeeeejddejedd�edded�,Zdd�Zdd�ZGdd�de�Zdd�Zd d!�Zd"d#�ZdS)$�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_OUTPUTcCs|��dkS)N)�1�TRUE�YES�Y)�upper)�value�r�5/usr/libexec/kcare/python/kcarectl/config_handlers.py�bool_convertersrcCs|��S�N��strip��vrrr�<lambda>"�rcCs|��Srrrrrrr&rcCs
|�d�S�N�/��rstriprrrrr1rcCs|pdSrrrrrrr7rcCs
|�d�Srr rrrrr9rcCs
|�d�Srr rrrrr:rcCs
|�d�Srr rrrrr>rcCs
|�d�Srr rrrrr?rcCsdd�|�d�D�S)NcSsg|]}|�����qSr)r�lower)�.0�ptchrrr�
<listcomp>Isz<lambda>.<locals>.<listcomp>�,)�splitrrrrrIr),�AFTER_UPDATE_COMMAND�AUTO_STICKY_PATCHSET�AUTO_UPDATE�AUTO_UPDATE_DELAY�BEFORE_UPDATE_COMMAND�CHECK_SSL_CERTSr�	FORCE_GID�
FORCE_IPV4�
FORCE_IPV6r
�HTTP_TIMEOUT�IGNORE_UNKNOWN_KERNELr�KCORE_OUTPUT_SIZE�
KDUMPS_DIRr
�LIBCARE_DISABLED�!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_TIMEOUTc	Ks�tt�}|��}|��|��D]�\}}d}|d}|d}tt|��D]P}||�|�sh||�|�rH|dkrx||=n|dt|�d||<d}q�qH|s |�	|dt|�d�q t
�td�|��dS)NF�=� z = �
T�)
�open�CONFIG�	readlines�close�items�range�len�
startswith�str�appendr�atomic_write�join)	�kwargsZcf�linesZpropr�updatedZprop_eqZprop_sp�irrr�
update_configQs"rcc
	Cs�i}t�d�}|D]<}|�|�}|r:|��\}}|sFd}ntd|��|||<qt|�tt�}|rztdd�t|����|�	�D]T\}}t|}	|dks�|	dkr�q�z|	|�Wq�t
k
r�td||f��Yq�Xq�tf|�dS)Nz^([^=]+)=([^=]*)$z8Invalid parameter format: %s. Format should be KEY=VALUEzUnknown parameter: %sz, zBad value for %s: %s)�re�compile�match�groups�
SystemExit�set�POSSIBLE_CONFIG_OPTIONSr^�sortedrW�	Exceptionrc)
�paramsZparams_for_update�pattern�paramrf�keyrZunknown_params�var_name�convertrrr�update_config_from_argsfs,


rsc@s$eZdZdd�Zdd�Zdd�ZdS)�FakeSecHeadcCs||_d|_dS)Nz[asection]
)�fp�sechead)�selfrurrr�__init__�szFakeSecHead.__init__cCs*|jrz
|jW�Sd|_Xn
|j��SdSr)rvru�readline)rwrrrry�s


zFakeSecHead.readlineccs*|jr|jVd|_|jD]
}|VqdSr)rvru)rw�linerrr�__iter__�s

zFakeSecHead.__iter__N)�__name__�
__module__�__qualname__rxryr{rrrrrt�s	rtcs�t��i�tddd�d��z,ttt��}tjr<��|�n
��	|�Wnt
k
r`iYSXd	��fdd�	}dD],\}}t�|�sv��
d|�}|rv|tj|<qvt��D]\}}|||d�q��S)
NrR)�
HTTP_PROXY�HTTPS_PROXY)�defaultscsTz��d|�}Wntk
r(|}YnX|dk	rP|r>||�}|�|<t�|�dS)N�asection)�getrl�CONFIG_OPTIONS�add)�name�defaultrrr��cp�resultrr�read_var�s
z%get_config_settings.<locals>.read_var))�httpr)�httpsr�r�)rr)NN)r��clearrrtrSrTr�PY2�readfp�	read_filerlr�get_proxy_from_envr��os�environrjrW)rr��scheme�variable�proxyrqrrrr�r�get_config_settings�s&

r�cCsLi}|��D]:\}}|��}|�d�r|�dd��dd���}|||<q|S)ao
    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 checking in upper case.
    For example:
    'KC-Flag-Some-Value' -> 'SOME_VALUE'
    :return: dict {'SOME_VALUE': 'value', ...}
    zKC-FLAG-rR�-�_)rWrrZ�replace)�headers�flagsrprZ	key_upperZ
formatted_keyrrr�%get_config_options_from_feature_flags�s


r�c	Cs�t|�}|��D]n\}}|tkr"q|dk	r|tkrz&tt|��tj|<tj	�
d||�Wqtk
r|tj	�d||�YqXqdS)z�
    Set global variables using feature flag from patchserver headers.
    Checks that option is allowed by whitelist and update global variable
    using globals()
    :param headers: Response headers from patchserver
    :return: None
    Nz'patchserver config override: %s with %szGInvalid value during attempt to override config from patchserver %s: %s)
r�rW�FEATURE_FLAGS_WHITELISTr��bool�intr�__dict__r�kcarelog�info�
ValueError�error)r�Zoptions_from_psrprrrr�set_config_from_patchserver�sr�)r�rdrRrrrrr�py23rZList�Optional�SetrTr�rir�rr�r[rr"rjrcrs�objectrtr�r�r�rrrr�<module>s~�
�1(