QkhBdZddlZddlmZdZd dZd dZd d Zd ZdS)z> api that is suitable for both cPanel, Directadmin, interWorx N) mysql_libcdS)z Retrieve panel name and it's version :return: dict: { 'CPName': 'panel_name', 'CPVer': 'panel_version', 'CPAdd': 'add_info'} or None if can't get info Nr/builddir/build/BUILDROOT/alt-python27-cllib-3.4.40-1.el9.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/cpapi/plugins/universal.pyget_cp_descriptionr s 4rmysqlc|dd}|d}|d}d}|rAd}ddgt|z}|d |d z }t|}nd }|d z }t j|||| } | 5} | ||cdddS#1swxYwYdS)z Extracting database login control panel login pairs from mysql database supported for cPanel, interWorx, Directadmin :param dblogin: :param dbpass: :param dbhost: :param dbname: :param cplogin_lst: :return: host localhostloginpassNzdSELECT User, LEFT(Db, LOCATE('\\', Db) - 1) AS DbPart FROM db WHERE User != '' and Db LIKE '%%\\\%%'z, z%sz( and LEFT(Db, LOCATE('\\', Db) - 1) in ()zbSELECT User, LEFT(Db, LOCATE('\\', Db) - 1) AS DbPart FROM db WHERE User != '' and Db LIKE '%\\\%'z GROUP BY User, DbPart)r userpasswddb)args)getjoinlenlistrMySQLConnectorconnect execute_query) access cplogin_lstdbnamedbhostdblogindbpassrsql placeholders connectorrs r_dblogin_cplogin_pairsr$sCZZ , ,FWoG F^F D t vyy$#k*:*:!:;;  KLKKKKK  t $$C(f7066CCCI     0$//000000000000000000sCC Cc2d|ptjzS)z| Gets admin email :param str|None _hostname: hostname for testing :return: admin's email :rtype: string zroot@)socket gethostname) _hostnames rget_admin_emailr):s i76#5#7#7 88rFcdgS)z List all admins names in given control panel :param bool debug: Do produce debug output or don't :return: list of strings rootr)debugs radminsr-Ds 8Orc"|tvS)zl Return True if username is in admin names :param str username: user to check :return: bool )r-)usernames ris_adminr0Ms vxx r)Nr )N)F) __doc__r&clcommonrrr$r)r-r0rrrr3s "0"0"0"0J9999     r