IQg'ddlZddlZGddeZGddeZGddeZGdd eZd ZGd d ZdS) Nc"eZdZdZfdZxZS)PhpConfBaseExceptionz&Base class for all php.conf exceptionscJt|dSNsuper__init__selfmessage __class__s x/builddir/build/BUILD/imunify360-venv-2.5.0/opt/imunify360/venv/lib/python3.11/site-packages/clcommon/php_conf_reader.pyr zPhpConfBaseException.__init__s! !!!!!)__name__ __module__ __qualname____doc__r __classcell__r s@rrr s>00"""""""""rrc eZdZdfd ZxZS)PhpConfReadErrorNcR|d}t|dS)NzFile open/read errorrr s rr zPhpConfReadError.__init__s+ ?,G !!!!!rrrrrr rrs@rrrs=""""""""""rrceZdZfdZxZS)PhpConfLoadExceptionc\d|d|d}t|dS)NzError at line z: zN. Please see http://docs.cloudlinux.com/index.html?custom_php_ini_options.htmlr)r line_numreasonr r s rr zPhpConfLoadException.__init__sKP8PPvPPP !!!!!rrrs@rrr8"""""""""rrceZdZfdZxZS)!PhpConfNoSuchAlternativeExceptioncd||_d|d}t|dS)NzNo such alternative version ()) php_versionrr )r versionr r s rr z*PhpConfNoSuchAlternativeException.__init__"s9"<'<<< !!!!!rrrs@rr!r!!rrr!c$t|dS)Nrb)mode)open) file_names r_openr+)s   % % %%rcleZdZdZgdZgdZdZdZdZdZ dZ e d Z e d Z d S) PhpConfReaderz Class for read and parse /etc/cl.selector/php.conf During read this file, its syntax check is performed Contains methods for get its data for selectoctl and cagefsctl utilities in required formats ) DirectiveDefaultTypeCommentRangeRemark)valuelistboolc"||_d|_dSr) phpconf_path _php_conf)r r8s rr zPhpConfReader.__init__6s(rc t|j}|}||S#tt f$r}t |j|d}~wwxYw)zW Reads file and returns its content :return: List of filelines N)r+r8 readlinescloseOSErrorIOErrorrstrerror)r f conf_lineses r _read_filezPhpConfReader._read_fileAsm  6d'((AJ GGIII ! 6 6 6"1:..A 5 6s=AA+A&&A+ci}|} d}d}t|dD]f\}}|dd}|drDt |dkrd}d}\d|vrt |d|dd}|d}|d} ||jvrt |d |d |s|d krt |d |d |d kr!|rt |d|d| }| }i||<|||vrt |d|d|dkr| |j vrt |d| d| |||<h||_ dS#t $r} | d} ~ wt$r} t| | d} ~ wwxYw)N)startzutf-8ignore#r=zRequired separator = not foundzUnknown directive 'z' foundr.'z%' found, but no 'Directive' before itz Directive 'z ' duplicater0z!Directive is Type, but it value 'z ' is invalid) rC enumeratestripdecode startswithlenrsplitDIRECTIVES_LIST TYPES_LISTr9 Exceptionr) r datarA directivecurrent_sectionrline line_partsdirective_namedirective_valuerBs r_php_conf_loadzPhpConfReader._php_conf_loadOs^__&& 1 1I"O"+Ja"@"@"@& L& L$zz||**7H==??3''t99>> $I&*Od??.x9YZZZ!ZZQ// !+A!4!4!6!6",Q-"5"5"7"7!)===.x9f~9f9f9fggg t^{%B%B.x9r^9r9r9rsss![00 h28=f>=f=f=fggg /I&5O,.D))%o)>>>28=f>=f=f=fggg%//O4?4Z4Z283tWf3t3t3tvvv))$2E2EnU]F^FQSc3e3e)')H^ $N**6DY6O(3N**6DY6O(3''3A&3I(0.((4B74K(1rc|js|i}|jD]/\}}tj|||<d||vr ||d=0|S)z Retrives php.conf for selectorctl needs :return: dict Example: {'safe_mode': {'Remark': '<5.4.0', 'Type': 'bool'}, 'file_uploads': {'Type': 'bool'} } r1)r9r[racopydeepcopy)r rdrYres rget_config_for_cagefsctlz&PhpConfReader.get_config_for_cagefsctls~~ "    ! ! !.2n.B.B.D.D 8 8 *NN'+}^'D'DH^ $H^444^,Y7rc(t|ddkr|dz }tjd}||}|st ||d}t|d|}t|||}|dkr||krdS|dkr||krdS|d kr||krdS|d kr||krdS|r|d kr||krdSd S) a Compares version in use and version required by PHP feature and return true if PHP feature satisfies :param test: Condition to filter from php.conf ('Remark' option value), such as <5.4.0 :param version: PHP Verson to check filter matching, such as 5.3 :param php_versions_map: Short to full PHP version map. Example: {'4.4': '4.4.9'} :return: bool: true - condition true, false - else .z.0z([<>=]{1,2})?(\d+\.\d+\.\d+)\.?rEz>=rIF) rOrPrecompilematchr!groupr-_full_version_string_to_int)testr%rcpattmactiontest_int version_ints rrbzPhpConfReader._check_versions1 tzz#  1 $ $ DLDz<== JJt   :3D99 9 <>kH444 U??{h664 T>>kH444 U??{h664 4h&&turcd|dD}|ddz|ddzz}|r|dkr|S||dzS) a! Convert version string (such as '5.3.29') to int (10653) :param s_ver_full: PHP version string. Only full, 3-section versions are allowed :param action: Compare type. If None or '=' function will not use third section from version :return: integer c,g|]}t|S)int).0xs r z=PhpConfReader._full_version_string_to_int..s999a3q66999rrlr rErIrm)rP) s_ver_fullrxv_arrayver_ints rrtz)PhpConfReader._full_version_string_to_intsd:9:#3#3C#8#8999!*"WQZ1_4 4N##rN)rrrrrQrRr rCr[rfrj staticmethodrbrtr}rrr-r--s UTTO***J    6 6 6414141l%%%N&\@ $ $\ $ $ $rr-) rhrprSrrrr!r+r-r}rrrs """""9""" """""+""""""""/""""""""(<"""&&&$$$$$$$$$$r