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

��d���@s2ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
ZddlZddl
mZddlmZddlmZmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlm Z ddl!m"Z"m#Z#ddl$m%Z%m&Z&ddl'm(Z(ddl)m*Z*m+Z+ddl,m-Z-m.Z.dZ/dZ0dZ1dd�Z2dNdd�Z3dd�Z4dd�Z5dd�Z6d e/fd!d"�Z7d e/fd#d$�Z8d%d&�Z9d'd(�Z:d)d*�Z;d+d,�Z<d-d.�Z=d/d0�Z>dOd2d3�Z?dPd5d6�Z@dQd7d8�ZAd9d:�ZBd;d<�ZCd=d>�ZDd?d@�ZEdAdB�ZFdCdD�ZGdRdEdF�ZHdGdH�ZIdIdJ�ZJdKdL�ZKeLdMk�r.eK�dS)S�)�print_function)�absolute_import)�divisionN)�map�)�ClSelect)�ClExtSelect�depend_modules_dict)�ClUserSelect)�ClUserExtSelect)�ClUserOptSelect)�clprint)�ClPwd)�Feature)�is_panel_feature_supported)�
SysCtlConf�SYSCTL_CL_CONF_FILE)�run_command�ExternalProgramFailed)�	is_ubuntu)�	in_cagefs�make_symlink)�ClSelectExcept�BaseClSelectExceptionz/usr/sbin/cagefsctlcCs�td�td�td�td�td�td�td�td�td	�td
�td�td�td
�td�td�td�td�td�td�td�td�td�td�td�td�td�td�td�td�td�td�td �td!�td"�td#�td$�td%�td&�td'�td(�td)�t��td*�td+�td,�td-�td.�td/�td0�td1�td2�dS)3Nz? -v | --version                   : Specify alternative versionz, -u | --user                      : UsernamezE -l | --list                      : List alternatives for interpreterzQ -G | --list-extensions           : List global set of extensions for alternativez@ -S | --summary                   : List summary of alternativeszE -s | --user-summary              : List user summary of alternativeszG -C | --current                   : Show currently selected alternativezR -c | --user-current              : Show currently selected alternative for a userzE -B | --set-current               : Set alternative as global defaultzC -b | --set-user-current          : Set alternative as user defaultz? -Y | --enable-alternative        : Enable alternative globallyz@ -N | --disable-alternative       : Disable alternative globallyzd -E | --enable-extensions         : Enable comma-separated list of extensions globally for a versionze -D | --disable-extensions        : Disable comma-separated list of extensions globally for a versionz_ -R | --replace-extensions        : Replace extensions with comma-separated list of extensions z:                                    for a version globallyzX -e | --enable-user-extensions    : Enable comma-separated list of extensions for a userzY -d | --disable-user-extensions   : Disable comma-separated list of extensions for a userzc -r | --replace-user-extensions   : Replace user extensions with comma-separated list of extensionsz[ -t | --reset-user-extensions     : Replace user extensions with version default extensionszk -g | --list-user-extensions      : List enabled extensions for a user. With key --all shows all extensionsz7 -a | --all                       : Show all extensionszf -p | --print-summary             : If specified along with setting an alternative prints user summaryzb -V | --show-native-version       : Shows native version while showing summary or selected versionzN -L | --list-users                : List users who use a specified alternativezg -T | --change-to-version         : Changes to a specified version all users who have a certain versionzO -k | --add-options               : Add comma-separated list options for a userz] -m | --replace-options           : Replace user options with comma-separated list of optionszR -x | --delete-options            : Delete comma-separated list options for a userzY -Q | --base64                    : Expects data as comma-separated base64-encoded stringzL -q | --quiet                     : Suppress errors messages for wrong inputzX -P | --print-options             : Prints user options. By default prints as plain textzg --print-options-safe             : Prints user options. By default prints as plain text (safe strings)zV --apply-symlinks-rules           : Recreate symlinks to php extensions for all users zQ                                    based on /etc/cl.selector/symlinks.rules filezk --exclude-pid-list               : Specify list of PIDs of processes that should not be signaled by SIGHUPz6 -j | --json                      : Print data as JSONz5 -w | --csv                       : Print data as CSVz@ -W | --perl                      : Print data as perl structurezW --api-version                    : Integer, representing specific api version to use. z2                                    Defaults to {}ze -z | --reset-options             : Deletes all user custom options. Range can be narrowed with user z6                                    or version optionsz< --update-backup                  : write settings to backupzh --apply-global-php-ini           : use with 0, 1 or 2 arguments from the list: error_log, date.timezonezh                                    without arguments applies all global php options including two abovezE --setup-without-cagefs           : setup PHP Selector without CageFSzY --revert-to-cagefs               : revert to default setup of PHP Selector (with CageFS)zV --for-all-users                  : applies specified action for all users in CageFS. zU                                    Available only for enable/disable user extensions)�print�format�API_0�rr�H/opt/alt/python37/lib/python3.7/site-packages/clselect/clselectctlphp.py�usage2sdrcCs2d}|rd|df}tj�||�t�d�dS)z5
    Prints to stderr
    @param message: string
    z%s
