/usr/lib/python3/dist-packages/lexicon/client.py is in python3-lexicon 2.2.1-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | from builtins import object
import importlib
import os
import tldextract
from .common.options_handler import env_auth_options
#from providers import Example
class Client(object):
def __init__(self, cli_options):
#validate options
self._validate(cli_options)
#process domain, strip subdomain
domain_parts = tldextract.extract(cli_options.get('domain'))
cli_options['domain'] = '{0}.{1}'.format(domain_parts.domain, domain_parts.suffix)
if cli_options.get('delegated'):
# handle delegated domain
delegated = cli_options.get('delegated').rstrip('.')
if delegated != cli_options.get('domain'):
# convert to relative name
if delegated.endswith(cli_options.get('domain')):
delegated = delegated[:-len(cli_options.get('domain'))]
delegated = delegated.rstrip('.')
# update domain
cli_options['domain'] = '{0}.{1}'.format(delegated, cli_options.get('domain'))
self.action = cli_options.get('action')
self.provider_name = cli_options.get('provider_name')
self.options = env_auth_options(self.provider_name)
self.options.update(cli_options)
provider_module = importlib.import_module('lexicon.providers.' + self.provider_name)
provider_class = getattr(provider_module, 'Provider')
self.provider = provider_class(self.options)
def execute(self):
self.provider.authenticate()
if self.action == 'create':
return self.provider.create_record(self.options.get('type'), self.options.get('name'), self.options.get('content'))
elif self.action == 'list':
return self.provider.list_records(self.options.get('type'), self.options.get('name'), self.options.get('content'))
elif self.action == 'update':
return self.provider.update_record(self.options.get('identifier'), self.options.get('type'), self.options.get('name'), self.options.get('content'))
elif self.action == 'delete':
return self.provider.delete_record(self.options.get('identifier'), self.options.get('type'), self.options.get('name'), self.options.get('content'))
def _validate(self, options):
if not options.get('provider_name'):
raise AttributeError('provider_name')
if not options.get('action'):
raise AttributeError('action')
if not options.get('domain'):
raise AttributeError('domain')
if not options.get('type'):
raise AttributeError('type')
|