
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
Ö;j(  ã               @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZddlmZm	Z	m
Z
mZmZmZ dZdZdd„ Zejdd	„ ƒZd
d„ ZdQdd„ZdZdddœZdRdd„Zdd„ Zdd„ Zdd„ Zejdd„ ƒZejdd„ ƒZejd d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Z d(d)„ Z!d*d+„ Z"d,d-„ Z#d.d/„ Z$d0d1„ Z%d2efd3efd4e fd5e!fd6e"fd7e#fd8e$ffZ&d9d:„ Z'd;d<„ Z(d=d>„ Z)ej*e
j+d?�d@dA„ ƒZ,ej*e
j+d?�dBdC„ ƒZ-ejej*e
j+d?�dDdE„ ƒƒZ.ej*e
j+d dF�dGdH„ ƒZ/ej*e
j+d dF�dIdJ„ ƒZ0ej*e
j+d?�dKdL„ ƒZ1ej*e
j+dSdF�dMdN„ ƒZ2dOdP„ Z3dS )Té    Né   )ÚconfigÚ	constantsÚ	log_utilsÚprocess_utilsÚselinuxÚutilsz/usr/libexec/kcare/virt-whatz/procc              C   s2   t jd d… dk rtjƒ S dd l} | jdd�S d S )Né   é   é   r   F)Úfull_distribution_name)r
   r   )ÚsysÚversion_infoÚplatformÚlinux_distributionÚdistro)r   © r   ú4/usr/libexec/kcare/python/kcarectl/platform_utils.pyÚ
get_distro   s    r   c               C   s   t jƒ d S )Nr	   )r   Úunamer   r   r   r   Úget_system_uname   s    r   c               C   s   dt jd t jd f S )Nz%s.%sr   r   )r   r   r   r   r   r   Úget_python_version$   s    r   Fc       	      C   s¢   t ƒ tjdœ}tjƒ r^tjddddttj	ƒ ƒgdd�\}}}|sN|j
ƒ d }nd	| }||d
< | rltj|ƒS t|ƒ}d}x |D ]}|d||| f 7 }q~W |jƒ S )N)Úpython_versionÚagent_versionZpsz-Zz--no-headersz--pidT)Úcatch_stdoutr   z	error: %sÚselinux_contextÚ z%s: %s
)r   r   ÚVERSIONr   Zis_selinux_enabledr   Úrun_commandÚstrÚosÚgetpidÚsplitÚjsonÚdumpsÚsortedÚrstrip)	Úis_jsonÚinfoÚrcÚstdoutÚstderrr   Z	info_keysZinfo_strZinfo_keyr   r   r   Úapp_info(   s    
&

r,   z/sys/firmware/efi/efivarsz$8be4df61-93ca-11d2-aa0d-00e098032b8cz$605dab50-e046-4300-abb6-3dd810dd8b23)ÚglobalÚshimé   c          	   C   sF   t jjtd| |f ƒ}t jj|ƒs&d S t|dƒ�}|j|ƒS Q R X d S )Nz%s-%sÚrb)r    ÚpathÚjoinÚEFIVARS_PATHÚexistsÚopenÚread)ÚnameÚvendorZ	max_bytesZvar_pathÚvarr   r   r   Ú_read_uefi_varI   s
    r:   c              C   s@   y&t dtd ƒ} | r$| dd … dkS W n tk
r:   Y nX dS )NÚ
SecureBootr-   r   ó   Féÿÿÿÿ)r:   ÚEFI_VENDORSÚ	Exception)Zsecure_boot_varr   r   r   Úis_secure_bootR   s    r@   c             C   sZ   yt | |ƒ}|d krd S W n. tk
rH } zt|ƒjƒ }W Y d d }~X nX tjtj|ƒƒS )N)r:   r?   r   Úencoder   ÚnstrÚbase64Úurlsafe_b64encode)r7   r8   Zvalue_bytesÚer   r   r   Ú_get_uefi_var_encoded]   s    
rF   c              C   s  t jtjjtdƒƒ} | r0t| ƒdkr0| d d… } | tjjtjjt	ƒƒdœ}|d sV|S yŒt
dd„ dD ƒƒ|d	< td
d„ tjt	ƒD ƒƒ}d|i|d< tddddgƒ}x<|D ]4}|dksÆ|jdƒr¨||kr¨t|td ƒ|d |< q¨W W n2 tk
�r } ztjt|ƒƒ W Y d d }~X nX |S )NÚcmdlinei   )rG   Úhas_efirH   c             s   s    | ]}|t |td  ƒfV  qdS )r-   N)rF   r>   )Ú.0r9   r   r   r   ú	<genexpr>r   s    z#secure_boot_info.<locals>.<genexpr>r;   Ú	SetupModer-   c             S   s4   g | ],}|j td  ƒr|dttd  ƒ d … ‘qS )r.   r   r   )Úendswithr>   Úlen)rI   r9   r   r   r   ú
<listcomp>t   s    z$secure_boot_info.<locals>.<listcomp>Úvarsr.   Z	MokListRTZ
MokListXRTZMokListTrustedRTZSbatLevelRTÚ	HSIStatusÚMokIgnoreDBZRT)r;   rK   )rP   rQ   )r   Útry_to_readr    r1   r2   ÚPROC_DIRrM   r4   Údirnamer3   Údictr%   ÚlistdirÚsetrL   rF   r>   r?   r   Úlogwarnr   )rG   r(   Z	shim_varsZshim_exclude_varsr9   Úerrr   r   r   Úsecure_boot_infoh   s$    
 rZ   c              C   sr   t jrfy&tjtjƒ ddddtjƒd d } W qn tjk
