MOON
Server: Apache
System: Linux server2.shieldcogroup.com 3.10.0-1160.119.1.el7.tuxcare.els12.x86_64 #1 SMP Fri Nov 8 05:49:38 UTC 2024 x86_64
User: jacom (1029)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/libexec/kcare/python/kcarectl/config_handlers.pyc
�
%��ic@s�ddlZddlZddlZddlmZmZmZmZmZddl	m
Z
er�ddlm
Z
mZmZmZndZddd	d
ddd
gZe�Zd�Zd�Zi2d�d6dd6ed6dd6d�d6ed6ed	6dd6ed6ed6ed6ed6ed6ed6ed6ed
6ed6d �d!6ed
6ed"6ed6ed#6ed$6ed%6ed&6ed'6d(�d)6ejd*6d+�d,6d-�d.6ejd/6dd06ejd16d2�d36d4�d56ed66ed76ed86ed96ejd:6dd;6dd<6ejd=6ed>6ed?6ed6dd@6ddA6edB6ed6ZdC�ZdD�ZdEefdF��YZ dG�Z!dH�Z"dI�Z#dJ�Z$ej%dKej&�dL��Z'ej%dKej&�dM��Z(dS(Ni����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!scCs8g|jd�D]$}|j�r|j�j�^qS(Nt,(tsplittstriptlower(Rtitem((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt
comma_list%scCs
|j�S(N(R(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.pyR<st
KDUMPS_DIRt$KERNEL_ANOMALY_REPORT_MAX_SIZE_BYTEStLIBCARE_DISABLEDtLIBCARE_LIBSt!LIBCARE_PIDLOGS_MAX_TOTAL_SIZE_MBtLIBCARE_SOCKET_TIMEOUTtLIB_AUTO_UPDATEcCs
|p	dS(N(tNone(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyREstPATCH_LEVELtPATCH_METHODcCs
|jd�S(NR.(R/(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRGstPATCH_SERVERcCs
|jd�S(NR.(R/(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRHstPATCH_SERVER_IPV6t
PATCH_TYPEtPREFIXtPREV_PATCH_TYPEcCs
|jd�S(NR.(R/(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRLstREGISTRATION_URLcCs
|jd�S(NR.(R/(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRMstREGISTRATION_URL_IPV6tPRINT_LEVELtREPORT_FQDNtSILENCE_ERRORStSTATUS_CHANGE_GAPtSTICKY_PATCHtSTICKY_PATCHSETtUPDATE_DELAYt
UPDATE_POLICYtUPDATE_SYSCTL_CONFIGtUSERSPACE_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
startswithR7tstrtTruetappendRt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(
tretcompiletmatchtgroupsR7t
SystemExittsettPOSSIBLE_CONFIG_OPTIONSR^tsortedRUt	ExceptionRg(
tparamstparams_for_updatetpatterntparamRjtkeyRtunknown_paramstvar_nametconvert((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytupdate_config_from_argsus,
"

tFakeSecHeadcBs#eZd�Zd�Zd�ZRS(cCs||_d|_dS(Ns[asection]
(tfptsechead(tselfR{((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt__init__�s	cCs5|jr$z|jSWdd|_Xn
|jj�SdS(N(R|R7R{treadline(R}((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR�s
	
ccs:|jr|jVd|_nx|jD]}|Vq'WdS(N(R|R7R{(R}tline((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt__iter__�s
	(t__name__t
__module__R~RR�(((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRz�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(NtdefaultsRPt
HTTP_PROXYtHTTPS_PROXYcsby�jd|�}Wntk
r/|}nX|dk	r^|rQ||�}n|�|<ndS(Ntasection(tgetRpR7(tnametdefaultRxR(tcptresult(s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytread_var�s

thttpthttpsR�Rx(R�R�(R�R�(RRzRQRRRtPY2treadfpt	read_fileRpR7Rtget_proxy_from_envR�tostenvironRnRU(RR�tschemetvariabletproxyRwRx((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-RPt-t_s(Invalid feature flag header value %s: %s(
RURRYtreplacetbooltintt
ValueErrorRtkcarelogterror(theaderstflagsthdr_namet	hdr_valuet
upper_namet
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�RQR�tloadRUtFEATURE_FLAGS_WHITELISTR�RR�RR�tinfo(tfR�RuR((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR��s
()R�R�RhRPRRRRRtpy23RRVttypingRRRR	RRR�RmR�RRR7R�RZRRRnRgRytobjectRzR�R�R�R�tcatch_errorstlogwarnR�R�(((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt<module>s�(%				













			%