%PDF- %PDF-
Mini Shell

Mini Shell

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

�
i�B^c@`sTddlmZddlmZddlmZddlZddlZddlZddlZddlj	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlmZdd
lm Z m!Z!m"Z"ddl#m$Z$m%Z%ddl&m'Z'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6m7Z7m8Z8ddl5m9Z9ddl:m;Z;m<Z<m=Z=ddl>m=Z?dZ@d�ZAdeBfd��YZCdS(i(tprint_function(tabsolute_import(tdivisionN(tAnyStr(t	iteritems(tClPwd(tFormattedException(t
MailHelper(tis_ascii_string(tCloudlinuxLicenseLib(tclselectctl(tget_abs_reltmkdir_ptrun_process_in_cagefs(tBaseSelectorErrortAcquireApplicationLockError(tprint_dictionarytreplace_params(t
CONFIG_DIR(t
PkgManager(tis_clpassenger_active(tdefaultdict(tMIMEText(tmkstempi(tNODEJStPYTHONtPHP(tparse_cloudlinux_selector_opts(tCloudlinuxSelectorLibtOK_REStClSelectExcept(Rs.lockcC`s
t||�S(N(topen(t	file_nametmode((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt_open;stCloudlinuxSelectorcB`s�eZd�Zd�Zed�Zd�Zd�Zed��Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Zed��Zedd�Zed��Z ed��Z!d�Z"e#j$d ��Z%d!�Z&d"�Z'd#�Z(d$�Z)d%�Z*d&�Z+d'�Z,d(�Z-d)�Z.d*�Z/d+�Z0ed,��Z1RS(-cC`spt|_i|_d|_tj�dk|_d|_t|_	d|_
d|_tjj
td�|_dS(Nis--backgroundtscloudlinux-selector_bkg.pid(tFalset_is_jsont_optstNonet
_selector_libtostgeteuidt
_is_root_usert_lockt_is_bkg_option_presentt_bkg_optiont_nj_ver_move_fromtpathtjoinRt_pid_file_name(tself((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt__init__As							cC`s�|jdttgkrtSt|jd|jdg�rAtSt|jd|jd|jd|jd|jd|jd	|jd
|jd|jd|jd
|jd|jd|jd|jd|jdg�r�tStS(sx
        Check if cloudlinux-selector called with application operations
        :return:  True if lock is need
        s
--interpreterschange-version-multipletcreatetstarttrestarttdestroytmigratetstopsinstall-modulessuninstall-moduless
run-scripts
--app-modes
--env-varss--new-app-roots--new-domains
--new-app-uris
--new-versions--startup-file(R'RRR%tanytTrue(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pytis_app_lock_neededMs, 













c	C`s|j�sdS|jd|jd}}|jjj||d|d|�\}}tjj|�smdStjj|t	�}y9t
|d�|_tj
|jj�tjtjB�WnLtk
r	}|jtjkr�d}t|d|��nt|��nXdS(	s[
        Acquire lock for application if this lock is needed
        :return: None
        Ns--users
--app-roottchk_app_roottchk_envsa+s6Disk quota exceeded. Please, free space and try again.treason(R>R'R)tapps_managertget_app_foldersR*R1texistsR2tLOCKRR-tfcntltflocktfilenotLOCK_EXtLOCK_NBtIOErrorterrnotEDQUOTR(	R4tignore_missing_app_roottusernametapp_roott_tapp_venvt	lock_fileteRA((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pytacquire_app_lock_if_neededks"'cC`s'|jr#|jdr#|j�ndS(Ns
--new-version(R,R'tsend_notification(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pytsend_notification_if_needed�scC`s�d}t||jd�}d}d|jd|d<||d<yWtj|jddd�d
}|d
}||d<t�}|j||g|�Wn tttjj	fk
r�nXdS(NsqNodeJS version for your application %s  was changed by admin. Please verify that application functions correctly.s
--app-roots%CloudlinuxNodejsNotify@noresponse.coms<NodeJS version for your application %s  was changed by admintSubjecttFroms--usertkeylstmailtdnstlocaletreselleritTo(R[R\R]R^(
RR'tcpapitcpinfoRtsendmailt
IndexErrortKeyErrortcpapiexceptionstNotSupported(R4tMSG_TEMPtmsgtmetcp_userinfotuser_data_emailt
mailhelper((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyRV�s




	cC`s6|s
dSg|j�jd�D]}|r |^q S(Nt,((tstriptsplit(tmodules_optionstmodule((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt
parse_modules�scC`swd|k|_|j|k|_|jr=|j|j�nzyt�}|j�sut|_|jidd6�S|j|�|_	t
|j	d�|_|jj|j	�r
|j
��It|j	d|jj|�}|d}|j|d�|j�WdQX|S|jj|j	�r�d	d
|j	d|jjg|}|j
��.tj|di�}|j�|j�WdQX|jS|jjs�|j|jj�S|jd|j	d
�|j	dr&|j|j	d|j	d�\}}|dkr
||j	d<q&|jtd|��n|j	dr@|j�n|j	drZ|j�n�|j	drt|j�n�|j	dr�|j�n�|j	d
r�|j �n�|j	dr�|j!�n�|j	dr�|j"�ns|j	dr�|j#�nY|j	dr|j$�n?|j	dr*|j%�n%|j	drD|j&�n|j	dr^|j'�n�|j	dsx|j	dr�|j(�n�|j	ds�|j	dr�|j)�n�|j	dr�|j*|jj+|j	d|j	d |j	d!|j	d"��nU|j	d#r|j,�n;|j	d$rE|jj-�|j*id%d6�n
|j.�Wn�t/k
r�}	|jtd|	j0d&|	j1��n�t2j3t2j4t2j5fk
r�}	|jtdt6|	���n}t7k
rC}
t8j9|
�}t8j:t;|
�|
�}t<|t=�rd'j>|�}
n|}
|jtd|
d(|��nXWd|jrryt?j|j@�WqrqrXnXd)S(*s$
        Run command action
        s--jsonsCloudlinux license isn't validtresults
--interpreters--usert
returncodetoutputNtsudos-utenvRNR9s--passenger-log-filetOKtsetR:simport-applicationsR6R7R8R;sread-configssave-configsinstall-modulessuninstall-modulessinstall-versionsuninstall-versionsenable-versionsdisable-versions
run-scripts
--app-roots
--script-names
<script_args>schange-version-multiplesmake-defaults-configtsuccesstcontexts
tdetailsi(AR&R/R.tremoveR	tget_license_statusR=t_error_and_exitt_parse_argsR'RR)tshould_be_runned_as_usert_lock_interpreter_if_neededR
tCLOUDLINUX_SELECTOR_UTILITYt_print_raw_dataRWtshould_run_user_without_cagefst
subprocesstPopentcommunicateRttselector_is_readytselector_error_reasonRUt!_passenger_log_filename_validatortdicttrun_settrun_migrate_applicationtrun_import_applicationst
run_createtrun_destroyt	run_starttrun_restarttrun_stoptrun_read_configtrun_save_configtrun_install_modulestrun_uninstall_modulestrun_manage_versiontrun_disable_or_enable_versiont_print_datat
run_scriptt_start_change_all_apps_versionstreplace_mysqlitrun_getRtmessageR{tClSelectExcept_oldtConfigNotFoundt	WrongDatatNoSuchAlternativeVersiontstrt	Exceptiont	tracebackt
format_exctformat_exception_onlyttypet
isinstancetlistR2R*R3(R4targvtlicenceRsRttuser_run_cmdtprocessR�tlog_filenameRTterrRhtlist_err_msgterr_msg((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pytrun�s�			

		


	



























	



%	cC`sS|jddk	r6|j|jj|jd��n|jddk	rl|j|jj|jd��n�|jdr�|j|jj|jd��n�|jddk	r�|j|jj|jd��n}|jddk	r|j|jj|jd��nG|jddk	r[|jddk	r[|j|jj	|jd|jd��n�|jddk	r�|jddk	r�|j|jj
|jd|jd��n�|js�|jrO|j
|jd	|jd
|jd|jd|jd
|jd|jd|jd|jd|jd|jd|jd|jd�
ndS(Ns--default-versions--current-versions--reset-extensionss	--versions--selector-statuss--supported-versionss--extensionss	--optionss--users
--app-roots
--app-modes
--env-varss--new-app-roots--new-domains
--new-app-uris
--new-versions--startup-files--skip-web-checks
--entry-points--config-filess--passenger-log-file(R'R(R�R)tset_default_versiontset_current_versiontreset_extensionstset_selector_statustset_supported_versionstset_extensionstset_optionst
_is_nodejst
_is_pythont
run_change(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�s*##
###&-&-
c	C`s|dkr#|jidd6�n|dk	r�|jj|||�}|}|dj�dkr�|j|�tjd�q�n|dk	s�|dk	r�|jj||||�}|dj�dkr�|j|�tjd�q�nt	|||	||dk	|
dk	f�r�|dk	rSg|j
d�D]}|dkr2|^q2}n|jj|||||	|||
�}|dj�dkr�|j|�tjd�q�n|dk	r
|jj||||
�}|dj�dkr
|j|�tjd�q
n|ji�dS(	s�
        Call selectorctl to change application parameter
        :param config_files: names of config files (such as requirements.txt or etc) (only for python)
        :param entry_point: the specified entrypoint for application (only for python)
        :param user: application owner
        :param app_root: application main directory (application name)
        :param app_mode: application mode
        :param env_vars: dict with environment variables
        :param new_app_root: new application main directory (new application name)
        :param new_domain:  new application domain
        :param new_app_uri: new application uri
        :param new_version: new version for nodejs interpreter
        :param startup_file: new startup file for application
        :param skip_web_check: skip check web application after change it's properties
        :param passenger_log_file: Passenger log filename
        :return: None
        sERROR: User is not specifiedRststatusRxiRmR$N(
R(RR)trelocatetupperR�tsystexitttransitR<Rot
set_variablestchange_version(R4tuserRPtapp_modetenv_varstnew_app_roott
new_domaintnew_app_uritnew_versiontstartup_filetskip_web_checktentry_pointtconfig_filestpassenger_log_filetrtitem((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�4s:	

1

cC`s|j|jj��dS(N(R�R)R�(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�mscC`s.|j|jj|jd|jd��dS(Ns--users
--app-root(R�R)R�R'(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�pscC`s�|jdr&|j|jj��nh|jdrL|j|jj��nB|jdrr|j|jj��n|jdtkr�|j|jj��n�it�d6}|jdt	kr%|j
|jj|jd��|j�\}}|dk	r[|dk	r[||d<||d<q[n6|jdtkr[|j
|jj|jd��nd	|kr�|j|d	|d	�n
|j|�dS(
Ns--get-default-versions--get-selector-statuss--get-supported-versionss
--interpretertpassenger_actives--usertremaining_apps_countttotal_apps_countRs(R'R�R)tget_default_versiontget_selector_statustget_supported_versionsRtget_fullRRtupdatetget_apps_users_infot_get_apps_count_from_pid_fileR(R(R4tresR�R�((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�ts(


 
#c
C`s|j|jd�rB|jidd6i|jdd6d6�nt�s�|jdtkrgd}nd}|jid	d6i|d
6d6�n|j|jj|jd|jd|jd|jd
|jd|jd|jd|jd|jd|jd�
�dS(Ns	--versionsTCan't create application: Nodejs version %(version)s is locked by background processRstversionR{s
--interpreters9https://docs.cloudlinux.com/python_selector/#installations8https://docs.cloudlinux.com/index.html?installation.htmls`Application creation not allowed, Phusion Passenger seems absent, please see %(url)s for detailsturls
--app-roots	--app-uris--users--domains
--app-modes--startup-files
--env-varss
--entry-points--passenger-log-file(t(_is_version_locked_by_background_processR'RRRR�R)t
create_app(R4R�((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s0					








cC`s.|j|jj|jd|jd��dS(Ns
--app-roots--user(R�R)tdestroy_appR'(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��scC`s.|j|jj|jd|jd��dS(Ns
--app-roots--user(R�R)t	start_appR'(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��scC`s.|j|jj|jd|jd��dS(Ns
--app-roots--user(R�R)trestart_appR'(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��scC`s.|j|jj|jd|jd��dS(Ns
--app-roots--user(R�R)tstop_appR'(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��scC`s8|j|jj|jd|jd|jd��dS(Ns
--app-roots
--config-files--user(R�R)tread_app_configR'(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s
	

cC`sB|j|jj|jd|jd|jd|jd��dS(Ns
--app-roots
--config-files	--contents--user(R�R)tsave_app_configR'(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s	


cC`sn|j|jj|jdd|jdd|jdd|jdd|jd	d
|j|jd���dS(Ns
--app-rootR�s--usertdomains--domainR�s--skip-web-checkt	spec_files--requirements-filetmoduless	--modules(R�R)tinstall_modulesR'Rr(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s	




cC`sa|j|jj|jdd|j|jd�d|jdd|jdd|jd	��dS(
Ns
--app-rootR�s	--modulesR�s--userR�s--domainR�s--skip-web-check(R�R)tuninstall_modulesR'Rr(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s	


cC`sn|jd}|jd}y |j|jj||��Wn-tk
ri}|jit|�d6�nXdS(sM
        Disable or enable interpreter version
        :return: None
        s	--versionsenable-versionRsN(R'R�R)tset_version_statusRRR�(R4R�ttarget_version_statusRT((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s

 	cC`s�t|jd�}y>|jdr;|jjj|�}n|jjj|�}Wntk
rr}t|�}nX|dkr�|jt	�n|j
i|d6�dS(Ns	--versionsinstall-versionRs(R�R'R)tselector_managertinstall_versiontuninstall_versionR�R(R�RR(R4tverR�RT((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s
c	C`s�t||jd|j�\}}|s=|jt|��n|ddkr�|dr�yt�}|j|d�Wq�tjk
r�tidd6i|dd6d6��q�Xn|St	j
jd	�r�|d
s�|dr�|jidd
6dd6�ntj
|d|d�\|d<}x�ddgD]�}|j|�sIq.nt|d||�\}}ytj|�Wn,tk
r�}|jtd
|j��nX|||<q.W|S(s%
        Parse CLI arguments
        tas_from_roots
--interpretertphps--usersNo such user (%s)R�R�R{s/usr/local/cpanelsimport-applicationsR:RzRss?Import/migrate of Python Selector applications is not supportedtwarnings--domains
--app-roots--new-app-root(RR&R,RRRtget_pw_by_nametNoSuchUserExceptionRR*R1tisdirRt$safely_resolve_username_and_doc_roottgetRR
tcheck_directoryt
ValueErrorR�R�(	R4R�R�tdatatpwdRQtapp_root_argt	directoryRT((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�s@
	'icC`s�d|kr$|d|d<|d=n|jrW|jitj�d6�t|t�nJy(tt|d�|jdi��Wntk
r�td|�nXt	j
|�dS(s�
        Print error and exit
        :param dict message: Dictionary with keys "result" as string and optional "context" as dict
        R�Rst	timestampR{s	Error: %sN(R&R�ttimeRR=tprintR�R�RdR�R�(R4R�t
error_code((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR>s
	(
cC`st|�dS(s�
        Print raw data.
        Function should be used in case if you want
        to print a json string as an output from other utilities
        N(R(R((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�Ps	RzcC`st|t�r�|j�}d|krGt|dt�rG|d}n|jd|�|dj�dkr�d|d<|jdtkr�|jj�r�d|d<q�n)d|kr�d|kr�|d|d<n|d=|j	it
j
�d	6�nt||jp|�d
S(s�
        Output data wrapper
        :param: `dict` data - data for output to stdout
        :param: `bool` force_json - always output json format
        RR�tokRzRss
--interpretersbMultiPHP system default PHP version is alt-php. PHP Selector does not work and should be disabled!R�RN(
R�R�tcopyt
setdefaulttlowerR'RR)tcheck_multiphp_system_defaultR�RRR&(R4Rt
force_jsonRs((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�[s

"cC`s|jdj�tkS(Ns
--interpreter(R'RR(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�xscC`s|jdj�tkS(Ns
--interpreter(R'RR(R4((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�|scC`s4|jdttgkr0|jd}t|�StS(Ns
--interpreters
--new-version(R'RRtboolR%(R4R�((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt_is_interpreter_lock_needed�s

cc`sF|j�r=|jj}|j|jd��
dVWdQXndVdS(s{
        Wrapper over contextmanager of PkgManager in order not
        to try acquire lock when it is not needed.
        s
--new-versionN(RR)RBtacquire_interpreter_lockR'(R4tmgr((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s
cC`sk|jd}|jd}|jj|�}|jj|�}||kra|jidd6�n||fS(s�
        Retrives NodeJS versions from arguments and converts them to major versions
        :return: Cortege (from_version, to_version)
        s--from-versions
--new-versions4--from-version and --new-version should be differentRs(R'R)tget_major_version_from_shortR(R4tfrom_versiont
to_version((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt_get_nj_versions�s

cC`s�|j�\}}t�}|j}||krU|jidd6i|d6d6�n|jr�|j�r�|jidd6�n||fS(s�
        Checks arguments and environment before start group applications move
        :return: Cortege (from_version, to_version)
        sXCan't move NodeJS applications to Nodejs version %(version)s. No such version installed.RsR�R{s+Another background process already started.(RRtinstalled_versionsRR.t&_is_background_process_already_running(R4RRtpkg_managertinstalled_nj_versions((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt _check_environment_for_move_apps�s			cC`s�|j�\}}|jsXd|jj|||jf}tj|�|jt�dS|j	|�\}}|s�|dkr�dS|j
|||�|j|||�dS(sM
        Change all applications all users versions
        :return:
        sh%s change-version-multiple --json --interpreter=nodejs --from-version=%s --new-version=%s %s >/dev/nul &Ni(RR.R)R�R/R*tsystemR�Rt_get_all_apps_by_versiont_write_pid_filet_move_apps_by_list(R4RRtcommandtusers_apps_listR�((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR��s	

c	
C`s�x�t|�D]�\}}xx|D]p}|jjdddtd|d|d|g}tj|�}|j�|d8}|j|�tj	d�q Wq
Wd	S(
s�
        Move applications from list from one NodeJS version to another
        :type dict
        :param apps_dict: Application list. List example:
            {'cltest1': [u'modjsapp_root'], 'cltest2': [u'app2', u'main_app']}
        :param to_version: Move applications to this version
        :param total_apps_count: Total applications count for move
        :return: None
        Rys--jsons
--interpreters--users
--app-roots
--new-versioniiN(
RR)R�RR�R�R�t_change_pid_fileRtsleep(	R4t	apps_dictRR�t	user_namet
user_app_listRPtcmdR�((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�s




c
	C`s�tt�}|jjj�}d}x�t|�D]�\}}ys|jjj|j|j|j	�}xHt|�D]:\}}	|	d|krq||j
|�|d7}qqqqWWq1ttt
tfk
r�q1q1Xq1W||fS(sB
        Retrives list of all NodeJS applications for all users, which uses supplied version of NodeJS
        :param from_version: Required NodeJS version
        :return: Cortege: (application_list, application_count). Example:
            ({'cltest1': [u'modjsapp_root'], 'cltest2': [u'app2', u'main_app']}, 3)
        itnodejs_versioni(RR�R)RBtget_users_dictRtread_user_selector_config_jsontpw_dirtpw_uidtpw_gidtappendRt	TypeErrorRdtAttributeError(
R4Rtusers_apps_dictt	user_infoR�R$t
user_pw_entryt
user_app_dataRPtapp_info((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�s cC`s>y0tjt|jd��}|d|_tSWnnXtS(s]
        Determine is background process already working
        :return: True|False
        R�R(tjsontloadR"R3R0R=R%(R4R((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR
s
cC`sd|jdtkrtS|jj|�}|jj|�}|j�}|r`||jkr`tStS(s�
        Checks if NodeJS version blocked by background operation
        :param nj_version: NodeJS version to check
        :return: True - version is locked, False - not locked
        s
--interpreter(	R'RR%R)tresolve_versionRRR0R=(R4t
nj_versiontis_bkg_process_present((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�scC`s{tjitj�d6t|�d6t|�d6|d6|d6ttj��d6t|jd��tj	|jd�d	S(
s
        Creates pid file for background process move version from version to version
        :param from_version: Move from NJ version
        :param to_version: Move to NJ version
        :param total_apps_count: Total application count to move
        :return: None
        tpidRRR�R�Rtwi�N(
R5tdumpR*tgetpidR�tfloatRR"R3tchmod(R4RRR�((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR(s	


cC`s/t|jd�}tj|�}|j�|S(sc
        Reads pid file and returns it's content as dictionary
        :return: Dictionary
        R�(R"R3R5R6tclose(R4tftpid_data((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt_read_pid_file;s
cC`s�yn|j�}||d<tdt�\}}tj|t|d��tj||j�tj	|jd�Wnt
ttfk
r�dSXdS(s�
        Creates pid file for background process move version from version to version
        :param remaining_apps_count: Remaining application count to move
        :return: None
        R�tdirR;i�N(
RCRRR5R<R"R*trenameR3R?tOSErrorRKRd(R4R�RBRQttemp_file_name((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR!Es
cC`scyAt|jd�}tj|�}|j�|d|dfSWntttfk
r^dSXdS(s�
        Retrieves application counts from pid file
        :return: Cortege (remaining_apps_count, total_apps_count)
            If no background process started, returns None, None
        R�R�R�N(NN(	R"R3R5R6R@RFRKRdR((R4RARB((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�Ws
cC`st�}|j|�}y�t|�s+dStjj|�rAdS|jtjj�sntjj	||�}ntjj
|�}|j|tj�r�tjj|�}tjj|�s�t
|�nd|fSWn*ttfk
r�}dt|�dfSXd	S(
s�
        Validates passenger log file name
        :param username: User's name
        :param log_filename: passenger log file name to validate
        :return: tuple: (message, log_filename).
            message: "OK" - filename is valid, any other string - invalid, error text
            log_filename: corrected log filename - simlink dereferencing, appends user's homedir for relative paths, etc
        sAERROR: Passenger log filename should contain only english letterssDERROR: Passenger log file should be a filename, not a directory nameRxs%ss9ERROR: Passenger log file should be placed in user's homeN(sAERROR: Passenger log filename should contain only english lettersN(sDERROR: Passenger log file should be a filename, not a directory nameN(s9ERROR: Passenger log file should be placed in user's homeN(Rtget_homedirRR(R*R1R�t
startswithtsepR2trealpathtdirnameRDRRFRKR�(ROR�Rtuser_homedirtlog_realpathRLtexc((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR�es$
	
(2t__name__t
__module__R5R>R%RURWRVtstaticmethodRrR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RR�R�tpropertyR�R�Rt
contextlibtcontextmanagerR�RRR�RRRR�RRCR!R�R�(((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyR#?sV					y		9				#											;	
	
				 				
		(Dt
__future__RRRRFR�RRLtclcommon.cpapiR`RTR5R*R�R�ttypingRtfuture.utilsRtclcommonRtclcommon.clexceptionRtclcommon.mail_helperRtclcommon.clfuncRt	cllicenseR	tclselectR
tclselect.utilsRRR
tclselect.baseclselectRRt	cli_utilsRRtclselect.clselectnodejsRt"clselect.clselectnodejs.pkgmanagerRt clselector.clpassenger_detectlibRtcollectionsRtemail.mime.textRttempfileRtcl_selector_arg_parseRRRRtselectorlibRRRtclselect.clselectexceptR�RER"tobjectR#(((sG/opt/alt/python27/lib/python2.7/site-packages/clselector/cl_selector.pyt<module>sH	

Zerion Mini Shell 1.0