}Ce! dZddlmZddlmZddlmZddlZddlZddlmZm Z m Z m Z ddl m Z ddlmZd Zd e ee eee eeffffd Zd ed e e eeffd ZdS)zv common helper functions, related to processing api using custom binary currently available for Directadmin and Plesk )absolute_import)division)print_functionN)ListTupleUnionOptional) exec_utility)ClPwdz#/usr/share/python-cllib/userdomainsreturncttg\}}tj|}|dkrt t d|}||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 rc t|S)N)tuple)xs /builddir/build/BUILDROOT/alt-python27-cllib-3.3.7-2.el7.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/cpapi/cpapicustombin.pyz/get_domains_via_custom_binary..(s q)r USERDOMAINSjsonloadslistmap)rcoutress rget_domains_via_custom_binaryrsQ";++GB *S//C Qww3))3//00 s7Nrdomainct}|tjd}t \}}|dkrdS|D]\}}||kr ||jfcSdS)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 rN)r get_pw_by_uidosgetuidrpw_name)rclpwduser_pwrdomainsdom_docroots r"_docroot_under_user_via_custom_binr(,s GGE!!")++..q1G011KB Qwwt -- X &==W_, , , ,  4r)__doc__ __future__rrrr rtypingrrrr clcommon.utilsr clcommon.clpwdr rintstrrr(rrr1s'&&&&&%%%%%% ////////////'''''' 3 uS%T%S/=R8R2S-S'T0sx #s(O8r