z%s:%s
z%srN)�sys�stderr�write�exit)�message�prefix�fmtrrr�print_error_and_exitgs
r'cCsttj�dkrtd�dS)z\
    Checks presence of command line arguments
    and exits with usage info if missing
    rzFCommand line arguments expected. For help use '-h' or '--help' optionsN)�lenr �argvr'rrrr�check_args_presencessr*c	Cs`d}|�dd�}||d}d}tj�|�r\yt|d�����}Wnttfk
rZdSX|S)z
    z/opt/alt/php�.�z/name_modifier�r)	�replace�os�path�isfile�open�readline�strip�OSError�IOError)�versionZBASE_ALT_DIR�verZname_modifier_file�
name_modifierrrr�get_name_modifier~sr:cCs|dkrdS|dkrdSdS)N�-�disabled�e�enabledr)�letterrrr�letter_to_status�sr@�textcs8|tkrd}d}nd}d}dddg�g}|gi}x�|D]҉t�d�}d	�d
g|d�}�dg}	|	�tt��fdd
�t|����t�d�}
|
dkr�d	�d
g|d�}|	�|
�|dkr�|�|t	|	��d|	kr�|	d||<||�|	dt
|	d�|
d��q6W|dk�r t�|�S|dk�r4d�|�SdS)NZPHPConfigurationZdefaultPHPversion�available_versions�default_versionr=�d�sr� z%srcs�d|r�|pdS)Nrr;r)�i)�alt�statesrr�<lambda>��z format_summary.<locals>.<lambda>r,�rA)r7�statusr9�json�
)
rr(�join�extend�listr�ranger:�append�tupler@rN�dumps)�datar�api_versionZavailable_versions_keyZdefault_version_keyZ
text_lines�	json_dictZ
row_lengthr&Zrow_datar9r)rHrIr�format_summary�s>







rZcCst|||�}t|�dS)z%
    Prints alternatives summary
    N)rZr)rWrrXrrr�
print_summary�sr[cCs2x,|D]$}||ks||dkrtd|�qWdS)zC
    Check that config has param_list and this params not None
    NzError: %s must be specified)r')�configZ
param_list�paramrrr�check_params�s
r^cCs |dkrdS|dkrdSdSdS)N�~zbuild-in�+r>r<r)r?rrr�ext_letter_to_status�s
rac	Cs�d}t|��}|��}WdQRXi}x*|D]"}|�d�}|d��||d<q*Wx6|D].}y||d|d<WqVtk
r�YqVXqVW|S)Nz/etc/cl.selector/phpextdesc.txt�=rr�name�description)r2�	readlines�splitr4�KeyError)Ztmp_listZ
descr_file�fZ
desct_contentZfull_desct_dict�line�
line_parts�itemrrr�fill_descriptions�s




rlcCsddi}tt�|��dS)NrM�ok)rrNrV)�result_dictrrr�print_json_status_ok�sroc	Cs^tj�tj�r.ttjd��}|����SQRXt�}x$|�	�D]}tj�
d|�r>|Sq>WdS)zV
    Return user (name of cpanel account) for PHP Selector without CageFS feature
    r-Nz/var/cpanel/users/)r/r0r1r�	USER_CONFr2�readr4r�
