PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /usr/share/lve/modlscapi/user/__pycache__/
Server: Linux server1.ngambekcore.com 4.18.0-553.51.1.el8_10.x86_64 #1 SMP Wed Apr 30 04:00:07 EDT 2025 x86_64
IP: 159.198.77.92
Choose File :

Url:
Dir : //usr/share/lve/modlscapi/user/__pycache__/mod_lsapi_stat.cpython-36.pyc

3

��6i�:�@s�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddlm
Z
ddlmZddlm
Z
mZmZmZmZddlmZmZmZmZmZmZmZddlZGdd	�d	e�Zddd�Zddd�Zddd�Zddd�Zdd�Z dd�Z!dd�Z"dS)�N)�get_cp)�criu_settings_malfunctions)�lsapi_settings_malfunctions)�liblsapi_malfunctions)�
cpanel_whmapi�plesk_bin_php_handler�dump_loaded_modules�
dump_lsapi�
query_strings)�get_da_domains�get_da_php_options�read_da_config�
liblsapi_path�pretty_version_keys�
count_domains�StatUtilsExceptionc@seZdZdS)�ModLsapiStatExceptionN)�__name__�
__module__�__qualname__�rr�//usr/share/lve/modlscapi/user/mod_lsapi_stat.pyrsrFcCsd}i}t�}yd|jdkr8tjjd�r2t�|d<qpd}n8|jdkrNt�|d<n"|jdkrdt�|d<ndj|j�}Wn*t	k
r�}zt
|�}WYdd}~XnX|dk	r�t�|d<||d	<t
|�|d
<|jt
��|jt��|jdt|dj��i�t|�|�rtj|dd
�S|SdS)a�
    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
    N�cPanelz/etc/cpanel/ea4/is_ea4Z
domainStatz7mod_lsapi domains stat is currently unsupported for EA3�Plesk�DirectAdminz7mod_lsapi domains stat is currently unsupported for {0}ZdomainStatErrorZcontrolPanelZtotalDomainT)Z	sort_keys)r�name�os�path�exists�get_cpanel_ea4_stat�get_plesk_stat�get_da_stat�formatr�str�dict�update�get_lsapi_conf�
get_crui_stat�sum�values�analyze_malfunctions�json�dumps)�as_json�errorZstatsZ
control_panel�errr�get"s4



r0Tc
Cs`t�}t�}t�}�y
td�jd�}x@|D]8}|j|jd�t��j|jd��|jd�||jd�<q*Wtd�jd�}tdd	�|D��}t|j��}	x6|j�D]*\}
}|j|t��j	|
|j|
t��i�q�W|r�t
j|||�}|}x:|j�D].\}
}|j	tjt|	�j
t|j���t���q�WWn4tttfk
�rRtd
jtj�jd����YnXt||	|�S)aY
    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`, ... }
                    ...
                )
    Zphp_get_vhost_versionsZversions�version�vhostZaccountZphp_get_handlers�version_handlerscSs g|]}|jd�|jd�f�qS)r1Zcurrent_handler)r0)�.0�hrrr�
<listcomp>tsz'get_cpanel_ea4_stat.<locals>.<listcomp>��
)r$rr0�
setdefault�set�add�list�keys�itemsr%�selector_usage_libZea4_selector_check�fromkeys�
difference�KeyError�	TypeErrorrr�join�	traceback�
format_exc�splitr)�
lsapi_only�
with_selectorZdomains_per_versionZ
handlers_statZdomain_usersZvhosts_datar2Z
handlers_datar3Zall_versionsZver�handlerZs_checked_version_handlersr5�vrrrrYs*
 &.rc
