403Webshell
Server IP : 192.158.238.246  /  Your IP : 18.189.143.114
Web Server : LiteSpeed
System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64
User : jenniferflocom ( 1321)
PHP Version : 8.1.32
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/clselect.cpython-37.pyc
B

��d�T�@s�ddlmZddlmZddlmZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Zd	d
lmZmZd	dlmZGdd
�d
e�ZdS)�)�absolute_import)�print_function)�divisionN)�glob)�map)�FormattedException)�configparser�)�ClSelectExcept�BaseClSelectException)�clprintc@speZdZdZdZdZdZdZdZdZ	dZ
e
d	Ze
d
Ze
dd��Ze
d
d��ZdOdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdPdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�ZdQd)d*�Zd+d,�ZdRd.d/�Zd0d1�Ze
e�Zd2d3�Z e
e �Z d4d5�Z!e
e!�Z!dSd7d8�Z"d9d:�Z#d;d<�Z$d=d>�Z%d?d@�Z&dTdAdB�Z'dUdCdD�Z(dEdF�Z)dVdGdH�Z*dIdJ�Z+dWdKdL�Z,dXdMdN�Z-d-S)Y�ClSelectz/etc/cl.selector/selector.confz/etc/cl.selector/defaults.cfgz/usr/bin/phpz/etc/cl.selector/native.confz/etc/cl.selector/user.confz"/etc/cl.selector/php.extensions.d/z/usr/sbin/cagefsctlz/var/lvez
/php%s.datz/php_native_ver.datcCs`y*dtjkrtj�d�ddlm}m}Wntk
rFtd��YnX|�s\|�s\td��dS)Nz/usr/share/cagefsr)�!multiphp_system_default_is_ea_php�selector_modules_must_be_usedzCageFS not installed.zesystem default PHP version is alt-php. PHP Selector is disabled. Use cPanel MultiPHP manager instead.)�sys�path�appendZ	cagefsctlrr�ImportErrorr)rr�r�B/opt/alt/python37/lib/python3.7/site-packages/clselect/clselect.py�%check_multiphp_system_default_version's
z.ClSelect.check_multiphp_system_default_versioncCstj�tj�S)N)�osr�existsr
�	USER_CONFrrrr�work_without_cagefs3szClSelect.work_without_cagefs�phpcCs@||_|��|_i|_i|_t�|_d|_t�	�|_
|��dS)N)�_item�_get_default_config_handler�_dh�_selector_contents�_native_contents�set�_hidden_extensions�_native_versionr
rZwithout_cagefs�_load_config_files)�self�itemrrr�__init__7s

zClSelect.__init__cCsP|�d�t�|�d��f|jt��fg}x"|D]\}}tj�|�rDq.|�q.WdS)N�cli)�_get_native_pathr
ZNativeNotInstalled�	_CAGFSCTLZMissingCagefsPackagerrr)r%Z	utilitiesr�errorrrr�check_requirementsAszClSelect.check_requirementscCs,x&ttj�|jd��D]}|�|�qWdS)Nz*.cfg)rrr�join�CONFIGS_DIR�_load_config_file)r%�filenamerrrr$MszClSelect._load_config_filesc
Cs�tjddd�}y|�|�Wn:tjk
rV}ztj|dt|�d��Wdd}~XYnXy|j�|�	dd��
d��Wntjtjfk
r�YnXdS)NF)�
interpolation�strictzConfig is malformed, error: %s)�message�
extensionsZhide_extensions�,)
�ConfigParserZSafeConfigParser�read�Errorr
ZFileProcessError�strr"�update�get�split�NoSectionError�
NoOptionError)r%�filepath�dh�errrr/Qs$zClSelect._load_config_filec	Csl|��}g}xVt|���D]F}y*|�|||d||d|jf�Wqtk
r^wYqXqWt|�S)zM
        Returns alternatives summary as tuple
        :rtype: tuple
        �version�data)�get_all_alternatives_data�sorted�keysrr�KeyError�tuple)r%�alternativesZlist_of_alternativesZaltrrr�list_alternatives`s
