33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
"""Configured public email links, independent of request Host/forwarded headers."""
|
|
from urllib.parse import urlsplit
|
|
from ..runtime import get_runtime_settings
|
|
from ..installation_origin import managed_runtime
|
|
|
|
|
|
def valid_public_url(value):
|
|
value = str(value or '').strip().rstrip('/')
|
|
try:
|
|
parsed = urlsplit(value)
|
|
if (parsed.scheme in {'http', 'https'} and parsed.hostname
|
|
and not (parsed.username or parsed.password or parsed.query or parsed.fragment)
|
|
and (parsed.port is None or parsed.port > 0)
|
|
and not any(c.isspace() or ord(c) < 33 or c in '<>"\\' for c in value)):
|
|
return value
|
|
except ValueError:
|
|
pass
|
|
return ''
|
|
|
|
|
|
def magent_public_url(legacy_url=''):
|
|
runtime = get_runtime_settings()
|
|
proxy = getattr(runtime, 'magent_proxy_base_url', None)
|
|
application = getattr(runtime, 'magent_application_url', None)
|
|
if managed_runtime():
|
|
return valid_public_url(application)
|
|
if getattr(runtime, 'magent_proxy_enabled', False) and str(proxy or '').strip():
|
|
return valid_public_url(proxy)
|
|
if str(application or '').strip():
|
|
return valid_public_url(application)
|
|
# Preserve pre-existing installations until Hosting & proxy has been configured.
|
|
return valid_public_url(legacy_url)
|