135 lines
5.8 KiB
Python
135 lines
5.8 KiB
Python
import yaml
|
|
import sys
|
|
from .logger import getDebugLogger
|
|
DEBUG = getDebugLogger()
|
|
|
|
default = {
|
|
'AccessTokenLifeTime': 1800,
|
|
'Mail': {
|
|
'URL': '',
|
|
'port': 0,
|
|
'user': '',
|
|
'passwd': '',
|
|
'email': '',
|
|
'crypt': 'STARTTLS'
|
|
}
|
|
}
|
|
|
|
|
|
class ConifgParser():
|
|
def __init__(self, file='config.yml'):
|
|
self.file = file
|
|
with open(file, 'r') as f:
|
|
self.config = yaml.safe_load(f)
|
|
|
|
if 'Database' not in self.config:
|
|
self.__error__(
|
|
'Wrong Configuration for Database. You should configure databaseconfig with "URL", "user", "passwd", "database"')
|
|
if 'URL' not in self.config['Database'] or 'user' not in self.config['Database'] or 'passwd' not in self.config['Database'] or 'database' not in self.config['Database']:
|
|
self.__error__(
|
|
'Wrong Configuration for Database. You should configure databaseconfig with "URL", "user", "passwd", "database"')
|
|
|
|
self.db = self.config['Database']
|
|
DEBUG.debug("Set Databaseconfig: {}".format(self.db))
|
|
|
|
if 'LDAP' not in self.config:
|
|
self.__error__(
|
|
'Wrong Configuration for LDAP. You should configure ldapconfig with "URL" and "BIND_DN"')
|
|
if 'URL' not in self.config['LDAP'] or 'DN' not in self.config['LDAP']:
|
|
self.__error__(
|
|
'Wrong Configuration for LDAP. You should configure ldapconfig with "URL" and "BIND_DN"')
|
|
if 'PORT' not in self.config['LDAP']:
|
|
DEBUG.info(
|
|
'No Config for port in LDAP found. Set it to default: {}'.format(389))
|
|
self.config['LDAP']['PORT'] = 389
|
|
if 'ADMIN_DN' not in self.config['LDAP']:
|
|
DEBUG.info(
|
|
'No Config for ADMIN_DN in LDAP found. Set it to default {}. (Maybe Password reset not working)'.format(None)
|
|
)
|
|
self.config['LDAP']['ADMIN_DN'] = None
|
|
if 'ADMIN_SECRET' not in self.config['LDAP']:
|
|
DEBUG.info(
|
|
'No Config for ADMIN_SECRET in LDAP found. Set it to default {}. (Maybe Password reset not working)'.format(None)
|
|
)
|
|
self.config['LDAP']['ADMIN_SECRET'] = None
|
|
if 'USER_DN' not in self.config['LDAP']:
|
|
DEBUG.info(
|
|
'No Config for USER_DN in LDAP found. Set it to default {}. (Maybe Password reset not working)'.format(None)
|
|
)
|
|
self.config['LDAP']['USER_DN'] = None
|
|
if 'BIND_DN' not in self.config['LDAP']:
|
|
DEBUG.info(
|
|
'No Config for BIND_DN in LDAP found. Set it to default {}. (Maybe Password reset not working)'.format(None)
|
|
)
|
|
self.config['LDAP']['BIND_DN'] = None
|
|
if 'BIND_SECRET' not in self.config['LDAP']:
|
|
DEBUG.info(
|
|
'No Config for BIND_SECRET in LDAP found. Set it to default {}. (Maybe Password reset not working)'.format(None)
|
|
)
|
|
self.config['LDAP']['BIND_SECRET'] = None
|
|
if 'SSL' not in self.config['LDAP']:
|
|
DEBUG.info(
|
|
'No Config for SSL in LDAP found. Set it to default {}. (Maybe Password reset not working)'.format(False)
|
|
)
|
|
self.config['LDAP']['SSL'] = False
|
|
else:
|
|
self.config['LDAP']['SSL'] = bool(self.config['LDAP']['SSL'])
|
|
self.ldap = self.config['LDAP']
|
|
DEBUG.info("Set LDAPconfig: {}".format(self.ldap))
|
|
if 'AccessTokenLifeTime' in self.config:
|
|
self.accessTokenLifeTime = int(self.config['AccessTokenLifeTime'])
|
|
DEBUG.info("Set AccessTokenLifeTime: {}".format(
|
|
self.accessTokenLifeTime))
|
|
else:
|
|
self.accessTokenLifeTime = default['AccessTokenLifeTime']
|
|
DEBUG.info("No Config for AccessTokenLifetime found. Set it to default: {}".format(
|
|
self.accessTokenLifeTime))
|
|
|
|
if 'Mail' not in self.config:
|
|
self.config['Mail'] = default['Mail']
|
|
DEBUG.info('No Conifg for Mail found. Set it to defaul: {}'.format(
|
|
self.config['Mail']))
|
|
if 'URL' not in self.config['Mail']:
|
|
self.config['Mail']['URL'] = default['Mail']['URL']
|
|
DEBUG.info("No Config for URL in Mail found. Set it to default")
|
|
if 'port' not in self.config['Mail']:
|
|
self.config['Mail']['port'] = default['Mail']['port']
|
|
DEBUG.info("No Config for port in Mail found. Set it to default")
|
|
else:
|
|
self.config['Mail']['port'] = int(self.config['Mail']['port'])
|
|
DEBUG.info("No Conifg for port in Mail found. Set it to default")
|
|
if 'user' not in self.config['Mail']:
|
|
self.config['Mail']['user'] = default['Mail']['user']
|
|
DEBUG.info("No Config for user in Mail found. Set it to default")
|
|
if 'passwd' not in self.config['Mail']:
|
|
self.config['Mail']['passwd'] = default['Mail']['passwd']
|
|
DEBUG.info("No Config for passwd in Mail found. Set it to default")
|
|
if 'email' not in self.config['Mail']:
|
|
self.config['Mail']['email'] = default['Mail']['email']
|
|
DEBUG.info("No Config for email in Mail found. Set it to default")
|
|
if 'crypt' not in self.config['Mail']:
|
|
self.config['Mail']['crypt'] = default['Mail']['crypt']
|
|
DEBUG.info("No Config for crypt in Mail found. Set it to default")
|
|
self.mail = self.config['Mail']
|
|
DEBUG.info('Set Mailconfig: {}'.format(self.mail))
|
|
|
|
def getLDAP(self):
|
|
return self.ldap
|
|
|
|
def getDatabase(self):
|
|
return self.db
|
|
|
|
def getAccessToken(self):
|
|
return self.accessTokenLifeTime
|
|
|
|
def getMail(self):
|
|
return self.mail
|
|
|
|
def __error__(self, msg):
|
|
DEBUG.error(msg, exc_info=True)
|
|
sys.exit(-1)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
ConifgParser()
|