Mini Shell
# -*- 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}})
Zerion Mini Shell 1.0