/opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__
NameSizeModeActions
clextselect.cpython-37.pyc148740644editdlrm
clpassenger.cpython-37.pyc184890644editdlrm
clselect.cpython-37.pyc171060644editdlrm
clselectctl.cpython-37.pyc71490644editdlrm
clselectctlnodejsuser.cpython-37.pyc146790644editdlrm
clselectctlphp.cpython-37.pyc292120644editdlrm
clselectctlpython.cpython-37.pyc292400644editdlrm
clselectctlruby.cpython-37.pyc134050644editdlrm
clselectexcept.cpython-37.pyc150430644editdlrm
clselectprint.cpython-37.pyc50040644editdlrm
clselectstatistics.cpython-37.pyc58630644editdlrm
cluserextselect.cpython-37.pyc112340644editdlrm
cluseroptselect.cpython-37.pyc178190644editdlrm
cluserselect.cpython-37.pyc197810644editdlrm
utils.cpython-37.pyc140970644editdlrm
__init__.cpython-37.pyc6970644editdlrm
Edit: /opt/alt/python37/lib/python3.7/site-packages/clselect/__pycache__/clselectctlphp.cpython-37.pyc (29212B)
B ¥Ídü¨ã@s2ddlmZddlmZddlmZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl mZddlmZddlmZmZdd lmZdd lmZdd lmZdd 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,„ZdOd2d3„Z?dPd5d6„Z@dQd7d8„ZAd9d:„ZBd;d<„ZCd=d>„ZDd?d@„ZEdAdB„ZFdCdD„ZGdRdEdF„ZHdGdH„ZIdIdJ„ZJdKdL„ZKeLdMkr.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_statussr@Útextc s8|tkrd}d}nd}d}dddg‰g}|gi}xÚ|D]Ò‰tˆdƒ}d  d g|d¡}ˆd g} |  tt‡‡fd d „t|ƒƒƒ¡tˆd ƒ} | dkr¸d  d g|d¡}|  | ¡|dkrÒ| |t | ƒ¡d| kræ| d ||<|| | d t | dƒ| dœ¡q6W|dkr t   |¡S|dkr4d |¡SdS)NZPHPConfigurationZdefaultPHPversionÚavailable_versionsÚdefault_versionr=ÚdÚsrú z%srcsˆd|rˆ|pdS)Nrr;r)Úi)ÚaltÚstatesrrÚ¦óz format_summary..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 |ƒƒ¡t j ddddd 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/.bashrcz PATH=$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..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 rr‚r r#rˆr/r0rPrr•ÚcopyÚset_version_from_backupr–r) rurŽr—Úalt_dirsrr˜Zbase_dest_pathr‘Z base_src_pathÚalt_dirZsrc_pathÚ dest_pathr)r—rÚrestore_settings_from_backup2s$        rŸcCsbtj d¡r>tjddddtjddddtjddddn tjddddtjd ddddS) 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>tjddddtjddddtjddddn tjddddtjd ddddS) 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/r0r1rr rrrrÚenable_cagefs_servicefs  r¢c Csftj 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ƒdddddS)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¡rr r) Úargsr£rœrurtÚpwrŽrÚalt_pathÚ user_pathrrrrÚ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|||ddtjd|dddtƒt tj¡tjdt|jƒdt|jƒdddddS)z: Revert to default PHP Selector setup with CageFS z/dev/null; /usr/sbin/lvectl apply z &>/dev/null)r/r0rsrrprr r#rTr£r¤r¥r…ÚislinkÚunlinkrvrtr¦r§r r“rr r¢rr¨) r£rœrr¬rurtr«rŽrrrrÚrevert_to_cagefsŸs@           r±cCs`tj d¡yddl}ddl}Wn&tk rFtdƒt d¡YnX| ¡r\|j |ddS)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ÁcCsg}xp|D]h}d}|ddkr$d}n|ddkr4d}|dkrP| ||df¡q | |dd t|ƒd œ¡t|ƒ}q W|d krŒ||d œ}|S|S) Nr_rTr`Fr;rArr,)rcrdÚstaterN)r7Ú extensions)rTrarl)rÀr7r&Z json_listÚextÚactionrnrrrr¾ës     r¾c Csd}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¡YnXx¦|D]œ\}}|dkršxB|  d?¡D]4}y|  t |ƒ¡Wnt k rŽw^YnXq^Wq |d@kr°dA|d0<q |dBkrÐt|ƒt d=¡q |dCkrîtƒt d=¡q |dDkrt|ƒt d=¡q |dEkr$dA|dF<q |dGkr:dA|dH<q |dIkrPdA|dJ<q |dKkrfdA|dL<q |dMkr|dA|dN<q |dOkr’dA|d<q |dPkr¨||d<q |dQkrº||dR<tƒ}t ¡rÖ| |¡} nà|  d?¡} tƒ} yŠt| ƒdkr2| |¡} t ¡d=krnx^| | ¡D]} tƒ | ¡qWndA|d$<q |d^krT||d_<q |d`krj||da<q |dbkr€||dc<q |ddkr–||de<q |dfkr¬||dg<q |dhkrÂ||di<q |djkrØdA|d)<q |dkkrîdA|d<q |dlkrdA|d<q |dmkrdA|d*<q |dnkr0||do<q |dpkrF||dq<q |drkr\||ds<q |dtkrr||du<q |dvkrˆd/|d <q |dwkrždA|d <q |dxkr´dA|d1<q |dykrÈdA|d2<nô|dzkrÜd3|d <nà|d{krðd4|d <nÌ|d|krt |ƒ|d <n´|d}krd5|d <n |d~kr0dA|d7<nŒ|dkrDdA|d8<nx|d€kr dR|kr`t!dƒt"ƒ} | stt!d‚ƒtƒ}tƒ} x,| D]$} | | kr†| | | | ¡¡7} q†Wd? | ¡|dR<q Wt|ƒdkr(t|ƒd=kr|drytt|dƒ #¡d=ƒWnt$k rYnXn t!dƒd„ƒ y:dW|krJdN|krJtƒ %¡dF|kræ|d d3krŒx~t|dƒ &¡D]}td…|ƒqtWnVd†gd‡œ}x|dR|d¡D]D}d–}|ddk r:d—}n|ddAk rLd˜}tdŒ||d=fƒ qWn6x4t=|d|ƒ ?|dR|d¡D]}t|d=ƒ qˆWn¾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|krt0|d™ƒt @¡| | ¡d=} t=|d|ƒ}| 8| |dtt4ddŽ„|di  d?¡ƒƒ¡| <| | ¡¡nDd)|kr†t0|d™ƒt @¡| | ¡d=} t=|d|ƒ}| C| |d¡}| <| | ¡¡td? |¡ƒnÚd*|krÄt0|d‹ƒt|d|ƒ D|d¡} td? | ¡ƒnœdo|krút0|d‹ƒt|d|ƒ E|do|d¡nfdq|krˆt0|d™ƒt @¡| | ¡d=} tF|d|ƒ}| G| |d|dq|d dA|d ¡| <| | ¡¡|d d3kr`tH I|d i¡nØds|krt0|d™ƒt @¡| | ¡d=} tF|d|ƒ}| G| |d|ds|d d|d ¡| <| | ¡¡|d d3kr`tH I|d i¡nJdu|kr¢t0|d™ƒt @¡| | ¡d=} tF|d|ƒ}| J| |d|du|d |d ¡| <| | ¡¡|d d3kr`tH I|d i¡n¾d7|kr*d} d}dR|krÌ|dR  d?¡} |drä|d  d?¡}tF|d|ƒ}| K| |¡| <| ¡|d d3kr`tH I|d i¡n6d1|krjt0|d“ƒtH I|d tF|d|ƒ L|dR|d¡¡nöd2|kr®t0|d“ƒtHjI|d tF|d|ƒ L|dR|d¡dAdžn²d8|kr`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} ~ XYnXqÌWWnt: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ÚquietrArz api-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-currentz set-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-optionsz add-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..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__rrrrr 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Ú sv             5  '    " *  /+ z