2021-08-13 18:35:18 +01:00
|
|
|
import json
|
2023-02-01 11:57:59 -05:00
|
|
|
from os import getenv
|
2022-11-29 12:16:29 -05:00
|
|
|
|
2023-05-02 16:05:09 -04:00
|
|
|
import newrelic.agent
|
2023-06-19 10:10:22 -07:00
|
|
|
from notifications_utils import DAILY_MESSAGE_LIMIT
|
2015-12-04 14:40:16 +00:00
|
|
|
|
2022-10-20 08:03:32 -04:00
|
|
|
from app.cloudfoundry_config import cloud_config
|
2016-12-08 16:50:37 +00:00
|
|
|
|
|
|
|
|
|
2015-11-24 09:40:14 +00:00
|
|
|
class Config(object):
|
2022-10-18 16:16:13 -04:00
|
|
|
NOTIFY_APP_NAME = 'admin'
|
2023-02-01 11:57:59 -05:00
|
|
|
NOTIFY_ENVIRONMENT = getenv('NOTIFY_ENVIRONMENT', 'development')
|
|
|
|
|
API_HOST_NAME = getenv('API_HOST_NAME', 'localhost')
|
|
|
|
|
ADMIN_BASE_URL = getenv('ADMIN_BASE_URL', 'http://localhost:6012')
|
2022-10-18 16:16:13 -04:00
|
|
|
HEADER_COLOUR = '#81878b' # mix(govuk-colour("dark-grey"), govuk-colour("mid-grey"))
|
|
|
|
|
LOGO_CDN_DOMAIN = 'static-logos.notifications.service.gov.uk' # TODO use our own CDN
|
|
|
|
|
ASSETS_DEBUG = False
|
|
|
|
|
|
|
|
|
|
# Credentials
|
2023-02-01 11:57:59 -05:00
|
|
|
ADMIN_CLIENT_SECRET = getenv('ADMIN_CLIENT_SECRET')
|
|
|
|
|
ADMIN_CLIENT_USER_NAME = getenv('ADMIN_CLIENT_USERNAME')
|
|
|
|
|
SECRET_KEY = getenv('SECRET_KEY')
|
|
|
|
|
DANGEROUS_SALT = getenv('DANGEROUS_SALT')
|
|
|
|
|
# ZENDESK_API_KEY = getenv('ZENDESK_API_KEY')
|
|
|
|
|
ROUTE_SECRET_KEY_1 = getenv('ROUTE_SECRET_KEY_1', 'dev-route-secret-key-1')
|
|
|
|
|
ROUTE_SECRET_KEY_2 = getenv('ROUTE_SECRET_KEY_2', 'dev-route-secret-key-2')
|
|
|
|
|
BASIC_AUTH_USERNAME = getenv('BASIC_AUTH_USERNAME')
|
|
|
|
|
BASIC_AUTH_PASSWORD = getenv('BASIC_AUTH_PASSWORD')
|
|
|
|
|
|
2023-05-02 15:26:57 -04:00
|
|
|
NR_ACCOUNT_ID = getenv('NR_ACCOUNT_ID')
|
|
|
|
|
NR_TRUST_KEY = getenv('NR_TRUST_KEY')
|
|
|
|
|
NR_AGENT_ID = getenv('NR_AGENT_ID')
|
|
|
|
|
NR_APP_ID = getenv('NR_APP_ID')
|
|
|
|
|
NR_BROWSER_KEY = getenv('NR_BROWSER_KEY')
|
2023-05-02 16:05:09 -04:00
|
|
|
settings = newrelic.agent.global_settings()
|
|
|
|
|
NR_MONITOR_ON = settings and settings.monitor_mode
|
2023-05-02 15:26:57 -04:00
|
|
|
|
2023-02-01 11:57:59 -05:00
|
|
|
TEMPLATE_PREVIEW_API_HOST = getenv('TEMPLATE_PREVIEW_API_HOST', 'http://localhost:9999')
|
|
|
|
|
TEMPLATE_PREVIEW_API_KEY = getenv('TEMPLATE_PREVIEW_API_KEY', 'my-secret-key')
|
2017-04-10 15:10:34 +01:00
|
|
|
|
2023-05-19 13:54:27 -07:00
|
|
|
GOVERNMENT_EMAIL_DOMAIN_NAMES = ['gov']
|
|
|
|
|
|
2017-01-09 19:14:04 +00:00
|
|
|
# Logging
|
2023-02-01 11:57:59 -05:00
|
|
|
NOTIFY_LOG_LEVEL = getenv('NOTIFY_LOG_LEVEL', 'INFO')
|
2016-12-08 16:50:37 +00:00
|
|
|
|
2016-03-23 14:09:07 +00:00
|
|
|
DEFAULT_SERVICE_LIMIT = 50
|
2021-04-07 09:32:18 +01:00
|
|
|
|
2023-06-19 10:10:22 -07:00
|
|
|
GLOBAL_SERVICE_MESSAGE_LIMIT = DAILY_MESSAGE_LIMIT
|
2023-06-01 10:44:13 -06:00
|
|
|
|
2017-11-01 14:39:14 +00:00
|
|
|
EMAIL_EXPIRY_SECONDS = 3600 # 1 hour
|
2017-11-02 13:49:24 +00:00
|
|
|
INVITATION_EXPIRY_SECONDS = 3600 * 24 * 2 # 2 days - also set on api
|
2017-11-07 16:11:31 +00:00
|
|
|
EMAIL_2FA_EXPIRY_SECONDS = 1800 # 30 Minutes
|
2017-02-20 11:31:41 +00:00
|
|
|
PERMANENT_SESSION_LIFETIME = 20 * 60 * 60 # 20 hours
|
2016-03-23 14:09:07 +00:00
|
|
|
SEND_FILE_MAX_AGE_DEFAULT = 365 * 24 * 60 * 60 # 1 year
|
2022-10-18 16:16:13 -04:00
|
|
|
REPLY_TO_EMAIL_ADDRESS_VALIDATION_TIMEOUT = 45
|
|
|
|
|
ACTIVITY_STATS_LIMIT_DAYS = 7
|
2016-03-23 14:09:07 +00:00
|
|
|
SESSION_COOKIE_HTTPONLY = True
|
|
|
|
|
SESSION_COOKIE_NAME = 'notify_admin_session'
|
|
|
|
|
SESSION_COOKIE_SECURE = True
|
2019-11-28 14:39:30 +00:00
|
|
|
# don't send back the cookie if it hasn't been modified by the request. this means that the expiry time won't be
|
|
|
|
|
# updated unless the session is changed - but it's generally refreshed by `save_service_or_org_after_request`
|
|
|
|
|
# every time anyway, except for specific endpoints (png/pdfs generally) where we've disabled that handler.
|
|
|
|
|
SESSION_REFRESH_EACH_REQUEST = False
|
2016-03-23 14:09:07 +00:00
|
|
|
WTF_CSRF_ENABLED = True
|
2017-03-15 11:16:58 +00:00
|
|
|
WTF_CSRF_TIME_LIMIT = None
|
2017-11-16 16:33:21 +00:00
|
|
|
CHECK_PROXY_HEADER = False
|
2022-08-05 00:25:03 -07:00
|
|
|
|
2022-10-20 08:03:32 -04:00
|
|
|
REDIS_URL = cloud_config.redis_url
|
2023-02-01 11:57:59 -05:00
|
|
|
REDIS_ENABLED = getenv('REDIS_ENABLED', '1') == '1'
|
2018-11-28 15:39:08 +00:00
|
|
|
|
2022-08-05 00:25:03 -07:00
|
|
|
# TODO: reassign this
|
2019-05-13 10:17:20 +01:00
|
|
|
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
|
|
|
|
|
|
2021-08-13 18:35:18 +01:00
|
|
|
NOTIFY_BILLING_DETAILS = json.loads(
|
2023-02-01 11:57:59 -05:00
|
|
|
getenv('NOTIFY_BILLING_DETAILS') or 'null'
|
2021-08-13 18:35:18 +01:00
|
|
|
) or {
|
|
|
|
|
'account_number': '98765432',
|
|
|
|
|
'sort_code': '01-23-45',
|
|
|
|
|
'IBAN': 'GB33BUKB20201555555555',
|
|
|
|
|
'swift': 'ABCDEF12',
|
|
|
|
|
'notify_billing_email_addresses': [
|
|
|
|
|
'generic@digital.cabinet-office.gov.uk',
|
|
|
|
|
'first.last@digital.cabinet-office.gov.uk',
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
|
2015-11-24 09:40:14 +00:00
|
|
|
|
2023-03-13 15:30:37 -04:00
|
|
|
def _s3_credentials_from_env(bucket_prefix):
|
2022-10-26 13:19:07 +00:00
|
|
|
return {
|
2023-03-13 15:30:37 -04:00
|
|
|
'bucket': getenv(f"{bucket_prefix}_BUCKET_NAME", f"{bucket_prefix}-test-bucket-name"),
|
|
|
|
|
'access_key_id': getenv(f"{bucket_prefix}_AWS_ACCESS_KEY_ID"),
|
|
|
|
|
'secret_access_key': getenv(f"{bucket_prefix}_AWS_SECRET_ACCESS_KEY"),
|
|
|
|
|
'region': getenv(f"{bucket_prefix}_AWS_REGION")
|
2022-10-26 13:19:07 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2015-11-24 09:40:14 +00:00
|
|
|
class Development(Config):
|
2022-08-30 10:31:48 -04:00
|
|
|
BASIC_AUTH_FORCE = False
|
2015-11-24 09:40:14 +00:00
|
|
|
DEBUG = True
|
2016-02-23 15:45:19 +00:00
|
|
|
SESSION_COOKIE_SECURE = False
|
2016-05-04 13:01:55 +01:00
|
|
|
SESSION_PROTECTION = None
|
2022-10-18 16:16:13 -04:00
|
|
|
HTTP_PROTOCOL = 'http'
|
|
|
|
|
ASSET_DOMAIN = ''
|
|
|
|
|
ASSET_PATH = '/static/'
|
2023-04-25 19:36:18 -04:00
|
|
|
NOTIFY_LOG_LEVEL = 'DEBUG'
|
2022-08-05 00:25:03 -07:00
|
|
|
|
2022-07-25 15:18:39 -07:00
|
|
|
# Buckets
|
2023-03-13 15:30:37 -04:00
|
|
|
CSV_UPLOAD_BUCKET = _s3_credentials_from_env('CSV')
|
|
|
|
|
LOGO_UPLOAD_BUCKET = _s3_credentials_from_env('LOGO')
|
2022-08-05 00:25:03 -07:00
|
|
|
|
2022-10-18 16:16:13 -04:00
|
|
|
# credential overrides
|
2022-12-13 11:15:00 -05:00
|
|
|
DANGEROUS_SALT = 'development-notify-salt'
|
2022-08-26 16:04:30 +00:00
|
|
|
SECRET_KEY = 'dev-notify-secret-key' # nosec B105 - only used in development
|
2022-10-18 16:16:13 -04:00
|
|
|
# ADMIN_CLIENT_USER_NAME is called ADMIN_CLIENT_ID in api repo, they should match
|
|
|
|
|
ADMIN_CLIENT_USER_NAME = 'notify-admin'
|
|
|
|
|
ADMIN_CLIENT_SECRET = 'dev-notify-secret-key' # nosec B105 - only used in development
|
2018-11-29 11:29:52 +00:00
|
|
|
|
2015-11-24 09:40:14 +00:00
|
|
|
|
2016-01-19 15:50:31 +00:00
|
|
|
class Test(Development):
|
2017-06-19 12:31:14 +01:00
|
|
|
TESTING = True
|
2017-03-15 11:16:58 +00:00
|
|
|
WTF_CSRF_ENABLED = False
|
2022-10-18 16:16:13 -04:00
|
|
|
ASSET_DOMAIN = 'static.example.com'
|
|
|
|
|
ASSET_PATH = 'https://static.example.com/'
|
|
|
|
|
|
2018-03-08 16:10:49 +00:00
|
|
|
API_HOST_NAME = 'http://you-forgot-to-mock-an-api-call-to'
|
2022-09-12 17:38:53 -07:00
|
|
|
REDIS_URL = 'redis://you-forgot-to-mock-a-redis-call-to'
|
2022-10-18 16:16:13 -04:00
|
|
|
LOGO_CDN_DOMAIN = 'static-logos.test.com'
|
2022-08-26 17:07:42 -04:00
|
|
|
|
|
|
|
|
|
2022-10-18 16:16:13 -04:00
|
|
|
class Production(Config):
|
|
|
|
|
HEADER_COLOUR = '#005EA5' # $govuk-blue
|
2015-11-30 14:32:58 +00:00
|
|
|
HTTP_PROTOCOL = 'https'
|
2022-06-30 17:05:42 -07:00
|
|
|
BASIC_AUTH_FORCE = True
|
2022-10-18 16:16:13 -04:00
|
|
|
ASSET_DOMAIN = '' # TODO use a CDN
|
|
|
|
|
ASSET_PATH = '/static/' # TODO use a CDN
|
|
|
|
|
DEBUG = False
|
2016-07-04 17:21:08 +01:00
|
|
|
|
2022-07-25 15:18:39 -07:00
|
|
|
# buckets
|
2022-10-20 08:03:32 -04:00
|
|
|
CSV_UPLOAD_BUCKET = cloud_config.s3_credentials(
|
2023-02-01 11:57:59 -05:00
|
|
|
f"notify-api-csv-upload-bucket-{getenv('NOTIFY_ENVIRONMENT')}")
|
2022-10-20 08:03:32 -04:00
|
|
|
LOGO_UPLOAD_BUCKET = cloud_config.s3_credentials(
|
2023-02-01 11:57:59 -05:00
|
|
|
f"notify-admin-logo-upload-bucket-{getenv('NOTIFY_ENVIRONMENT')}")
|
2022-08-05 00:25:03 -07:00
|
|
|
|
2016-07-04 17:21:08 +01:00
|
|
|
|
2022-10-18 16:16:13 -04:00
|
|
|
class Staging(Production):
|
|
|
|
|
BASIC_AUTH_FORCE = True
|
2022-11-08 11:45:37 -05:00
|
|
|
HEADER_COLOUR = '#00ff00' # $green
|
2016-12-08 16:50:37 +00:00
|
|
|
|
|
|
|
|
|
2022-11-02 16:05:53 -04:00
|
|
|
class Demo(Staging):
|
2022-11-08 11:45:37 -05:00
|
|
|
HEADER_COLOUR = '#6F72AF' # $mauve
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Sandbox(Staging):
|
|
|
|
|
HEADER_COLOUR = '#ff0000' # $red
|
2022-11-02 16:05:53 -04:00
|
|
|
|
|
|
|
|
|
2022-10-18 16:16:13 -04:00
|
|
|
class Scanning(Production):
|
|
|
|
|
BASIC_AUTH_FORCE = False
|
|
|
|
|
HTTP_PROTOCOL = 'http'
|
2023-03-08 09:57:21 -05:00
|
|
|
API_HOST_NAME = 'https://notify-api-staging.app.cloud.gov/'
|
2022-10-18 16:16:13 -04:00
|
|
|
SECRET_KEY = 'dev-notify-secret-key' # nosec B105 - only used in development
|
|
|
|
|
ADMIN_CLIENT_USER_NAME = 'notify-admin'
|
|
|
|
|
ADMIN_CLIENT_SECRET = 'dev-notify-secret-key' # nosec B105 - only used in development
|
2016-12-08 16:50:37 +00:00
|
|
|
|
|
|
|
|
|
2015-11-24 09:40:14 +00:00
|
|
|
configs = {
|
2016-07-05 14:26:02 +01:00
|
|
|
'development': Development,
|
|
|
|
|
'test': Test,
|
2022-08-26 17:07:42 -04:00
|
|
|
'scanning': Scanning,
|
2016-07-05 14:26:02 +01:00
|
|
|
'staging': Staging,
|
2022-11-02 16:05:53 -04:00
|
|
|
'demo': Demo,
|
2022-11-08 11:45:37 -05:00
|
|
|
'sandbox': Sandbox,
|
2022-10-18 16:16:13 -04:00
|
|
|
'production': Production
|
2015-11-24 09:40:14 +00:00
|
|
|
}
|