MMCT TEAM
Server IP : 111.118.215.189  /  Your IP : 216.73.216.185
Web Server : Apache
System : Linux md-in-83.webhostbox.net 4.19.286-203.ELK.el7.x86_64 #1 SMP Wed Jun 14 04:33:55 CDT 2023 x86_64
User : a1673wkz ( 2475)
PHP Version : 8.2.25
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /usr/share/lve/modlscapi/user/__pycache__/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : //usr/share/lve/modlscapi/user/__pycache__/stat_utils.cpython-36.pyc
3

N_"g�$�@s�ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
Z
Gdd�de�Zdd�Z
dd	�Zd
d�Zdd
�Zd%dd�Zd&dd�Zd'dd�Zd(dd�Zdd�Zdd�Zdd�Zd)d d!�Zd*d#d$�ZdS)+�N)�StringIO)�quotec@seZdZdS)�StatUtilsExceptionN)�__name__�
__module__�__qualname__�rr�/stat_utils.pyrsrcKs�djdd�|j�D��}tjdj||d��}ytjdj|��}Wn,tk
rltdj||dj|����YnXy|dStk
r�td	j|���YnXd
S)z�
    Perform cPanel WHM API console request and return data from result
    :param cmd: whm api command
    :return: data dict from result
    � cSs g|]\}}tdj||���qS)z{0}={1})r�format)�.0�k�vrrr	�
<listcomp>$sz!cpanel_whmapi.<locals>.<listcomp>z*/usr/sbin/whmapi1 {cmd} {kw} --output json)�cmd�kw�z>Failed to get JSON from this API request: {0} {1}; output: {2}�dataz,Failed to get data from this API result: {0}N)	�join�items�exec_commandr�json�loads�
ValueErrorr�KeyError)r�kwargs�
joined_kwargs�resultZdict_resultrrr	�
cpanel_whmapisrcKsndjdd�|j�D��}tjdj||d��}ytjdj|��Stk
rhtdj||dj|����YnXdS)	z�
    Perform Plesk php_handler utility console request and return result
    :param cmd: php_handler command
    :return: dict result
    r
cSs g|]\}}dj|t|���qS)z-{0} {1})rr)rr
rrrr	r=sz)plesk_bin_php_handler.<locals>.<listcomp>z6/usr/local/psa/bin/php_handler --{cmd} {kw} -json true)rrrzJFailed to get JSON from this API request: php_handler {0} {1}; output: {2}N)rrrrrrrr)rrrrrrr	�plesk_bin_php_handler6s

rcCs�d}d}tj|�}tj|�}yJxD|D]<}t|j|d�d�� }tdd�|j�D��||<WdQRXq$WWn0tt	fk
r�t
djtj
�jd	����YnX|S)
ze
    Get domains per user
    :return: dict(
                user: list of domains
            )
    z!/usr/local/directadmin/data/usersz5/usr/local/directadmin/data/users/{user}/domains.list)�user�rcSsg|]}|j��qSr)�strip)r�lrrr	rXsz"get_da_domains.<locals>.<listcomp>Nr�
)�os�listdir�dict�fromkeys�openr�set�	readlines�OSError�IOErrorrr�	traceback�
format_exc�split)Z
da_users_pathZda_domains_pathZda_usersZdomainsr Zdomains_list_filerrr	�get_da_domainsIs


,r1cCs�d}y@t|�\}}|j|d�}|j|d�}|j|d�}|j|d�}Wn4tjk
rxtdjdjtj�j	d�����YnX||d	kr�d
n|d�||d	kr�d
n|d�d�S)
z�
    Get php settings from options.conf
    :return: dict(
                first php setting: {version, mode},
                second php setting: {version, mode},
            )
    z//usr/local/directadmin/custombuild/options.confZphp1_releaseZphp2_releaseZ	php1_modeZ	php2_modezNo option found: {0}rr$Zlsphp�lsapi)�versionZhandler)��)
�read_da_config�get�configparserZ
NoOptionErrorrrrr.r/r0)Zoptions_path�
config_parserZglobal_sectionZphp1_verZphp2_verZphp1_handlerZphp2_handlerrrr	�get_da_php_options^s$r:�
dummy_sectioncCs�yFt|��}tdj|d�|j��}WdQRXtjdd�}|j|�Wn0ttfk
rvt	dj
tj�j
d����YnX||fS)z�
    Read DA config file with ConfigParser.
    Need to add dummy section for success
    :param conf_file: config file name
    :param append_section_name: name of section to place in the beginning of file
    :return: RawConfigParser instance
    z[{s}]
)�sNF)�strictrr$)r)rr�readr8ZRawConfigParserZ	read_filer,r-rrr.r/r0)Z	conf_fileZappend_section_name�fZfile_contentr9rrr	r6}s
"r6�phpcCs6dj|�}y|t|jd��Stk
r0|SXdS)z�
    Convert simple php versions to pretty format
    :param php_ver: {major}.{minor} version
    :param pre: desired key start
    :return: alt-php{major}{minor} or desired `pre`{major}{minor}
    z{0}%s%s�.N)r�tupler0�	Exception)Zphp_verZpre�templaterrr	�pretty_version_keys�s

