MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 18.117.158.174
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/libexec/kcare/python/kcarectl/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/libexec/kcare/python/kcarectl/config_handlers.pyc
�
,w�gc@sSddlZddlZddlmZddlmZddlmZddlmZddlmZddlm	Z	e
r�dd	lmZm
Z
mZnd
Zddd
ddgZe�Zd�Zi(d�d6dd6ed6dd6d�d6ed6ed
6dd6ed6ed6ed6ed6ed6d�d6ed6ed6ed 6ed!6ed"6d#�d$6ejd%6d&�d'6ejd(6dd)6ejd*6d+�d,6ed-6ed.6ed/6ed06ejd16dd26dd36ejd46ed56d6�d76ed6dd86dd96ed:6Zd;�Zd<�Zd=efd>��YZd?�Zd@�ZdA�Z dS(Bi����Ni(t	constants(t	log_utils(tutils(tconfig(t
http_utils(tConfigParser(tOptionaltSettLists/etc/sysconfig/kcare/kcare.conftUSE_CONTENT_FILE_V3tFORCE_JSON_SIG_V3tENABLE_CRASHREPORTERtKCORE_OUTPUTtKMSG_OUTPUTcCs|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HTTP_TIMEOUTtIGNORE_UNKNOWN_KERNELtKCORE_OUTPUT_SIZEcCs
|jd�S(Nt/(trstrip(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR3st
KDUMPS_DIRtLIBCARE_DISABLEDt!LIBCARE_PIDLOGS_MAX_TOTAL_SIZE_MBtLIBCARE_SOCKET_TIMEOUTtLIB_AUTO_UPDATEcCs
|p	dS(N(tNone(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR9stPATCH_LEVELtPATCH_METHODcCs
|jd�S(NR"(R#(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR;stPATCH_SERVERt
PATCH_TYPEtPREFIXtPREV_PATCH_TYPEcCs
|jd�S(NR"(R#(R((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyR?stREGISTRATION_URLtPRINT_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.pyRIstUSERSPACE_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
startswithR)tstrtTruetappendRtatomic_writetjoin(	tkwargstcftlinestpropRtupdatedtprop_eqtprop_spti((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt
update_configQs"


&
&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(
tretcompiletmatchtgroupsR)t
SystemExittsettPOSSIBLE_CONFIG_OPTIONSRRtsortedRIt	ExceptionR[(
tparamstparams_for_updatetpatterntparamR^tkeyRtunknown_paramstvar_nametconvert((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytupdate_config_from_argsfs,
"

tFakeSecHeadcBs#eZd�Zd�Zd�ZRS(cCs||_d|_dS(Ns[asection]
(tfptsechead(tselfRo((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt__init__�s	cCs5|jr$z|jSWdd|_Xn
|jj�SdS(N(RpR)Rotreadline(Rq((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRs�s
	
ccs:|jr|jVd|_nx|jD]}|Vq'WdS(N(RpR)Ro(Rqtline((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt__iter__�s
	(t__name__t
__module__RrRsRu(((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyRn�s			cstj�i�tdidd6dd6��y<ttt��}tjr[�j|�n
�j	|�Wnt
k
r}iSXdd��fd�}xTd
dgD]F\}}tj
|�s��jd|�}|r�|tj|<q�q�q�Wx*tj�D]\}}||d	|�q�W�S(NtdefaultsRDt
HTTP_PROXYtHTTPS_PROXYcsoy�jd|�}Wntk
r/|}nX|dk	rk|rQ||�}n|�|<tj|�ndS(Ntasection(tgetRdR)tCONFIG_OPTIONStadd(tnametdefaultRlR(tcptresult(s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytread_var�s


thttpthttpsR{Rl(R�Ry(R�Rz(R}tclearRRnRERFRtPY2treadfpt	read_fileRdR)Rtget_proxy_from_envR|tostenvironRbRI(RR�tschemetvariabletproxyRkRl((R�R�s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytget_config_settings�s&
	
cCssi}xf|j�D]X\}}|j�}|jd�r|jdd�jdd�j�}|||<qqW|S(so
    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', ...}
    sKC-FLAG-RDt-t_(RIRRMtreplace(theaderstflagsRiRt	key_uppert
formatted_key((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt%get_config_options_from_feature_flags�s
$cCs�t|�}x�|j�D]�\}}|tkr7qn|dk	r|tkry3tt|��tj|<t	j
jd||�Wq�tk
r�t	j
j
d||�q�XqqWdS(s�
    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
    s'patchserver config override: %s with %ssGInvalid value during attempt to override config from patchserver %s: %sN(R�RItFEATURE_FLAGS_WHITELISTR)R}tbooltintRt__dict__Rtkcarelogtinfot
ValueErrorterror(R�toptions_from_psRiR((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pytset_config_from_patchserver�s
(!R�R\RDRRRRRtpy23RRJttypingRRRRFR�RaR}RR)R�RNRR<RbR[RmtobjectRnR�R�R�(((s5/usr/libexec/kcare/python/kcarectl/config_handlers.pyt<module>s�			












			(	

MMCT - 2023