403Webshell
Server IP : 192.158.238.246  /  Your IP : 3.15.7.155
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__/cluseroptselect.cpython-37.pyc
B

��d�]�@s�ddlmZddlmZddlmZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
dd	lmZdd
lmZddlmZddlmZdd
lmZddlmZmZmZmZmZGdd�de
�ZdS)�)�absolute_import)�print_function)�divisionN)�map)�	iteritems�)�ClUserExtSelect)�ClSelectExcept)�	clcaptain)�utils)�unescape)�ExternalProgramFailed)�
PhpConfReader�PhpConfBaseException�PhpConfReadError�PhpConfLoadException�!PhpConfNoSuchAlternativeExceptionc@s,eZdZdZdZd>dd�Zd?d	d
�Zd@dd�ZdAd
d�ZdBdd�Z	dd�Z
dCdd�ZdDdd�Zdd�Z
dd�Zdd�ZdEdd�Zee�ZdFd d!�Zee�ZdGd"d#�Zee�ZdHd$d%�Zd&d'�Zee�Zd(d)�Zd*d+�Zee�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�ZdId8d9�Zd:d;�Z d<d=�Z!dS)J�ClUserOptSelectz+
    Class for processing user options
    z/etc/cl.selector/php.conf�phpNcCsJt�|||�i|_t�|_ddddddd�|_dd	�t|j�D�|_dS)
Nz&nbsp;z&quot;z&apos;z&gt;z&lt;z&amp;)� �"�'�>�<�&cSsi|]\}}||�qS�r)�.0�k�vrr�I/opt/alt/python37/lib/python3.7/site-packages/clselect/cluseroptselect.py�
<dictcomp>)sz,ClUserOptSelect.__init__.<locals>.<dictcomp>)r�__init__�
_whitelist�set�_user_excludesZ_html_escape_tabler�_html_unescape_table)�self�item�exclude_pid_listrrrr!#szClUserOptSelect.__init__FTc		CsTi}|dkr*|j||dd�}|�|||�}t�|j|j�|j�|��tj	||||�S)z�
        Inserts supplied options into current ones
        @param optset: string
        @param decoder: string
        @param
        �T)�optset�decoder�expect_separator)
�_process_option_string�_remove_forbidden_optionsr�apply_for_at_least_one_user�insert_json_options�_clpwd�	get_names�get_uidr	�UnableToSaveData)	r&�user�versionr*r+�append�quiet�create�optionsrrr�insert_options+szClUserOptSelect.insert_optionscCs�|�|�|�||�}|�|�\}}}	|�|�}|r@|�|�n|}|�|�}
|
r\|�|
�}
|�|
||	�}xRtdt	|��D]@}||}
|
�
d�}t	|�dkr�qz|ddkrz|dd||<qzW|�|d�|��
�d||�|�|�|�|||
|�dS)z�
        Inserts supplied options into current ones
        @param user: string
        @param version: string
        @param options: object
        r�=�rzno value�
N)�_check_user_in_cagefs�_compose_user_ini_path�_load_ini_contents�_prepare_options_data�update�_compose_options_set�
_wrap_options�_compose_output_data�range�len�split�_write_to_file�join�rstrip�_reload_processes�_backup_settings)r&r5r6r:r7r9�
user_ini_path�contents�
extensions�extensions_data�options_set�data�idx�line�
line_partsrrrr0@s.






z#ClUserOptSelect.insert_json_optionsc	Cs*t�|j|j�|j�|��tj||||�S)z7
        Handles multiple users with same uids
        )rr/r0r1r2r3r	r4)r&r5r6r:r7r9rrr�bulk_insert_optionscs
z#ClUserOptSelect.bulk_insert_optionscCs(t�|j|j�|j�|��tj|||�S)z<
        Deletes supplied options from current ones
        )rr/�_delete_userr1r2r3r	r4)r&r5r6r*r+r8rrr�delete_optionsns
zClUserOptSelect.delete_optionsc
Cs�|j||dd�}|�|�|�||�}|�|�\}}}	|�|�}x|��D]}
|�|
d�qJW|�|�}|�|�}|�	|||	�}|�
|d�|���d|�|�
|�|�|||�dS)NF)r*r+r,r>)r-r?r@rArB�keys�poprDrErFrJrKrLrMrN)
r&r5r*r+r6r:rOrPrQrR�optrSrTrrrrYzs 





zClUserOptSelect._delete_usercCsD|s|�|�d}|dkr$t�|��|�|�|�||�|�|�S)z�
        Returns options summary for a user
        @param user: string
        @param version: string
        return: dict
        r�native)�get_versionr	�UnableToGetExtensions�_get_ini_defaults�
