Check shadow_hs as well as hs during 3pid reg

This commit is contained in:
Andrew Morgan 2019-02-27 15:22:41 +00:00
parent 70e039c7ae
commit 9b13038d05

View file

@ -43,17 +43,19 @@ def check_3pid_allowed(hs, medium, address):
{'medium': medium, 'address': address} {'medium': medium, 'address': address}
) )
# Assume false if invalid response # Check for invalid response
if 'hs' not in data: if 'hs' not in data and 'shadow_hs' not in data:
defer.returnValue(False)
# Check if this user is intended to register for this homeserver
if data['hs'] != hs.config.server_name and data['shadow_hs'] != hs.config.server_name:
defer.returnValue(False) defer.returnValue(False)
if data.get('requires_invite', False) and data.get('invited', False) == False: if data.get('requires_invite', False) and data.get('invited', False) == False:
# Requires an invite but hasn't been invited # Requires an invite but hasn't been invited
defer.returnValue(False) defer.returnValue(False)
if hs.config.allow_invited_3pids and data.get('invited'):
defer.returnValue(True) defer.returnValue(True)
else:
defer.returnValue(data['hs'] == hs.config.server_name)
if hs.config.allowed_local_3pids: if hs.config.allowed_local_3pids:
for constraint in hs.config.allowed_local_3pids: for constraint in hs.config.allowed_local_3pids: