From 97ea8ee2fa43d345cf3f1013c87569155680625b Mon Sep 17 00:00:00 2001 From: antialias Date: Wed, 22 Aug 2012 14:01:22 -0700 Subject: moved help functions from eip/config.py to base/configuration.py. (cherry picked from get-definition.json branch) solve merge conflict since antialias was working in a version in which baseconfig was still at `configuration` file. Conflicts: src/leap/base/configuration.py --- src/leap/base/config.py | 109 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) (limited to 'src/leap/base') diff --git a/src/leap/base/config.py b/src/leap/base/config.py index ccbf3c89..63e643a8 100644 --- a/src/leap/base/config.py +++ b/src/leap/base/config.py @@ -2,9 +2,18 @@ Configuration Base Class """ import configuration # python configuration module, not local! +import grp +import json +import logging +import requests +import socket import os +logger = logging.getLogger(name=__name__) +logger.setLevel('DEBUG') + from leap.eip import config as eip_config +from leap.util.fileutil import (mkdir_p) class BaseLeapConfig(object): @@ -79,3 +88,103 @@ class JSONLeapConfig(BaseLeapConfig): # XXX fix import config_file = eip_config.get_config_file(filename, folder) return config_file + +# +# utility functions +# +# (might be moved to some class as we see fit, but +# let's remain functional for a while) +# + + +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 + + +# json stuff + +# XXX merge with JSONConfig +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 -- cgit v1.2.3