%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/
Upload File :
Create Path :
Current File : //opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/clselectctlphp.cpython-37.pyc

B

��UbW��@sddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZmZddlmZmZddl m!Z!m"Z"ddl#m$Z$m%Z%ddl&Z'ddl(Z(dZ)dZ*dZ+dd�Z,dKdd�Z-dd�Z.dd�Z/dd�Z0de)fdd�Z1de)fd d!�Z2d"d#�Z3d$d%�Z4d&d'�Z5d(d)�Z6d*d+�Z7d,d-�Z8dLd/d0�Z9dMd2d3�Z:dNd4d5�Z;d6d7�Z<d8d9�Z=d:d;�Z>d<d=�Z?d>d?�Z@d@dA�ZAdOdBdC�ZBdDdE�ZCdFdG�ZDdHdI�ZEeFdJk�r
eE�dS)P�)�print_function)�absolute_import)�divisionN)�map�)�ClSelect)�ClExtSelect�depend_modules_dict)�ClUserSelect)�ClUserExtSelect)�ClUserOptSelect)�clprint)�ClPwd)�
SysCtlConf�SYSCTL_CL_CONF_FILE)�run_command�ExternalProgramFailed)�	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�usage/sdrcCs2d}|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_exitds
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_presencepsr'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r7cCs|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)Nrr8r)�i)�alt�statesrr�<lambda>��z format_summary.<locals>.<lambda>r)�r>)r4�statusr6�json�
)
rr%�join�extend�listr�ranger7�append�tupler=rK�dumps)�datar�api_versionZavailable_versions_keyZdefault_version_keyZ
text_lines�	json_dictZ
row_lengthr#Zrow_datar6r)rErFr�format_summary�s>







rWcCst|||�}t|�dS)z%
    Prints alternatives summary
    N)rWr)rTrrUrrr�
print_summary�srXcCs2x,|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;r9r)r<rrr�ext_letter_to_status�s
r^c	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)r/�	readlines�splitr1�KeyError)Ztmp_listZ
descr_file�fZ
desct_contentZfull_desct_dict�line�
line_parts�itemrrr�fill_descriptions�s




ricCsddi}tt�|��dS)NrJ�ok)rrKrS)�result_dictrrr�print_json_status_ok�srlc	Cs^tj�tj�r.ttjd��}|����SQRXt�}x$|�	�D]}tj�
d|�r>|Sq>WdS)zW
    Return user (name of cpanel account) for PHP Selector without CageFS feature 
    r*Nz/var/cpanel/users/)r,r-r.r�	USER_CONFr/�readr1r�
get_user_dict�exists)re�pwd�userrrr�get_cpanel_user�srsc	Cs4ttjd��}|�|�WdQRXt�tjd�dS)zT
    Set user (name of cpanel account) for PHP Selector without CageFS feature 
    �wNi�)r/rrmrr,�chmod)rrrerrr�set_cpanel_user�srvFcCsvd}tj�|�r|}nt}t|d�}|�dtt|���|�dtt|���tj	dddd�d	krrt
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)
r,r-r.rr�set�str�int�
subprocess�callrrr )�enableZnew_conf�confZ
sysctl_cfgrrr�switch_linksafe�s
r�Tc		Cs�|dkrtd�}|�|�}|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/.bashrczPATH=$HOME/z:$HOME/.cl.selector:$PATHr*rL�a)	r
�_change_uid�
SELECTOR2_DIRr/r�clcommon�utils�delete_line_from_file�_restore_uid)	rr�homedir�obj�add�cur_userZbashrcrfre�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,r-rMr{r)�uidrr�cleanup6s"z-restore_settings_from_backup.<locals>.cleanupNr�z
/.cl.selectorz0/usr/sbin/cagefsctl --silent --force-update-etc Tz	/bin/bash)rxryrrz/var/cagefsr��etczcl.php.dz/alt-z/alt_php.iniz/alt_z.iniz/.cagefs)r
r}r~rr r�r,r-rMr{r��copy�set_version_from_backupr�r�)rrr�r��alt_dirsr�r�Zbase_dest_pathr�Z
base_src_path�alt_dirZsrc_path�	dest_pathr)r�r�restore_settings_from_backup(s$


 


r�cCsbtj�d�r>tjdddd�tjdddd�tjdddd�n tjdddd�tjd	ddd�dS)
Nz/usr/bin/systemctlz!/usr/bin/systemctl disable cagefsTz	/bin/bash)rxryz/usr/bin/systemctl stop cagefsz/usr/bin/systemctl mask cagefsz&/sbin/service cagefs stop &> /dev/nullz/sbin/chkconfig cagefs off)r,r-r.r}�runrrrr�disable_cagefs_serviceRsr�cCsbtj�d�r>tjdddd�tjdddd�tjdddd�n tjdddd�tjd	ddd�dS)
Nz/usr/bin/systemctlz /usr/bin/systemctl unmask cagefsTz	/bin/bash)rxryz /usr/bin/systemctl enable cagefsz/usr/bin/systemctl start cagefsz/sbin/chkconfig cagefs onz'/sbin/service cagefs start &> /dev/null)r,r-r.r}r�rrrr�enable_cagefs_service\s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)rxry)rr-rQ�	cagefslib�ImportErrorrr �get_alt_dirsrvrsr,rprrmr�rq�getpwnam�pw_dirrr
r��pw_uid�create_selector_symlinksr�r�r}r�r{)�argsr�r�rrrq�pwr�r��alt_pathZ	user_pathr�rrr�setup_without_cagefsfsF





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)rz	/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)rxryz/usr/sbin/lvectl destroy z% &>/dev/null; /usr/sbin/lvectl apply z &>/dev/null)r,r-rprrmrrr rQr�r�r�r��islink�unlinkrsrqr�r�r
r�r}r�r�r{r�)	r�r�r�r�rrrqr�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)
rr-rQr��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�,)rJr!)r%r	rO�itemsrQr
�
print_diagrM)Zprint_formatZ
print_messageZmodules_list�module_name�
dep_modulerrr�"_check_depencies_and_print_message�sr�cCst|��|�}t|||�S)N)r�list_extensions�parse_extensions)�interpreterr4r#�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]Fr8r>rr))r`ra�staterK)r4�
extensions)rQr^ri)r�r4r#Z	json_list�ext�actionrkrrrr��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)rLrNzERROR: CageFS not installed.zWError: CageFS is not initialized. Use "/usr/sbin/cagefsctl --init" to initialize CageFS)r�CAGEFSCTL_COMMANDr1rcrr{r$)Znot_installed_msgZnot_initialized_msg�usersr:rrr�get_cagefs_users�s
r�c2CsRi}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'�(|���
nbdH|k�rt|d��)|d�}t*||d|d
��
n*dL|k�rJtd�t|d��+|d���	n�dU|k�r�t|d��,|dU�|dd3k�rHt-��	n�dY|k�r�t|d��.|dY�|dd3k�rHt-��	n�d[|k�r�t|d��/|d[�|dd3k�rHt-��	nVd!|k�	rjt0|d��t1|d|d|d�}|ddk�	rJx8|D]}td�|��	q2Wn|dd3k�rHtt'�(|���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��rHt7|dd���n6dc|k�
r�t0|d��t2|d��8|dtt4d�d��|dc�
d?����tt6��
rpt7|dd��n|dd3k�rHt-��n�dJ|k�
r�t0|d��t|d|��)|dR|d�}t*|��n�dN|k�rt0|d��td�t|d|��+|dR|d���nDd0|k�r.t0|d��t|d|��9��ndW|k�r�t0|d��yt��%�Wn0t:j;k
�r�|dWd�k�rt�td=�YnX|�|	�d=}t|d|�}|�,||dW|d|d�}|�<|�|	��|d�rHt*|��nhd$|k�r�t0|d��|d�rPx�t=|d|��>|dR|d�D],}d�}|d�r4d�}td�||d=f��qWn6x4t=|d|��?|dR|d�D]}t|d=��qpW�n�de|k�
rt0|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?�����
q>W|�<|
��n�di|k�rt0|d��t�@�|�|	�d=}t=|d|�}|�8||dtt4d�d��|di�
d?����|�<|�|	���nDd)|k�rnt0|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�rpt0|d��t�@�|�|	�d=}tF|d|�}|�G||d|dq|d	dA|d
�|�<|�|	��|dd3k�rHtH�I|di��n�ds|k�r�t0|d��t�@�|�|	�d=}tF|d|�}|�G||d|ds|d	d|d
�|�<|�|	��|dd3k�rHtH�I|di��nJdu|k�r�t0|d��t�@�|�|	�d=}tF|d|�}|�J||d|du|d	|d
�|�<|�|	��|dd3k�rHtH�I|di��n�d7|k�rd}d}dR|k�r�|dR�
d?�}|d�r�|d�
d?�}tF|d|�}|�K||�|�<|�|dd3k�rHtH�I|di��n6d1|k�rRt0|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�rHt�}x�|�M��N�D]�}y(t��O|�t��P|�tF��Q|�Wn`t:jRk
�r�YnJt:jSk
�r@}
z(|d
�s0tH�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
�rL}
z"t[�\�}tH�T|dd�|d���Wdd}
~
XYnXdS)�Nr�r�r4Fzshow-allz
print-summaryzshow-native-version�plain�decoder�quietr>rzapi-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=rO�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-saferK�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--userrrrL)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	%srj)rJrTrTrI)�short�fullr-)r�r4z%s %scSs|��S)N)r1)rDrrrrGrHzmain.<locals>.<lambda>cSs|��S)N)r1)rDrrrrGrHzModules left by dependencies:cSs|��S)N)r1)rDrrrrG#rHz#Modules left/added by dependencies:)r�rr)r��nativer8r])r�r4rrcSs|��S)N)r1)rDrrrrGhrH)rrr4r��	check_extcSs|��S)N)r1)rDrrrrGtrHcSs|��S)N)r1)rDrrrrG~rH)�escape)rJr!�WARNING)rJr!�details�contextz(Incomplete or incorrect set of arguments)]rr'rrrr �getoptr&�GetoptErrorrrcrQr|�
ValueErrorr�r�r�rr�work_without_cagefs�get_uidrOr%r,�geteuid�	get_namesr
�cagefs_copy_etcrM�NoSuchUserExceptionrrr{r$r��get_native_version�	TypeError�check_requirements�list_alternativesrKrS�get_summaryrX�get_version�set_versionrl�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_optionsro�keys�_check_user_in_cagefs�_backup_settings�backup_php_options�
NotCageFSUser�UnableToSaveDatar�r�r�rrd�UnboundLocalError�	Exception�	traceback�
format_exc)rYZactions�exclude_pid_list�optsr��or��pid�clpwdr�r�Z	user_listrrr:rEZalternatives_dictrTr�rh�cr�r�r�r4�msgrrr�mains�



















 













































(













"


























$































r�__main__)N)F)NT)N)r>)G�
__future__rrrr}rr�r,r�r�builtinsr�clselectr�clextselectrr	�cluserselectr
�cluserextselectr�cluseroptselectr�
clselectprintr
r�clcommon.sysctlrr�clcommon.utilsrrr�rr�clselectexceptrr�
simplejsonrKr�r�API_1r�rr$r'r7r=rWrXr[r^rirlrsrvr�r�r�r�r�r�r�r�r�r�r�r�r�__name__rrrr�<module>	sp5
'			


*

/+

x


Zerion Mini Shell 1.0