get_user_dict�exists)rh�pwd�userrrr�get_cpanel_user�srvc	Cs4ttjd��}|�|�WdQRXt�tjd�dS)zS
    Set user (name of cpanel account) for PHP Selector without CageFS feature
    �wNi�)r2rrpr"r/�chmod)rurhrrr�set_cpanel_user�sryFcCs�ttj�sdSd}tj�|�r$|}nt}t|d�}|�dt	t
|���|�dt	t
|���tjdddd�d	kr�t
d
�t�d�dS)Nz&/etc/sysctl.d/cloudlinux-linksafe.conf)�config_filezfs.protected_symlinks_createzfs.protected_hardlinks_createzsysctl --system &>/dev/nullTz	/bin/bash)�shell�
executablerz&Error while executing: sysctl --systemr)rr�LVEr/r0r1rr�set�str�int�
subprocess�callrr r#)�enableZnew_conf�confZ
sysctl_cfgrrr�switch_linksafes

r�Tc		Cs�|dkrtd�}|�|�}t�r*|d}n|d}dtjd}t|d��}|d|k}WdQRX|r�|s�t|d	��}|�d|d�WdQRXn|r�tj�||�|�	|�dS)
a[
    Add path to PATH variable in ~/.bashrc
    :param user: name of user
    :type user: string
    :param homedir: path to home directory
    :type homedir: string
    :param obj: instance of ClUserSelect class
    :type obj: instance of ClUserSelect class
    :param add: add path to .bashrc when True, remove otherwise
    :type obj: bool
    N�phpz	/.profilez/.bashrczPATH=$HOME/z:$HOME/.cl.selector:$PATHr-rO�a)
r
�_change_uidr�
SELECTOR2_DIRr2r"�clcommon�utils�delete_line_from_file�_restore_uid)	ru�homedir�obj�add�cur_userZbashrcrirh�foundrrr�modify_search_path_in_bashrcs 

r�cs��fdd�}|dkrtd�}|d}|�tjd|ddd	�d
krLt�d�|�|�}tj�dt	��d
d�|dd�}x8|D]0}	|d|	d}
|d|	d}t
�|
|�q|W|�|�t
�
|dd�|�|�|�dS)a�
    Restore (apply) settings for PHP Selector from backup
    :param user: name of user
    :type user: string
    :param homedir: path to user's home directory
    :type homedir: string
    :param uid: user's uid
    :type uid: int
    :param alt_dirs: list of alt-php directories like ['php51', 'php52']
    :type alt_dirs: list
    :param obj: instance of ClUserSelect class
    :type obj: ClUserSelect object
    cs>t�tj�dt��dd��d�t�dd�t�dd�dS)Nz/var/cagefs���Tz/usr/share/cagefs/etcz/usr/share/cagefs/etc.new)�shutil�rmtreer/r0rPrr)�uidrr�cleanup@s"z-restore_settings_from_backup.<locals>.cleanupNr�z
/.cl.selectorz0/usr/sbin/cagefsctl --silent --force-update-etc Tz	/bin/bash)r{r|rrz/var/cagefsr��etczcl.php.dz/alt-z/alt_php.iniz/alt_z.iniz/.cagefs)r
r�r�r r#r�r/r0rPrr��copy�set_version_from_backupr�r�)rur�r��alt_dirsr�r�Zbase_dest_pathr�Z
base_src_path�alt_dirZsrc_path�	dest_pathr)r�r�restore_settings_from_backup2s$


 


