summaryrefslogtreecommitdiff
path: root/src/leap/base/configuration.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/leap/base/configuration.py')
-rw-r--r--src/leap/base/configuration.py98
1 files changed, 98 insertions, 0 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