diff options
| -rw-r--r-- | src/leap/base/configuration.py | 98 | ||||
| -rw-r--r-- | src/leap/eip/config.py | 86 | 
2 files changed, 102 insertions, 82 deletions
diff --git a/src/leap/base/configuration.py b/src/leap/base/configuration.py index 243e2e2c..31092f8a 100644 --- a/src/leap/base/configuration.py +++ b/src/leap/base/configuration.py @@ -2,6 +2,14 @@  Configuration Base Class  """ +import grp +import logging +import requests +import os + +logger = logging.getLogger(name=__name__) +logger.setLevel('DEBUG') +  class Configuration(object):      """ @@ -9,3 +17,93 @@ class Configuration(object):      (txt vs. sqlite) will be done, but let's stub it now.      """      pass + + +def get_config_dir(): +    """ +    get the base dir for all leap config +    @rparam: config path +    @rtype: string +    """ +    # TODO +    # check for $XDG_CONFIG_HOME var? +    # get a more sensible path for win/mac +    # kclair: opinion? ^^ +    return os.path.expanduser( +                os.path.join('~', +                             '.config', +                             'leap')) + + +def get_config_file(filename, folder=None): +    """ +    concatenates the given filename +    with leap config dir. +    @param filename: name of the file +    @type filename: string +    @rparam: full path to config file +    """ +    path = [] +    path.append(get_config_dir()) +    if folder is not None: +        path.append(folder) +    path.append(filename) +    return os.path.join(*path) + + +def get_default_provider_path(): +    default_subpath = os.path.join("providers", +                                   "default") +    default_provider_path = get_config_file( +        '', +        folder=default_subpath) +    return default_provider_path + + +def validate_ip(ip_str): +    """ +    raises exception if the ip_str is +    not a valid representation of an ip +    """ +    socket.inet_aton(ip_str) + + +def get_username(): +    return os.getlogin() + + +def get_groupname(): +    gid = os.getgroups()[-1] +    return grp.getgrgid(gid).gr_name + + +def get_config_json(config_file=None): +    """ +    will replace get_config function be developing them +    in parralel for branch purposes. +    @param: configuration file +    @type: file +    @rparam: configuration turples +    @rtype: dictionary +    """ +    if not config_file: +        fpath = get_config_file('eip.json') +        if not os.path.isfile(fpath): +            dpath, cfile = os.path.split(fpath) +            if not os.path.isdir(dpath): +                mkdir_p(dpath) +            with open(fpath, 'wb') as configfile: +                configfile.flush() +        config_file = open(fpath) + +    config = json.load(config_file) + +    return config + + +def get_definition_file(url=None): +    """ +    """ +    #TODO: determine good default location of definition file. +    r = requests.get(url) +    return r.json diff --git a/src/leap/eip/config.py b/src/leap/eip/config.py index f38268e2..b461422a 100644 --- a/src/leap/eip/config.py +++ b/src/leap/eip/config.py @@ -8,6 +8,10 @@ import socket  from leap.util.fileutil import (which, mkdir_p,                                  check_and_fix_urw_only) +from leap.base.configuration import (get_default_provider_path, +                                     get_config_file, +                                     get_username, +                                     get_groupname)  from leap.baseapp.permcheck import (is_pkexec_in_system,                                      is_auth_agent_running)  from leap.eip import exceptions as eip_exceptions @@ -32,55 +36,6 @@ ca {LEAP_EIP_KEYS}  """ -def get_config_dir(): -    """ -    get the base dir for all leap config -    @rparam: config path -    @rtype: string -    """ -    # TODO -    # check for $XDG_CONFIG_HOME var? -    # get a more sensible path for win/mac -    # kclair: opinion? ^^ -    return os.path.expanduser( -        os.path.join('~', -                     '.config', -                     'leap')) - - -def get_config_file(filename, folder=None): -    """ -    concatenates the given filename -    with leap config dir. -    @param filename: name of the file -    @type filename: string -    @rparam: full path to config file -    """ -    path = [] -    path.append(get_config_dir()) -    if folder is not None: -        path.append(folder) -    path.append(filename) -    return os.path.join(*path) - - -def get_default_provider_path(): -    default_subpath = os.path.join("providers", -                                   "default") -    default_provider_path = get_config_file( -        '', -        folder=default_subpath) -    return default_provider_path - - -def validate_ip(ip_str): -    """ -    raises exception if the ip_str is -    not a valid representation of an ip -    """ -    socket.inet_aton(ip_str) - -  def check_or_create_default_vpnconf(config):      """      checks that a vpn config file @@ -158,15 +113,6 @@ def check_or_create_default_vpnconf(config):          f.write(ovpn_config) -def get_username(): -    return os.getlogin() - - -def get_groupname(): -    gid = os.getgroups()[-1] -    return grp.getgrgid(gid).gr_name - -  def build_ovpn_options(daemon=False):      """      build a list of options @@ -412,27 +358,3 @@ def check_vpn_keys(config):          check_and_fix_urw_only(keyfile)      except OSError:          raise eip_exceptions.EIPInitBadKeyFilePermError - - -def get_config_json(config_file=None): -    """ -    will replace get_config function be developing them -    in parralel for branch purposes. -    @param: configuration file -    @type: file -    @rparam: configuration turples -    @rtype: dictionary -    """ -    if not config_file: -        fpath = get_config_file('eip.json') -        if not os.path.isfile(fpath): -            dpath, cfile = os.path.split(fpath) -            if not os.path.isdir(dpath): -                mkdir_p(dpath) -            with open(fpath, 'wb') as configfile: -                configfile.flush() -        config_file = open(fpath) - -    config = json.load(config_file) - -    return config  | 
