|
|
@@ -11,6 +11,8 @@ from django.contrib.messages import constants as messages
|
|
|
from django.core.exceptions import ImproperlyConfigured, ValidationError
|
|
|
from django.core.validators import URLValidator
|
|
|
|
|
|
+from netbox.config import PARAMS
|
|
|
+
|
|
|
|
|
|
#
|
|
|
# Environment setup
|
|
|
@@ -68,18 +70,11 @@ DATABASE = getattr(configuration, 'DATABASE')
|
|
|
REDIS = getattr(configuration, 'REDIS')
|
|
|
SECRET_KEY = getattr(configuration, 'SECRET_KEY')
|
|
|
|
|
|
-# Set optional parameters
|
|
|
+# Set static config parameters
|
|
|
ADMINS = getattr(configuration, 'ADMINS', [])
|
|
|
-ALLOWED_URL_SCHEMES = getattr(configuration, 'ALLOWED_URL_SCHEMES', (
|
|
|
- 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp',
|
|
|
-))
|
|
|
-BANNER_BOTTOM = getattr(configuration, 'BANNER_BOTTOM', '')
|
|
|
-BANNER_LOGIN = getattr(configuration, 'BANNER_LOGIN', '')
|
|
|
-BANNER_TOP = getattr(configuration, 'BANNER_TOP', '')
|
|
|
BASE_PATH = getattr(configuration, 'BASE_PATH', '')
|
|
|
if BASE_PATH:
|
|
|
BASE_PATH = BASE_PATH.strip('/') + '/' # Enforce trailing slash only
|
|
|
-CHANGELOG_RETENTION = getattr(configuration, 'CHANGELOG_RETENTION', 90)
|
|
|
CORS_ORIGIN_ALLOW_ALL = getattr(configuration, 'CORS_ORIGIN_ALLOW_ALL', False)
|
|
|
CORS_ORIGIN_REGEX_WHITELIST = getattr(configuration, 'CORS_ORIGIN_REGEX_WHITELIST', [])
|
|
|
CORS_ORIGIN_WHITELIST = getattr(configuration, 'CORS_ORIGIN_WHITELIST', [])
|
|
|
@@ -90,30 +85,12 @@ DEBUG = getattr(configuration, 'DEBUG', False)
|
|
|
DEVELOPER = getattr(configuration, 'DEVELOPER', False)
|
|
|
DOCS_ROOT = getattr(configuration, 'DOCS_ROOT', os.path.join(os.path.dirname(BASE_DIR), 'docs'))
|
|
|
EMAIL = getattr(configuration, 'EMAIL', {})
|
|
|
-ENFORCE_GLOBAL_UNIQUE = getattr(configuration, 'ENFORCE_GLOBAL_UNIQUE', False)
|
|
|
-EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', [])
|
|
|
-GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True)
|
|
|
HTTP_PROXIES = getattr(configuration, 'HTTP_PROXIES', None)
|
|
|
INTERNAL_IPS = getattr(configuration, 'INTERNAL_IPS', ('127.0.0.1', '::1'))
|
|
|
LOGGING = getattr(configuration, 'LOGGING', {})
|
|
|
-LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False)
|
|
|
-LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None)
|
|
|
-MAINTENANCE_MODE = getattr(configuration, 'MAINTENANCE_MODE', False)
|
|
|
-MAPS_URL = getattr(configuration, 'MAPS_URL', 'https://maps.google.com/?q=')
|
|
|
-MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000)
|
|
|
MEDIA_ROOT = getattr(configuration, 'MEDIA_ROOT', os.path.join(BASE_DIR, 'media')).rstrip('/')
|
|
|
-METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False)
|
|
|
-NAPALM_ARGS = getattr(configuration, 'NAPALM_ARGS', {})
|
|
|
-NAPALM_PASSWORD = getattr(configuration, 'NAPALM_PASSWORD', '')
|
|
|
-NAPALM_TIMEOUT = getattr(configuration, 'NAPALM_TIMEOUT', 30)
|
|
|
-NAPALM_USERNAME = getattr(configuration, 'NAPALM_USERNAME', '')
|
|
|
-PAGINATE_COUNT = getattr(configuration, 'PAGINATE_COUNT', 50)
|
|
|
-LOGIN_PERSISTENCE = getattr(configuration, 'LOGIN_PERSISTENCE', False)
|
|
|
PLUGINS = getattr(configuration, 'PLUGINS', [])
|
|
|
PLUGINS_CONFIG = getattr(configuration, 'PLUGINS_CONFIG', {})
|
|
|
-PREFER_IPV4 = getattr(configuration, 'PREFER_IPV4', False)
|
|
|
-RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 22)
|
|
|
-RACK_ELEVATION_DEFAULT_UNIT_WIDTH = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH', 220)
|
|
|
REMOTE_AUTH_AUTO_CREATE_USER = getattr(configuration, 'REMOTE_AUTH_AUTO_CREATE_USER', False)
|
|
|
REMOTE_AUTH_BACKEND = getattr(configuration, 'REMOTE_AUTH_BACKEND', 'netbox.authentication.RemoteUserBackend')
|
|
|
REMOTE_AUTH_DEFAULT_GROUPS = getattr(configuration, 'REMOTE_AUTH_DEFAULT_GROUPS', [])
|
|
|
@@ -127,7 +104,6 @@ REMOTE_AUTH_SUPERUSERS = getattr(configuration, 'REMOTE_AUTH_SUPERUSERS', [])
|
|
|
REMOTE_AUTH_STAFF_GROUPS = getattr(configuration, 'REMOTE_AUTH_STAFF_GROUPS', [])
|
|
|
REMOTE_AUTH_STAFF_USERS = getattr(configuration, 'REMOTE_AUTH_STAFF_USERS', [])
|
|
|
REMOTE_AUTH_GROUP_SEPARATOR = getattr(configuration, 'REMOTE_AUTH_GROUP_SEPARATOR', '|')
|
|
|
-RELEASE_CHECK_URL = getattr(configuration, 'RELEASE_CHECK_URL', None)
|
|
|
REPORTS_ROOT = getattr(configuration, 'REPORTS_ROOT', os.path.join(BASE_DIR, 'reports')).rstrip('/')
|
|
|
RQ_DEFAULT_TIMEOUT = getattr(configuration, 'RQ_DEFAULT_TIMEOUT', 300)
|
|
|
SCRIPTS_ROOT = getattr(configuration, 'SCRIPTS_ROOT', os.path.join(BASE_DIR, 'scripts')).rstrip('/')
|
|
|
@@ -141,6 +117,33 @@ STORAGE_CONFIG = getattr(configuration, 'STORAGE_CONFIG', {})
|
|
|
TIME_FORMAT = getattr(configuration, 'TIME_FORMAT', 'g:i a')
|
|
|
TIME_ZONE = getattr(configuration, 'TIME_ZONE', 'UTC')
|
|
|
|
|
|
+# Check for hard-coded dynamic config parameters
|
|
|
+for param in PARAMS:
|
|
|
+ if hasattr(configuration, param.name):
|
|
|
+ globals()[param.name] = getattr(configuration, param.name)
|
|
|
+
|
|
|
+ALLOWED_URL_SCHEMES = getattr(configuration, 'ALLOWED_URL_SCHEMES', (
|
|
|
+ 'file', 'ftp', 'ftps', 'http', 'https', 'irc', 'mailto', 'sftp', 'ssh', 'tel', 'telnet', 'tftp', 'vnc', 'xmpp',
|
|
|
+))
|
|
|
+CHANGELOG_RETENTION = getattr(configuration, 'CHANGELOG_RETENTION', 90)
|
|
|
+EXEMPT_VIEW_PERMISSIONS = getattr(configuration, 'EXEMPT_VIEW_PERMISSIONS', [])
|
|
|
+GRAPHQL_ENABLED = getattr(configuration, 'GRAPHQL_ENABLED', True)
|
|
|
+LOGIN_PERSISTENCE = getattr(configuration, 'LOGIN_PERSISTENCE', False)
|
|
|
+LOGIN_REQUIRED = getattr(configuration, 'LOGIN_REQUIRED', False)
|
|
|
+LOGIN_TIMEOUT = getattr(configuration, 'LOGIN_TIMEOUT', None)
|
|
|
+MAINTENANCE_MODE = getattr(configuration, 'MAINTENANCE_MODE', False)
|
|
|
+MAPS_URL = getattr(configuration, 'MAPS_URL', 'https://maps.google.com/?q=')
|
|
|
+MAX_PAGE_SIZE = getattr(configuration, 'MAX_PAGE_SIZE', 1000)
|
|
|
+METRICS_ENABLED = getattr(configuration, 'METRICS_ENABLED', False)
|
|
|
+NAPALM_ARGS = getattr(configuration, 'NAPALM_ARGS', {})
|
|
|
+NAPALM_PASSWORD = getattr(configuration, 'NAPALM_PASSWORD', '')
|
|
|
+NAPALM_TIMEOUT = getattr(configuration, 'NAPALM_TIMEOUT', 30)
|
|
|
+NAPALM_USERNAME = getattr(configuration, 'NAPALM_USERNAME', '')
|
|
|
+PAGINATE_COUNT = getattr(configuration, 'PAGINATE_COUNT', 50)
|
|
|
+RACK_ELEVATION_DEFAULT_UNIT_HEIGHT = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_HEIGHT', 22)
|
|
|
+RACK_ELEVATION_DEFAULT_UNIT_WIDTH = getattr(configuration, 'RACK_ELEVATION_DEFAULT_UNIT_WIDTH', 220)
|
|
|
+RELEASE_CHECK_URL = getattr(configuration, 'RELEASE_CHECK_URL', None)
|
|
|
+
|
|
|
# Validate update repo URL and timeout
|
|
|
if RELEASE_CHECK_URL:
|
|
|
validator = URLValidator(
|