ѠgxddlmZddlmZddlmZddlmZeZdZ dZ dZ dd Z dd Z Gd d eZdS) 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.4.22-1.el8.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/cpapi/plugins/nopanel.pyget_cp_descriptionr s 4r c tdNz=Unable to receive data. Not supported without a control panelrr r r db_accessr V W WWr c*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 r r cpusersrs, ;QR  r NFc tdrr) cplogin_lstwith_system_userss r dblogin_cplogin_pairsr#rr c&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 rs r rr's*A@@@@@ ?Y / / //r ceZdZfdZdZdZdZdZdZdd Z dd Z d Z dd Z d dZ ddZdZdZedZdZdZddZddZdZdZdeedffdZxZS)! PanelPlugincHtdSN)super__init__)self __class__s r r'zPanelPlugin.__init__3s r ctS)z4 Return panel name :return: ) __cpname__r(s r getCPNamezPanelPlugin.getCPName6s r cdS)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 r,s r r zPanelPlugin.get_cp_description=s tr ctS)zR Retrieve admin email address :return: Host admin's email rr,s r rzPanelPlugin.get_admin_emailEs    r c tdrrr,s r rzPanelPlugin.db_accessLZ[[[r c*tdddid)zk return all users list registered on Control Panel :return: tuple registered users rrrrrr,s r rzPanelPlugin.cpusersOs, ? "UV     r NFc tdrr)r(rrs r rz!PanelPlugin.dblogin_cplogin_pairsYr1r cgS)z Return list of available admin's packages :return: List of packages. For example ['BusinessPackage', 'Package2'] r r( raise_excs r admin_packageszPanelPlugin.admin_packages\  r cdS)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 r reseller_package_by_uidz#PanelPlugin.reseller_package_by_uidds rr cgS)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 r get_uids_list_by_packagez$PanelPlugin.get_uids_list_by_packagel  r cploginpackagemailresellerdnslocaleTcdS)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 r cpinfozPanelPlugin.cpinfovs 6rr ciS)a  Return dictionary, contains available resellers packages, grouped by resellers :return: Dictionary. Example: {'res1': ['BusinessPackage', 'UltraPackage', 'Package'], 'res2': ['SimplePackage', 'Package'] } r r5s r resellers_packageszPanelPlugin.resellers_packagesr@r cgS)z| Gets admin emails list :rtype: List :return: List: ['admin1@mail.com', 'admin2@mail.com' ] r r,s r get_admin_emails_listz!PanelPlugin.get_admin_emails_listr8r cdS)zb Return document root for domain :return: Cortege: (document_root, owner) )rRr r(domains r docrootzPanelPlugin.docroots vr cgS)z Return aliases from user domain :param str|unicode cpuser: user login :param str|unicode domain: :return list of aliases r )rIrTs r useraliaseszPanelPlugin.useraliasesr@r cgS)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(rIs r userdomainszPanelPlugin.userdomainsr@r cgS)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 r,s r homedirszPanelPlugin.homedirsr8r cgS)z Return reseller users :param resellername: reseller name; autodetect name if None :rtype: List :return list[str]: user names list r r( resellernames r reseller_userszPanelPlugin.reseller_userss  r ciS)z Return reseller users and their main domains :param resellername: reseller name; autodetect name if None :return dict[str, str]: pairs user <==> domain r r]s r reseller_domainszPanelPlugin.reseller_domainsr8r cdS)z Get login url for current panel; :type domain: str :rtype: str :return: Panel login URL rRr rSs r get_user_login_urlzPanelPlugin.get_user_login_urls rr ciS)z Get dict reseller => id Optional method for panels without hard link reseller <=> system user :rtype: dict[str,int] - {'res1': id1} :return: r r,s r get_reseller_id_pairsz!PanelPlugin.get_reseller_id_pairsr@r return.cttjtjtjtjtjfS)zg Return list of cloudlinux features that can be used on current control panel. )r RUBY_SELECTORPYTHON_SELECTORNODEJS_SELECTORRESELLER_LIMITSWPOSr,s r get_unsupported_cl_featuresz'PanelPlugin.get_unsupported_cl_featuress+  !  #  #  # L  r NF)Fr%)NrAT)__name__ __module__ __qualname__r'r-r rrrrr7r;r?rLrNrPrU staticmethodrWrYr[r_rarcretuplerrm __classcell__)r)s@r r#r#2s!!!\\\   \\\\)d $:\  U7C<-@         r r#rnr%)clcommon.cpapi.cpapiexceptionsrclcommon.cpapi.constrclcommon.featuresrclcommon.cpapi.GeneralPanelrr+r rrrrr#r r r rys877777000000%%%%%%<<<<<<  XXXXXXX0000G G G G G &G G G G G r