§ ;Š»j'ãó¦—ddlZddlZGd„de¦«ZGd„de¦«ZGd„de¦«ZGd„d e¦«Zd „ZGd „d ¦«ZdS) éNcó"‡—eZdZdZˆfd„ZˆxZS)ÚPhpConfBaseExceptionz&Base class for all php.conf exceptionscóJ•—t¦« |¦«dS©N©ÚsuperÚ__init__©ÚselfÚmessageÚ __class__s €ú˜/builddir/build/BUILDROOT/alt-python27-cllib-3.4.44-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/php_conf_reader.pyr zPhpConfBaseException.__init__s!ø€Ý ‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!ó)Ú__name__Ú __module__Ú __qualname__Ú__doc__r Ú __classcell__©r s@rrr s>ø€€€€€Ø0Ð0ð"ð"ð"ð"ð"ð"ð"ð"ð"rrcó ‡—eZdZdˆfd„ ZˆxZS)ÚPhpConfReadErrorNcóR•—|€d}t¦« |¦«dS)NzFile open/read errorrr s €rr zPhpConfReadError.__init__s+ø€Ø ˆ?Ø,ˆGÝ ‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!rr©rrrr rrs@rrrs=ø€€€€€ð"ð"ð"ð"ð"ð"ð"ð"ð"ð"rrcó‡—eZdZˆfd„ZˆxZS)Ú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_numÚreasonr r s €rr zPhpConfLoadException.__init__sKø€ðP 8ðPðP¨vðPðPðPˆå ‰Œ×Ò˜Ñ!Ô!Ð!Ð!Ð!rrrs@rrró8ø€€€€€ð"ð"ð"ð"ð"ð"ð"ð"ð"rrcó‡—eZdZˆfd„ZˆxZS)Ú!PhpConfNoSuchAlternativeExceptioncód•—||_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|d¬¦«S)NÚrb)Úmode)Úopen)Ú file_names rÚ_openr+)s€Ý �  Ð %Ñ %Ô %Ð%rcól—eZdZdZgd¢Zgd¢Zd„Zd„Zd„Zd„Z d„Z 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 )Ú DirectiveÚDefaultÚTypeÚCommentÚRangeÚRemark)ÚvalueÚlistÚboolcó"—||_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Ú readlinesÚcloseÚOSErrorÚIOErrorrÚstrerror)r ÚfÚ conf_linesÚes rÚ _read_filezPhpConfReader._read_fileAsm€ð  6Ý�dÔ'Ñ(Ô(ˆAØŸš™œˆJØ �GŠG‰IŒIˆIØÐ øÝ�Ð!ð 6ð 6ð 6å" 1¤:Ñ.Ô.°AÐ 5øøøøð 6øøøs‚=AÁA+ÁA&Á&A+cóž—i}| ¦«} d}d}t|d¬¦«D�]f\}}| ¦« dd¦«}| d¦«rŒDt |¦«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-8Úignoreú#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Ú enumerateÚstripÚdecodeÚ startswithÚlenrÚsplitÚDIRECTIVES_LISTÚ TYPES_LISTr9Ú Exceptionr) r ÚdatarAÚ directiveÚcurrent_sectionrÚlineÚ line_partsÚdirective_nameÚdirective_valuerBs rÚ_php_conf_loadzPhpConfReader._php_conf_loadOs^€ØˆØ—_’_Ñ&Ô&ˆ ð1 1؈IØ"ˆOå"+¨J¸aÐ"@Ñ"@Ô"@ð& Lñ& L‘�˜$à—z’z‘|”|×*Ò*¨7°HÑ=Ô=�à—?’? 3Ñ'Ô'ðØå�t‘9”9 ’>�>Ø $�IØ&*�OØØ˜d�?�?å.¨xÐ9YÑZÔZÐZØ!ŸZšZ¨¨QÑ/Ô/� Ø!+¨A¤×!4Ò!4Ñ!6Ô!6�Ø",¨Q¤-×"5Ò"5Ñ"7Ô"7�Ø!¨Ô)=Ð=Ð=å.¨xÐ9fÈ~Ð9fÐ9fÐ9fÑgÔgÐgØ ðt ^°{Ò%BÐ%Bå.¨xÐ9r¸^Ð9rÐ9rÐ9rÑsÔsÐsØ! [Ò0Ð0Ø ðhå2°8Ð=fÈ>Ð=fÐ=fÐ=fÑgÔgÐgà /�IØ&5�OØ,.�D˜Ñ)Ñ)à%¨¨oÔ)>Ð>Ð>å2°8Ð=fÈ>Ð=fÐ=fÐ=fÑgÔgÐgØ%¨Ò/Ð/°OÈ4Ì?Ð4ZÐ4ZÝ2°8Ø3tÐWfÐ3tÐ3tÐ3tñvôvðvàÐ)Ð)°$×2EÒ2EÀnÐU]ÔF^ØFQÐScñ3eô3eÐ)àØ')ˆH�^Ñ $ؘNÐ*Ð*Ø6DÀYÔ6O�˜Ô(¨Ñ3ؘNÐ*Ð*Ø6DÀYÔ6O�˜Ô(¨Ñ3ؘÐ'Ð'Ø3AÀ&Ô3I�˜Ô(¨Ñ0ؘ.Ð(Ð(Ø4BÀ7Ô4K�˜Ô(¨Ñ1øØˆrcóÒ—|js| ¦«i}|j ¦«D]/\}}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[raÚcopyÚdeepcopy)r rdrYres rÚget_config_for_cagefsctlz&PhpConfReader.get_config_for_cagefsctl¬s~€ðŒ~ð "Ø × Ò Ñ !Ô !Ð !؈Ø.2¬n×.BÒ.BÑ.DÔ.Dð 8ð 8Ñ *ˆN˜NÝ'+¤}°^Ñ'DÔ'DˆH�^Ñ $ؘH ^Ô4Ð4Ð4ؘ^Ô,¨YÐ7øØˆrcó(—t| d¦«¦«dkr|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+)\.?rEúz>=rIF) rOrPÚreÚcompileÚmatchr!Úgroupr-Ú_full_version_string_to_int)Útestr%rcÚpattÚmÚactionÚtest_intÚ version_ints rrbzPhpConfReader._check_version¿s1€õ ˆt�zŠz˜#‰ŒÑ Ô  1Ò $Ð $Ø �D‰LˆDÝŒzÐ<Ñ=Ô=ˆØ �JŠJ�tÑ Ô ˆØð :Ý3°DÑ9Ô9Ð 9Ø—’˜‘”ˆÝ ×<Ò<¸Q¿WºWÀQ¹Z¼ZÈÑPÔPˆÝ#×?Ò?Ð@PÐQXÔ@YÐ[aÑbÔbˆ Ø �TŠ>ˆ>˜k¨HÒ4Ð4Ø�4Ø �UŠ?ˆ?˜{¨hÒ6Ð6Ø�4Ø �TŠ>ˆ>˜k¨HÒ4Ð4Ø�4Ø �UŠ?ˆ?˜{¨hÒ6Ð6Ø�4Øð ˜ 4š˜Ø˜hÒ&Ð&Ø�t؈urcó˜—d„| d¦«D¦«}|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)Ú.0Úxs rú z=PhpConfReader._full_version_string_to_int..ès€Ð9Ð9Ð9˜a•3�q‘6”6Ð9Ð9Ð9rrlré rEérIrm)rP)Ú s_ver_fullrxÚv_arrayÚver_ints rrtz)PhpConfReader._full_version_string_to_intàsd€ð:Ð9 :×#3Ò#3°CÑ#8Ô#8Ð9Ñ9Ô9ˆØ˜!”* Ñ" W¨Q¤Z°1¡_Ñ4ˆØð ˜ 4š˜ØˆNؘ œÑ#Ð#rN)rrrrrQrRr rCr[rfrjÚ staticmethodrbrtr}rrr-r--s»€€€€€ððð UÐTÐT€OØ*Ð*Ð*€Jð ð ð ð 6ð 6ð 6ð41ð41ð41ðl%ð%ð%ðNððð&ððñ„\ðð@ð $ð $ñ„\ð $ð $ð $rr-) rhrprSrrrr!r+r-r}rrúrˆsðð € € € Ø € € € ð"ð"ð"ð"ð"˜9ñ"ô"ð"ð "ð"ð"ð"ð"Ð+ñ"ô"ð"ð"ð"ð"ð"ð"Ð/ñ"ô"ð"ð"ð"ð"ð"ð"Ð(<ñ"ô"ð"ð&ð&ð&ð$ð$ð$ð$ð$ñ$ô$ð$ð$ð$r