ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ# -*- coding: utf-8 -*- # domainlib.py - library for miscelaneous domain operations # # Copyright © Cloud Linux GmbH & Cloud Linux Software, Inc 2010-2019 All Rights Reserved # # Licensed under CLOUD LINUX LICENSE AGREEMENT # http://cloudlinux.com/docs/LICENSE.TXT from clcommon import cpapi from clcommon.clexception import FormattedException from clcommon.cpapi import NotSupported class DomainException(FormattedException): pass class Domain: def __init__(self): self._userdomain_cache = None # type: dict[str, str] def get_user_domain(self, username): """ Retrive main domain for supplied user :param username: User name :return: Domain name or N/A """ if self._userdomain_cache is None: try: self._userdomain_cache = dict(cpapi.cpinfo(keyls=('cplogin', 'dns'))) except NotSupported: self._userdomain_cache = {} return self._userdomain_cache.get(username, 'N/A') def get_user_name_by_domain(self, domain_name): """ Retrive username by domain :param domain_name: Domain name :return: Username """ try: username = cpapi.domain_owner(domain_name) if username: return username except (IOError, cpapi.cpapiexceptions.NotSupported) as e: raise DomainException(str(e)) from e raise DomainException({'message': "There is no domain '%(domain)s'", 'context': {'domain': domain_name}})