_get_user_ini�_get_whitelist)r&r5r6rrr�get_options�s

zClUserOptSelect.get_optionscCs�|��}|��}xp|��D]d}|r,||kr,qxP|D]H}|rD||krDq2y|j||dddddd�Wq2tjk
rxw2Yq2Xq2WqWdS)zn
        Deletes all custom options settings
        @param users: list
        @param versions: list
        r)�plainFT)r5r6r*r+r7r8r9N)�list_all_users�get_all_alternatives_datar[r;r	�
NotCageFSUser)r&�users�versionsZ	all_users�alternativesr6r5rrr�
reset_options�s
zClUserOptSelect.reset_optionscCsri}xh|D]`}|��dkrq
|�d�s
|�d�r2q
ttdd�|�dd���\}}|dkr\d}|�||i�q
W|S)	Nr)z;>===z;<===cSs|��S)N)�strip)�xrrr�<lambda>��z7ClUserOptSelect._prepare_options_data.<locals>.<lambda>r<rzno value)rm�
startswith�listrrIrC)r&rPr:r'�key�valuerrrrB�s
z%ClUserOptSelect._prepare_options_datacCs|js|�|�|jS)z(
        Returns whitelist data
        )r"�_load_whitelist)r&r6rrrrc�s
zClUserOptSelect._get_whitelistc	
Cs�|��}|�||�d|kr&t�|��t�}x t|�D]\}}|d||<q6Wy&t|j�}|�||�}|j	�
|�Wnftk
r�}zt�|j��Wdd}~XYn:t
ttfk
r�}zt�|jt|���Wdd}~XYnXdS)zM
        Parses php config file (not php.ini!) and updates structure
        �.r6N)rg�_check_alternativer	r`�dictrr�OPTIONS_PATHZget_config_for_selectorctlr"rCrZphp_versionrrr�UnableToLoadData�str)	r&r6rkZphp_versionsZ	short_verZver_dataZconf_readerZ
php_conf_dict�errrru�s

zClUserOptSelect._load_whitelistcCsBd|kr|�dd�\}}n |s*|d}}nt�d|f��||iS)z�
        Splits options data into key-value pair and returns it
        @param option_item: string
        @param expect_separator: bool
        @return: dict
        �:rr)z#Colon as a separator expected (%s)!)rIr	�	WrongData)�option_itemr,Zoption_nameZoption_valuerrr�_handle_option_item�sz#ClUserOptSelect._handle_option_itemrecCs@dd�dd�d�}y|||�Stk
r:|d|�SXdS)zx
        Decodes option item
        @param data: string
        @param decoder: string
        @return: string
        cSs|S)Nr)rnrrrro�rpz*ClUserOptSelect._decoder.<locals>.<lambda>cSst�|���S)N)�base64�	b64decode�decode)rnrrrrorp)rer�reN)�KeyError)rTr+�
dispatcherrrr�_decoder�szClUserOptSelect._decodercCs>i}|r:x0|�d�D]"}|�||�}|�|�||��qW|S)z�
        Wrapper around options parsing routines
        @param optset: string
        @param decoder: callback name
        @expect_separator: bool
        @return: dict
        �,)rIr�rCr�)�clsr*r+r,r:rrrrr-sz&ClUserOptSelect._process_option_stringcCsh|�|�}t|����t|����sdi}x6t|�D]*\}}||krT|rJq2n
t�|��|||<q2W|}|S)z�
        Check if all options to process are present in white list
        and removes forbidden ones or raise an exception
        @param options: dict
        @param quiet: bool
        @return: dict
        )rcr#r[�issubsetrr	�UnableToProcessOption)r&r:r6r8�	whitelistZwhite_list_options�opt_name�	opt_valuerrrr.s