zClSelect.list_alternativesc	Cs6|js0y|��Wntjtjfk
r.iSX|jS)a�
        Returns dict of all selector config contents.
        If no data loads them
        :return:
        {'4.4': {'version': '4.4.9', 'data': {'lsphp': '/opt/alt/php44/usr/bin/lsphp',
                                              'php.ini': '/opt/alt/php44/etc/php.ini',
                                              'php': '/opt/alt/php44/usr/bin/php-cgi',
                                              'php-cli': '/opt/alt/php44/usr/bin/php'}}}
        :rtype: dict
        )r�_load_alternatives_configr
�ConfigNotFound�WrongConfigFormat)r%rrrrDrsz"ClSelect.get_all_alternatives_datacCs@|js|��y||j|iStk
r:t�|��YnXdS)z�
        Returns selector config contents of certain version as dict.
        If no data loads them
        @param version: string, selector version
        @return: dict
        N)rrKrGr
�NoSuchAlternativeVersion)r%rBrrr�get_alternatives_data�szClSelect.get_alternatives_dataFc	Cs^|��}y0|j�d|j�}|||d||d|jfStjtfk
rX|�|�SXdS)z/
        Gets default selector version
        �versionsrBrCN)rDrr;rr6r=rG�_compose_native_info)r%�show_native_versionrIrBrrr�get_version�s
zClSelect.get_versioncCsF|��}|�||�|�|jd|j|j|f�}|�d�|�|j�dS)z/
        Sets default selector version
        )rP�
N)rD�_check_alternative�_process_ini_file�
DEFAULTS_PATH�_add_or_change_optionr�_write_to_filer-)r%rBrI�defaults_contentsrrr�set_version�szClSelect.set_versioncCsF|��}|�||�|�|j|j|f|jd�}|�d�|�|j�dS)z5
        Removes disabled state from version
        �staterTN)rDrUrVrWr�_remove_optionrYr-)r%rBrIrZrrr�enable_version�szClSelect.enable_versioncCsF|��}|�||�|�|j|j|f|jd�}|�d�|�|j�dS)z-
        Marks a vesrion as disabled
        )r\ZdisabledrTN)rDrUrVrWrrXrYr-)r%rBrIrZrrr�disable_version�szClSelect.disable_versioncCs|j�d|j|fd�S)z�
        Method that allows you to check if some version is enabled in config.
        E.g. is_version_enabled('5.4') -> True
        :rtype: bool
        z%s%sr\)rZ
has_optionr)r%rBrrr�is_version_enabled�szClSelect.is_version_enabledc
	CsF|��}|�|�}dddd�i}t|���dg}x:|D]2}||krLi||<|�|�||d<d||d<q8Wy|j�d|j�}Wn tj	tj
