Newer
Older
certbot-dns-inwx / configuration.py
#!/usr/bin/env python3
# -*- encoding: UTF8 -*-

# author: Philipp Klaus, philipp.klaus →AT→ gmail.com
# modified by Pascal Gollor, pascal@pgollor.de since 2021-03-19

# This file is part of python-inwx-xmlrpc.
#
# python-inwx-xmlrpc is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# python-inwx-xmlrpc is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with python-inwx-xmlrpc. If not, see <http://www.gnu.org/licenses/>.

###########################################################################
###### This file helps to handle the INI-style .cfg files. ######
###### You only need it if you want to test the example script. ######
###### It is not needed if you just want to use the inwx class. ######

import sys

if sys.version_info.major == 3:
    import configparser
else:
    import ConfigParser as configparser

from os.path import expanduser

def get_account_data(print_errors = False, config_file = 'conf.cfg', config_section = 'ote'):
    """
    boolean print_errors:   Print errors to stdout instead of raising an exception.
    string config_file:     The name of the configuration file.
    string config_section:  The name of the section to read in the configuration file.
    """
    config = open_config_file(print_errors, config_file)
    try:
        username = config.get(config_section, 'username')
        password = config.get(config_section, 'password')
        shared_secret = config.get(config_section, 'shared_secret')
    except Exception as err:
        message = 'Error: Please make sure your config file %s contains the section %s with the entries "username", "password" and "shared_secret".' % (config_file, config_section)
        if print_errors:
            print(message)
            sys.exit(2)
        else:
            raise NameError(message)
    return (username, password, shared_secret)

def open_config_file(print_errors, config_file):
    config = configparser.ConfigParser()
    try:
        if config.read(config_file) == []: raise Exception()
    except:
        message = "Error: Please make sure you adopted the config file: %s" % config_file
        if print_errors:
            print(message)
            sys.exit(2)
        else:
            raise NameError(message)
    return config