from urllib.parse import urlsplit
import ipaddress

ORIGENES_AUTORIZADOS = {
    ("23.237.34.58", 7070),
    ("51.81.107.170", 7070),
}

def validar_destino(url):
    p = urlsplit(url)

    if p.scheme != "http":
        raise ValueError("Protocolo no autorizado")

    if p.username or p.password:
        raise ValueError("Credenciales en autoridad no permitidas")

    if not p.hostname or p.port is None:
        raise ValueError("Destino incompleto")

    try:
        ip = ipaddress.ip_address(p.hostname)
    except ValueError:
        raise ValueError("Solo se permiten IP autorizadas")

    if not ip.is_global:
        raise ValueError("Direccion no publica")

    if (str(ip), p.port) not in ORIGENES_AUTORIZADOS:
        raise ValueError("Origen no autorizado")

    return url