rE�/usr/sbin/httpdc	Cs6tjdj|d��}ytdd�|D��St�SdS)a+
    Get `httpd -t -D DUMP_RUN_LSAPI` info
    For httpd24 this default path is `/opt/rh/httpd24/root/usr/sbin/httpd`, generated in make_from_templates.sh script
    :param ctl_path: path to httpd (also apachectl may be used)
    :return: dict(
                lsapi_option: value
            )
    z{ctl} -t -D DUMP_RUN_LSAPI)�ctlcSsg|]}|j�jd��qS)r
)�lowerr0)rr#rrr	r�szdump_lsapi.<locals>.<listcomp>N)rrr')�ctl_pathZapache_conf_datarrr	�
dump_lsapi�s
	rJc	Cs6tjdj|d��}ytdd�|D��St�SdS)a
    Get `httpd -M`
    For httpd24 this default path is `/opt/rh/httpd24/root/usr/sbin/httpd`, generated in make_from_templates.sh script
    :param ctl_path: path to httpd (also apachectl may be used)
    :return: dict(
                apache_module: value
            )
    z{ctl} -M)rGcSsg|]}|j�jd��qS)r
)rHr0)rr#rrr	r�sz'dump_loaded_modules.<locals>.<listcomp>N)rrr')rIZapache_modulesrrr	�dump_loaded_modules�s
	rKcCstjdk}dj|rdndd�S)zR
    Retrieve path to liblsapi, depends on arch
    :return: path to liblsapi
    r5� z/usr/lib{a}/liblscapi.soZ64r)�al)�sys�maxsizer)Z	is_64bitsrrr	�
liblsapi_path�s
rPcCsTy:djtjd|d��jd�\}}dj||jd�dd�Stk
rNd	SXd	S)
zr
    Get version-release from rpm -q `pkg`
    :param pkg: package name to query
    :return: version-release
    rz/bin/rpm -q z --qf %{v}-%{r}�-z{ver}-{rel}rAr)�ver�relN)rrr0rr)ZpkgrRrSrrr	�	rpm_query�s
"rTc
sHy(�fdd�t|�D�dj��dj�Stttfk
rBdSXdS)z�
    Filter strings by given template
    Also split string upon given template
    :param fname: path to file
    :param template: template to find in string
    :return: first template occurrence splitted by template
    csg|]}�|kr|�qSrr)rr#)rDrr	r�sz!query_strings.<locals>.<listcomp>rr4N)�stringsr0r"�
IndexErrorr-r,)�fnamerDr)rDr	�
query_strings�s(rX�c
csnt|dd��X}d}x:|j�D].}|tjkr4||7}qt|�|krF|Vd}qWt|�|kr`|VWdQRXdS)z�
    Strings utility analog.
    Finds printable strings in executable
    :param fname: path to file
    :param n: minimum string length
    :return: generator, yeilds string
    �ignore)�errorsrN)r)r>�stringZ	printable�len)rW�nr?r�crrr	rU�s
rUTcCsrt�}x.|j�D]"\}}tdd�|j�D��||<qWy|rD|dS|Stk
rltjdd�|D�d�SXdS)a�
    Count domains
    :param handler_struct: handler: version: set_of_domains structure
    :param default_keys: sequence of keys to add as default if no `lsapi` found
    :param only_lsapi: return only lsapi statistics
    :return: statistics - number of lsapi domains per version if only_lsapi=True
                          number of lsapi domains per version per handler otherwise
    css|]\}}|t|�fVqdS)N)r])rr
rrrr	�	<genexpr>sz count_domains.<locals>.<genexpr>r2cSsg|]}|dkr|�qS)�nor)r�xrrr	rsz!count_domains.<locals>.<listcomp>rN)r'rrr()Zhandler_structZdefault_keysZ
only_lsapiZresult_stat�hrrrr	�
count_domains�s	rd)r;)r@)rF)rF)rY)T)r\rNr%r.rr8�iorZpipesrrrCrrrr1r:r6rErJrKrPrTrXrUrdrrrr	�<module>s,



	



MMCT - 2023