mirror of
https://github.com/GSA/notifications-admin.git
synced 2025-12-13 00:23:20 -05:00
203 lines
7.3 KiB
Python
203 lines
7.3 KiB
Python
import os
|
|
|
|
if os.environ.get('VCAP_APPLICATION'):
|
|
# on cloudfoundry, config is a json blob in VCAP_APPLICATION - unpack it, and populate
|
|
# standard environment variables from it
|
|
from app.cloudfoundry_config import extract_cloudfoundry_config
|
|
extract_cloudfoundry_config()
|
|
|
|
|
|
class Config(object):
|
|
ADMIN_CLIENT_SECRET = os.environ.get('ADMIN_CLIENT_SECRET')
|
|
API_HOST_NAME = os.environ.get('API_HOST_NAME')
|
|
SECRET_KEY = os.environ.get('SECRET_KEY')
|
|
DANGEROUS_SALT = os.environ.get('DANGEROUS_SALT')
|
|
ZENDESK_API_KEY = os.environ.get('ZENDESK_API_KEY')
|
|
|
|
# if we're not on cloudfoundry, we can get to this app from localhost. but on cloudfoundry its different
|
|
ADMIN_BASE_URL = os.environ.get('ADMIN_BASE_URL', 'http://localhost:6012')
|
|
|
|
TEMPLATE_PREVIEW_API_HOST = os.environ.get('TEMPLATE_PREVIEW_API_HOST', 'http://localhost:6013')
|
|
TEMPLATE_PREVIEW_API_KEY = os.environ.get('TEMPLATE_PREVIEW_API_KEY', 'my-secret-key')
|
|
|
|
# Logging
|
|
DEBUG = False
|
|
NOTIFY_LOG_PATH = os.getenv('NOTIFY_LOG_PATH')
|
|
|
|
ADMIN_CLIENT_USER_NAME = 'notify-admin'
|
|
|
|
ANTIVIRUS_API_HOST = os.environ.get('ANTIVIRUS_API_HOST')
|
|
ANTIVIRUS_API_KEY = os.environ.get('ANTIVIRUS_API_KEY')
|
|
|
|
ASSETS_DEBUG = False
|
|
AWS_REGION = 'eu-west-1'
|
|
DEFAULT_SERVICE_LIMIT = 50
|
|
DEFAULT_FREE_SMS_FRAGMENT_LIMITS = {
|
|
'central': 250000,
|
|
'local': 25000,
|
|
'nhs_central': 250000,
|
|
'nhs_local': 25000,
|
|
'nhs_gp': 25000,
|
|
'emergency_service': 25000,
|
|
'school_or_college': 25000,
|
|
'other': 25000,
|
|
}
|
|
EMAIL_EXPIRY_SECONDS = 3600 # 1 hour
|
|
INVITATION_EXPIRY_SECONDS = 3600 * 24 * 2 # 2 days - also set on api
|
|
EMAIL_2FA_EXPIRY_SECONDS = 1800 # 30 Minutes
|
|
HEADER_COLOUR = '#FFBF47' # $yellow
|
|
HTTP_PROTOCOL = 'http'
|
|
MAX_FAILED_LOGIN_COUNT = 10
|
|
NOTIFY_APP_NAME = 'admin'
|
|
NOTIFY_LOG_LEVEL = 'DEBUG'
|
|
PERMANENT_SESSION_LIFETIME = 20 * 60 * 60 # 20 hours
|
|
SEND_FILE_MAX_AGE_DEFAULT = 365 * 24 * 60 * 60 # 1 year
|
|
SESSION_COOKIE_HTTPONLY = True
|
|
SESSION_COOKIE_NAME = 'notify_admin_session'
|
|
SESSION_COOKIE_SECURE = True
|
|
# 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
|
|
SHOW_STYLEGUIDE = True
|
|
WTF_CSRF_ENABLED = True
|
|
WTF_CSRF_TIME_LIMIT = None
|
|
CSV_UPLOAD_BUCKET_NAME = 'local-notifications-csv-upload'
|
|
CONTACT_LIST_UPLOAD_BUCKET_NAME = 'local-contact-list'
|
|
ACTIVITY_STATS_LIMIT_DAYS = 7
|
|
TEST_MESSAGE_FILENAME = 'Report'
|
|
|
|
REPLY_TO_EMAIL_ADDRESS_VALIDATION_TIMEOUT = 45
|
|
|
|
NOTIFY_ENVIRONMENT = 'development'
|
|
LOGO_UPLOAD_BUCKET_NAME = 'public-logos-local'
|
|
MOU_BUCKET_NAME = 'local-mou'
|
|
TRANSIENT_UPLOADED_LETTERS = 'local-transient-uploaded-letters'
|
|
ROUTE_SECRET_KEY_1 = os.environ.get('ROUTE_SECRET_KEY_1', '')
|
|
ROUTE_SECRET_KEY_2 = os.environ.get('ROUTE_SECRET_KEY_2', '')
|
|
CHECK_PROXY_HEADER = False
|
|
ANTIVIRUS_ENABLED = True
|
|
|
|
REDIS_URL = os.environ.get('REDIS_URL')
|
|
REDIS_ENABLED = os.environ.get('REDIS_ENABLED') == '1'
|
|
|
|
ASSET_DOMAIN = ''
|
|
ASSET_PATH = '/static/'
|
|
|
|
NOTIFY_SERVICE_ID = 'd6aa2c68-a2d9-4437-ab19-3ae8eb202553'
|
|
|
|
|
|
class Development(Config):
|
|
NOTIFY_LOG_PATH = 'application.log'
|
|
DEBUG = True
|
|
SESSION_COOKIE_SECURE = False
|
|
SESSION_PROTECTION = None
|
|
CSV_UPLOAD_BUCKET_NAME = 'development-notifications-csv-upload'
|
|
CONTACT_LIST_UPLOAD_BUCKET_NAME = 'development-contact-list'
|
|
LOGO_UPLOAD_BUCKET_NAME = 'public-logos-tools'
|
|
MOU_BUCKET_NAME = 'notify.tools-mou'
|
|
TRANSIENT_UPLOADED_LETTERS = 'development-transient-uploaded-letters'
|
|
|
|
ADMIN_CLIENT_SECRET = 'dev-notify-secret-key'
|
|
API_HOST_NAME = 'http://localhost:6011'
|
|
DANGEROUS_SALT = 'dev-notify-salt'
|
|
SECRET_KEY = 'dev-notify-secret-key'
|
|
ANTIVIRUS_API_HOST = 'http://localhost:6016'
|
|
ANTIVIRUS_API_KEY = 'test-key'
|
|
ANTIVIRUS_ENABLED = os.getenv('ANTIVIRUS_ENABLED') == '1'
|
|
|
|
ASSET_PATH = '/static/'
|
|
|
|
REDIS_URL = 'redis://localhost:6379/0'
|
|
|
|
|
|
class Test(Development):
|
|
DEBUG = True
|
|
TESTING = True
|
|
WTF_CSRF_ENABLED = False
|
|
CSV_UPLOAD_BUCKET_NAME = 'test-notifications-csv-upload'
|
|
CONTACT_LIST_UPLOAD_BUCKET_NAME = 'test-contact-list'
|
|
LOGO_UPLOAD_BUCKET_NAME = 'public-logos-test'
|
|
MOU_BUCKET_NAME = 'test-mou'
|
|
TRANSIENT_UPLOADED_LETTERS = 'test-transient-uploaded-letters'
|
|
NOTIFY_ENVIRONMENT = 'test'
|
|
API_HOST_NAME = 'http://you-forgot-to-mock-an-api-call-to'
|
|
TEMPLATE_PREVIEW_API_HOST = 'http://localhost:9999'
|
|
ANTIVIRUS_API_HOST = 'https://test-antivirus'
|
|
ANTIVIRUS_API_KEY = 'test-antivirus-secret'
|
|
ANTIVIRUS_ENABLED = True
|
|
|
|
ASSET_DOMAIN = 'static.example.com'
|
|
ASSET_PATH = 'https://static.example.com/'
|
|
|
|
|
|
class Preview(Config):
|
|
HTTP_PROTOCOL = 'https'
|
|
HEADER_COLOUR = '#F499BE' # $baby-pink
|
|
CSV_UPLOAD_BUCKET_NAME = 'preview-notifications-csv-upload'
|
|
CONTACT_LIST_UPLOAD_BUCKET_NAME = 'preview-contact-list'
|
|
LOGO_UPLOAD_BUCKET_NAME = 'public-logos-preview'
|
|
MOU_BUCKET_NAME = 'notify.works-mou'
|
|
TRANSIENT_UPLOADED_LETTERS = 'preview-transient-uploaded-letters'
|
|
NOTIFY_ENVIRONMENT = 'preview'
|
|
CHECK_PROXY_HEADER = False
|
|
ASSET_DOMAIN = 'static.notify.works'
|
|
ASSET_PATH = 'https://static.notify.works/'
|
|
|
|
# On preview, extend the validation timeout to allow more leniency when running functional tests
|
|
REPLY_TO_EMAIL_ADDRESS_VALIDATION_TIMEOUT = 120
|
|
|
|
|
|
class Staging(Config):
|
|
SHOW_STYLEGUIDE = False
|
|
HTTP_PROTOCOL = 'https'
|
|
HEADER_COLOUR = '#6F72AF' # $mauve
|
|
CSV_UPLOAD_BUCKET_NAME = 'staging-notifications-csv-upload'
|
|
CONTACT_LIST_UPLOAD_BUCKET_NAME = 'staging-contact-list'
|
|
LOGO_UPLOAD_BUCKET_NAME = 'public-logos-staging'
|
|
MOU_BUCKET_NAME = 'staging-notify.works-mou'
|
|
TRANSIENT_UPLOADED_LETTERS = 'staging-transient-uploaded-letters'
|
|
NOTIFY_ENVIRONMENT = 'staging'
|
|
CHECK_PROXY_HEADER = False
|
|
ASSET_DOMAIN = 'static.staging-notify.works'
|
|
ASSET_PATH = 'https://static.staging-notify.works/'
|
|
|
|
|
|
class Live(Config):
|
|
SHOW_STYLEGUIDE = False
|
|
HEADER_COLOUR = '#005EA5' # $govuk-blue
|
|
HTTP_PROTOCOL = 'https'
|
|
CSV_UPLOAD_BUCKET_NAME = 'live-notifications-csv-upload'
|
|
CONTACT_LIST_UPLOAD_BUCKET_NAME = 'production-contact-list'
|
|
LOGO_UPLOAD_BUCKET_NAME = 'public-logos-production'
|
|
MOU_BUCKET_NAME = 'notifications.service.gov.uk-mou'
|
|
TRANSIENT_UPLOADED_LETTERS = 'production-transient-uploaded-letters'
|
|
NOTIFY_ENVIRONMENT = 'live'
|
|
CHECK_PROXY_HEADER = False
|
|
ASSET_DOMAIN = 'static.notifications.service.gov.uk'
|
|
ASSET_PATH = 'https://static.notifications.service.gov.uk/'
|
|
|
|
|
|
class CloudFoundryConfig(Config):
|
|
pass
|
|
|
|
|
|
# CloudFoundry sandbox
|
|
class Sandbox(CloudFoundryConfig):
|
|
HTTP_PROTOCOL = 'https'
|
|
HEADER_COLOUR = '#F499BE' # $baby-pink
|
|
CSV_UPLOAD_BUCKET_NAME = 'cf-sandbox-notifications-csv-upload'
|
|
LOGO_UPLOAD_BUCKET_NAME = 'cf-sandbox-notifications-logo-upload'
|
|
NOTIFY_ENVIRONMENT = 'sandbox'
|
|
|
|
|
|
configs = {
|
|
'development': Development,
|
|
'test': Test,
|
|
'preview': Preview,
|
|
'staging': Staging,
|
|
'live': Live,
|
|
'production': Live,
|
|
'sandbox': Sandbox
|
|
}
|