r�cCsbtj�d�r>tjdddd�tjdddd�tjdddd�n tjdddd�tjd	ddd�dS)
Nz/usr/bin/systemctlz!/usr/bin/systemctl disable cagefsTz	/bin/bash)r{r|z/usr/bin/systemctl stop cagefsz/usr/bin/systemctl mask cagefsz&/sbin/service cagefs stop &> /dev/nullz/sbin/chkconfig cagefs off)r/r0r1r��runrrrr�disable_cagefs_service\sr�cCsbtj�d�r>tjdddd�tjdddd�tjdddd�n tjdddd�tjd	ddd�dS)
Nz/usr/bin/systemctlz /usr/bin/systemctl unmask cagefsTz	/bin/bash)r{r|z /usr/bin/systemctl enable cagefsz/usr/bin/systemctl start cagefsz/sbin/chkconfig cagefs onz'/sbin/service cagefs start &> /dev/null)r/r0r1r�r�rrrr�enable_cagefs_servicefsr�cCsftj�d�yddl}Wn&tk
r>td�t�d�YnX|��}|s^td�t�d�|rt|d}t|�n:t	�}|s�td�td�t�d�t
j�tj
�s�t|�t�ddl}|�|�}|j}x2|D]*}d	|d
}|d|d}	t|	|�q�Wtd
�}
t|||j||
�|
�|�t|||
�t�tjdt|j�dt|j�dddd�dS)z+
    Setup PHP Selector without CageFS
    z/usr/share/cagefsrNzError: CageFS is not installedrzalt-php not foundzVError: failed to detect cpanel account. Please specify name of an account as argument:z'selectorctl --setup-without-cagefs USERz	/opt/alt/z/link/conf/alt_php.iniz/.cl.selector/alt_z.inir�z/usr/sbin/lvectl destroy z% &>/dev/null; /usr/sbin/lvectl apply z &>/dev/nullTz	/bin/bash)r{r|)r r0rT�	cagefslib�ImportErrorrr#�get_alt_dirsryrvr/rsrrpr�rt�getpwnam�pw_dirrr
r��pw_uid�create_selector_symlinksr�r�r�r�r)�argsr�r�rurt�pwr�r��alt_path�	user_pathr�rrr�setup_without_cagefspsF





r�c	CsZtj�tj�s td�t�d�tj�d�yddl	}Wn&t
k
r^td�t�d�YnX|��}|s~td�t�d�tdd	�x.|D]&}d
|d}tj�
|�r�t�|�q�Wt�}|s�td�t�d�ddl}|�|�}|j}td
�}t|||dd�tjd|ddd�t�t�tj�tjdt|j�dt|j�dddd�dS)z:
    Revert to default PHP Selector setup with CageFS
    z<PHP Selector is in default mode already ("with CageFS" mode)rz/usr/share/cagefsrNzError: CageFS is not installedzalt-php not foundT)r�z	/opt/alt/z/link/conf/alt_php.inizError: failed to detect userr�F)r�z0/usr/sbin/cagefsctl --silent --force-update-etc z	/bin/bash)r{r|z/usr/sbin/lvectl destroy z% &>/dev/null; /usr/sbin/lvectl apply z &>/dev/null)r/r0rsrrprr r#rTr�r�r�r��islink�unlinkrvrtr�r�r
r�r�r�r�rr�)	r�r�r�r�rurtr�r�r�rrr�revert_to_cagefs�s@





r�cCs`tj�d�yddl}ddl}Wn&tk
rFtd�t�d�YnX|��r\|j	|d�dS)z�
    Apply "global" php.ini settings to all alt-php versions
    :param args: list of command line parameters (names of php.ini options)
    :type args: list
    z/usr/share/cagefsrNzError: CageFS is not installedr)�options)
r r0rTr��cagefsreconfigurer�rr#Zget_alt_versionsZreplace_alt_settings)r�r�r�rrr�apply_global_php_ini�sr�cCsVtt�rRt�}x&t��D]\}}|�d||f�qWt�|d|d�|�d��dS)Nz '%s' is required for '%s'�WARN�,)rMr$)r(r	rR�itemsrTr
�
print_diagrP)Zprint_formatZ
print_message�modules_list�module_name�
dep_modulerrr�"_check_depencies_and_print_message�sr�cCst|��|�}t|||�S)N)r�list_extensions�parse_extensions)�interpreterr7r&�ext_listrrr�get_extensions�sr�cCs�g}xp|D]h}d}|ddkr$d}n|ddkr4d}|dkrP|�||df�q
|�|dd	t|�d
��t|�}q
W|dkr�||d�}|S|S)
Nr_rTr`Fr;rArr,)rcrd�staterN)r7�
extensions)rTrarl)r�r7r&Z	json_list�ext�actionrnrrrr��s

r�c
Cs�d}d}y.ttdg���}|dkr&gS|�d�dd�Stk
r�}z6|t|�kr^td�n|t|�krrtd	�t|�Wdd}~XYnXdS)
z�
    Return list of users that are in CageFS
    If CageFS is not installed or initialized
    throws exception and prints it
    :return:
    zNo such file or directoryzCageFS is not initializedz--list-enabledr,rOrNzERROR: CageFS not installed.zWError: CageFS is not initialized. Use "/usr/sbin/cagefsctl --init" to initialize CageFS)r�CAGEFSCTL_COMMANDr4rfrrr')Znot_installed_msgZnot_initialized_msg�usersr=rrr�get_cagefs_users�s
