Edit File: cpapicustombin.cpython-37.pyc
B �e! � @ s� d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlmZm Z m Z mZ ddlm Z ddlmZ d Ze ee eee eef f f d �dd�Zeee eef d �dd�ZdS )zv common helper functions, related to processing api using custom binary currently available for Directadmin and Plesk � )�absolute_import)�division)�print_functionN)�List�Tuple�Union�Optional)�exec_utility)�ClPwdz#/usr/share/python-cllib/userdomains)�returnc C s: t tg �\} }t�|�}| dkr2ttdd� |��}| |fS )a� Calls USERDOMAINS(userdomains.c) bin and returns rc and loaded json output This is equals to call `userdomains(pwd.getpwuid(os.getuid()).pw_name, as_root=True)` Returns: return code of USERDOMAINS and json output if rc == 0: `out` is out from `userdomains()` NB: there is no tuples in JSON so da_out's type is List[List[str, str]] instead of List[Tuple[str, str]] if rc != 0: `out` type is str error codes: 1: diradmin/psaadmin user not found 2: not DA/Plesk panel 3: seteuid() syscall failed 4: executed as root 10: exception during `userdomains()` call 11: no such user in panel r c S s t | �S )N)�tuple)�x� r ��/builddir/build/BUILDROOT/alt-python27-cllib-3.3.5-1.el8.cloudlinux.x86_64/opt/alt/python37/lib/python3.7/site-packages/clcommon/cpapi/cpapicustombin.py�<lambda>( � z/get_domains_via_custom_binary.<locals>.<lambda>)r �USERDOMAINS�json�loads�list�map)�rc�outZresr r r �get_domains_via_custom_binary s r )�domainr c C sV t � }|�t�� �d }t� \}}|dkr.dS x"|D ]\}}|| kr4||jfS q4W dS )z� New method for getting doc_root for domain under user Method parses /usr/local/directadmin/... user's web server config See: _get_domains_list_as_root() :return: (doc_root, username) tuple r N)r Z get_pw_by_uid�os�getuidr Zpw_name)r ZclpwdZuser_pwr ZdomainsZdomZ_docrootr r r �"_docroot_under_user_via_custom_bin, s r )�__doc__Z __future__r r r r r �typingr r r r Zclcommon.utilsr Zclcommon.clpwdr r �int�strr r r r r r �<module> s *