fk
r�d}YnXyd||d<Wntk
r�t�
|��YnX|�d�||d<|�d�|�|d�x>tt|��D].}||}	|	||	d||	dff||<�qWt|�S)	zl
        Returns state of alternatives
        @return: tuple[version, tuple[isEnabled, isDefault]]
        �nativeTF)�enabled�defaultrbrcrPr)rDrQrErFr`rr;rr6r=r>rGr
rN�pop�remover�range�lenrH)
r%rRrIZnative_infoZsummaryZalt_versionsrBZdefault_version�idx�vrrr�get_summary�s4




zClSelect.get_summaryc	
Csy�t|j�}x�|D]�}|��}|dkr(q|��\}}}}|j|krDq||jkrXi|j|<||j|d<d|j|kr�i|j|d<||j|d|<qW|js�tjddd��Wn^tt	fk
r�}ztjd|j|fdd��Wdd}~XYn"t
k
�rt�|j��YnXdS)a
        Parses selector config file and fills an instance config dict. Example:
        {'4.4': {'version': '4.4.9', 'data': {'lsphp': '/opt/alt/php44/usr/bin/lsphp',
                                              'php.ini': '/opt/alt/php44/etc/php.ini',
                                              'php': '/opt/alt/php44/usr/bin/php-cgi',
                                              'php-cli': '/opt/alt/php44/usr/bin/php'}}}
        :raises ClSelectExcept.ConfigNotFound:
        :raises ClSelectExcept.WrongConfigFormat:
        �rBrCNzalt-php packages not found)r3zCannot read %s: %s. Native used)�open�CONFIG_PATH�stripr<rrr
rL�OSError�IOError�
ValueErrorrM)	r%�f�lineZ
stripped_liner&Z
short_versionZlong_versionZ	item_pathrArrrrK�s0





z"ClSelect._load_alternatives_configNcCs4tjddd�}t|_|r$|�|�n|�|j�|S)z:
        Gets ConfigParser handler for future use
        NF)r1r2)r6r9Zoptionxformr7rW)r%rr@rrrrsz$ClSelect._get_default_config_handlercCs|dkr||krt�|��dS)Nra)r
rN)rBrIrrrrU$szClSelect._check_alternativecCs dd�dgt|��}||S)z�
        Gets section header data tuple and returns ini section header string
        @param section_info: tuple
        @return: string
        z[%s]rkz%s)r-rg)�section_infoZsection_fmtrrr�_make_section_header)szClSelect._make_section_headercCs0ttdd�|��}|r"|ddkr,|�d�|S)zN
        Removes empty lines from list and appends newline if missing
        cSs|dkS)Nrkr)�irrr�<lambda>7�z'ClSelect._smooth_data.<locals>.<lambda>���rT)�list�filterr)rCrrr�_smooth_data3s
zClSelect._smooth_dataTc	Cs�g}g}g}	d}
d}d}|�|�}
y�t|�}x�|D]�}|��}|�d�r�d}
d|krXd}|
|krdd}t|�dkr~|�|�g}|�|||	||��|g}	q2|
r�|	�|�q2|�|�q2W|�|||	||��|��Wntt	fk
r�YnX|�sd|
k�rdd|j
dg}|�|�|}|�s�y|�d�}Wntj
k
�rJYnX|d	k�rz|�|||
d
d�|�g||��nB|dk�r�|�|�|�|||
g||��n|�|||
g||��|S)
z�
        Parses ini file by sections,
        calls supplied callable to modify section is question,
        returns file as list of strings
        F�[Tz
[versions]rz%s = nativerkraZdisable_extentionsz
modules = r5Zenable_extentions)rurlrn�
startswithrg�extendr�closerorpr�
_get_builtinsr
�UnableToGetExtensionsr-)r%rrt�functionrC�trace�action�contentsZno_section_contents�sectionZ
in_section�foundZhas_default�section_headerrrrsrcZbuild_inrrrrV=s\





$

zClSelect._process_ini_filecCsLd|j}|��}y||d|}Wn tk
rF|jdd�}YnX|S)z�
        Retrives path to php binary for supplied version
        :param version: php version to retrive path
        :return: path to php binary. If alternative version not found native php binary path returned
        z%s-clirCr()�suffix)rrDrGr))r%rBr&rIrrrr�_get_php_binary_pathts
zClSelect._get_php_binary_pathcCs:|��}d|�d�i}x|��D]}|�|�||<q W|S)a
        Retrives paths to php binary for all versions
        :return: Dictionary version -> path. Example:
            { '5.2': '/opt/alt/php52/usr/bin/php',
              '5.3': '/opt/alt/php53/usr/bin/php',
              'native': '/usr/bin/php'
            }
        ra)rDr�rF)r%rIZ
paths_dictrBrrr�get_all_php_binaries_paths�s
	z#ClSelect.get_all_php_binaries_pathscCs$t|j|d�}|��}|��|S)z�
        Retrives contents of cache file for supplied php version
        :param version: PHP version to read file
        :return: file contents
        �r)rl�CACHEFILE_PATTERNr7r�)r%rBrr�outputrrr�_read_php_cache_file�szClSelect._read_php_cache_filec	Cs�g}y|�|�}Wn"ttfk
r4t�|��YnXd\}}|�|�|�|�}}|dkr`dn
|t|�}|||�}t�d�}	xH|�	d�D]:}
|	�
|
�s�q�d�t�	d|
����}||j
kr�|�|�q�W|S)z�
        Gets php extensions from the /var/lve/phpX.X.dat cache file,
        which contains list of modules that are either compiled-in
        or enabled in /opt/alt/phpXX/etc/php.ini config file
        )z
[PHP Modules]z[Zendryrz\wrT�_z\s+)r�rorpr
r��findrg�re�compiler<�matchr-�lowerr"r)r%rB�builtinsr�Z
start_patternZend_patternZstart_indexZ	end_indexZmodules_listZmodule_patternZext�modulerrrr��s"


