diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-05-08 22:16:55 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-05-12 14:59:05 +0300 |
| commit | f745039a466fd1418152035d8dfe812d292c2924 (patch) | |
| tree | 5553d241b5e259b4b8e26a09d5f7589881f23efa /src | |
| parent | 179e3c3533369c1af99a358cb6ede05437620b8b (diff) | |
rz_config: acl_wl__email_address_set property, init on first access
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/rz_config.py | 34 |
1 files changed, 31 insertions, 3 deletions
diff --git a/src/server/rz_config.py b/src/server/rz_config.py index bc081a8d..63ee1b5e 100644 --- a/src/server/rz_config.py +++ b/src/server/rz_config.py @@ -1,9 +1,13 @@ # -*- coding: utf-8 -*- +import logging import os import re import types + +log = logging.getLogger('rhizi') + class RZ_Config(object): """ rhizi-server configuration @@ -78,10 +82,15 @@ class RZ_Config(object): cfg['SECRET_KEY'] = '' # Security - # - acl__singup__email_domain: restrict signup requests by email domain. - # depends on 'access_control==True', default: no restriction applied + # - acl_wl__email_domain_set: comma separated email domain whitelist matched during signup. + # depends on 'access_control==True', default: no restriction applied + # - acl_wl__email_address_file_path: path to email address whitelist file containing an email per line + # once read, the attribute acl_wl__email_address_set should be available + # cfg['access_control'] = True - cfg['acl__singup__email_domain'] = None + cfg['acl_wl__email_domain_set'] = None + cfg['acl_wl__email_address_file_path'] = None + cfg['user_db_path'] = './user_db.db' cfg['signup_enabled'] = True # Neo4j connection @@ -96,6 +105,10 @@ class RZ_Config(object): ret = RZ_Config() ret.__dict__ = cfg # allows setting of @property attributes + + # set default attribute cache values + ret.acl_wl__email_address_set_cached = None + return ret @staticmethod @@ -166,6 +179,21 @@ class RZ_Config(object): return '\n'.join(kv_item_set) @property + def acl_wl__email_address_set(self): # lazy load on first access from configured file source + if self.acl_wl__email_address_set_cached is not None: + return self.acl_wl__email_address_set_cached + else: # first access, attempt to init from file + wl_email_set = [] + if self.acl_wl__email_address_file_path is not None: + with open(self.acl_wl__email_address_file_path) as email_address_file: + for line in email_address_file.readlines(): + # TODO: check email format + email = line + wl_email_set.append(email) + log.info('acl initialized: acl_wl__email_address, email-count: %d' % (len(wl_email_set))) + self.acl_wl__email_address_set_cached = wl_email_set + + @property def db_base_url(self): return self.neo4j_url |
