jg$zddlmZddlmZddlmZddlZddlZddlZddlmZddl Z ddl Z ddl Z ddl mZddlmZdd lmZdd lmZmZdd lmZmZdd lmZdd lmZddlmZddlm Z ddl!m"Z"ddl m#Z#mZgdZ$eddZ%eddZ&dZ'dZ(dZ)dZ*dZ+d#dZ,dZ-d#dZ.dZ/d Z0d!Z1d"Z2dS)$)absolute_import)print_function)divisionN) namedtuple)List) iteritems) clpassenger)cpusers getCPName)drop_privilegesClPwd)is_no_php_binaries_on_cpanel)ClSelectExcept) NodeManager) PythonManager) get_abs_rel)Optionalr) public_htmlrubyvenv virtualenvz .cl.selectorz.cagefswwwnodevenvApplicationSummaryuserversiondoc_root interpreter app_statusInterpreterSummaryr version_fullenabled installedc@d|vrtdtj|rtd|ddkrtd|tvrtd|zt jd|}|td dS) N z#Directory should not contain spacesz+Directory should be relative to user's home/z-Directory should not contain a trailing slashzDirectory "%s" not allowedz [-\.\w\/]+$z*Directory name contains invalid characters) ValueErrorospathisabsDISABLED_DIRECTORY_NAMESrematch) directory all_valids K/opt/cloudlinux/venv/lib64/python3.11/site-packages/clselect/clselectctl.pycheck_directoryr4&s i>??? w}}YIGHHH}HIII,,,5 ABBB33IEFFFchdD]}||vrtd|dvrd}|dS)N)#?z./zAlias is not valid).r))r*strip)aliascs r3 get_aliasr>4sR 33 ::122 2   ;;s  r5cV|ddddS)N_r)z//replace)prefixs r3 get_directoryrD?s& >>#s # # + +D# 6 66r5cV|ddddS)Nr@__r)rA)r1s r3 get_prefixrGCs(   S$ ' ' / /S 9 99r5c|s,tj}tj|j}|dkrt d|S)Nrootz8User parameter must be specified if current user is root)r+geteuidpwdgetpwuidpw_namer*)r current_euids r3get_userrOGsD 2z|| |L))1 v~~STTT Kr5c|dvrtj|Stj|otj|S)z Application is valid only if binary and app_root exists :param binary_path: path to binary in virtual environment :param app_root: path to root directory of application :return: result of checking :rtype: bool nodejspython)r+r,isdirisfile)rapp_root binary_paths r3_verify_applicationrXPsK***w}}X&&& 7>>+ & & B27==+B+BBr5c d}g}tj}tD]:} tjr@ddlm}||df}ttdtd|}t|5tj || t|||dddn #1swxYwY#tj$rYt"$rht%jt(}|d||t-jt1t-jfzY8wxYw|S)z8Find and return all apps for given interpreter on serverNr) userdomainsT)as_rootc|r|dndS)Nr)xs r3z-server_applications_summary..psa&9addTr5z]DEBUG: user %s present in panel but doesn't exist in system. Process euid=%d. Trace: %s at %s)r+rJr detectis_da"clcommon.cpapi.plugins.directadminrZlistfiltermapr rKgetpwnamextend _user_applications_short_summaryrNoSuchUserExceptionKeyErrorlogging getLogger__name__error traceback format_excstr extract_stack)r domains_data applicationseuidrrZ domains_listloggers r3server_applications_summaryrx]sLL :<>>? #99(   !&& W W T"""##4T; UUWWW W W W W W W W W W W W W W W W (    H _ _ _&x00F LLxi&:&<&\>\]^ _ _ _ _ _  _ s=A"C 9C CC CC CE.A-EEc #BK|}|dvr |dkrddlm}nddlm}||}n#tj$rYdSwxYwt |D]j\}} t||\}} n#tj$rY+wxYwt||r+t||d|z|d||d VkdSt tj || D]\} }|d |kr|d |d }} t||| r{tj tj tj | } t|| |d|d d VdS)a Return generator with all applications for given user and interpreter. To increase performance, only a small part of the information about the applications is given. :param user: name of panel user :param interpreter: name of interpreter (python, ruby, etc) :param domains_docroots_data: total data about users domains :return: Generator[ApplicationSummary] rQrRr )ApplicationsManagerNz %s_versiondomainr r)userdomains_datarbinaryr1docrootstarted)clselectnodejs.apps_managerrzclselectpython.apps_managerget_user_config_datar WrongDatarrrXrr summaryr+r,basenamedirname) rrdomains_docroots_datar|rz config_dataappdatarVr@dummyr} it_versions r3rhrhs5-*** h&&LLLLLLLLLLLLL--//DDTJJKK'    FF ";//  IC )$44 !!!+    ";99 (  !;<!(^ +#L1   %[%8P`%a%a%abb ` `KE4M"k11 $H~tK/@HF";&AA `W--bgoobgoof>U>U.V.VWW (dJQUV_Q`59-5HU^`````` ` `s!0;A A&A::B  B cj|dkrtjS|dkrtjSdS)z-Return default version for given interpreter rRrSN)rdefault_versionr)rs r3get_default_versionrs7h}},,h.. 4r5c#K|dkr#td}n7|dkr#td}ntt |dD]\}}|ddk}|dkr6t t |dd }n0d|dd d }t|||d Vd S) z.Return generator for interpreters all versionsrRT)installed_interpreters_onlyrSavailable_versionsstatusr$r9rNr") r get_summaryrNotImplementedErrorrrqintsplitjoinr!)r interpretersr version_infor$ major_versions r3_iter_interpretersrsh"}}00T0RR  $22t2TT !###!*<8L+M!N!Noox(I5 ( " "GMM#$6$6q$9 : :;;MM HHW]]3%7%7%;<rDrGrOrXrxrhrrrrr]r5r3rso'&&&&&%%%%%% """"""""""""--------11111111FFFFFF******444444888888!!!!!!!!rrrZ 46rssZ 46ijj G G G777::: C C C C'''T.`.`.`.`booo& 5 5 5r5