import configparser import json import logging import os logging.basicConfig(level=logging.DEBUG) CONFDIR = '/home/phablet/.config/pantalaimon/' CONFFILE = 'pantalaimon.conf' def load(): entries = [] loglevels = [ "warning", "info", "debug", "error" ] defaults = { 'name': "Default", 'loglevel': "warning", 'loglevel_idx': 0, 'notifications': True } if os.path.exists(CONFDIR + CONFFILE): config = configparser.ConfigParser() config.read_file(open(CONFDIR + CONFFILE)) for instance in config.sections(): item = {'name': instance} if instance == "Default": item['loglevel'] = config[instance].get('loglevel', "warning") item['loglevel_idx'] = loglevels.index(config[instance].get('loglevel', 0)) item['notifications'] = config[instance].getboolean('notifications', True) defaults = item else: item['homeserver'] = config[instance].get('homeserver') item['listenaddress'] = config[instance].get('listenaddress') item['listenport'] = config[instance].get('listenport') item['proxy'] = config[instance].get('proxy') item['ssl'] = config[instance].getboolean('ssl', True) item['ignoreverification'] = config[instance].getboolean('ignoreverification', True) item['usekeyring'] = config[instance].get('usekeyring') entries.append(item) return (defaults, entries) def save(defaults, data): logging.debug("save config") dataobj = json.loads(data) config = configparser.ConfigParser() defobj = json.loads(defaults) config['Default'] = { 'loglevel': defobj['loglevel'] } if defobj['loglevel'] == 'debug': config['Default']['DebugEncryption'] = 'true' else: config['Default']['DebugEncryption'] = 'false' for item in dataobj: if item['ssl']: sslval = 'true' else: sslval = 'false' config[item['name']] = {} config[item['name']]['homeserver'] = item['homeserver'] config[item['name']]['listenaddress'] = "127.0.0.1" config[item['name']]['listenport'] = item['listenport'] config[item['name']]['ssl'] = sslval config[item['name']]['ignoreverification'] = "true" config[item['name']]['usekeyring'] = "false" if 'proxy' in item: if len(item['proxy']) > 0: config[item['name']]['proxy'] = item['proxy'] if not os.path.exists(CONFDIR): os.makedirs(CONFDIR) with open(CONFDIR + CONFFILE,'w') as configfile: config.write(configfile)