ruạṛ
a �u:jj � @ s� d dl Z d dlZd dlmZ dZe� d�e� d�e� d�e� d�e� d�e� d �e� d �e� d�e� d�e� d �e� d�d�Zdd� Zee ee d�dd�Zeed�dd�Z e d�dd�ZdS )� N)�Listz /opt/bart/binz/bart_rsync_wrapper.pyz/bart_mysqldump_wrapper.pyz/bart_mysql_wrapper.pyz/bart_chown_wrapper.pyz/bart_chmod_wrapper.pyz/bart_rm_wrapper.pyz/bart_rebuild_dbmap_wrapper.pyz/bart_dbstoregrants_wrapper.pyz/bart_uapi_wrapper.pyz/bart_restorepkg_wrapper.pyz/bart_pkgacct_wrapper.py)�rsyncZ mysqldump�mysql�chown�chmodZrmZcpanel_rebuild_dbmapZcpanel_dbstoregrantsZcpanel_uapiZ restorepkgZpkgacctc C s ddl m} | S )z� Lazy import of LogPrinter to avoid circular dependency: - utility_functions imports sudo_wrapper - sudo_wrapper imports LogPrinter *only when needed* r �� LogPrinter)Zapp.utils.utility_functionsr r � r �I/opt/bart/bart_venv/lib/python3.9/site-packages/app/utils/sudo_wrapper.py�_get_log_printer s r )�cmd�returnc C sj t � }| s| S t� r(|�d| � �� | S | d }t�|�}|rf|�d|�d|��� |g| dd � S | S )Nz/BART_DISABLE_WRAPPERS=1, not wrapping command: r zWrapping sudo command � -> � )r �_wrapping_disabled�debug�WRAPPED_SUDO_COMMANDS�get)r �log_printer�origZwrapper_cmdr r r �apply_sudo_wrapper_list# s r )�cmd_strr c C s� t � }t� r |�d| � �� | S zt�| �}W n> tyl } z&|�d|� d| ��� | W Y d }~S d }~0 0 |sv| S t|�}zt�|�}W n& t y� d�dd� |D ��}Y n0 |�d| �d|��� |S ) Nz6BART_DISABLE_WRAPPERS=1, not wrapping string command: z3Failed to shlex.parse command string for wrapping: z; cmd=� c s s | ]}t �|�V qd S )N)�shlex�quote)�.0�pr r r � <genexpr>M � z)apply_sudo_wrapper_str.<locals>.<genexpr>zWrapped string sudo command: r ) r r r r �split� ValueError�warnr �join�AttributeError)r r �parts�eZ wrapped_partsZjoinedr r r �apply_sudo_wrapper_str8 s$ r&