r�c2Csji}d|d<d|d<d|d<d|d<d|d<d|d	<d|d
<d|d<t|d
<i}g}t�t�rrtd�t�d�y|t�tjdd�ddddddddddddddddd d!d"d#d$d%d&d'd(d)ddd*d+d,d-d.d/d0d
d1d2d3d4d5d6d7d8d9d:d;g.�\}}Wn(tjk
�rt	�t�d�YnX�x�|D�]�\}}|d<k�rHt	�t�d=��q |d>k�r�xB|�
d?�D]4}y|�t|��Wnt
k
�r��w^YnX�q^W�q |d@k�r�dA|d0<�q |dBk�r�t|�t�d=��q |dCk�r�t�t�d=��q |dDk�rt|�t�d=��q |dEk�r$dA|dF<�q |dGk�r:dA|dH<�q |dIk�rPdA|dJ<�q |dKk�rfdA|dL<�q |dMk�r|dA|dN<�q |dOk�r�dA|d<�q |dPk�r�||d<�q |dQk�r�||dR<t�}t���r�|�|�}	n�|�
d?�}
t�}y�t|
�dk�r2|�|�}	t��d=k�rnx^|�|	�D]}t��|��qWn<x,|
D]$}||k�r8||�|�|��7}�q8Wd?�|�|dR<WnDtjk
�r�}
z"tj�t |
�dS�t�d�Wdd}
~
XYnX�q |dTk�r�||dU<�q |dVk�r�||dW<�q |dXk�r�||dY<�q |dZk�r||d[<�q |d\k�r(dA|d!<�q |d]k�r>dA|d$<�q |d^k�rT||d_<�q |d`k�rj||da<�q |dbk�r�||dc<�q |ddk�r�||de<�q |dfk�r�||dg<�q |dhk�r�||di<�q |djk�r�dA|d)<�q |dkk�r�dA|d<�q |dlk�rdA|d<�q |dmk�rdA|d*<�q |dnk�r0||do<�q |dpk�rF||dq<�q |drk�r\||ds<�q |dtk�rr||du<�q |dvk�r�d/|d	<�q |dwk�r�dA|d
<�q |dxk�r�dA|d1<�q |dyk�r�dA|d2<n�|dzk�r�d3|d<n�|d{k�r�d4|d<n�|d|k�rt|�|d
<n�|d}k�rd5|d<n�|d~k�r0dA|d7<n�|dk�rDdA|d8<nx|d�k�r dR|k�r`t!d��t"�}
|
�stt!d��t�}t�}x,|
D]$}||k�r�||�|�|��7}�q�Wd?�|�|dR<�q Wt|�dk�r(t|�d=k�r|d�rytt|d��#�d=�Wnt$k
�rYnXn
t!d�d���y:dW|k�rJdN|k�rJt��%�dF|k�r�|dd3k�r�x~t|d��&�D]}td�|��qtWnVd�gd��}x<t|d��&�D](}|d��|d=|d|d�d����q�Wtt'�(|���
nzdH|k�rt|d��)|d�}t*||d|d
��
nBdL|k�rJtd�t|d��+|d���
ndU|k�r�t|d��,|dU�|dd3k�r`t-��	n�dY|k�r�t|d��.|dY�|dd3k�r`t-��	n�d[|k�r�t|d��/|d[�|dd3k�r`t-��	nnd!|k�	rjt0|d��t1|d|d|d�}|ddk�	rJx8|D]}td�|��	q2Wn|dd3k�r`tt'�(|���n�d_|k�	r�t0|d��t2|d��3|dtt4d�d��|d_�
d?�����n�da|k�
rt0|d��t2|d��5|dtt4d�d��|da�
d?����tt6��r`t7|dd���nNdc|k�
r�t0|d��t2|d��8|dtt4d�d��|dc�
d?����tt6��
rpt7|dd��n|dd3k�r`t-��n�dJ|k�
r�t0|d��t|d|��)|dR|d�}t*|��n�dN|k�rt0|d��td�t|d|��+|dR|d���n\d0|k�r.t0|d��t|d|��9��n2dW|k�r�t0|d��yt��%�Wn0t:j;k
�r�|dWd�k�rt�td=�YnX|�|	�d=}t|d|�}|�,||dW|d|d�}|�<|�|	��|d�r`t*|��n�d$|k�r�t0|d��|d�rhx�t=|d|��>|dR|d�D]D}d�}|ddk�r:d�}n|ddAk�rLd�}td�||d=f��qWn6x4t=|d|��?|dR|d�D]}t|d=��q�W�n�de|k�
r&t0|d��t�@�|dR�
d?�}
xJ|
D]B}t=|d|�}|jA||dtt4d�d��|de�
d?���dAd���q�W|�<|
��n:dg|k�
r�t0|d��t�@�|dR�
d?�}
xF|
D]>}t=|d|�}|�B||dtt4d�d��|dg�
d?�����
qVW|�<|
��n�di|k�rt0|d��t�@�|�|	�d=}t=|d|�}|�8||dtt4d�d��|di�
d?����|�<|�|	���nDd)|k�r�t0|d��t�@�|�|	�d=}t=|d|�}|�C||d�}|�<|�|	��td?�|���n�d*|k�r�t0|d��t|d|��D|d�}
td?�|
���n�do|k�r�t0|d��t|d|��E|do|d��nfdq|k�r�t0|d��t�@�|�|	�d=}tF|d|�}|�G||d|dq|d	dA|d
�|�<|�|	��|dd3k�r`tH�I|di��n�ds|k�rt0|d��t�@�|�|	�d=}tF|d|�}|�G||d|ds|d	d|d
�|�<|�|	��|dd3k�r`tH�I|di��nJdu|k�r�t0|d��t�@�|�|	�d=}tF|d|�}|�J||d|du|d	|d
�|�<|�|	��|dd3k�r`tH�I|di��n�d7|k�r*d}d}dR|k�r�|dR�
d?�}|d�r�|d�
d?�}tF|d|�}|�K||�|�<|�|dd3k�r`tH�I|di��n6d1|k�rjt0|d��tH�I|dtF|d|��L|dR|d��n�d2|k�r�t0|d��tHjI|dtF|d|��L|dR|d�dAd��n�d8|k�r`t�}x�|�M��N�D]�}y(t��O|�t��P|�tF��Q|�Wn`t:jRk
�rYnJt:jSk
�rX}
z(|d
�sHtH�T|dd�t |
�d���Wdd}
~
XYnX�q�WW�nt:j;k
�r�}
z0tH�T|dd�t |
�|
jU|
jVd���t�d�Wdd}
~
XYn�tWk
�r}
z0tH�T|dd�t |
�|
jU|
jVd���t�d�Wdd}
~
XYnbtXtYfk
�r$t!d��YnBtZk
�rd}
z"t[�\�}tH�T|dd�|d���Wdd}
~
XYnXdS)�Nr�r�r7Fzshow-allz
print-summaryzshow-native-version�plain�decoder�quietrArzapi-versionz7selectorctl does not work in CageFS for PHP interpreterrz6hi:lSsCcB:Y:N:E:D:R:v:Gu:b:ge:d:r:atpVLT:k:m:x:QqPjwWz�helpzsetup-without-cagefszrevert-to-cagefszinterpreter=rR�summaryzuser-summary�currentzuser-currentzset-current=zenable-alternative=zdisable-alternative=zenable-extensions=zdisable-extensions=zreplace-extensions=zversion=zlist-extensionszuser=zset-user-current=zlist-user-extensionszenable-user-extensions=zdisable-user-extensions=zreplace-user-extensions=�allzreset-user-extensionsz
list-userszchange-to-version=zadd-options=zreplace-options=zdelete-options=�base64zapply-symlinks-rulesz
print-optionszprint-options-saferN�csv�perlzapi-version=z
reset-optionsz
update-backupzapply-global-php-inizexclude-pid-list=z
for-all-users)z-hz--helpr)z--exclude-pid-listr�)z--apply-symlinks-rulesT)z--setup-without-cagefs)z--revert-to-cagefs)z--apply-global-php-ini)z-lz--listzlist-alternatives)z-Sz	--summaryzshow-summary)z-sz--user-summaryzshow-user-summary)z-Cz	--currentzshow-current)z-cz--user-currentzshow-user-current)z-az--all)z-vz	--version)z-uz--userrurO)z-Bz
--set-currentzset-current)z-bz--set-user-currentzset-user-current)z-Yz--enable-alternativezenable-alternative)z-Nz--disable-alternativezdisable-alternative)z-Gz--list-extensions)z-gz--list-user-extensions)z-Ez--enable-extensionszenable-extensions)z-Dz--disable-extensionszdisable-extensions)z-Rz--replace-extensionszreplace-extensions)z-ez--enable-user-extensionszenable-user-extensions)z-dz--disable-user-extensionszdisable-user-extensions)z-rz--replace-user-extensionszreplace-user-extensions)z-tz--reset-user-extensions)z-pz--print-summary)z-Vz--show-native-version)z-Lz--list-users)z-Tz--change-to-versionzchange-to-version)z-kz
--add-optionszadd-options)z-mz--replace-optionszreplace-options)z-xz--delete-optionszdelete-options)z-Qz--base64)z-qz--quiet)z-Pz--print-options)z--print-options-safe)z-jz--json)z-wz--csv)z
--api-version)z-Wz--perl)z-zz--reset-options)z--update-backup)z--for-all-usersz�--for-all-users and --user options are mutually exclusive options and cannot be used simultaneously.
Use --for-all-user OR --user instead.z=No changes were made: there are no users with cagefs enabled zWrong set of options�ERRORz%s	%s	%srm)rMrWrWrL)�short�fullr0)r�r7z%s %scSs|��S)N)r4)rGrrrrJ rKzmain.<locals>.<lambda>cSs|��S)N)r4)rGrrrrJ%rKzModules left by dependencies:cSs|��S)N)r4)rGrrrrJ-rKz#Modules left/added by dependencies:)r�ru)r��nativer;r_r`)r�r7rucSs|��S)N)r4)rGrrrrJtrK)rur7r��	check_extcSs|��S)N)r4)rGrrrrJ�rKcSs|��S)N)r4)rGrrrrJ�rK)�escape)rMr$�WARNING)rMr$�details�contextz(Incomplete or incorrect set of arguments)]rr*rrr r#�getoptr)�GetoptErrorrrfrTr��
ValueErrorr�r�r�rr�work_without_cagefs�get_uidrRr(r/�geteuid�	get_namesr
�cagefs_copy_etcrP�NoSuchUserExceptionr!r"rr'r��get_native_version�	TypeError�check_requirements�list_alternativesrNrV�get_summaryr[�get_version�set_versionro�enable_version�disable_versionr^r�r�enable_extensionsr�disable_extensionsr	r��replace_extensions�apply_symlinks_rulesr�NativeNotInstalled�clean_crui_imagesr�list_all_extensions�list_enabled_extensions�%check_multiphp_system_default_version�bulk_enable_extensions�bulk_disable_extensions�reset_extensions�
list_users�change_to_versionr�insert_optionsr
�
print_data�delete_options�
reset_options�get_optionsrr�keys�_check_user_in_cagefs�_backup_settings�backup_php_options�
NotCageFSUser�UnableToSaveDatar�r�r�rrg�UnboundLocalError�	Exception�	traceback�
format_exc)r\Zactions�exclude_pid_list�optsr��or��pid�clpwdr�r�Z	user_listrur=rHZalternatives_dictrWr�rk�cr�r�r�r7�msgrrr�mains�



















 













































(













"

























$































r�__main__)N)F)NT)N)rA)M�
__future__rrrr�r r�r/r�r	�
simplejsonrNr��builtinsr�clselectr�clextselectrr	�cluserselectr
�cluserextselectr�cluseroptselectr�
clselectprintr
r�clcommon.constr�clcommon.cpapir�clcommon.sysctlrr�clcommon.utilsrr�clcommon.lib.cleditionrr�rr�clselectexceptrrr�API_1r�rr'r*r:r@rZr[r^rarlrorvryr�r�r�r�r�r�r�r�r�r�r�r�r�__name__rrrr�<module>	sv5
'			

"
*

/+

z


Youez - 2016 - github.com/yon3zu
LinuXploit