z)ClUserOptSelect._remove_forbidden_optionscCs0g}x&t|�D]\}}|�d||f�qW|S)zq
        Construct option item from key and value pair
        @param options: dict
        return: list
        z%s=%s)rr7)r:rSr�r�rrrrD.sz$ClUserOptSelect._compose_options_setcCsdg}|�|�|�d�|S)z`
        Adds identifying string before and after dataset
        @param contents: list
        z.;>=== Start of PHP Selector Custom Options ===z.;<=== End of PHP Selector Custom Options =====)�extendr7)r&rPrTrrrrE:s

zClUserOptSelect._wrap_optionscCs<g}x(|D] }|�||�|�ddg�q
W|�|�|S)z�
        Construct output
        @param contents: list
        @param extensions: list
        @param extensions_data: dict
        return: list
        r))r�)rPrQrRrTr'rrrrFDs

z$ClUserOptSelect._compose_output_datac
Cs�|��}|�||�d|kr&t�|��ttdd�||d�d���}t|�d��dkr`|d7}t�	d�}|�
|�}|s�t�|��|�d�}ttd	d�|�d��d���}|d
d>|dd>B|dB}|d
d>|dd>B|dB}	|d
kr�||	kr�dS|dk�r||	k�rdS|dk�r.||	k�r.dS|dk�rF||	k�rFdS|�rV|dk�r�|d
d>|dd>B}|d
d>|dd>B}	||	k�r�dSdS)z~
        Compares version in use and version required by PHP feature
        and return true if PHP feature satisfies
        rvcSst|�S)N)�int)rnrrrro_rpz0ClUserOptSelect._check_version.<locals>.<lambda>r6r=z.0z([<>=]{1,2})?(\d+\.\d+\.\d+)\.?rcSst|�S)N)r�)rnrrrrohrpr��rTz<=rz>=r<F)