zClSelect._get_builtinscsB|�|�}t|�dks"||dkr&|S|�tt�fdd�|���S)z�
        Adds 'modules' option to section or extends it
        @param section_info: tuple (item and version)
        @param section: list
        @param data: string
        @return: list
        rcs|���S)N)r~)rv)rCrrrw�rxz)ClSelect._remove_option.<locals>.<lambda>)rurgr|rzr{)r%rtr�rCr�r�r)rCrr]�s

zClSelect._remove_optionc	Cs�|�|�}t|�dks"||dkr&|Sd}x,tt|��D]}||�|d�r8|}Pq8Wd|}|rn|||<n
|�|�|�|�S)z�
        Adds 'modules' option to section or extends it
        @param section_info: tuple
        @param section: list
        @param data: tuple
        @return: list
        rNz%s = %s)rurgrfr~rr|)	r%rtr�rCr�r�ZoidxrhZoptionrrrrX�s


zClSelect._add_or_change_optionc
Cs\y$t|d�}|�d|�|��Wn2ttfk
rV}zt�||��Wdd}~XYnXdS)z$
        Saves data to file
        �wz%s
N)rl�writer�rorpr
ZUnableToSaveData)r%Z
file_contentsZ	file_pathrrrArrrrY�s
zClSelect._write_to_filecCs~dddd�}|j}|r0||kr0d|j||f}|jsB|�|j�||jkrr|j|}tj�|�rrtj�|�sr|S|j|jS)z5
        Returns path for native interpreter
        z-cliz.iniz-fpm)r(ZiniZfpmz%s%s)rr �_load_native_contentsrr�isfile�islink)r%r��suffixesr&rrrrr)�s

zClSelect._get_native_pathc	Cs�y�t|j�}xR|D]J}|�d�r"q||kr,qd|kr6qttdd�|�d���\}}||j|<qW||jkrv|j|j|<|��Wn$t	t
fk
r�|j|j|<YnXdS)z�
        Parses native.conf file and loads it as dict, for example:
        {'php-fpm': '/usr/local/sbin/php-fpm', 'php.ini': '/usr/local/lib/php.ini', 'php': '/usr/bin/php', 'php-cli': '/usr/bin/php'}
        �#�=cSs|��S)N)rn)�xrrrrw
rxz0ClSelect._load_native_contents.<locals>.<lambda>N)rl�NATIVE_CONFr~rzrr<r �DEFAULT_PHP_PATHr�rorp)r%�valuerrrsr&rrrrr��s 



zClSelect._load_native_contentscCsR|sdd|��fS|jdd�}|rDd|dfd|df|��fSdd|��fS)NraF)�verboseznative (%s)rr	)r)�get_native_version)r%Zshow_versionZnative_versionrrrrQs
zClSelect._compose_native_infoc

Cs�|jr|jSt�d�}y t|jd�}|��}|��Wn@ttfk
rv}z|rft	�
ddt|�d��dSd}~XYnXxF|��D]:}|�
|�}|r�|�d�|�d�}}	||	f|_||	fSq�WdS)Nz(PHP\s+(?P<full>(?P<short>\d+\.\d+)\.\d+)r��textZERROR)�statusr3�short�full)r#r�r�rl�CACHEFILE_NATIVE_VER_PATTERNr7r�rorprZ
print_diagr9�
splitlinesr��group)
r%r�Zversion_patternrrrCrArs�mr�r�rrrr�s$


zClSelect.get_native_version)r)F)F)N)TN)T)T)N)F)T).�__name__�
__module__�__qualname__rmrWr�r�rr.r*Z
CACHEFILE_DIRr�r��staticmethodrrr'r,r$r/rJrDrOrSr[r^r_r`rjrKrrUrur|rVr�r�r�r�r]rXrYr)r�rQr�rrrrr
sZ


	
!$

7




r
)�
__future__rrrrr�rrr�rZclcommonrZfuture.movesrr6�clselectexceptr
r�
clselectprintr�objectr
rrrr�<module>s

Youez - 2016 - github.com/yon3zu
LinuXploit