%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/clselect/
Upload File :
Create Path :
Current File : //proc/227033/root/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyc

�
i�B^c@`s�ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl	m
Z
ddlmZddl
mZmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZmZddlmZmZddlm Z m!Z!ddl"m#Z#m$Z$ddl%Z&ddl'Z'dZ(dZ)dZ*d�Z+e,d�Z-d�Z.d�Z/d�Z0de(d�Z1de(d�Z2d�Z3d�Z4d�Z5d�Z6d�Z7d �Z8e9d!�Z:e,e;d"�Z<e,d#�Z=d$�Z>d%�Z?d&�Z@d'�ZAd(�ZBd)�ZCdd*�ZDd+�ZEd,�ZFd-�ZGeHd.kr�eG�ndS(/i(tprint_function(tabsolute_import(tdivisionN(tmapi(tClSelect(tClExtSelecttdepend_modules_dict(tClUserSelect(tClUserExtSelect(tClUserOptSelect(tclprint(tClPwd(t
SysCtlConftSYSCTL_CL_CONF_FILE(trun_commandtExternalProgramFailed(t	in_cagefstmake_symlink(tClSelectExcepttBaseClSelectExceptions/usr/sbin/cagefsctlcC`std�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)jt��td*�td+�td,�td-�td.�td/�td0�td1�td2�dS(3Ns? -v | --version                   : Specify alternative versions, -u | --user                      : UsernamesE -l | --list                      : List alternatives for interpretersQ -G | --list-extensions           : List global set of extensions for alternatives@ -S | --summary                   : List summary of alternativessE -s | --user-summary              : List user summary of alternativessG -C | --current                   : Show currently selected alternativesR -c | --user-current              : Show currently selected alternative for a usersE -B | --set-current               : Set alternative as global defaultsC -b | --set-user-current          : Set alternative as user defaults? -Y | --enable-alternative        : Enable alternative globallys@ -N | --disable-alternative       : Disable alternative globallysd -E | --enable-extensions         : Enable comma-separated list of extensions globally for a versionse -D | --disable-extensions        : Disable comma-separated list of extensions globally for a versions_ -R | --replace-extensions        : Replace extensions with comma-separated list of extensions s:                                    for a version globallysX -e | --enable-user-extensions    : Enable comma-separated list of extensions for a usersY -d | --disable-user-extensions   : Disable comma-separated list of extensions for a usersc -r | --replace-user-extensions   : Replace user extensions with comma-separated list of extensionss[ -t | --reset-user-extensions     : Replace user extensions with version default extensionssk -g | --list-user-extensions      : List enabled extensions for a user. With key --all shows all extensionss7 -a | --all                       : Show all extensionssf -p | --print-summary             : If specified along with setting an alternative prints user summarysb -V | --show-native-version       : Shows native version while showing summary or selected versionsN -L | --list-users                : List users who use a specified alternativesg -T | --change-to-version         : Changes to a specified version all users who have a certain versionsO -k | --add-options               : Add comma-separated list options for a users] -m | --replace-options           : Replace user options with comma-separated list of optionssR -x | --delete-options            : Delete comma-separated list options for a usersY -Q | --base64                    : Expects data as comma-separated base64-encoded stringsL -q | --quiet                     : Suppress errors messages for wrong inputsX -P | --print-options             : Prints user options. By default prints as plain textsg --print-options-safe             : Prints user options. By default prints as plain text (safe strings)sV --apply-symlinks-rules           : Recreate symlinks to php extensions for all users sQ                                    based on /etc/cl.selector/symlinks.rules filesk --exclude-pid-list               : Specify list of PIDs of processes that should not be signaled by SIGHUPs6 -j | --json                      : Print data as JSONs5 -w | --csv                       : Print data as CSVs@ -W | --perl                      : Print data as perl structuresW --api-version                    : Integer, representing specific api version to use. s2                                    Defaults to {}se -z | --reset-options             : Deletes all user custom options. Range can be narrowed with user s6                                    or version optionss< --update-backup                  : write settings to backupsh --apply-global-php-ini           : use with 0, 1 or 2 arguments from the list: error_log, date.timezonesh                                    without arguments applies all global php options including two abovesE --setup-without-cagefs           : setup PHP Selector without CageFSsY --revert-to-cagefs               : revert to default setup of PHP Selector (with CageFS)sV --for-all-users                  : applies specified action for all users in CageFS. sU                                    Available only for enable/disable user extensions(tprinttformattAPI_0(((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytusage-sd















































cC`sDd}|rd|df}ntjj||�tjd�dS(s5
    Prints to stderr
    @param message: string
    s%s
s%s:%s
s%siN(tsyststderrtwritetexit(tmessagetprefixtfmt((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytprint_error_and_exitbs
cC`s&ttj�dkr"td�ndS(s\
    Checks presence of command line arguments
    and exits with usage info if missing
    isFCommand line arguments expected. For help use '-h' or '--help' optionsN(tlenRtargvR(((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytcheck_args_presencenscC`sd}|jdd�}||d}d}tjj|�r{yt|d�j�j�}Wq{ttfk
rwdSXn|S(s
    s/opt/alt/phpt.ts/name_modifiertr(	treplacetostpathtisfiletopentreadlinetstriptOSErrortIOError(tversiontBASE_ALT_DIRtvertname_modifier_filet
name_modifier((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytget_name_modifieryscC`s$|dkrdS|dkr dSdS(Nt-tdisabledtetenabled((tletter((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytletter_to_status�sttextc`s�|tkrd}d}nd}d}dddg�g}ig|6}x0|D](�t�d�}d	jd
g|d�}�dg}	|	jtt��fd�t|����t�d�}
|
d
krd	jd
g|d�}|	j|
�n|dkr'|j|t	|	��nd|	krD|	d||<n||ji|	dd6t
|	d�d6|
d6�qPW|dkr�tj|�S|dkr�dj|�SdS(NtPHPConfigurationtdefaultPHPversiontavailable_versionstdefault_versionR7tdtsit s%sic`s�d|r�|pdS(NiR5((ti(talttstates(sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyt<lambda>�R$R$iR;R/tstatusR3tjsons
(
RR tjointextendtlistRtrangeR4tappendttupleR:RHtdumps(tdataRtapi_versiontavailable_versions_keytdefault_version_keyt
text_linest	json_dictt
row_lengthRtrow_dataR3((RDREsH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytformat_summary�s@	




cC`s t|||�}t|�dS(s%
    Prints alternatives summary
    N(RXR(RPRRQ((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyt
print_summary�scC`sBx;|D]3}||ks)||dkrtd|�qqWdS(sC
    Check that config has param_list and this params not None
    sError: %s must be specifiedN(tNoneR(tconfigt
param_listtparam((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytcheck_params�s
cC`s(|dkrdS|dkr dSdSdS(Nt~sbuild-int+R8R6((R9((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytext_letter_to_status�s
cC`s�d}t|��}|j�}WdQXi}x5|D]-}|jd�}|dj�||d<q4Wx8|D]0}y||d|d<Wqltk
r�qlXqlW|S(Ns/etc/cl.selector/phpextdesc.txtt=iitnametdescription(R*t	readlinestsplitR,tKeyError(ttmp_listt
descr_filetft
desct_contenttfull_desct_dicttlinet
line_partstitem((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytfill_descriptions�s


cC`s$idd6}ttj|��dS(NtokRG(RRHRO(tresult_dict((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytprint_json_status_ok�s
cC`s�tjjtj�rCttjd��}|j�j�SWdQXnt�}x.|j	�D] }tjj
d|�rY|SqYWdS(sW
    Return user (name of cpanel account) for PHP Selector without CageFS feature 
    R%Ns/var/cpanel/users/(R'R(R)Rt	USER_CONFR*treadR,Rt
get_user_dicttexistsRZ(Rjtpwdtuser((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytget_cpanel_user�s	cC`s?ttjd��}|j|�WdQXtjtjd�dS(sT
    Set user (name of cpanel account) for PHP Selector without CageFS feature 
    twNi�(R*RRtRR'tchmod(RyRj((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytset_cpanel_user�scC`s�d}tjj|�r!|}nt}td|�}|jdtt|���|jdtt|���tjd�dkr�t	d�t
jd�ndS(	Ns&/etc/sysctl.d/cloudlinux-linksafe.conftconfig_filesfs.protected_symlinks_createsfs.protected_hardlinks_createssysctl --system &>/dev/nullis&Error while executing: sysctl --systemi(R'R(R)R
RtsettstrtinttsystemRRR(tenabletnew_conftconft
sysctl_cfg((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytswitch_linksafe�s	
c	C`s�|dkrtd�}n|j|�}|d}dtjd}t|d��}|d|k}WdQX|r�|s�t|d��}|jd|d�WdQXq�n|r�tjj||�n|j	|�dS(	s[
    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
    tphps/.bashrcsPATH=$HOME/s:$HOME/.cl.selector:$PATHR%s
Nta(
RZRt_change_uidt
SELECTOR2_DIRR*Rtclcommontutilstdelete_line_from_filet_restore_uid(	Rythomedirtobjtaddtcur_usertbashrcRmRjtfound((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytmodify_search_path_in_bashrc	s
!c`s�fd�}|dkr*td�}n|d}|�tjd|�dkrdtjd�n|j|�}tjjdt	��d|d	d
�}xB|D]:}	|d|	d}
|d
|	d}t
j|
|�q�W|j|�t
j
|dt�|j|�|�dS(s�
    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
    c`sMtjtjjdt��d�t�tjdt�tjdt�dS(Ns/var/cagefsi����s/usr/share/cagefs/etcs/usr/share/cagefs/etc.new(tshutiltrmtreeR'R(RIR�tTrue((tuid(sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytcleanup4s)R�s
/.cl.selectors0/usr/sbin/cagefsctl --silent --force-update-etc iis/var/cagefsi����tetcscl.php.ds/alt-s/alt_php.inis/alt_s.inis/.cagefsN(RZRR'R�RRR�R(RIR�R�tcopytset_version_from_backupR�R�R�(RyR�R�talt_dirsR�R�tbase_dest_pathR�t
base_src_pathtalt_dirtsrc_patht	dest_path((R�sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytrestore_settings_from_backup&s"
(


cC`sZtjjd�r<tjd�tjd�tjd�ntjd�tjd�dS(Ns/usr/bin/systemctls!/usr/bin/systemctl disable cagefss/usr/bin/systemctl stop cagefss/usr/bin/systemctl mask cagefss&/sbin/service cagefs stop &> /dev/nulls/sbin/chkconfig cagefs off(R'R(R)R�(((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytdisable_cagefs_serviceOs


cC`sZtjjd�r<tjd�tjd�tjd�ntjd�tjd�dS(Ns/usr/bin/systemctls /usr/bin/systemctl unmask cagefss /usr/bin/systemctl enable cagefss/usr/bin/systemctl start cagefss/sbin/chkconfig cagefs ons'/sbin/service cagefs start &> /dev/null(R'R(R)R�(((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytenable_cagefs_serviceYs


cC`s�tjjd�yddl}Wn(tk
rJtd�tjd�nX|j�}|swtd�tjd�n|r�|d}t|�nUt	�}|s�td�td�tjd�nt
jjtj
�s�t|�nt�ddl}|j|�}|j}x;|D]3}d	|d
}|d|d}	t|	|�qWtd
�}
t|||j||
�|
j|�t|||
�t�t
jdt|j�dt|j�d�dS(s+
    Setup PHP Selector without CageFS
    s/usr/share/cagefsiNsError: CageFS is not installedisalt-php not foundsVError: failed to detect cpanel account. Please specify name of an account as argument:s'selectorctl --setup-without-cagefs USERs	/opt/alt/s/link/conf/alt_php.inis/.cl.selector/alt_s.iniR�s/usr/sbin/lvectl destroy s% &>/dev/null; /usr/sbin/lvectl apply s &>/dev/null(RR(RMt	cagefslibtImportErrorRRtget_alt_dirsR}RzR'RwRRtR�Rxtgetpwnamtpw_dirRRR�tpw_uidtcreate_selector_symlinksR�R�R�R�(targsR�R�RyRxtpwR�R�talt_patht	user_pathR�((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytsetup_without_cagefscsD




	


	

c	C`s�tjjtj�s/td�tjd�ntjjd�yddl	}Wn(t
k
rytd�tjd�nX|j�}|s�td�tjd�ntdt
�x>|D]6}d	|d
}tjj|�r�tj|�q�q�Wt�}|std�tjd�nddl}|j|�}|j}td�}t|||d
t�tjd|�t�tjtj�tjdt|j�dt|j�d�dS(s:
    Revert to default PHP Selector setup with CageFS
    s<PHP Selector is in default mode already ("with CageFS" mode)is/usr/share/cagefsiNsError: CageFS is not installedsalt-php not foundR�s	/opt/alt/s/link/conf/alt_php.inisError: failed to detect userR�R�s0/usr/sbin/cagefsctl --silent --force-update-etc s/usr/sbin/lvectl destroy s% &>/dev/null; /usr/sbin/lvectl apply s &>/dev/null(R'R(RwRRtRRRRMR�R�R�R�R�tislinktunlinkRzRxR�R�RR�tFalseR�R�R�R�(	R�R�R�R�RyRxR�R�R�((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytrevert_to_cagefs�s>





	
	cC`sztjjd�yddl}ddl}Wn(tk
rVtd�tjd�nX|j�rv|j	d|�ndS(s�
    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
    s/usr/share/cagefsiNsError: CageFS is not installeditoptions(
RR(RMR�tcagefsreconfigureR�RRtget_alt_versionstreplace_alt_settings(R�R�R�((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytapply_global_php_ini�s

cC`s{tt�rwt�}x1tj�D]#\}}|jd||f�q"Wtj|idd6|dj|�d6�ndS(Ns '%s' is required for '%s'tWARNRGt,R(R RRKtitemsRMR
t
print_diagRI(tprint_formatt
print_messagetmodules_listtmodule_namet
dep_module((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyt"_check_depencies_and_print_message�s	cC`s%t|�j|�}t|||�S(N(Rtlist_extensionstparse_extensions(tinterpreterR/Rtext_list((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytget_extensions�scC`s�g}x�|D]�}d}|dtkr2d}n|dtkrKd}n|dkrq|j||df�q
|ji|dd6dd	6t|�d
6�t|�}q
W|dkr�i|d6|d
6}|S|S(NR_iR`R5R;iRcR$RdtstateRHR/t
extensions(R�R�RMRaRp(R�R/Rt	json_listtexttactionRr((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyR��s
		,cC`s�d}d}y=ttdg�j�}|dkr7gS|jd�dSWnUtk
r�}||jkrwtd�n||jkr�td�nt|�nXd	S(
s�
    Return list of users that are in CageFS
    If CageFS is not installed or initialized
    throws exception and prints it
    :return:
    sNo such file or directorysCageFS is not initializeds--list-enabledR$s
isERROR: CageFS not installed.sWError: CageFS is not initialized. Use "/usr/sbin/cagefsctl --init" to initialize CageFSN(RtCAGEFSCTL_COMMANDR,RfRRR(tnot_installed_msgtnot_initialized_msgtusersR7((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytget_cagefs_users�s

c1C`s�i}d|d<d|d<t|d<t|d<t|d<d|d<t|d	<d
|d<t|d<i}g}t�t�r�td
�tjd�ny�tjtj	ddddddddddddddddddd d!d"d#d$d%d&d'd(ddd)d*d+d,d-d.d/d	d0d1d2d3d4d5d6d7d8d9d:g.�\}}Wn(tj
k
rpt�tjd�nXx�|D]�\}}|d�kr�t�tjd=�qx|d�kr�xf|jd?�D]4}y|j
t|��Wq�tk
r�q�q�Xq�Wqx|d�krt|d/<qx|d�kr=t|�tjd=�qx|d�kr`t�tjd=�qx|d�kr�t|�tjd=�qx|d�kr�t|dF<qx|d�kr�t|dI<qx|d�kr�t|dL<qx|d�kr�t|dO<qx|d�krt|dR<qx|d�krt|d<qx|d�kr5||d<qx|d�kr�||dY<t�}tj�rr|j|�}	q|jd?�}
t�}y�t|
�dkr�|j|�}	tj�d=kr?x*|j|	�D]}t�j|�q�Wq?nOx9|
D]1}||kr�||j|j|��7}q�q�Wd?j|�|dY<Wqtj k
r}
tj!j"t#|
�dZ�tjd�qXqx|d�kr�||d]<qx|d�kr�||d`<qx|d�kr�||dc<qx|d�kr�||df<qx|d�krt|d <qx|d�krt|d#<qx|d�kr2||dm<qx|d�krK||dp<qx|d�krd||ds<qx|d�kr}||dv<qx|d�kr�||dy<qx|d�kr�||d|<qx|d�kr�t|d(<qx|d�kr�t|d<qx|d�kr�t|d<qx|d�krt|d)<qx|d�kr,||d�<qx|d�krE||d�<qx|d�kr^||d�<qx|d�krw||d�<qx|d�kr�d.|d<qx|d�kr�t|d	<qx|d�kr�t|d0<qx|d�kr�t|d1<qx|d�kr�d2|d<qx|d�kr
d3|d<qx|d�kr,t|�|d<qx|d�krEd4|d<qx|d�kr^t|d6<qx|d�krwt|d7<qx|d�krxdY|kr�t$d��nt%�}
|
s�t$d��nt�}t�}x9|
D]1}||kr�||j|j|��7}q�q�Wd?j|�|dY<qxqxWt|�dkr�t|�d=kr�|dr�y"tt|d�j&�d=�Wq�t'k
r�q�Xq�t$d�d��ny�
dF|kre	|dd2kr�x�t|d�j(�D]}td�|�q�Wq8id�d�6gd�6}xPt|d�j(�D]8}|d�j
i|d=d�6|dd�6|d�d�6�q	Wtt)j*|��n�dI|kr�	t|d�j+|d�}t,||d|d�n�dO|kr�	td�t|d�j-|d��n[d]|kr!
t|d�j.|d]�|dd2kr8t/�q8ndc|kre
t|d�j0|dc�|dd2kr8t/�q8n�df|kr�
t|d�j1|df�|dd2kr8t/�q8n�d |kr;t2|d��t3|d|d|d�}|dd
krxE|D]}td�|�q�
Wq8|dd2kr8tt)j*|��q8n�
dm|kr�t2|d��t4|d�j5|dtt6d��|dmjd?����n�
dp|kr
t2|d��t4|d�j7|dtt6d��|dpjd?����tt8�r8t9|dd��q8n+
ds|kr�t2|d��t4|d�j:|dtt6d��|dsjd?����tt8�r�t9|dd��q8|dd2kr8t/�q8n�	dL|kr�t2|d��t|d|�j+|dY|d�}t,|�nK	dR|kr8
t2|d��td�t|d|�j-|dY|d��n	d/|krk
t2|d��t|d|�j;�n�d`|krt2|d��xN|j|	�D]=}t|d|�}|j.||d`|d|d�}q�
W|j<|j|	��|dr8t,|�q8n3d#|kr�t2|d��|dr�x�t=|d|�j>|dY|d�D]7}d�}|drod�}ntd�||d=f�qPWq8x�t=|d|�j?|dY|d�D]}t|d=�q�Wngdv|kr�t2|d��tj@�|dYjd?�}
xf|
D]^}t=|d|�}|j5dY|d|dd�tt6d��|dvjd?���d�t�qW|j<|
�n�dy|kr t2|d��tj@�|dYjd?�}
xW|
D]O}t=|d|�}|j7||dtt6d��|dyjd?����q�W|j<|
�nd||kr�t2|d��tj@�x`|j|	�D]O}t=|d|�}|j:||dtt6d��|d|jd?����qSW|j<|j|	��nyd(|krQt2|d��tj@�x@|j|	�D]/}t=|d|�}|jA||d�}q�W|j<|j|	��td?j|��n�d)|kr�t2|d��t|d|�jB|d�}
td?j|
��n�d�|kr�t2|d��t|d|�jC|d�|d�nWd�|kr�t2|d��tj@�xV|j|	�D]E}tD|d|�}|jE||d|d�|dt|d	�qW|j<|j|	��|dd2kr8tFjG|di�q8n�d�|krYt2|d��tj@�xV|j|	�D]E}tD|d|�}|jE||d|d�|dt|d	�q�W|j<|j|	��|dd2kr8tFjG|di�q8n�d�|krt2|d��tj@�xS|j|	�D]B}tD|d|�}|jH||d|d�|d|d	�q�W|j<|j|	��|dd2kr8tFjG|di�q8n&d6|kr�d}d}dY|krL|dYjd?�}n|drl|djd?�}ntD|d|�}|jI||�|j<|�|dd2kr8tFjG|di�q8nrd0|krt2|d��tFjG|dtD|d|�jJ|dY|d��n!d1|krnt2|d��tFjG|dtD|d|�jJ|dY|d�d�t�n�d7|kr8t�}x�|jK�jL�D]�}y4t�jM|�t�jN|�tD�jO|�Wq�tPjQk
r�q�tPjRk
r0}
|d	s1tFjS|did�d�6t#|
�d�6�q1q�Xq�WnWn�tTk
r�}tFjS|did�d�6|jUd�6�tjd�ndtVtWfk
r�t$d��nDtXk
r�}
tYjZ|
�}tFjS|did�d�6|d�6�nXdS(NR�R�R/sshow-alls
print-summarysshow-native-versiontplaintdecodertquietR;Rsapi-versions7selectorctl does not work in CageFS for PHP interpreteris6hi:lSsCcB:Y:N:E:D:R:v:Gu:b:ge:d:r:atpVLT:k:m:x:QqPjwWzthelpssetup-without-cagefssrevert-to-cagefssinterpreter=RKtsummarysuser-summarytcurrentsuser-currentsset-current=senable-alternative=sdisable-alternative=senable-extensions=sdisable-extensions=sreplace-extensions=sversion=slist-extensionssuser=sset-user-current=slist-user-extensionssenable-user-extensions=sdisable-user-extensions=sreplace-user-extensions=tallsreset-user-extensionss
list-usersschange-to-version=sadd-options=sreplace-options=sdelete-options=tbase64sapply-symlinks-ruless
print-optionssprint-options-safeRHtcsvtperlsapi-version=s
reset-optionss
update-backupsapply-global-php-inisexclude-pid-list=s
for-all-userss-hs--helpis--exclude-pid-listR�s--apply-symlinks-ruless--setup-without-cagefss--revert-to-cagefss--apply-global-php-inis-ls--listslist-alternativess-Ss	--summarysshow-summarys-ss--user-summarysshow-user-summarys-Cs	--currentsshow-currents-cs--user-currentsshow-user-currents-as--alls-vs	--versions-us--userRys
s-Bs
--set-currentsset-currents-bs--set-user-currentsset-user-currents-Ys--enable-alternativesenable-alternatives-Ns--disable-alternativesdisable-alternatives-Gs--list-extensionss-gs--list-user-extensionss-Es--enable-extensionssenable-extensionss-Ds--disable-extensionssdisable-extensionss-Rs--replace-extensionssreplace-extensionss-es--enable-user-extensionssenable-user-extensionss-ds--disable-user-extensionssdisable-user-extensionss-rs--replace-user-extensionssreplace-user-extensionss-ts--reset-user-extensionss-ps--print-summarys-Vs--show-native-versions-Ls--list-userss-Ts--change-to-versionschange-to-versions-ks
--add-optionssadd-optionss-ms--replace-optionssreplace-optionss-xs--delete-optionssdelete-optionss-Qs--base64s-qs--quiets-Ps--print-optionss--print-options-safes-js--jsons-ws--csvs
--api-versions-Ws--perls-zs--reset-optionss--update-backups--for-all-userss�--for-all-users and --user options are mutually exclusive options and cannot be used simultaneously.
Use --for-all-user OR --user instead.s=No changes were made: there are no users with cagefs enabled sWrong set of optionstERRORs%s	%s	%sRqRGRPtshorttfulliR(s%s %scS`s
|j�S(N(R,(RC((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyRFR$cS`s
|j�S(N(R,(RC((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyRF
R$sModules left by dependencies:cS`s
|j�S(N(R,(RC((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyRFR$s#Modules left/added by dependencies:R5R`R�cS`s
|j�S(N(R,(RC((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyRFKR$t	check_extcS`s
|j�S(N(R,(RC((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyRFWR$cS`s
|j�S(N(R,(RC((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyRFaR$tescapeRs(Incomplete or incorrect set of arguments(s-hs--help(s--exclude-pid-list(s--apply-symlinks-rules(s--setup-without-cagefs(s--revert-to-cagefs(s--apply-global-php-ini(s-ls--list(s-Ss	--summary(s-ss--user-summary(s-Cs	--current(s-cs--user-current(s-as--all(s-vs	--version(s-us--user(s-Bs
--set-current(s-bs--set-user-current(s-Ys--enable-alternative(s-Ns--disable-alternative(s-Gs--list-extensions(s-gs--list-user-extensions(s-Es--enable-extensions(s-Ds--disable-extensions(s-Rs--replace-extensions(s-es--enable-user-extensions(s-ds--disable-user-extensions(s-rs--replace-user-extensions(s-ts--reset-user-extensions(s-ps--print-summary(s-Vs--show-native-version(s-Ls--list-users(s-Ts--change-to-version(s-ks
--add-options(s-ms--replace-options(s-xs--delete-options(s-Qs--base64(s-qs--quiet(s-Ps--print-options(s--print-options-safe(s-js--json(s-ws--csv(s
--api-version(s-Ws--perl(s-zs--reset-options(s--update-backup(s--for-all-users(R�R/(R�R/(R�R/(R�R/(R�Ry(R�Ry(R�(R�Ry(R�Ry(R�R/Ry(R�R/Ry(R�R/Ry(R�R/Ry(R�R/(R�R/(R�R/Ry(R�R/Ry(R�R/Ry(R�Ry(R�Ry([RZR�RR"RRRRtgetoptR!tGetoptErrorRRfRMR�t
ValueErrorR�R�R�R�RRtwork_without_cagefstget_uidRKR R'tgeteuidt	get_namesRtcagefs_copy_etcRItNoSuchUserExceptionRRR�RR�tget_native_versiont	TypeErrortlist_alternativesRHROtget_summaryRYtget_versiontset_versionRstenable_versiontdisable_versionR^R�Rtenable_extensionsRtdisable_extensionsRR�treplace_extensionstapply_symlinks_rulestclean_crui_imagesRtlist_all_extensionstlist_enabled_extensionst%check_multiphp_system_default_versiontreset_extensionst
list_userstchange_to_versionR	tinsert_optionsR
t
print_datatdelete_optionst
reset_optionstget_optionsRvtkeyst_check_user_in_cagefst_backup_settingstbackup_php_optionsRt
NotCageFSUsertUnableToSaveDataR�RRRgtUnboundLocalErrort	Exceptiont	tracebackt
format_exc(R[tactionstexclude_pid_listtoptsR�toR�tpidtclpwdR�R�t	user_listRyR7RDtalternatives_dictRPR�RotcR�R�R�R/terrtmsg((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pytmainsx








	













		
#





























	
		
#"
6






)
&
&




	





	


	
%


*

*

















	
%
t__main__(It
__future__RRRRR�R'R�RtbuiltinsRtclselectRtclextselectRRtcluserselectRtcluserextselectRtcluseroptselectR	t
clselectprintR
Rtclcommon.sysctlRR
tclcommon.utilsRRR�RRtclselectexceptRRt
simplejsonRHR�RtAPI_1R�RRZRR"R4R:RXRYR^RaRpRsRzR}R�R�R�R�R�R�R�R�R�R�R�R�R�R�Rt__name__(((sH/opt/alt/python27/lib/python2.7/site-packages/clselect/clselectctlphp.pyt<module>	sj	5			'									)	
	
	.	*		
			��

Zerion Mini Shell 1.0