rgrwr	r`rrrrIrH�re�compile�match�NoSuchAlternativeVersion�group)
r&�testr6rkZv_array�patt�m�actionZversion_intZtest_intrrr�_check_versionVs:
 



  
zClUserOptSelect._check_versionc
Cs�ddddddddd	d
ddd
�}|�d|�r2d|d<|�d|�rZd|d<|�d|�rZd|d<|�d|�r�d|d<d|d<|�d|�r�d|d<|�d|�r�d|d<|S)NZE_ERRORZ	E_WARNINGZE_PARSEZE_NOTICEZE_CORE_ERRORZE_CORE_WARNINGZE_COMPILE_ERRORZE_COMPILE_WARNINGZE_USER_ERRORZE_USER_WARNINGZ
E_USER_NOTICEZE_STRICT)rr=���� �@��iiiz<5.2.0ZE_ALLi�z>=5.2.0ZE_RECOVERABLE_ERRORiz<5.3.0i�z>=5.3.0ZE_DEPRECATEDi ZE_USER_DEPRECATEDi@z<5.4.0i�wz>=5.4.0i�)r�)r&�php_ver�php_error_tablerrr�_get_php_error_tblzs4z"ClUserOptSelect._get_php_error_tblc
Cszd}|�|�}x$t|�D]\}}|�|t|��}qWt|��t|��rJdSytt|��}Wntt	t
fk
rtdSX|S)ad
        Convert php error level 'error-reporting' from string to code
        http://php.net/manual/ru/function.error-reporting.php
        #>>> ClUserOptSelect(item='php')._php_string2error('E_ALL & ~E_NOTICE', '5.4')
        32759
        #>>> ClUserOptSelect(item='php')._php_string2error('E_USER_ERROR | E_NOTICE', '5.4')
        264
        #>>> ClUserOptSelect(item='php')._php_string2error('E_ERROR | E_WARNING | E_PARSE | E_COMPILE_ERROR', '5.4')
        71
        #>>> ClUserOptSelect(item='php')._php_string2error('E_ERROR | INCORRECT', '5.4')  # incorrect variable 'INCORRECT'
        None
        #>>> ClUserOptSelect(item='php')._php_string2error('E_ERROR + E_WARNING', '5.4')   # incorrect operator '+'
        None
        :param str: error_reporting variable
        :return None|int: error_reporting error code; return None if can't convert
        z0123456789|&~!^ N)r�r�replacer{r#�
differencer��eval�SyntaxError�
ValueError�	TypeError)r&Zstr_r�Z
VALID_SYMBOLSr��code�nameZ
error_coderrr�_php_string2error�s
z!ClUserOptSelect._php_string2errorcCs~t�d|�sdSg}t|�}x"|D]}|j||d�|kr"|Sq"W|j|d�}x&|D]}||@|krR|�||�qRWd�|�S)Nz^-?\d{1,5}$r))r�z | )r�r�r�r�r�r7rK)r&rtr6Zrange_�descZerror_stringr��errorrrr�_get_error_desc�s

zClUserOptSelect._get_error_desccCsX|��}|�||�|�|�}tj�||d|j�sBt�|��tj	}d|kr~d}tj�
|�rh||d<||d|jg}n"||d|jdg}|�dd�d|d<d	|d
<d|d<d|d
<t�
d�}t�
d�}ddddddddddddg|dd�<t�||�}	|�|	�}
ddddddg}d}�x"|
D�]}
t�|d|
d�}d|k�rxt�|d|
d �pd|
d�}t||j���}||k�r*t�|d|
d �p�|
d�}t||j�}|d!k�r�d"||k�r�||d"dk�rڐq*nd||d"<n6|d#k�r||d$�d%�}|�|||�}|||d"<||k�r*|�r*|�||�||d"<�q*W|j�|�dS)&zQ
        Gets PHP defaults (calls php -i)
        @param version: string
        rTZSCRIPT_FILENAMEz)/usr/share/l.v.e-manager/utils/clinfo.phpz-qi�SERVER_SOFTWAREN�1ZPHP_FCGI_MAX_REQUESTS�0ZPHP_FCGI_CHILDRENr)�ACCEPT_ENCODINGZHTTP_ACCEPT_ENCODINGzM<tr[^>]*?><td[^>]*>(.*?)</td><td[^>]*>(.*?)</td>(?:<td[^>]*>(.*?)</td>)?</tr>z<[^>]*?>z-dzopcache.enable_cli=0zzlib.output_compression=Offzauto_append_file=nonezextension=mbstring.sozauto_prepend_file=nonezdisable_functions=nonerzopcache.enable_clizzlib.output_compressionZauto_append_file�	extensionZauto_prepend_fileZdisable_functionsrzLoaded Configuration Filer=zno value�defaultZerror_reportingrGr�)rgrwrc�os�path�isfile�_itemr	r��environ�existsr\r�r�r�run_command�findall�subrr%rmrIr��_get_value_from_ini_filer"rC)r&r6rkr��env_dataZscript_path�cmdZtag_patternZ
strip_pattern�output�linesZrewritten_directives�configuration_file�l�	directive�srtZerror_rangerrrra�sn







z!ClUserOptSelect._get_ini_defaultsc	Csp|�|�|�||�}|�|�\}}}|�|�}x:|D]2}y|||j|d<Wq6tk
rfw6Yq6Xq6WdS)zn
        Parses user ini file and updates
        values of existing data
        @param user: string
        rtN)rcr@rArBr"r�)r&r5r6rOrPrQrRrsrrrrbs


zClUserOptSelect._get_user_inic
Cs�tj�|j�|�d�}tj�|�sdyt�|�Wn2tt	fk
rb}zt
�||��Wdd}~XYnXtj�|d|�dd��}xPt
dt|��D]>}||}	|	�d�}
t|
�dkr�|
d	d
kr�|
dd||<q�W|�|d�|�||�dS)z�
        On saving user settings keep backup on user homedir
        @param user: string
        @param version: string
        @param data: list
        z.cl.selectorNz
alt_php%s.cfgrvr)rr<r=rzno valuer>)r�r�rKr1�get_homedir�isdirr
�mkdir�OSErrorr
r	r4r�rGrHrIrJ)r&r5r6rTr9�user_backup_pathr|�user_backup_filerUrVrWrrrrNs 
z ClUserOptSelect._backup_settingsc	Cst|�|�|��}x\|��D]P}|�||�}|�|�\}}}|�|�}|�|�}|r|�|�}|�|||�qWdS)zW
        rewrite php backup file with php options
        @param  user: string
        N)	r?rgr[r@rArBrDrErN)	r&r5rkr6rOrPrQrRrSrrr�backup_php_options8s



z"ClUserOptSelect.backup_php_optionscCs&tjddd�}|�|�|d�|�S)a
        get value from ini file
        Now used for getting default value for some php options,
        which we cannot get garanted
        :param configuration_file: ini file for reading
        :param directive: key name
        :return: value of key or ''
        NF)�
interpolation�strictZPHP)�configparser�ConfigParser�read�get)r&r�r��configrrrr�Is	
z(ClUserOptSelect._get_value_from_ini_file)rN)FTT)FT)FT)T)N)NN)T)re)reT)T)T)"�__name__�
__module__�__qualname__�__doc__ryr!r;r0rXrZrYrdrlrBrcrur��staticmethodr�r-�classmethodr.rDrErFr�r�r�r�rarbrNr�r�rrrrrsD
	

#










$!E
r)�
__future__rrrr�r�r�r��builtinsr�future.utilsr�cluserextselectr�clselectexceptr	�clcommonr
r)r�xml.sax.saxutilsr�clcommon.utilsr
Zclcommon.php_conf_readerrrrrrrrrrr�<module>s 

Youez - 2016 - github.com/yon3zu
LinuXploit