"""Fail-closed validation of recent external TURN probe results."""
import time


def validate(proof, now=None):
    now = time.time() if now is None else now
    tested_at = proof.get('tested_at')
    if proof.get('host') != 'connectlyvideochat.com':
        raise ValueError('TURN proof targets a different host')
    if type(tested_at) is not int or not 0 <= now - tested_at <= 600:
        raise ValueError('Fresh external TURN proof from the last 10 minutes is required')
    if not all(proof.get(key) is True for key in ['udp', 'tcp', 'tls', 'bidirectional_udp']):
        raise ValueError('Successful external UDP/TCP/TLS/media proof required')
