summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-05-08 22:16:55 +0300
committerLV-426 <lv-426@taproot.org.il>2015-05-12 14:59:05 +0300
commitf745039a466fd1418152035d8dfe812d292c2924 (patch)
tree5553d241b5e259b4b8e26a09d5f7589881f23efa /src
parent179e3c3533369c1af99a358cb6ede05437620b8b (diff)
rz_config: acl_wl__email_address_set property, init on first access
Diffstat (limited to 'src')
-rw-r--r--src/server/rz_config.py34
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