rb } ztj|ƒ t	j
ƒ } W Y d d }~X qnX nt	j
ƒ } | S )Nr   r
   )r   ÚREPORT_FQDNÚsocketÚgetaddrinfoÚgethostnameÚAI_CANONNAMEÚgaierrorr   Úlogerrorr   Únode)ÚhostnameÚger   r   r   Úget_hostname€   s    &
re   c              C   sT   t jjtdƒ} t jj| ƒrPt| dƒ}|jƒ }ttt	|j
ƒ d ƒƒƒ}|jƒ  |S dS )NÚuptimeÚrr   z-1)r    r1   r2   rS   Úisfiler5   Úreadliner   ÚintÚfloatr"   Úclose)Zuptime_fileÚfÚlineÚresultr   r   r   Ú
get_uptime�   s    
rp   c               C   s    t jjtƒrtjtgƒjƒ S dS )Nzno-virt-what)r    r1   rh   ÚVIRTWHATr   Úcheck_outputÚstripr   r   r   r   Úget_virt�   s    rt   c               C   s   t jjdƒS )Nz/usr/local/cpanel/cpanel)r    r1   rh   r   r   r   r   Ú	is_cpanel¤   s    ru   c               C   s   t jjdƒS )Nz/usr/local/psa/admin/)r    r1   Úisdirr   r   r   r   Úis_plesk©   s    rw   c               C   s   t jjdƒS )Nz/usr/local/interworx/)r    r1   rv   r   r   r   r   Úis_interworx®   s    rx   c               C   s   t jjdƒS )Nz/usr/local/ispmgr/)r    r1   rv   r   r   r   r   Úis_ispmanager³   s    ry   c               C   s   t jjdƒS )Nz/usr/local/directadmin/plugins/)r    r1   rv   r   r   r   r   Úis_directadmin¸   s    rz   c               C   s   t jjdƒS )Nz/usr/local/hostingcontroller/)r    r1   rv   r   r   r   r   Úis_hosting_controller½   s    r{   c               C   s   t jjdƒS )Nz/hsphere/shared)r    r1   rv   r   r   r   r   Ú
is_hsphereÂ   s    r|   c               C   s   t dd„ dD ƒƒS )z:Softaculous markers checked by the kcdoctor.sh detect_cp()c             s   s   | ]}t jj|ƒV  qd S )N)r    r1   r4   )rI   r1   r   r   r   rJ   Ë   s   z"has_softaculous.<locals>.<genexpr>ú/usr/local/softaculousú*/usr/local/cpanel/whostmgr/cgi/softaculousú*/usr/local/directadmin/plugins/softaculous)r}   r~   r   )Úanyr   r   r   r   Úhas_softaculousÇ   s
      r�   ZPleskZcPanelZ	InterWorxZ
ISPmanagerZDirectAdminzHosting ControllerzH-Spherec               C   s2   t jjt jjtddƒƒo0t jjt jjtddƒƒ S )NZvzZveinfoÚversion)r    r1   r4   r2   rS   r   r   r   r   Úinside_vz_containerá   s    rƒ   c               C   s   dt tjjtddƒƒjƒ kS )Nz/lxc/Ú1Zcgroup)r5   r    r1   r2   rS   r6   r   r   r   r   Úinside_lxc_containerå   s    r…   c               C   s   t jjdƒS )Nz/.dockerenv)r    r1   rh   r   r   r   r   Úinside_docker_containeré   s    r†   )Úloggerc              C   sF   t jtjjtdƒƒ} | sd S | jddƒ\}}}}t|ƒt|ƒt|ƒfS )NÚloadavgú r
   )r   rR   r    r1   r2   rS   r"   rk   )rˆ   Úm1Zm5Zm15Ú_r   r   r   Úget_load_averageí   s
    rŒ   c                 sD   t jtjjtdƒƒ} | sdS d
