%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /opt/alt/python27/lib/python2.7/site-packages/clselect/
Upload File :
Create Path :
Current File : //opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyc

�
i�B^c@`s�ddlmZddlmZddlmZddlZddlZddlZddlmZddlm	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZmZddlmZdd	lmZdd
lmZmZddlmZmZmZmZmZmZm Z ddl!m"Z"m#Z#dd
l$m%Z%m&Z&ddl'm(Z(m)Z)ddl*m+Z+ddlm,Z,m-Z-m.Z.ddlm/Z/m0Z0m1Z1m2Z2ddlm3Z3m4Z4ej5e6�Z7e7j8ej9�ej:e;dd��Z<e7j=e<�dZ>dZ?dZ@dZAdZBdZCdZDdZEdZFd�ZGd �ZHd!�ZId"�ZJd#�ZKd$�ZLd%�ZMd&�ZNd'�ZOd(�ZPd)�ZQd*�ZRd+�ZSd,�ZTd-�ZUeVddeEdd.�ZXd/�ZYddd0�ZZd1�Z[eEd2�Z\d3�Z]dd4�Z^d5�Z_d6�Z`dd7�Zad8�Zbd9�Zcd:�Zdd;�Zed<�ZfdS(=i(tabsolute_import(tprint_function(tdivisionN(tdatetime(t	iteritems(t	clcaptaintutils(tuserdomains(t*get_file_system_in_which_file_is_stored_on(tget_file_linestwrite_file_lines(tQuotaWrappertNoSuchUserExceptiontInsufficientPrivilegesExceptiontIncorrectLimitFormatExceptiontGeneralExceptiontNoSuchPackageExceptiontQuotaDisabledException(tPyLvet
PyLveError(t
set_user_permt
set_root_perm(tDicttUnioni(tClSelectExcept(tfile_readlinest
file_writets_partition(tget_abs_reltmkdir_pt	file_readtfile_writelines(tget_using_realpath_keystrealpaths_are_equals	/dev/nulltws9# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION BEGINs7# DO NOT REMOVE. CLOUDLINUX PASSENGER CONFIGURATION ENDs	config.rus�app = proc do |env|
    message = "It works!\n"
    version = "Ruby %s\n" % RUBY_VERSION
    response = [message, version].join("\n")
    [200, {"Content-Type" => "text/plain"}, [response]]
end


run app
stmp/restart.txtspassenger_wsgi.pysMimport os
import sys


sys.path.insert(0, os.path.dirname(__file__))


def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain')])
    message = 'It works!\n'
    version = 'Python %s\n' % sys.version.split()[0]
    response = '\n'.join([message, version])
    return [response.encode()]
sapp.jssCvar http = require('http');
var server = http.createServer(function(req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    var message = 'It works!\n',
        version = 'NodeJS ' + process.versions.node + '\n',
        response = [message, version].join('\n');
    res.end(response);
});
server.listen();
cC`s,tj|�}t|j|jdt�dS(Ntexit(tpwdtgetpwnamRtpw_uidtpw_gidtFalse(tusertuserpwd((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytdrop_root_perm]scC`sIy0t||�}tj|j�tj�|SWntk
rDdSXdS(N(topentfcntltflocktfilenotLOCK_EXtIOErrortNone(tconfig_pathtmodet	conf_file((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytget_config_lockbs
cC`sy|j�WnnXdS(N(tclose(t	lock_file((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytrelease_lockkscC`st}tj�dks*tj�dkr=t|�t}nd}z�yLt|�t|d�}t	j	�}|j
|�tj
||j��WnDt
ttjtjfk
r�}tjtjdj||��nXWdt|�|r�tdt�nXdS(sS
    Write config with locking.
    Drop permissions if method called as root.
    itrsCan't write {}: {}NR#(R(tostgetegidtgeteuidR+tTrueR2tcheck_and_createdirR6tStringIOtwriteRtgetvalueR1tOSErrorRtUnableToSaveDataRtExternalProgramFailedtsyslogtLOG_WARNINGtformatR9R(R)R3tconfigtpermissions_droppedtconfig_filetfile_contentte((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytwrite_configrs$$
	

!
cC`sstjj|�}tjj|�soytj|�Wqottjt	jfk
rk}tj
||��qoXndS(N(R;tpathtdirnametisdirRtmkdirRCRRERRD(ROtuser_backup_pathRM((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR?�scC`s(tj|�}tjj|jdd�S(Ns.cl.selectorthtaccess_cache(R$R%R;ROtjointpw_dir(R)R*((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytget_htaccess_cache_path�scC`s�d}d}i}tjj|�r�y9tj|�}|j|d<|j|d<|j|d<t|j�|d<t	j
|j�j|�|d<t	j
|j
�j|�|d<|dd	kr�|SySt|d
��>}|j|�|d<|j|d�|j|�|d
<WdQXWn0ttfk
rG}d|||f|d<nXt|�d|d<Wq�ttfk
r�}d||f|d<q�Xn|S(sp
    Get info (stat, first n symbols and file system in which file is stored)
    about htaccess_cache file
    s%Y-%m-%d %H:%M:%Sidt	file_sizetgidtuidtpermissionstlast_accesstlast_modificationiR:t
first_symbolsitlast_symbolsNsEWe cannot get first and last %s symbols from "%s" file. Exception: %sterrortdetailstfile_systems1We cannot get info about "%s" file. Exception: %s(R;ROtexistststattst_sizetst_gidtst_uidtocttst_modeRt
fromtimestamptst_atimetstrftimetst_mtimeR,treadtseekRCR1R(tpath_to_filettime_formattnumber_of_symbolst	file_infot	file_stattfterr((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt#_get_info_about_htaccess_cache_file�s<


cC`s�t�}y�t�}|j�|j|�}|j|j|d<|j|d<|j|d<|j|d<|j	|d<|j
|d<|j|d<Wn'tk
r�}d||f|d	<nX|S(
sB
    Getting user lve limits for logging those for next debug
    tcputpmemtvmemtiotiopsteptnprocs>We cannot get lve limits for user with uid "%s". Exception: %sR`(
tdictRt
initializetlve_infotls_cput
ls_cpu_weightt
ls_memory_phyt	ls_memorytls_iotls_iopst	ls_enterstls_nprocR(tuser_uidtresulttpy_lvetuser_limitsRv((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt_get_user_lve_limits�s"		





cC`s�t�}t|�}y&t�}|j|�|}|}Wn?tttttt	t
tfk
r|}d||f|d<nX|S(sD
    Getting user quota limits for logging those for next debug
    s@We cannot get quota limits for user with uid "%s". Exception: %sR`(RtstrRtget_user_limitsRRR
RRRR1RC(R�R�t
quota_wrappertuser_quotasRv((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt_get_user_quota_limits�s(		

cC`s�t|�}t�}||d<t�|d<ytj|�j}Wn1tk
ru}d||f|dd<d	}nX|d	k	r�t�|dd<|ddjt|��t�|dd<|ddjt	|��nt
j|dtd|�d	S(
sy
    Logging info (lve & quota limits) about user and
    info (stat info, first & last n symbols) about config file
    tconfig_file_infot	user_infos(User "%s" does not exists. Exception: %sR`t
lve_limitstquota_limitstexc_infotextraN(
RwRR$R%R&tKeyErrorR2tupdateR�R�tloggert	exceptionR>(R)R3RvRst
debug_infoR�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt*_log_debug_info_about_user_and_config_files"	


cC`s�tj�}t|�}t|d�}|dk	r�z�y|j|�Wnwttfk
rr}t|||�nOtj	tj
fk
r�t|�tjtj
dj|��tj�}nXWdt|�Xn||fS(NR:sConfig {} is broken.(tConfigParsertRawConfigParserRWR6R2RnR1RCR�tParsingErrortMissingSectionHeaderErrort_unlinkRFRGRHR9(R)RIR3RKRv((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytread_config!s 
cC`sct|�\}}|j|�r_y#|j|d�jd�}|SWq_tjk
r[dSXndS(Nt
htaccess_listt,(R�thas_sectiontgettsplitR�t
NoOptionErrorR2(R)tdoc_rootRIt_R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytget_htaccess_cache8scC`s�|jd�}ttt|��}t|�\}}|j|�sU|j|�n|j|ddj|��t	|||�dS(Ns
R�R�(
R�tlisttfiltertboolR�R�tadd_sectiontsetRURN(R)R�tdataRIR3((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytwrite_htaccess_cacheCscC`s�t|�\}}|j|�r?|j|d�jd�}n&|j|�|j|dd�g}||kr�|j|�ttt	|��}|j|ddj
|��t|||�ndS(NR�R�t(R�R�R�R�R�R�tappendR�R�R�RURN(R)RpR�RIR3R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytupdate_htaccess_cacheOs

cC`s�t|�}g}t}xW|D]O}|jt�r=t}n|jt�rXt}qn|s|j|�qqWt|�}t||d�dS(s�
    Removes clpassenger lines from .htaccess to stop application
    :param htaccess_filename: Application .htaccess path
    :return: None
    R"N(	R	R(t
startswithtHTACCESS_BEGINR>tHTACCESS_ENDR�trm_double_empty_linesR
(thtaccess_filenametlinest	new_linest	in_configtline((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt$remove_passenger_lines_from_htaccess^s
	c
C`sct||�\}
}tjj|
�rLtjj|
�rLtjd��n|dkrntjd|��nt|�}yt	|||�}
Wn3t
k
r�|dkrtjd|��qn@X|dkr�|
d}tjd	|��n|s|
d
}n|dkr&tjj
|�}nt|tjj||��\}}tjj|d�}t}tjj|�r;t|�}t|kr,x�|j�D]�}tjj
|d
�tj}tjjtjj||tjg��dkr�|d}||
krtjd|��q%t}q�q�Wn|j�}ng}|r@|jd�|jt�|jd|
�|jd|�|jd|j�|f�|dkr�|jd�|jd|�n|	r�|dkr�|jd|	�n|jt�t|�}t|�t|d�|D��t|||�n|r_t|||d|�ndS(sX
    Configure passenger application
    :param user: name of unix user
    :param directory: name of dir in user home
    :param alias: alias of application
    :param interpreter: interpreter which execute application
    :param binary: binary of interpreter that execute application
    :param populate: True if application have to be be populated
    :param action: action with apllication. can be transit or None
    :param doc_root: doc_root
    :param startup_file: start application file
    :param passenger_log_file: Passenger log filename to write to app's .htaccess
    :return: None
    s,Destination exists and it is not a directorytpythontrubytnodejssUnsupported interpreter ('%s')s8No such application (or application not configured) "%s"ttransitt	directorys(Specified directory already used by '%s'tdocrootR�s	.htaccesstaliasshSpecified alias is already used by the other application: '%s'. Please, specify another application url.sPassengerAppRoot "%s"sPassengerBaseURI "/%s"sPassenger%s "%s"sPassengerAppType nodesPassengerStartupFile %ssPassengerAppLogFile "%s"cs`s|]}d|VqdS(s%s
N((t.0R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pys	<genexpr>�ststartup_fileN(R�R�R�(R�R�( RR;RORcRQRtWebAppErrortInterpreterErrortsummaryR R�R2tNoSuchApplicationtnormpathRUR>RR�tvaluestsepRPtcommonprefixR(t
splitlinesR�ttitleR�R�RRR�tpopulate_app(R)R�R�tinterpretertbinarytpopulatetactionR�R�tpassenger_log_filetabs_dirR�tuser_summarytapp_summaryt
exists_dirt	abs_aliasthtaccessthtaccess_needs_updatethtaccess_rawtitemt
item_aliasR�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt	configureusp%


$1






c
C`s
xtt|��D]�\}}|\}}tjj|d|df�}t|d|�\}}}tjj|d�}tjj|d�}t||�\}}}	tjjt	||	�d|�}
|d}t
|�t||||d|
d|d�qWdS(NR�R�iR�R�R�R�(Rt_summaryR;ROR�RRPtbasenameRURt_unconfigureR�(R)tdomain_aliasR�R�R�told_homeR�t
binary_dirtbinary_namet_binaryR�t
htaccess_path((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytfix_homedir�s "

cC`s�t||t|��}|p%|d}|p1|}tjj||�}tjj|d�}tjj||�}	tjj|	d�}
t|||
�s�t|�t|�}t|d�j	�t
|
|d�t||
|�ndS(NR�s	.htaccessR"ta(R R�R;RORUR!R�RR,R7RR�(R)R�t	old_aliast	new_aliastold_doc_roottnew_doc_roottapp_datat
old_abs_aliastold_htaccesst
new_abs_aliastnew_htaccessR�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytmove�s
cC`s(x!t|�D]}t||�q
WdS(N(R�tunconfigure(R)R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pytpurge�scC`s<t||�\}}tjj|d�}tjj|d�}t|�t|�tjj|t�}tjj|t�}	tjj||�}
tjj|�}tjj|	�}tjj|
�}
|r�t|�t	k}n|r�t|	�t
k}n|
rt|
�tk}n|dkra|s;t|	t
�n|r+|r+t
|�t
|
�q+n�|dkr�|s�t|t	d�n|r+|r+t
|	�t
|
�q+n|dkr+|
stjj|
�}tjj|�s�tj|d�nt|
t�n|
r+|r+t
|�t
|	�q+nt||�dS(	s�
    Populate application
    :param user: name of unix user
    :param directory: application path in user's home
    :param interpreter: interpreter which run application
    :param startup_file: main application file
    :return: None
    tpublicttmpR�R�R"R�i�N(RR;RORURt	RACK_PATHt	WSGI_PATHtisfileRt
RACK_TEMPLATEt
WSGI_TEMPLATEtAPPJS_TEMPLATERR�RPRQtmakedirstrestart(R)R�R�R�R�trel_dirt
app_publictapp_tmptapp_configrutapp_wsgitapp_jstconfigru_installedtwsgi_installedtappjs_installedtconfigru_unchangedtwsgi_unchangedtappjs_unchangedtdir_path((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR��sN	




cC`s)ytj|�Wntk
r$nXdS(N(R;tunlinkRC(RO((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR�2s
cC`s$|dkrt|�n|}g}x�|D]�\}}|dkrIq+nt||�}|s�tjd|ddgdtjdtj�}|j�\}}	t|||�t||�}n|dkr�q+nx?|D]7}
|
r�tj	j
|
�}|j|||f�q�q�Wq+Wt||�S(Ns	/bin/finds-names	.htaccesststdouttstderr(
R2RR�t
subprocesstPopentPIPEtcommunicateR�R;RORPR�t_htaccess_summary(R)tuserdomains_datatdomain_docroot_pairstdomain_alias_docroottdomainR�RTtpt
stdoutdataR�tht_pathR�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR�9s$-
!cC`s�i}x�|D]�\}}}tjj|d�}yt|�}Wnttfk
r]q
nXtjd|tj�}|s�q
ntjd|tj�}	|	s�q
nt	||�\}
}t	||�\}}t
|
|�\}}}|jtj�}||f}
tjd|tj�}|rDt
|j�d|�rDq
ni|d6|d6|d6|j�d	d	6|	j�d
j�d
6|	j�dd6||
<q
W|S(Ns	.htaccesss+^PassengerAppRoot\s+"?(?P<directory>.+?)"?$sD^Passenger(?P<interpreter>Python|Ruby|Nodejs)\s+"?(?P<binary>.+?)"?$s(^PassengerBaseURI\s+"?(?P<appuri>.+?)"?$tappuriR�R R�R�R�R�(R;RORURR1RCtretsearcht	MULTILINERRtlstripR�tcompare_aliasest	groupdicttlower(R)RtsummR R�R�R�R�tapprootR�t	alias_absR�tdoc_root_absR�R$((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyRVsD	 cC`s4tjj|jd��tjj|jd��kS(Nt/(R;ROR�tstrip(talias1talias2((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR)�scC`si}xtt|d|��D]�\}}|\}}|d}yt||�\}}	WnEtjk
r�tjtjdjtj	j
|d�|��qnX||d<yt||	|�}
Wn(tk
r�|g|d<|||	<qXd|
krg|
d<q|
dj
|�qW|S(NRR�s1{} is broken, directory {} is not in user's home.s	.htaccessR�tdomains(RR�RRt	WrongDataRFRGRHR;RORUR R�R�(R)Rtsumm_resultR�tvalueR R�tapp_rootR�R�R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR��s.%





cC`s0t||t|��}|d}t|�dS(NR�(R R�R�(R)R�R�R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR��s
cC`s�t|�}|j�}g}t}xW|D]O}|tkrIt}q+n|tkrat}q+n|rmq+n|j|�q+Wt|�}t|d�|D�d�dS(Ncs`s|]}d|VqdS(s%s
N((R�R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pys	<genexpr>�sR"(	RR�R(R�R>R�R�R�R(R�R�R�R�R�R�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR��s 
cc`s;x4|jtj�D] }tjj||�}|VqWdS(N(R�R;R�RORU(troottsubR!((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt	iter_path�scC`s�t||�\}}tjj|�sDtjdi|d6��ntjj|d�}tjj|�s{tj|�ntjj|t�}tjj|�r�tj	|d�nt|d�j�dS(NsMissing directory %(abs_dir)sR�R�R�(
RR;RORcRtMissingApprootDirectoryRURRtRESTART_PATHtutimeR2R,R7(R)R�R�R�ttmp_dirtapp_restart((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR�scC`scg}t}xB|D]:}|j�r.t}n|r:qnt}|j|�qW|r_|d S|S(Ni����(R>R1R(R�(R�t_linest
empty_lineR�((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyR��s
	(gt
__future__RRRR-R$RFRtfuture.utilsRR�R@tloggingR;R%RtclcommonRRtclcommon.cpapiRtclcommon.utilsRR	R
tclquotaRRR
RRRRtlveapiRRtsecureioRRttypingRRtclselectexceptRRRRRRRRR R!t	getLoggert__name__R�tsetLeveltERRORt
StreamHandlerR,tnull_handlert
addHandlerR�R�RRR=RRt
APPJS_PATHRR+R6R9RNR?RWRwR�R�R�R�R�R�R�R�R>R2R�R�R�R�R�R�R�RR)R�R�R�R;RR�(((sE/opt/alt/python27/lib/python2.7/site-packages/clselect/clpassenger.pyt<module>s�4"


								-								[		7		-	!				

Zerion Mini Shell 1.0