}CeddlmZddlmZddlmZddlmZddlmZddlm Z ddl m Z ddl m Z e Zd Zd Zd ZddZddZGdde Zd S))absolute_import)division)print_function)Dict NotSupported)UNKNOWN_CP_NAME)Feature)GeneralPanelPluginV1cdS)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.3.7-2.el7.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/cpapi/plugins/nopanel.pyget_cp_descriptionrs 4rc tdNz=Unable to receive data. Not supported without a control panelrr rr db_accessr V W WWrc*tdddid)z_ return all users list registered on Control Panel :return: tuple registered users &%(action)s is not currently supported.action1Getting all users registered in the control panelmessagecontextrr rrcpusersrs, ;QR  rNFc tdrr) cplogin_lstwith_system_userss rdblogin_cplogin_pairsr )rrc&ddlm}||S)zs Gets admin email :param str|None _hostname: for testing :return: admin's email :rtype: string rget_admin_email) _hostname) clcommon.cpapi.plugins.universalr#)r$r#s rr#r#-s*A@@@@@ ?Y / / //rceZdZfdZdZdZdZdZdZdd Z dd Z d Z dd Z ddZ ddZdZdZedZdZdZddZddZdZdZdeeefffd ZxZS) PanelPlugincVtt|dSN)superr'__init__)self __class__s rr+zPanelPlugin.__init__9s% k4  ))+++++rctS)z4 Return panel name :return: ) __cpname__r,s r getCPNamezPanelPlugin.getCPName<s rcdS)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 r0s rrzPanelPlugin.get_cp_descriptionCs trctS)zR Retrieve admin email address :return: Host admin's email r"r0s rr#zPanelPlugin.get_admin_emailKs    rc tdrrr0s rrzPanelPlugin.db_accessRZ[[[rc*tdddid)zk return all users list registered on Control Panel :return: tuple registered users rrrrrr0s rrzPanelPlugin.cpusersUs, ? "UV     rNFc tdrr)r,rrs rr z!PanelPlugin.dblogin_cplogin_pairs_r5rcgS)z Return list of available admin's packages :return: List of packages. For example ['BusinessPackage', 'Package2'] r r, raise_excs radmin_packageszPanelPlugin.admin_packagesb  rcdS)z Retrieves reseller name and package name by uid :param user_id: User id :return: Cortege: (Reseller_name, Package_name) r r )r,user_ids rreseller_package_by_uidz#PanelPlugin.reseller_package_by_uidjs rrcgS)z Retrieves uid list for package :param package_name: Package name :param reseller_name: Reseller name. None for admin's package :return: List of uids Example: ['1000', '1002', '1006', '1007', '1008'] r )r, package_name reseller_names rget_uids_list_by_packagez$PanelPlugin.get_uids_list_by_packager  rcploginpackagemailresellerdnslocaleTcdS)a Retrives specified info about panel users :param str|unicode|list|tuple|None cpuser: user login :param keyls: List or cortege of data which is necessary to obtain the user, values can be: cplogin - name/login user control panel mail - Email users reseller - name reseller/owner users locale - localization of the user account package - User name of the package dns - domain of the user userid - uid :param search_sys_users: :return: returns a tuple of tuples of data in the same sequence as specified keys in keylst Examples: cpinfo('cltest1') (('cltest1', 'default', '', 'root', 'cltest1.com', 'en'),) cpinfo() (('res1usr1', 'res1_pack1', '', 'res1', 'res1usr1.com', 'en'), ('res1', 'default', '', 'root', 'res1.com', 'en'), ('res2', 'default', '', 'res2', 'res2.com', 'en'), ('cltest1', 'default', '', 'root', 'cltest1.com', 'en'), ('system', 'undefined', None, 'root', '', 'en')) :rtype: tuple r r )r,cpuserkeylssearch_sys_userss rcpinfozPanelPlugin.cpinfo|s 6rrciS)a  Return dictionary, contains available resellers packages, grouped by resellers :return: Dictionary. Example: {'res1': ['BusinessPackage', 'UltraPackage', 'Package'], 'res2': ['SimplePackage', 'Package'] } r r9s rresellers_packageszPanelPlugin.resellers_packagesrDrcgS)z| Gets admin emails list :rtype: List :return: List: ['admin1@mail.com', 'admin2@mail.com' ] r r0s rget_admin_emails_listz!PanelPlugin.get_admin_emails_listr<rcdS)zb Return document root for domain :return: Cortege: (document_root, owner) )rVr r,domains rdocrootzPanelPlugin.docroots vrcgS)z Return aliases from user domain :param str|unicode cpuser: user login :param str|unicode domain: :return list of aliases r )rMrXs r useraliaseszPanelPlugin.useraliasesrDrcgS)z Return domain and document root pairs for control panel user first domain is main domain :param str|unicode cpuser: user login :rtype: List :return: list of tuples (domain_name, documen_root) r )r,rMs r userdomainszPanelPlugin.userdomainsrDrcgS)z Detects and returns list of folders contained the home dirs of users of the cPanel :rtype: List :return: list of folders, which are parent of home dirs of users of the panel r r0s rhomedirszPanelPlugin.homedirsr<rcgS)z Return reseller users :param resellername: reseller name; autodetect name if None :rtype: List :return list[str]: user names list r r, resellernames rreseller_userszPanelPlugin.reseller_userss  rciS)z Return reseller users and their main domains :param resellername: reseller name; autodetect name if None :return dict[str, str]: pairs user <==> domain r ras rreseller_domainszPanelPlugin.reseller_domainsr<rcdS)z Get login url for current panel; :type domain: str :rtype: str :return: Panel login URL rVr rWs rget_user_login_urlzPanelPlugin.get_user_login_urls rrciS)z Get dict reseller => id Optional method for panels without hard link reseller <=> system user :rtype: dict[str,int] - {'res1': id1} :return: r r0s rget_reseller_id_pairsz!PanelPlugin.get_reseller_id_pairsrDrreturnc tt|}i|tjdtjdtjdtjdtjdiS)zg Return list of cloudlinux features that can be used on current control panel. F) r*r'get_supported_cl_featuresr RUBY_SELECTORPYTHON_SELECTORNODEJS_SELECTORRESELLER_LIMITSWPOS)r,supported_featuresr-s rrlz%PanelPlugin.get_supported_cl_featuressf #;55OOQQ       !5  #U  #U  #U L%   rNF)Fr))NrET)__name__ __module__ __qualname__r+r1rr#rrr r;r?rCrPrRrTrY staticmethodr[r]r_rcrergrirstrboolrl __classcell__)r-s@rr'r'8s,,,,,!!!\\\   \\\\)d $:\ 4T ?          rr'rsr)) __future__rrrtypingrclcommon.cpapi.cpapiexceptionsrclcommon.cpapi.constr clcommon.constr clcommon.cpapi.GeneralPanelr r/rrrr r#r'r rrrs7'&&&&&%%%%%%777777000000""""""<<<<<<  XXXXXXX0000I I I I I &I I I I I r