HEX
Server: Apache
System: Linux 162-240-236-42.bluehost.com 3.10.0-1160.114.2.el7.x86_64 #1 SMP Wed Mar 20 15:54:52 UTC 2024 x86_64
User: bt667 (1004)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/libexec/kcare/python/kcarectl/config_handlers.pyo
�
��	ic@s�ddlZddlZddlZddlmZmZmZmZmZddl	m
Z
er�ddlm
Z
mZmZmZndZddd	d
ddd
gZe�Zd�Zi1d�d6dd6ed6dd6d�d6ed6ed	6dd6ed6ed6ed6ed6ed6ed6ed6ed
6ed6d�d 6ed
6ed!6ed6ed"6ed#6ed$6ed%6d&�d'6ejd(6d)�d*6d+�d,6ejd-6dd.6ejd/6d0�d16d2�d36ed46ed56ed66ed76ejd86dd96dd:6ejd;6ed<6d=�d>6ed6dd?6dd@6edA6ed6ZdB�ZdC�ZdDefdE��YZdF�Z dG�Z!dH�Z"dI�Z#ej$dJej%�dK��Z&ej$dJej%�dL��Z'dS(Mi����Ni(tconfigt	constantst
http_utilst	log_utilstutils(tConfigParser(tDicttListtOptionaltSets/etc/sysconfig/kcare/kcare.conftUSE_CONTENT_FILE_V3tFORCE_JSON_SIG_V3tENABLE_CRASHREPORTERtKCORE_OUTPUTtKMSG_OUTPUTtSEND_PERF_METRICStKERNEL_ANOMALY_REPORT_ENABLEcCs|j�dkS(Nt1tTRUEtYEStY(RRRR(tupper(tvalue((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytbool_converter!scCs
|j�S(N(tstrip(tv((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt<lambda>'stAFTER_UPDATE_COMMANDtAUTO_STICKY_PATCHSETtAUTO_UPDATEtAUTO_UPDATE_DELAYcCs
|j�S(N(R(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR+stBEFORE_UPDATE_COMMANDtCHECK_SSL_CERTSt	FORCE_GIDt
FORCE_IPV4t
FORCE_IPV6tHTTP_TIMEOUTtHTTP_UPLOAD_TIMEOUTtIGNORE_FEATURE_FLAGStIGNORE_UNKNOWN_KERNELtKCORE_OUTPUT_SIZEcCs
|jd�S(Nt/(trstrip(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR8st
KDUMPS_DIRt$KERNEL_ANOMALY_REPORT_MAX_SIZE_BYTEStLIBCARE_DISABLEDt!LIBCARE_PIDLOGS_MAX_TOTAL_SIZE_MBtLIBCARE_SOCKET_TIMEOUTtLIB_AUTO_UPDATEcCs
|p	dS(N(tNone(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR@stPATCH_LEVELtPATCH_METHODcCs
|jd�S(NR)(R*(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRBstPATCH_SERVERcCs
|jd�S(NR)(R*(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRCstPATCH_SERVER_IPV6t
PATCH_TYPEtPREFIXtPREV_PATCH_TYPEcCs
|jd�S(NR)(R*(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRGstREGISTRATION_URLcCs
|jd�S(NR)(R*(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRHstREGISTRATION_URL_IPV6tPRINT_LEVELtREPORT_FQDNtSILENCE_ERRORStSTATUS_CHANGE_GAPtSTICKY_PATCHtSTICKY_PATCHSETtUPDATE_DELAYt
UPDATE_POLICYtUPDATE_SYSCTL_CONFIGcCs,g|jd�D]}|j�j�^qS(Nt,(tsplitRtlower(Rtptch((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRRstUSERSPACE_PATCHEStKERNEL_VERSION_FILEtKCARE_UNAME_FILEtSUCCESS_TIMEOUTc	Kstt�}|j�}|j�x�|j�D]�\}}t}|d}|d}x|tt|��D]h}||j|�s�||j|�rh|dkr�||=n|dt
|�d||<t}PqhqhW|s/|j|dt
|�d�q/q/Wt
jtdj|��dS(Nt=t s = s
t(topentCONFIGt	readlinestclosetitemstFalsetrangetlent
startswithR1tstrtTruetappendRtatomic_writetjoin(	tkwargstcftlinestpropRtupdatedtprop_eqtprop_spti((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt
update_config[s"


&
&c
CsBi}tjd�}xa|D]Y}|j|�}|r[|j�\}}|skd}qkntd|��|||<qWt|�tt�}|r�tddjt	|����nxz|j
�D]l\}}t|}	|dks�|	dkr�q�ny|	|�Wq�tk
r/td||f��q�Xq�Wt|�dS(Ns^([^=]+)=([^=]*)$s8Invalid parameter format: %s. Format should be KEY=VALUEsUnknown parameter: %ss, sBad value for %s: %s(
tretcompiletmatchtgroupsR1t
SystemExittsettPOSSIBLE_CONFIG_OPTIONSR\tsortedRSt	ExceptionRe(
tparamstparams_for_updatetpatterntparamRhtkeyRtunknown_paramstvar_nametconvert((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytupdate_config_from_argsps,
"

tFakeSecHeadcBs#eZd�Zd�Zd�ZRS(cCs||_d|_dS(Ns[asection]
(tfptsechead(tselfRy((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt__init__�s	cCs5|jr$z|jSWdd|_Xn
|jj�SdS(N(RzR1Rytreadline(R{((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR}�s
	
ccs:|jr|jVd|_nx|jD]}|Vq'WdS(N(RzR1Ry(R{tline((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt__iter__�s
	(t__name__t
__module__R|R}R(((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRx�s			csi�tdidd6dd6��y<ttt��}tjrQ�j|�n
�j|�Wntk
rsiSXdd��fd�}xTd
dgD]F\}}t
j|�s��jd|�}|r�|t
j|<q�q�q�Wx*tj�D]\}}||d	|�q�W�S(NtdefaultsRNt
HTTP_PROXYtHTTPS_PROXYcsby�jd|�}Wntk
r/|}nX|dk	r^|rQ||�}n|�|<ndS(Ntasection(tgetRnR1(tnametdefaultRvR(tcptresult(s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytread_var�s

thttpthttpsR�Rv(R�R�(R�R�(RRxRORPRtPY2treadfpt	read_fileRnR1Rtget_proxy_from_envR�tostenvironRlRS(RR�tschemetvariabletproxyRuRv((R�R�s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytget_config_settings�s$	
cCs4tj�t�}tjj|�tj|�dS(N(t_CONFIG_OPTIONStclearR�Rt__dict__tupdate(tsettings((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytset_settings_from_config_file�s
	cCs�i}x�|j�D]�\}}|j�}|jd�s@qn|jdd�jdd�}ytt|��||<Wqtk
r�tjj	d||�qXqW|S(sk
    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, ...}
    sKC-FLAG-RNt-t_s(Invalid feature flag header value %s: %s(
RSRRWtreplacetbooltintt
ValueErrorRtkcarelogterror(theaderstflagsthdr_namet	hdr_valuet
param_name((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt convert_headers_to_feature_flags�s

cCs!t|�tjst�ndS(N(tsave_feature_flags_cacheRR&tset_feature_flags_from_cache(R�((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytset_feature_flags_from_headers�s
	tloggercCs/t|�}tjtjdtj|��dS(Ntcontent(R�RR[RtFEATURE_FLAGS_CACHEtjsontdumps(R�t
feature_flags((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR��scCs�tjjtj�sdSttj��}tj|�}WdQXxa|j�D]S\}}|t	krkqMn|t
kr}qMn|tj|<t
jjd||�qMWdS(s�
    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
    Ns$feature flags config override: %s=%s(R�tpathtexistsRR�ROR�tloadRStFEATURE_FLAGS_WHITELISTR�RR�RR�tinfo(tfR�RsR((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR��s
((R�R�RfRNRRRRRtpy23RRTttypingRRRR	RPR�RkR�RR1R�RXRRFRlReRwtobjectRxR�R�R�R�tcatch_errorstlogwarnR�R�(((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt<module>s�(%			














			%