/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__/clselect.cpython-37.pyc (17106B)
B ¥ÍdžTã@sœddlmZddlmZddlmZddlZddlZddlZddlmZddlm Z ddl m Z ddl m Zd d lmZmZd d lmZGd d „d eƒZdS)é)Úabsolute_import)Úprint_function)ÚdivisionN)Úglob)Úmap)ÚFormattedException)Ú configparseré)ÚClSelectExceptÚBaseClSelectException)Úclprintc@speZdZdZdZdZdZdZdZdZ dZ e d Z e d Z e d d „ƒZe d d„ƒZdOdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdPdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„ZdQd)d*„Zd+d,„ZdRd.d/„Zd0d1„Ze eƒZd2d3„Z e e ƒZ d4d5„Z!e e!ƒZ!dSd7d8„Z"d9d:„Z#d;d<„Z$d=d>„Z%d?d@„Z&dTdAdB„Z'dUdCdD„Z(dEdF„Z)dVdGdH„Z*dIdJ„Z+dWdKdL„Z,dXdMdN„Z-d-S)YÚClSelectz/etc/cl.selector/selector.confz/etc/cl.selector/defaults.cfgz /usr/bin/phpz/etc/cl.selector/native.confz/etc/cl.selector/user.confz"/etc/cl.selector/php.extensions.d/z/usr/sbin/cagefsctlz/var/lvez /php%s.datz/php_native_ver.datcCs`y*dtjkrtj d¡ddlm}m}Wntk rFtdƒ‚YnX|ƒs\|ƒs\tdƒ‚dS)Nz/usr/share/cagefsr)Ú!multiphp_system_default_is_ea_phpÚselector_modules_must_be_usedzCageFS not installed.zesystem default PHP version is alt-php. PHP Selector is disabled. Use cPanel MultiPHP manager instead.)ÚsysÚpathÚappendZ cagefsctlrrÚ ImportErrorr )rr©rúB/opt/alt/python37/lib/python3.7/site-packages/clselect/clselect.pyÚ%check_multiphp_system_default_version's   z.ClSelect.check_multiphp_system_default_versioncCstj tj¡S)N)ÚosrÚexistsr Ú USER_CONFrrrrÚwork_without_cagefs3szClSelect.work_without_cagefsÚphpcCs@||_| ¡|_i|_i|_tƒ|_d|_t  ¡|_ |  ¡dS)N) Ú_itemÚ_get_default_config_handlerÚ_dhÚ_selector_contentsÚ_native_contentsÚsetÚ_hidden_extensionsÚ_native_versionr rZwithout_cagefsÚ_load_config_files)ÚselfÚitemrrrÚ__init__7s  zClSelect.__init__cCsP| d¡t | d¡¡f|jt ¡fg}x"|D]\}}tj |¡rDq.|‚q.WdS)NÚcli)Ú_get_native_pathr ZNativeNotInstalledÚ _CAGFSCTLZMissingCagefsPackagerrr)r%Z utilitiesrÚerrorrrrÚcheck_requirementsAs  zClSelect.check_requirementscCs,x&ttj |jd¡ƒD]}| |¡qWdS)Nz*.cfg)rrrÚjoinÚ CONFIGS_DIRÚ_load_config_file)r%Úfilenamerrrr$MszClSelect._load_config_filesc Cs˜tjddd}y| |¡Wn:tjk rV}ztj|dt|ƒd‚Wdd}~XYnXy|j |  dd¡  d¡¡Wntj tj fk r’YnXdS)NF)Ú interpolationÚstrictzConfig is malformed, error: %s)ÚmessageÚ extensionsZhide_extensionsú,) Ú ConfigParserZSafeConfigParserÚreadÚErrorr ZFileProcessErrorÚstrr"ÚupdateÚgetÚsplitÚNoSectionErrorÚ NoOptionError)r%ÚfilepathÚdhÚerrrr/Qs$zClSelect._load_config_filec Csl| ¡}g}xVt| ¡ƒD]F}y*| |||d||d|jf¡Wqtk r^wYqXqWt|ƒS)zM Returns alternatives summary as tuple :rtype: tuple ÚversionÚdata)Úget_all_alternatives_dataÚsortedÚkeysrrÚKeyErrorÚtuple)r%Ú alternativesZlist_of_alternativesZaltrrrÚlist_alternatives`s  zClSelect.list_alternativesc Cs6|js0y | ¡Wntjtjfk r.iSX|jS)aá Returns dict of all selector config contents. If no data loads them :return: {'4.4': {'version': '4.4.9', 'data': {'lsphp': '/opt/alt/php44/usr/bin/lsphp', 'php.ini': '/opt/alt/php44/etc/php.ini', 'php': '/opt/alt/php44/usr/bin/php-cgi', 'php-cli': '/opt/alt/php44/usr/bin/php'}}} :rtype: dict )rÚ_load_alternatives_configr ÚConfigNotFoundÚWrongConfigFormat)r%rrrrDrs  z"ClSelect.get_all_alternatives_datacCs@|js| ¡y||j|iStk r:t |¡‚YnXdS)z³ Returns selector config contents of certain version as dict. If no data loads them @param version: string, selector version @return: dict N)rrKrGr ÚNoSuchAlternativeVersion)r%rBrrrÚget_alternatives_data„s zClSelect.get_alternatives_dataFc Cs^| ¡}y0|j d|j¡}|||d||d|jfStjtfk rX| |¡SXdS)z/ Gets default selector version ÚversionsrBrCN)rDrr;rr6r=rGÚ_compose_native_info)r%Úshow_native_versionrIrBrrrÚ get_version’s zClSelect.get_versioncCsF| ¡}| ||¡| |jd|j|j|f¡}| d |¡|j¡dS)z/ Sets default selector version )rPÚ N)rDÚ_check_alternativeÚ_process_ini_fileÚ DEFAULTS_PATHÚ_add_or_change_optionrÚ_write_to_filer-)r%rBrIÚdefaults_contentsrrrÚ set_version s  zClSelect.set_versioncCsF| ¡}| ||¡| |j|j|f|jd¡}| d |¡|j¡dS)z5 Removes disabled state from version ÚstaterTN)rDrUrVrWrÚ_remove_optionrYr-)r%rBrIrZrrrÚenable_version®s zClSelect.enable_versioncCsF| ¡}| ||¡| |j|j|f|jd¡}| d |¡|j¡dS)z- Marks a vesrion as disabled )r\ZdisabledrTN)rDrUrVrWrrXrYr-)r%rBrIrZrrrÚdisable_version¼s zClSelect.disable_versioncCs|j d|j|fd¡ S)z› Method that allows you to check if some version is enabled in config. E.g. is_version_enabled('5.4') -> True :rtype: bool z%s%sr\)rZ has_optionr)r%rBrrrÚis_version_enabledÊszClSelect.is_version_enabledc CsF| ¡}| |¡}ddddœi}t| ¡ƒdg}x:|D]2}||krLi||<| |¡||d<d||d<q8Wy|j d|j¡}Wn tj tj fk r¢d}YnXyd||d<Wnt k rÒt   |¡‚YnX| d¡||d<| d¡| |d¡x>tt|ƒƒD].}||} | || d|| dff||<q Wt|ƒS) zl Returns state of alternatives @return: tuple[version, tuple[isEnabled, isDefault]] ÚnativeTF)ÚenabledÚdefaultrbrcrPr)rDrQrErFr`rr;rr6r=r>rGr rNÚpopÚremoverÚrangeÚlenrH) r%rRrIZ native_infoZsummaryZ alt_versionsrBZdefault_versionÚidxÚvrrrÚ get_summaryÓs4     zClSelect.get_summaryc Csy®t|jƒ}xŠ|D]‚}| ¡}|dkr(q| ¡\}}}}|j|krDq||jkrXi|j|<||j|d<d|j|kr‚i|j|d<||j|d|<qW|js¬tjddd‚Wn^tt fk rì}ztjd|j|fdd‚Wdd}~XYn"t k r t  |j¡‚YnXdS)a Parses selector config file and fills an instance config dict. Example: {'4.4': {'version': '4.4.9', 'data': {'lsphp': '/opt/alt/php44/usr/bin/lsphp', 'php.ini': '/opt/alt/php44/etc/php.ini', 'php': '/opt/alt/php44/usr/bin/php-cgi', 'php-cli': '/opt/alt/php44/usr/bin/php'}}} :raises ClSelectExcept.ConfigNotFound: :raises ClSelectExcept.WrongConfigFormat: ÚrBrCNzalt-php packages not found)r3zCannot read %s: %s. Native used) ÚopenÚ CONFIG_PATHÚstripr<rrr rLÚOSErrorÚIOErrorÚ ValueErrorrM) r%ÚfÚlineZ stripped_liner&Z short_versionZ long_versionZ item_pathrArrrrKôs0        z"ClSelect._load_alternatives_configNcCs4tjddd}t|_|r$| |¡n | |j¡|S)z: Gets ConfigParser handler for future use NF)r1r2)r6r9Z optionxformr7rW)r%rr@rrrrs   z$ClSelect._get_default_config_handlercCs|dkr||krt |¡‚dS)Nra)r rN)rBrIrrrrU$szClSelect._check_alternativecCs dd dgt|ƒ¡}||S)z‘ Gets section header data tuple and returns ini section header string @param section_info: tuple @return: string z[%s]rkz%s)r-rg)Ú section_infoZ section_fmtrrrÚ_make_section_header)szClSelect._make_section_headercCs0ttdd„|ƒƒ}|r"|ddkr,| d¡|S)zN Removes empty lines from list and appends newline if missing cSs|dkS)Nrkr)ÚirrrÚ7óz'ClSelect._smooth_data..éÿÿÿÿrT)ÚlistÚfilterr)rCrrrÚ _smooth_data3s zClSelect._smooth_dataTc CsÀg}g}g} d} d} d} | |¡} y´t|ƒ}xŠ|D]‚}| ¡}| d¡ršd} d|krXd} | |krdd} t|ƒdkr~| |¡g}| ||| ||ƒ¡|g} q2| rª|  |¡q2| |¡q2W| ||| ||ƒ¡| ¡Wntt fk rîYnX| sd| krdd|j dg}| |¡|}| s¼y|  d¡}Wnt j k rJYnX|d krz| ||| d d  |¡g||ƒ¡nB|d kr¦| |¡| ||| g||ƒ¡n| ||| g||ƒ¡|S) z• Parses ini file by sections, calls supplied callable to modify section is question, returns file as list of strings Fú[Tz [versions]rz %s = nativerkraZdisable_extentionsz modules = r5Zenable_extentions)rurlrnÚ startswithrgÚextendrÚcloserorprÚ _get_builtinsr ÚUnableToGetExtensionsr-)r%rrtÚfunctionrCÚtraceÚactionÚcontentsZno_section_contentsÚsectionZ in_sectionÚfoundZ has_defaultÚsection_headerrrrsrcZbuild_inrrrrV=s\         $  zClSelect._process_ini_filecCsLd|j}| ¡}y||d|}Wn tk rF|jdd}YnX|S)zÜ Retrives path to php binary for supplied version :param version: php version to retrive path :return: path to php binary. If alternative version not found native php binary path returned z%s-clirCr()Úsuffix)rrDrGr))r%rBr&rIrrrrÚ_get_php_binary_pathts zClSelect._get_php_binary_pathcCs:| ¡}d| d¡i}x| ¡D]}| |¡||<q W|S)a Retrives paths to php binary for all versions :return: Dictionary version -> path. Example: { '5.2': '/opt/alt/php52/usr/bin/php', '5.3': '/opt/alt/php53/usr/bin/php', 'native': '/usr/bin/php' } ra)rDr‹rF)r%rIZ paths_dictrBrrrÚget_all_php_binaries_paths‚s z#ClSelect.get_all_php_binaries_pathscCs$t|j|dƒ}| ¡}| ¡|S)zš Retrives contents of cache file for supplied php version :param version: PHP version to read file :return: file contents Úr)rlÚCACHEFILE_PATTERNr7r€)r%rBrrÚoutputrrrÚ_read_php_cache_file‘szClSelect._read_php_cache_filec CsÐg}y| |¡}Wn"ttfk r4t |¡‚YnXd\}}| |¡| |¡}}|dkr`dn |t|ƒ}|||…}t d¡} xH|  d¡D]:} |   | ¡sžqŽd  t  d|   ¡¡¡} | |j krŽ| | ¡qŽW|S)zÎ Gets php extensions from the /var/lve/phpX.X.dat cache file, which contains list of modules that are either compiled-in or enabled in /opt/alt/phpXX/etc/php.ini config file )z [PHP Modules]z[Zendryrz\wrTÚ_z\s+)rrorpr r‚ÚfindrgÚreÚcompiler<Úmatchr-Úlowerr"r) r%rBÚbuiltinsrZ start_patternZ end_patternZ start_indexZ end_indexZ modules_listZmodule_patternZextÚmodulerrrrœs"    zClSelect._get_builtinscsB| |¡}t|ƒdks"||dkr&|S| tt‡fdd„|ƒƒ¡S)zÅ Adds 'modules' option to section or extends it @param section_info: tuple (item and version) @param section: list @param data: string @return: list rcs | ˆ¡ S)N)r~)rv)rCrrrwÅrxz)ClSelect._remove_option..)rurgr|rzr{)r%rtr‡rCr„r‰r)rCrr]¹s  zClSelect._remove_optionc Cs‚| |¡}t|ƒdks"||dkr&|Sd}x,tt|ƒƒD]}|| |d¡r8|}Pq8Wd|}|rn|||<n | |¡| |¡S)z± Adds 'modules' option to section or extends it @param section_info: tuple @param section: list @param data: tuple @return: list rNz%s = %s)rurgrfr~rr|) r%rtr‡rCr„r‰ZoidxrhZoptionrrrrXÇs   zClSelect._add_or_change_optionc Cs\y$t|dƒ}| d|¡| ¡Wn2ttfk rV}zt ||¡‚Wdd}~XYnXdS)z$ Saves data to file Úwz%s N)rlÚwriter€rorpr ZUnableToSaveData)r%Z file_contentsZ file_pathrrrArrrrYÞs   zClSelect._write_to_filecCs~ddddœ}|j}|r0||kr0d|j||f}|jsB| |j¡||jkrr|j|}tj |¡rrtj |¡sr|S|j|jS)z5 Returns path for native interpreter z-cliz.iniz-fpm)r(ZiniZfpmz%s%s)rr Ú_load_native_contentsrrÚisfileÚislink)r%rŠÚsuffixesr&rrrrr)és    zClSelect._get_native_pathc Csªy€t|jƒ}xR|D]J}| d¡r"q||kr,qd|kr6qttdd„| d¡ƒƒ\}}||j|<qW||jkrv|j|j|<| ¡Wn$t t fk r¤|j|j|<YnXdS)zÒ Parses native.conf file and loads it as dict, for example: {'php-fpm': '/usr/local/sbin/php-fpm', 'php.ini': '/usr/local/lib/php.ini', 'php': '/usr/bin/php', 'php-cli': '/usr/bin/php'} ú#ú=cSs| ¡S)N)rn)Úxrrrrw rxz0ClSelect._load_native_contents..N) rlÚ NATIVE_CONFr~rzrr<r ÚDEFAULT_PHP_PATHr€rorp)r%Úvaluerrrsr&rrrrr›üs       zClSelect._load_native_contentscCsR|sdd| ¡fS|jdd}|rDd|dfd|df| ¡fSdd| ¡fS)NraF)Úverbosez native (%s)rr )r)Úget_native_version)r%Z show_versionZnative_versionrrrrQs    zClSelect._compose_native_infoc CsÄ|jr |jSt d¡}y t|jdƒ}| ¡}| ¡Wn@ttfk rv}z|rft   ddt |ƒdœ¡dSd}~XYnXxF|  ¡D]:}|  |¡}|r‚| d¡| d¡}} || f|_|| fSq‚WdS)Nz(PHP\s+(?P(?P\d+\.\d+)\.\d+)rÚtextZERROR)Ústatusr3ÚshortÚfull)r#r“r”rlÚCACHEFILE_NATIVE_VER_PATTERNr7r€rorpr Z print_diagr9Ú splitlinesr•Úgroup) r%r¥Zversion_patternrrrCrArsÚmr©rªrrrr¦s$      zClSelect.get_native_version)r)F)F)N)TN)T)T)N)F)T).Ú__name__Ú __module__Ú __qualname__rmrWr£r¢rr.r*Z CACHEFILE_DIRrŽr«Ú staticmethodrrr'r,r$r/rJrDrOrSr[r^r_r`rjrKrrUrur|rVr‹rŒrrr]rXrYr)r›rQr¦rrrrr sZ     !$  7     r )Ú __future__rrrrr“rrr—rZclcommonrZ future.movesrr6Úclselectexceptr r Ú clselectprintr Úobjectr rrrrÚs