%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/clselect.pyc

�
i�B^c@`s�ddlmZddlmZddlmZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
dd	lmZd
efd��YZdS(i(tabsolute_import(tprint_function(tdivisionN(tglob(tmapi(tClSelectExcepttBaseClSelectException(tclprinttClSelectcB`s�eZdZdZdZdZdZdZdZedZ	edZ
ed	��Zed
��Z
dd�Zd
�Zd�Zd�Zd�Zd�Zed�Zd�Zd�Zd�Zd�Zed�Zd�Zd)d�Zd�Zee�Zd�Zee�Zd�Z ee �Z e!d)d�Z"d�Z#d�Z$d �Z%d!�Z&e!d"�Z'e!d#�Z(d$�Z)d)d%�Z*d&�Z+ed'�Z,e!d(�Z-RS(*s/etc/cl.selector/selector.confs/etc/cl.selector/defaults.cfgs/usr/bin/phps/etc/cl.selector/native.confs/etc/cl.selector/user.confs"/etc/cl.selector/php.extensions.d/s/var/lves
/php%s.dats/php_native_ver.datcC`s�y<dtjkr%tjjd�nddlm}m}Wntk
r[td��nX|�r|�rtd��ndS(Ns/usr/share/cagefsi(t!multiphp_system_default_is_ea_phptselector_modules_must_be_usedsCageFS not installed.sesystem default PHP version is alt-php. PHP Selector is disabled. Use cPanel MultiPHP manager instead.(tsystpathtappendt	cagefsctlR	R
tImportErrorR(R	R
((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt%check_multiphp_system_default_version$s
cC`stjjtj�S(N(tosRtexistsRt	USER_CONF(((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytwork_without_cagefs0stphpcC`s\||_|j�|_i|_i|_t�|_d|_t	j
�|_|j�dS(N(
t_itemt_get_default_config_handlert_dht_selector_contentst_native_contentstsett_hidden_extensionstNonet_native_versionRRtwithout_cagefst_load_config_files(tselftitem((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt__init__4s				cC`s:x3ttjj|jd��D]}|j|�qWdS(Ns*.cfg(RRRtjointCONFIGS_DIRt_load_config_file(R!tfilename((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR ?s%cC`s�tj�}y|j|�Wn5tjk
rT}tj|ddt|���nXy)|jj|j	dd�j
d��Wntjtjfk
r�nXdS(NtmessagesConfig is malformed, error: %st
extensionsthide_extensionst,(
tConfigParsertSafeConfigParsertreadtErrorRtFileProcessErrortstrRtupdatetgettsplittNoSectionErrort
NoOptionError(R!tfilepathtdhte((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR&Cs	 cC`s�|j�}g}xbt|j��D]N}y1|j|||d||d|jf�Wq%tk
rrq%q%Xq%Wt|�S(sM
        Returns alternatives summary as tuple
        :rtype: tuple
        tversiontdata(tget_all_alternatives_datatsortedtkeysR
RtKeyErrorttuple(R!talternativestlist_of_alternativestalt((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytlist_alternativesRs
cC`sB|js;y|j�Wq;tjtjfk
r7iSXn|jS(s�
        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
        (Rt_load_alternatives_configRtConfigNotFoundtWrongConfigFormat(R!((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR<ds	cC`sS|js|j�nyi|j||6SWn tk
rNtj|��nXdS(s�
        Returns selector config contents of certain version as dict.
        If no data loads them
        @param version: string, selector version
        @return: dict
        N(RRER?RtNoSuchAlternativeVersion(R!R:((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytget_alternatives_datavs	

cC`sw|j�}y@|jjd|j�}|||d||d|jfSWn$tjtfk
rr|j|�SXdS(s/
        Gets default selector version
        tversionsR:R;N(R<RR3RR,R5R?t_compose_native_info(R!tshow_native_versionRAR:((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytget_version�scC`sc|j�}|j||�|j|jd|j|j|f�}|jdj|�|j�dS(s/
        Sets default selector version
        RJs
N(RJ(R<t_check_alternativet_process_ini_filet
DEFAULTS_PATHt_add_or_change_optionRt_write_to_fileR$(R!R:RAtdefaults_contents((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytset_version�scC`sc|j�}|j||�|j|j|j|f|jd�}|jdj|�|j�dS(s5
        Removes disabled state from version
        tstates
N(R<RNRORPRt_remove_optionRRR$(R!R:RARS((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytenable_version�s	cC`sc|j�}|j||�|j|j|j|f|jd�}|jdj|�|j�dS(s-
        Marks a vesrion as disabled
        RUtdisableds
N(RURX(R<RNRORPRRQRRR$(R!R:RARS((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytdisable_version�s	cC`s!|jjd|j|fd�S(s�
        Method that allows you to check if some version is enabled in config.
        E.g. is_version_enabled('5.4') -> True
        :rtype: bool
        s%s%sRU(Rt
has_optionR(R!R:((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytis_version_enabled�s	c
C`s�|j�}|j|�}iitd6td6d6}t|j��dg}xL|D]D}||krui||<n|j|�||d<t||d<qVWy|jjd|j	�}Wn#t
jt
jfk
r�d}nXyt||d<Wn t
k
rtj|��nX|jd�||d<|jd�|j|d�xJtt|��D]6}||}	|	||	d||	dff||<q]Wt|�S(sl
        Returns state of alternatives
        @return: tuple[version, tuple[isEnabled, isDefault]]
        tenabledtdefaulttnativeRJi(R<RKtTruetFalseR=R>R[RR3RR,R5R6R?RRHtpoptremoveR
trangetlenR@(
R!RLRAtnative_infotsummarytalt_versionsR:tdefault_versiontidxtv((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytget_summary�s4





c	C`s`y�t|j�}x�|D]�}|j�}|dkr=qn|j�\}}}}|j|krjqn||jkr�i|j|<n||j|d<d|j|kr�i|j|d<n||j|d|<qW|js�tjddd��nWn]t	t
fk
r9}tjd|j|fdd��n#tk
r[tj|j��nXdS(s
        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:
        tR:R;R(salt-php packages not foundsCannot read %s: %s. Native usedN(
topentCONFIG_PATHtstripR4RRRRFRtOSErrortIOErrort
ValueErrorRG(	R!tftlinet
stripped_lineR"t
short_versiontlong_versiont	item_pathR9((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRE�s0

	
cC`s?tj�}t|_|r+|j|�n|j|j�|S(s:
        Gets ConfigParser handler for future use
        (R,R1toptionxformR.RP(R!RR8((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR
s	cC`s.|dkr*||kr*tj|��ndS(NR^(RRH(R:RA((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRNscC`s(ddjdgt|��}||S(s�
        Gets section header data tuple and returns ini section header string
        @param section_info: tuple
        @return: string
        s[%s]Rls%s(R$Rd(tsection_infotsection_fmt((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt_make_section_headers cC`sCttd�|��}|s/|ddkr?|jd�n|S(sN
        Removes empty lines from list and appends newline if missing
        cS`s
|dkS(NRl((ti((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt<lambda>)Rli����s
(tlisttfilterR
(R;((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt_smooth_data%scC`scg}g}g}	t}
t}t}|j|�}
yt|�}x�|D]�}|j�}|jd�r�t}
d|kr�t}n|
|kr�t}nt|�dkr�|j|�g}n|j|||	||��|g}	qIn|
r|	j|�qI|j|�qIW|j|||	||��|j	�Wnt
tfk
rTnX|r�d|
kr�dd|jdg}|j|�|}n|s_y|j
d�}Wntjk
r�nX|dkr|j|||
dd	j|�g||��q_|d
kr=|j|�|j|||
g||��q_|j|||
g||��n|S(s�
        Parses ini file by sections,
        calls supplied callable to modify section is question,
        returns file as list of strings
        t[s
[versions]is%s = nativeRlR^tdisable_extentionss
modules = R+tenable_extentions(R`R|RmRot
startswithR_RdtextendR
tcloseRpRqRt
_get_builtinsRtUnableToGetExtensionsR$(R!RRztfunctionR;ttracetactiontcontentstno_section_contentstsectiont
in_sectiontfoundthas_defaulttsection_headerRsRtR]tbuild_in((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRO/s\
		
		
	2
""cC`sYd|j}|j�}y||d|}Wn#tk
rT|jdd�}nX|S(s�
        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
        s%s-cliR;tsuffixtcli(RR<R?t_get_native_path(R!R:R"RAR((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt_get_php_binary_pathfs

cC`sP|j�}i|jd�d6}x'|j�D]}|j|�||<q/W|S(s
        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'
            }
        R^(R<R�R>(R!RAt
paths_dictR:((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pytget_all_php_binaries_pathsts
	cC`s0t|j|d�}|j�}|j�|S(s�
        Retrives contents of cache file for supplied php version
        :param version: PHP version to read file
        :return: file contents
        tr(RmtCACHEFILE_PATTERNR.R�(R!R:Rstoutput((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt_read_php_cache_file�s
c
C`s�g}y|j|�}Wn+ttfk
rF}tj||��nX|jd�}tjd�}||dkrz|p�t|� }xl|j	d�D][}|j
|�s�q�ndjtj	d|j���}	|	|j
kr�|j|	�q�q�W|S(s1
        Gets php compiled-in extensions
        s[Zends\wis
t_s\s+(R�RpRqRR�tfindtretcompileRdR4tmatchR$tlowerRR
(
R!R:tbuiltinsR�R9t
zend_indextmodule_patterntstripped_outputtexttmodule((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR��s"!c`sZ|j|�}t|�dks1||dkr5|S|jtt�fd�|���S(s�
        Adds 'modules' option to section or extends it
        @param section_info: tuple (item and version)
        @param section: list
        @param data: string
        @return: list
        ic`s|j��S(N(R�(R}(R;(sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR~�Rl(R|RdR�RR�(R!RzR�R;R�R�((R;sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRV�s
"c	C`s�|j|�}t|�dks1||dkr5|Sd}x;tt|��D]'}||j|d�rN|}PqNqNWd|}|r�|||<n
|j|�|j|�S(s�
        Adds 'modules' option to section or extends it
        @param section_info: tuple
        @param section: list
        @param data: tuple
        @return: list
        is%s = %sN(R|RdRRcR�R
R�(	R!RzR�R;R�R�toidxRitoption((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRQ�s"


cC`s`y.t|d�}|jd|�|j�Wn+ttfk
r[}tj||��nXdS(s$
        Saves data to file
        tws%s
N(RmtwriteR�RpRqRtUnableToSaveData(R!t
file_contentst	file_pathRsR9((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRR�scC`s�idd6dd6dd6}|j}|rP||krPd|j||f}n|jsl|j|j�n||jkr�|j|}tjj|�r�tjj|�r�|Sn|j|jS(s5
        Returns path for native interpreter
        s-cliR�s.initinis-fpmtfpms%s%s(RRt_load_native_contentsRRtisfiletislink(R!R�tsuffixesR"R((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR��s
		
%cC`s�y�t|j�}x{|D]s}|jd�r4qn||krFqnd|krXqnttd�|jd���\}}||j|<qW||jkr�|j|j|<n|j�Wn't	t
fk
r�|j|j|<nXdS(s�
        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'}
        t#t=cS`s
|j�S(N(Ro(tx((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR~�RlN(RmtNATIVE_CONFR�RRR4RtDEFAULT_PHP_PATHR�RpRq(R!tvalueRsRtR"R((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR��s 
'cC`sm|sdd|j�fS|jdt�}|rZd|dfd|df|j�fSdd|j�fS(NR^tverbosesnative (%s)ii(R�tget_native_versionR`(R!tshow_versiontnative_version((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRK�s
c
C`s�|jr|jStjd�}y,t|jd�}|j�}|j�WnGttfk
r�}|r�t	j
didd6t|�d6�ndSXxa|j
�D]S}|j|�}|r�|jd�|jd�}}	||	f|_||	fSq�WdS(	Ns(PHP\s+(?P<full>(?P<short>\d+\.\d+)\.\d+)R�ttexttERRORtstatusR(tshorttfull(RR�R�RmtCACHEFILE_NATIVE_VER_PATTERNR.R�RpRqRt
print_diagR1Rt
splitlinesR�tgroup(
R!R�tversion_patternRsR;R9RttmR�R�((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyR�s$	'N(.t__name__t
__module__RnRPR�R�RR%t
CACHEFILE_DIRR�R�tstaticmethodRRR#R R&RDR<RIR`RMRTRWRYR[RkRERRRNR|R�R_ROR�R�R�R�RVRQRRR�R�RKR�(((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyRsV

										!	$			7						
(t
__future__RRRRR�R,RRR�RtclselectexceptRRt
clselectprintRtobjectR(((sB/opt/alt/python27/lib/python2.7/site-packages/clselect/clselect.pyt<module>s

Zerion Mini Shell 1.0