Csd}d}t�}y�td�}dd�|D�}x||D]t}|jd�}dj|jd�jd	�d
d��}	tdd�td
|d�D��}
d|kr�d}|j|	d�}n|j|	d�}|
||<q,W|r�tj||�}Wn8t	t
tttj
fk
r�tdjtj�jd����YnXddd�|j�D�i}|�r|dS|S)a
    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`, ... }
                )
    z
alt-php{v}z	alt-php56r<cSsg|]}d|jd�kr|�qS)Zlsphp�id)r0)r4r5rrrr6�sz"get_plesk_stat.<locals>.<listcomp>rLr7ZfullVersion�.N�cSsg|]}|jd��qS)�domain)r0)r4�drrrr6�sz	get-usage)rLZcustom)rKr8ZlsapicSsi|]\}}t|�|�qSr)�len)r4�krKrrr�
<dictcomp>�sz"get_plesk_stat.<locals>.<dictcomp>���)r$rr0rDrGr:r"r?Zplesk_selector_checkrBrC�AttributeErrorrZSelectorStatExceptionrrErFr>)
rHrIZhandler_tmplZcustom_versionZdomain_version_statZall_handlersZlsphp_handlersrJZ
handler_idZphp_version�domainsZ
version_idZresult_statrrrr �s*

r cs d}t�}�y�t�}|dd}|dd}|dd}|dd}t|�}	t|�}
t�}t���fdd�|j�D�|dkr�|	�i}|	�i||<�n|dkr�|
�i}|
�i||<n�|	t�|
t�i}x�|j�D]�\}
}x�|D]x}|j|
|d	�}y<t|�\}}|j	|d
�}t||d�}|j
|�j|�Wq�tj
k
�rR|j
|	�j|�Yq�Xq�Wq�W||k�r�|	||	|
||
i||<n,|	||	|
t�i||<|
||
|	t�i||<|�r�tj|j
|	�||	�}|j
|�j|�Wn6ttttfk
�rtdjtj�jd����YnXt||	|
g|�S)
aN
    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`, ... }
                    ...
                )
    z>/usr/local/directadmin/data/users/{user}/domains/{domain}.confrNr1�rJcsg|]}�j|��qSr)r%)r4rK)�joinedrrr6�szget_da_stat.<locals>.<listcomp>�no)�userrOZphp1_selectr7r8)r$rrrr:r)r>r"r
Zgetintr0r;�configparserZ
NoOptionErrorr?Zda_selector_checkr%rBrCrUrrrDrErFrGr)rHrIZdomain_conf_pathZhandler_statZphp_optionsZphp1_verZphp2_verZphp1_handlerZphp2_handlerZ
php1_labelZ
php2_labelZuser_domainsZversion_statrZrVrOZconfig_pathZconf_parserZglobal_sectionZphp_settingr1Zselector_updatedr)rXrr!�sV

r!cCsndjtjd��}y"tjdddgtjtjd�d}Wntjk
rLd}YnXd||rd|jd	�d
ndd�iS)
z�
    Get criu service info
    :return: dict(
                `criu`: dict(
                    `status`: running/stopped,
                    `version`: version
                )
            )
    r7z/usr/sbin/criu -Vz
/sbin/service�criu�status)�stdout�stderrZrunning�stopped� rNz
not installed)r]r1)rD�exec_command�
subprocessZ
check_callZDEVNULLZCalledProcessErrorrG)Zcriu_versionZcriu_service_statusrrrr's

r'cCsTt�}t�}|jdd�}|jdd�|jdd�d�|jdd�tt�d�|sLd	nd
d�S)al
    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
            )
    Zlsapi_moduleN�
lsapi_criuZoff�lsapi_with_connection_pool)rdrer1Zliblsapi_versionZdisabledZenabled)�	lsapiConfZ
modVersion�
libVersion�	modStatus)r	rr0r
r)Zapache_confZapache_modulesZ
mod_statusrrrr&s


r&cstt���fdd�}dj|dd|ddd�}|d	}|t|d
�|t|�|t|��sbdS|jd�i�dS)
z�
    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&YnXdS)N)�appendrB)Zmalfunc_dict�key)�malfunctionsrr�add_malfunctionHsz-analyze_malfunctions.<locals>.add_malfunctionz{opt}_{serv}rfrdr\r])�optZservrhrgNrk)r<r"rrrr%)Z
stats_dictrlZ
criu_settingsZlsapi_settingsr)rkrr*?s

r*)F)TT)TT)TT)#rr+rErcr[rb�lve_diagnosticrZdashboard_malfunctionsrrr�
stat_utilsrrrr	r
rrr
rrrrr?�	Exceptionrr0rr r!r'r&r*rrrr�<module>s($
7
1
,
O