403 Forbidden


Disable Functions:
Path : /usr/share/lve/modlscapi/user/
File Upload :
Command :
Current File : //usr/share/lve/modlscapi/user/mod_lsapi_stat.pyo

�
w1fc@s^ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddlm
Z
ddlmZddlm
Z
mZmZmZmZmZddlmZmZmZmZmZmZddlZdefd	��YZed
�Zeed�Zeed�Z eed
�Z!d�Z"d�Z#d�Z$dS(i����N(tget_cp(tcriu_settings_malfunctions(tlsapi_settings_malfunctions(tliblsapi_malfunctions(t
cpanel_whmapitplesk_bin_php_handlertdump_loaded_modulest
dump_lsapit
query_stringst	rpm_query(tget_da_domainstget_da_php_optionstread_da_configt
liblsapi_pathtpretty_version_keyst
count_domainstModLsapiStatExceptioncBseZRS((t__name__t
__module__(((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyRscCsmd}i}t�}y�|jdkrRtjjd�rIt�|d<q�d}nP|jdkrqt�|d<n1|jdkr�t�|d<ndj	|j�}Wn"t
k
r�}t|j�}nX|dk	r�t
�|d<||d<nt|�|d	<|jt��|jt��|jit|dj��d
6�t|�|retj|dt�S|SdS(
s�
    Return statistics data
    :param as_json: return json string if True, dict otherwise
    :return: statistics data dict(
                `controlPanel`: EA3/EA4/Plesk/DirectAdmin/Unknown CP,
                `criu`: dict(
                        `status`: running/stopped,
                        `version`: version
                    ),
                `domainStat`: dict(
                        `version`: `domains_num`,
                        ...
                    ) or dict(`error`: description) if some error occurred,
                `lsapiConf`: dict(
                        lsapi_with_connection_pool: on/off,
                        lsapi_criu: on/off
                    )
            ) or its json-packed version
    tcPanels/etc/cpanel/ea4/is_ea4t
domainStats7mod_lsapi domains stat is currently unsupported for EA3tPlesktDirectAdmins7mod_lsapi domains stat is currently unsupported for {0}tdomainStatErrortcontrolPanelttotalDomaint	sort_keysN(tNoneRtnametostpathtexiststget_cpanel_ea4_stattget_plesk_stattget_da_stattformatRtstrtmessagetdicttupdatetget_lsapi_conft
get_crui_stattsumtvaluestanalyze_malfunctionstjsontdumpstTrue(tas_jsonterrortstatst
control_panelte((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pytget"s4		

$
cCs�t�}t�}t�}y�td�jd�}xX|D]P}|j|jd�t��j|jd��|jd�||jd�<q:Wtd�jd�}tg|D]$}|jd�|jd�f^q��}	|	j�}
xL|	j�D]>\}}|j|t��ji|j|t��|6�q�W|rYt	j
|||�}
|
}nxK|j�D]=\}}|jtjt|
�j|j��t���qfWWn;t
tfk
r�td	jtj�jd
����nXt||
|�S(sY
    Collect mod_lsapi statistics for cPanel EA4 through WHM API
    :param lsapi_only: return only lsapi domains statistics if True, or full statistics if False
    :param with_selector: take into account the statistics of php selector
    :return: if lsapi_only return lsapi domains per version
                stat dict(
                    `version`: `domains_num`,
                    ...
                )
            else return full statistics per handler
                stat dict(
                    `handler`: {`version`: `domains_num`, ... }
                    ...
                )
    tphp_get_vhost_versionstversionstversiontvhosttaccounttphp_get_handlerstversion_handlerstcurrent_handlerts
(R&RR5t
setdefaulttsettaddtkeyst	iteritemsR'tselector_usage_libtea4_selector_checktfromkeyst
differencetKeyErrort	TypeErrorRtjoint	tracebackt
format_exctsplitR(t
lsapi_onlyt
with_selectortdomains_per_versiont
handlers_stattdomain_userstvhosts_dataR9t
handlers_datathR<tall_versionstverthandlerts_checked_version_handlerstv((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyR Ys*			
. 76	9(cCs�d}d}t�}ytd�}tg|D]!}d|jd�kr.|^q.�}x�|D]�}|jd�}	dj|jd�jd�d	 �}
tgtd
d|	�D]}|jd�^q��}d|	kr�d}
|jd
|
�}n|jd
|
�}
|||
<q_W|r/tj	||�}nWnDt
tttj
fk
rvtdjtj�jd����nXitd�|j�D��d6}|r�|dS|S(s
    Collect mod_lsapi statistics for Plesk
    Collects lsapi domains ONLY
    :param lsapi_only: return only lsapi domains statistics if True, or full statistics if False
    :param with_selector: take into account the statistics of php selector
    :return: if lsapi_only return lsapi domains per version dict(
                    `version`: `domains_num`
                    ...
                )
            else return stats with handler dict(
                    `lsapi`: {`version`: `domains_num`, ... }
                )
    s
alt-php{v}s	alt-php56tlisttlsphptidR>tfullVersiont.i����s	get-usagetdomaintcustomRZs
css'|]\}}|t|�fVqdS(N(tlen(t.0tkRZ((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pys	<genexpr>�stlsapi(R&RtsortedR5RJRMR@R#RDtplesk_selector_checkRHRItAttributeErrortSelectorStatExceptionRRKRLRC(RNROthandler_tmpltcustom_versiontdomain_version_stattall_handlersRUtlsphp_handlersRXt
handler_idtphp_versiontdtdomainst
version_idtresult_stat((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyR!�s,	4
%4( cCs�d}t�}yxt�}|dd}|dd}|dd}|dd}t|�}	t|�}
t�}t�}g|j�D]}
|j|
�^q�|dkr�i||	6}i||	6||<ny|dkr�i||
6}i||
6||<nLit�|	6t�|
6}x�|j�D]�\}}x�|D]�}|jd|d|�}yRt	|�\}}|j
|d	�}t||d�}|j|�j|�Wq7t
jk
r�|j|	�j|�q7Xq7Wq$W||kri||	|	6||
|
6||<n>i||	|	6t�|
6||<i||
|
6t�|	6||<|r�tj|j|	�||	�}|j|�j|�nWn>tttfk
r�td
jtj�jd����nXt||	|
g|�S(sN
    Collect lsapi domains statistics fro DirectAdmin
    :param lsapi_only: return only lsapi domains statistics if True, or full statistics if False
    :param with_selector: take into account the statistics of php selector
    :return: if lsapi_only return lsapi domains per version
                stat dict(
                    `version`: `domains_num`,
                    ...
                )
            else return full statistics per handler
                stat dict(
                    `handler`: {`version`: `domains_num`, ... }
                    ...
                )
    s>/usr/local/directadmin/data/users/{user}/domains/{domain}.confiR8iRXtnotuserR`tphp1_selectR>s
(R&RRR
R@R+R'RCR#RtgetintR5RAtConfigParsert
NoOptionErrorRDtda_selector_checkRHRIRhRRJRKRLRMR(RNROtdomain_conf_paththandler_stattphp_optionstphp1_vertphp2_vertphp1_handlertphp2_handlert
php1_labelt
php2_labeltuser_domainstjoinedRZtversion_statRvRrR`tconfig_pathtconf_parsertglobal_sectiontphp_settingR8tselector_updated((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyR"�sV				&


"(cCs�djtjd��}y2tjdddgdtjdtj�d}Wntjk
rfd	}nXii|d6|r�|jd
�dndd
6d6S(s�
    Get criu service info
    :return: dict(
                `criu`: dict(
                    `status`: running/stopped,
                    `version`: version
                )
            )
    R>s/usr/sbin/criu -Vs
/sbin/servicetcriutstatuststdouttstderrtrunningtstoppedt is
not installedR8(RJtexec_commandt
subprocesst
check_calltPIPEtSTDOUTtCalledProcessErrorRM(tcriu_versiontcriu_service_status((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyR)s
(

cCs�t�}t�}|jdd�}tt�d�}ii|jdd�d6|jdd�d6d6|jdd�d6|r�|n	td	�d
6|s�dndd
6S(sl
    Retrieve lsapi configuration:
    - crui
    - connection pool
    and versions of module and library
    :return: dict(
                lsapiConf: dict(
                    lsapi_with_connection_pool: on/off,
                    lsapi_criu: on/off
                ),
                modVersion: version,
                libVersion: version
            )
    tlsapi_moduletliblsapi_versiont
lsapi_criutofftlsapi_with_connection_poolt	lsapiConfR8t
modVersiontliblsapit
libVersiontdisabledtenabledt	modStatusN(RRR5RRR
R	(tapache_conftapache_modulest
mod_statusR�((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyR(s		cs�t���fd�}djd|ddd|dd�}|d	}|t|d
�|t|�|t|��sdS|ji�d6�dS(
s�
    Detect configuration malfunctions and update resulting statistics dict accordingly
    For now only criu malfunctions are presented
    See malfunctions in dashboard_malfunctions.py module
    :param stats_dict: resulting statistics dict
    cs-y�j||�Wntk
r(nXdS(N(tappendRH(tmalfunc_dicttkey(tmalfunctions(s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pytadd_malfunctionIs
s{opt}_{serv}toptR�R�tservR�R�R�R�NR�(R[R#RRRR'(t
stats_dictR�t
criu_settingstlsapi_settings((R�s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyR,@s	


(%RR-RKR�RyR�tlve_diagnosticRtdashboard_malfunctionsRRRt
stat_utilsRRRRRR	R
RRR
RRRDt	ExceptionRtFalseR5R/R R!R"R)R(R,(((s//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyt<module>s(..71,O		!

404 Not Found
[ LogOut ]