‰ t‡ fdd„d	d„ | jƒ D ƒD ƒƒS )z!Returns dict of memory info in kBÚmeminfoNÚMemTotalÚMemFreeÚ	SwapTotalÚSwapFreec             3   s&   | ]\}}|ˆ kr|t |ƒfV  qd S )N)rj   )rI   ÚkÚv)Úfilter_paramsr   r   rJ     s    zget_mem_info.<locals>.<genexpr>c             s   s"   | ]}t jd |ƒdd… V  qdS )z[\s:]+Nr	   )Úrer"   )rI   rn   r   r   r   rJ     s    )rŽ   r�   r�   r‘   )r   rR   r    r1   r2   rS   rU   Ú
splitlines)r�   r   )r”   r   Úget_mem_info÷   s
    r—   c              C   s¼   t jtjjtdƒƒ} | sd S dd„ | jdƒD ƒ}t|ƒttdd„ |D ƒƒƒ|d j	dƒt
|d j	d	dƒƒ|d j	d
ƒt
|d j	ddƒƒt
|d j	ddƒƒ|d j	dƒ|d j	ddƒjƒ dœ	S )NÚcpuinfoc             S   s&   g | ]}|rt d d„ |jƒ D ƒƒ‘qS )c             s   s   | ]}t jd |ƒV  qdS )z\s*:\s*N)r•   r"   )rI   rn   r   r   r   rJ     s    z*get_cpu_info.<locals>.<listcomp>.<genexpr>)rU   r–   )rI   Z	cpu_linesr   r   r   rN     s   z get_cpu_info.<locals>.<listcomp>z

c             s   s"   | ]}|j d ƒ|j dƒfV  qdS )zphysical idzcore idN)Úget)rI   Zcpur   r   r   rJ     s    zget_cpu_info.<locals>.<genexpr>r   Ú	vendor_idÚmodelz
model namez
cpu familyÚsteppingÚ	microcodeÚflagsr   )	Zlogical_coresZphysical_coresrš   r›   Z
model_nameZ
cpu_familyrœ   r�   rž   )r   rR   r    r1   r2   rS   r"   rM   rW   r™   rj   )r˜   Zcpusr   r   r   Úget_cpu_info  s    rŸ   )r‡   Údefault_returnc               C   s   t dd„ tjtƒD ƒƒS )Nc             S   s   g | ]}|j ƒ r|‘qS r   )Úisdigit)rI   Údr   r   r   rN      s    z%get_process_count.<locals>.<listcomp>)rM   r    rV   rS   r   r   r   r   Úget_process_count  s    r£   c              C   s(   t jtjjtdƒƒ} t| pdjƒ d ƒS )Nzsys/fs/file-nrÚ0r   )r   rR   r    r1   r2   rS   rj   r"   )Zfd_infor   r   r   Úget_opened_files_count#  s    r¥   c              C   s$   xt jdƒD ]\} }}t|ƒS W d S )Nz/sys/kernel/debug/kvm)r    ÚwalkrM   )Z_rootÚdirsÚ_filesr   r   r   Úget_vm_count_kvm*  s    
r©   c              C   s(   dd„ } | dƒ| dƒ | dƒ| dƒ fS )z8Return tuple of total numbers of TCP and UDP connectionsc             S   s4   t jtjjtd| ƒƒ}|sdS tt|jƒ ƒd dƒS )NÚnetr   r   )	r   rR   r    r1   r2   rS   ÚmaxrM   r–   )ÚprotoÚrecordsr   r   r   Úconn_records_count7  s    z9get_network_connections_count.<locals>.conn_records_countZtcpZtcp6ZudpZudp6r   )r®   r   r   r   Úget_network_connections_count2  s    r¯   c           	   C   s,   t ƒ \} }tƒ tƒ tƒ tƒ tƒ tƒ | |dœS )N)Zload_averageZmem_infoZcpu_infoZvm_countZ	processesZ
open_filesZtcp_connectionsZudp_connections)r¯   rŒ   r—   rŸ   r©   r£   r¥   )Zconn_tcpZconn_udpr   r   r   Úget_performance_metricsA  s    
r°   )F)r/   )r   r   )4rC   r#   r    r   r•   r\   r   r   r   r   r   r   r   r   rq   rS   r   Úcachedr   r   r,   r3   r>   r:   r@   rF   rZ   re   rp   rt   ru   rw   rx   ry   rz   r{   r|   r�   ZCONTROL_PANEL_PROBESrƒ   r…   r†   Úcatch_errorsrX   rŒ   r—   rŸ   r£   r¥   r©   r¯   r°   r   r   r   r   Ú<module>   sd    	

	

