HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //opt/alt/python37/lib/python3.7/site-packages/clcommon/__pycache__/php_conf_reader.cpython-37.pyc
B

Gn��!o6�@s�ddlmZddlmZddlmZddlZGdd�de�ZGdd�de�ZGd	d
�d
e�ZGdd�de�Z	d
d�Z
Gdd�d�ZdS)�)�absolute_import)�division)�print_functionNcs eZdZdZ�fdd�Z�ZS)�PhpConfBaseExceptionz&Base class for all php.conf exceptionscstt|��|�dS)N)�superr�__init__)�self�message)�	__class__���/builddir/build/BUILDROOT/alt-python27-cllib-3.4.1-1.el9.cloudlinux.x86_64/opt/alt/python37/lib/python3.7/site-packages/clcommon/php_conf_reader.pyrszPhpConfBaseException.__init__)�__name__�
__module__�__qualname__�__doc__r�
__classcell__rr)r
rrsrcseZdZd�fdd�	Z�ZS)�PhpConfReadErrorNcs |dkrd}tt|��|�dS)NzFile open/read error)rrr)rr	)r
rrrszPhpConfReadError.__init__)N)r
rrrrrr)r
rrsrcseZdZ�fdd�Z�ZS)�PhpConfLoadExceptioncs d||f}tt|��|�dS)NzbError at line %d: %s. Please see http://docs.cloudlinux.com/index.html?custom_php_ini_options.html)rrr)r�line_num�reasonr	)r
rrrs
zPhpConfLoadException.__init__)r
rrrrrr)r
rrsrcseZdZ�fdd�Z�ZS)�!PhpConfNoSuchAlternativeExceptioncs"||_d|}tt|��|�dS)Nz No such alternative version (%s))�php_versionrrr)r�versionr	)r
rrr%sz*PhpConfNoSuchAlternativeException.__init__)r
rrrrrr)r
rr$srcCst|dd�S)N�rb)�mode)�open)�	file_namerrr�_open,src@sjeZdZdZddddddgZdd	d
gZdd�Zd
d�Zdd�Zdd�Z	dd�Z
edd��Zedd��Z
dS)�
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�boolcCs||_d|_dS)N)�phpconf_path�	_php_conf)rr(rrrr9szPhpConfReader.__init__c
CsTyt|j�}|��}|��|Sttfk
rN}zt|j��Wdd}~XYnXdS)zW
        Reads file and returns its content
        :return: List of filelines
        N)rr(�	readlines�close�OSError�IOErrorr�strerror)r�f�
conf_lines�errr�
_read_fileDs
zPhpConfReader._read_filec
Cs�t�}|��}�yDd}d}�x.t|dd�D�]\}}|���dd�}|�d�rPq*t|�dkrfd}d}q*d|krxt|d��|�dd�}|d��}|d��}	||j	kr�t|d	|��|s�|d
kr�t|d|��|d
kr�|r�t|d|��|	}|	}t�||<q*|||k�rt|d|��|d
k�r<|	|j
k�r<t|d|	��|	|||<q*W||_WnRtk
�r|}
z|
�Wdd}
~
XYn,tk
�r�}
zt
|
��Wdd}
~
XYnXdS)N�)�startzutf-8�ignore�#r�=zRequired separator = not foundzUnknown directive '%s' foundrz('%s' found, but no 'Directive' before itzDirective '%s' duplicater!z/Directive is Type, but it value '%s' is invalid)�dictr2�	enumerate�strip�decode�
startswith�lenr�split�DIRECTIVES_LIST�
TYPES_LISTr)�	Exceptionr)r�datar0Z	directiveZcurrent_sectionr�lineZ
line_parts�directive_nameZdirective_valuer1rrr�_php_conf_loadRsN




zPhpConfReader._php_conf_loadcCs�|js|��t�}x�|j��D]�\}}d|krD|�|d||�sDq t�||<d|krf|d||d<d|kr~|d||d<d|kr�|d||d<d|kr |d||d	<q W|S)
a�
        Retrives php.conf for selectorctl needs
        :param php_version: PHP version to filter options
        :param php_versions_map: Short to full PHP version map. Example: {'4.4', '4.4.9'}
        :return: dict
        Example:
            {'file_uploads': {'default': 'On',
                              'comment': 'Allows uploading files over HTTP.',
                              'type': 'bool'},
             'max_execution_time': {'default': '30',
                                    'comment': 'The maximum time in seconds a script is allowed to run before it is terminated.',
                                    'type': 'value'},
            }
        r$r �defaultr"�commentr!�typer#�range)r)rEr8�items�_check_version)rr�php_versions_map�out_dictrD�directive_datarrr�get_config_for_selectorctl�s"
z(PhpConfReader.get_config_for_selectorctlcCs\ddl}|js|��t�}x:|j��D],\}}|�|�||<d||kr(||d=q(W|S)z�
        Retrives php.conf for selectorctl needs
        :return: dict
        Example:
            {'safe_mode': {'Remark': '<5.4.0', 'Type': 'bool'},
             'file_uploads': {'Type': 'bool'}
            }
        rNr")�copyr)rEr8rJZdeepcopy)rrPrMrDrNrrr�get_config_for_cagefsctl�s	z&PhpConfReader.get_config_for_cagefsctlcCs�t|�d��dkr|d7}t�d�}|�|�}|s:t|��|�d�}t�|�d�|�}t�|||�}|dkrz||krzdS|dkr�||kr�dS|d	kr�||kr�dS|d
kr�||kr�dS|r�|dkr�||kr�dSd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+)\.?r3�<Tz<=�>z>=r7F)	r=r>�re�compile�matchr�groupr�_full_version_string_to_int)ZtestrrLZpatt�m�actionZtest_intZversion_intrrrrK�s*


zPhpConfReader._check_versioncCsHdd�|�d�D�}|dd>|dd>B}|r8|dkr<|S||d	BS)
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
        cSsg|]}t|��qSr)�int)�.0�xrrr�
<listcomp>�sz=PhpConfReader._full_version_string_to_int.<locals>.<listcomp>rRr�r3�r7rS)r>)Z
s_ver_fullr\Zv_arrayZver_intrrrrZ�s
z)PhpConfReader._full_version_string_to_intN)r
rrrr?r@rr2rErOrQ�staticmethodrKrZrrrrr0s
6&!r)Z
__future__rrrrVrArrrrrrrrrr�<module>
s