Sindbad~EG File Manager

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

3

��"h	�)@s0ddlZddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	d	Z
d
ddd
dgZe�Z
dd�Zdd�deddd�eedeeeeedd�eeeeedd�ejdd�ejdejdd�eeeeejddejedd�edded�(Zdd�Zdd�ZGdd�de�Zd d!�Zd"d#�Zd$d%�ZdS)&�N�)�	constants)�	log_utils)�utils)�config)�
http_utils)�ConfigParserz/etc/sysconfig/kcare/kcare.conf�USE_CONTENT_FILE_V3�FORCE_JSON_SIG_V3�ENABLE_CRASHREPORTER�KCORE_OUTPUT�KMSG_OUTPUTcCs|j�dkS)N�1�TRUE�YES�Y)rrrr)�upper)�value�r�5/usr/libexec/kcare/python/kcarectl/config_handlers.py�bool_converter srcCs|j�S)N)�strip)�vrrr�<lambda>&srcCs|j�S)N)r)rrrrr*scCs
|jd�S)N�/)�rstrip)rrrrr3scCs|pdS)Nr)rrrrr9scCs
|jd�S)Nr)r)rrrrr;scCs
|jd�S)Nr)r)rrrrr?scCsdd�|jd�D�S)NcSsg|]}|j�j��qSr)r�lower)�.0�ptchrrr�
<listcomp>Isz<lambda>.<locals>.<listcomp>�,)�split)rrrrrIs)(�AFTER_UPDATE_COMMAND�AUTO_STICKY_PATCHSET�AUTO_UPDATE�AUTO_UPDATE_DELAY�BEFORE_UPDATE_COMMAND�CHECK_SSL_CERTSr�	FORCE_GIDr
�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_TYPE�PREFIX�PREV_PATCH_TYPE�REGISTRATION_URL�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�}|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�str�appendr�atomic_write�join)	�kwargsZcf�linesZpropr�updatedZprop_eqZprop_sp�irrr�
update_configQs"rYc
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�compile�match�groups�
SystemExit�set�POSSIBLE_CONFIG_OPTIONSrT�sortedrM�	ExceptionrY)
�paramsZparams_for_update�pattern�paramr\�keyrZunknown_params�var_name�convertrrr�update_config_from_argsfs,


ric@s$eZdZdd�Zdd�Zdd�ZdS)�FakeSecHeadcCs||_d|_dS)Nz[asection]
)�fp�sechead)�selfrkrrr�__init__�szFakeSecHead.__init__cCs&|jrz|jSd|_Xn
|jj�SdS)N)rlrk�readline)rmrrrro�s

zFakeSecHead.readlineccs.|jr|jVd|_x|jD]
}|VqWdS)N)rlrk)rm�linerrr�__iter__�s
zFakeSecHead.__iter__N)�__name__�
__module__�__qualname__rnrorqrrrrrj�s	rjc
s�tj�i�tddd�d��y,ttt��}tjr<�j|�n
�j	|�Wnt
k
r\iSXd��fdd�	}x4dD],\}}tj|�st�j
d
|�}|rt|tj|<qtWx tj�D]\}}|||d�q�W�S)NrH)�
HTTP_PROXY�HTTPS_PROXY)�defaultscsTy�jd|�}Wntk
r(|}YnX|dk	rP|r>||�}|�|<tj|�dS)N�asection)�getrb�CONFIG_OPTIONS�add)�name�defaultrhr)�cp�resultrr�read_var�s
z%get_config_settings.<locals>.read_var�httpru�httpsrvrx)rh)NN�r�ru�r�rv)r�r�)rz�clearrrjrIrJr�PY2�readfp�	read_filerbr�get_proxy_from_envry�os�environr`rM)rr��scheme�variable�proxyrgrhr)r~rr�get_config_settings�s&
r�cCsPi}xF|j�D]:\}}|j�}|jd�r|jdd�jdd�j�}|||<qW|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-rH�-�_)rMrrP�replace)�headers�flagsrfrZ	key_upperZ
formatted_keyrrr�%get_config_options_from_feature_flags�s

r�cCs�t|�}xz|j�D]n\}}|tkr$q|dk	r|tkry&tt|��tj|<tj	j
d||�Wqtk
r~tj	jd||�YqXqWdS)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�rM�FEATURE_FLAGS_WHITELISTrz�bool�intr�__dict__r�kcarelog�info�
ValueError�error)r�Zoptions_from_psrfrrrr�set_config_from_patchserver�sr�)r�rZrHrrrrr�py23rrJr�r_rzrr�rQrrr`rYri�objectrjr�r�r�rrrr�<module>sz(

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