"""可信部署地址配置;不依据请求 Host 或转发头构造持久链接。""" import ipaddress import os import re from urllib.parse import urlsplit, urlunsplit DEFAULT_PUBLIC_API_BASE_URL = "https://zhiwei666-comfyui-ranking-api.hf.space" PUBLIC_API_BASE_URL_ENV = "RANKING_PUBLIC_API_BASE_URL" _CONFIG_ERROR = "RANKING_PUBLIC_API_BASE_URL 配置无效:需要 HTTPS 服务基址,HTTP 仅允许本机回环地址" def public_api_base_url(environ=None): """读取受运维控制的基址;缺失兼容默认,显式错误拒绝初始化。""" environ = os.environ if environ is None else environ value = environ.get(PUBLIC_API_BASE_URL_ENV, DEFAULT_PUBLIC_API_BASE_URL) if (not isinstance(value, str) or not value or len(value) > 2048 or any(ord(char) <= 32 or ord(char) >= 127 for char in value) or "\\" in value): raise RuntimeError(_CONFIG_ERROR) try: parsed = urlsplit(value) host = parsed.hostname port = parsed.port if (parsed.scheme not in {"http", "https"} or not host or parsed.username is not None or parsed.password is not None or "?" in value or "#" in value or (port is not None and not 1 <= port <= 65535) or parsed.netloc.endswith(":")): raise ValueError() try: address = ipaddress.ip_address(host) except ValueError: address = None if (len(host) > 253 or not all(re.fullmatch(r"[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?", label) for label in host.split(".")) or re.fullmatch(r"[0-9.]+", host)): raise ValueError() if parsed.scheme == "http" and not (host == "localhost" or address and address.is_loopback): raise ValueError() path = parsed.path.rstrip("/") if (path and (not path.startswith("/") or "//" in path or not re.fullmatch(r"/[A-Za-z0-9._~/-]+", path) or any(segment in {".", ".."} for segment in path.split("/")))): raise ValueError() return urlunsplit((parsed.scheme, parsed.netloc.lower(), path, "", "")) except ValueError: raise RuntimeError(_CONFIG_ERROR) from None PUBLIC_API_BASE_URL = public_api_base_url()