File: //opt/alt/python37/lib/python3.7/site-packages/xray/adviser/__pycache__/clwpos_get.cpython-37.pyc
B
�V�di � @ s� d Z ddlZddlZddlZddlZddlZddlmZ ddlm Z ddl
mZ ddlm
Z
ddlmZ dd lmZ e�d
�ZG dd� d�ZdS )
zG
This module contains a wrapper around `clwpos-user get` local utility
� N)�Optional)�Feature)�is_panel_feature_supported)�CloudlinuxSummary� )�
get_client)�NginxUserCacheZclwpos_utilc @ s� e Zd ZdZeedd�dd�Zeeed�dd��Ze e
e d �d
d��Ze ed �dd
��Zeee
e
d�dd�Zeee
d�dd�Zeed �dd��Zee
dd�dd��ZdS )�ClWposGetterz/usr/bin/clwpos-userN)�username�domain�returnc C sV | � |�rt�d� dS | �||�}t�dt|�� |rD| �|� nt�d||� dS )z8Construct and POST metadata to Smart Advice microservicez)ea-nginx detected, skipping metadata sendNzGot WPOS: %sz4Metadata for user %s with domain %s will not be sent)�nginx_cache_for_user�logger�info�construct_metadata�debug�str�send�warning)�selfr
r � json_data� r �H/opt/alt/python37/lib/python3.7/site-packages/xray/adviser/clwpos_get.py�
post_metadata s
zClWposGetter.post_metadata)r
r c C s
t | �jS )z9
Check nginx cache status for given user
)r �
is_enabled)r
r r r r
+ s z!ClWposGetter.nginx_cache_for_user)r c C s t tj�sdS dS )z0Special hack for executing user commands on Soloz%sudo -u %(username)s -s /bin/bash -cN)r r �CAGEFS)r r r r �wrapper2 s
zClWposGetter.wrapperc C s( t tj�s| j� d�S d| j� d�S dS )zResolve command to executez scan --website %(website)sz%/sbin/cagefs_enter_user %(username)s N)r r r �util)r r r r �cmd8 s
zClWposGetter.cmd)r
�
domainnamer c C s. t j�| j�sdS | jdk rH| j||d� �� }|�| j||d� � n| j||d� �� }ytj |ddd�}W n: t
ttjfk
r� } zt
�d| j|� dS d}~X Y nX |jdkr�t
�d| jtt|dd��tt|d d��� dS yt�|j�� �S tjk
�r( t
�d
| jtt|dd��� dS X dS )z<
External call of `clwpos-user get` utility
N)r
�websiteT)�capture_output�textzError running %s: %sr z9Metadata collection via %s failed. stdout: %s, stderr: %s�stdout�stderrz8Invalid JSON from %s for metadata collection. stdout: %s)�os�path�isfiler r �split�appendr �
subprocess�run�OSError�
ValueError�SubprocessErrorr �error�
returncoder �getattr�json�loadsr# �strip�JSONDecodeError)r r
r �_exec�result�er r r �utility@ s0
zClWposGetter.utilityc sD d}| � ||�� � dk r@||� fdd�� d �� D �| �� d�}|S )zX
Ensure format accepted by Smart Advice POST requests/metadata endpoint
Nc s. g | ]&\}}t d |� �� d �|g �d��qS )�/�issues)r&