fix(trimemedia): 访问码校验失败日志不再记录设备访问码

verify_access_code 把设备访问码拼进校验地址的路径段(/c/<code>),一旦连不上
就把整条 URL 写进 error 日志,明文凭据随之落到实例日志文件里;404 与状态码两
个分支本来就不带访问码,这里补齐同一条边界:只记录设备根地址。

这是 #7157 之后对其余裸 {url} 日志点做完整评估时唯一确认会写入凭据的一处:其余
调用点记录的是站点根地址,或把 api_key 经 params 传递、URL 本身不含凭据。
This commit is contained in:
JontyLee
2026-10-26 20:49:21 +08:00
parent a11bc444f4
commit 68d13fc5b2
2 changed files with 23 additions and 1 deletions

View File

@@ -285,7 +285,8 @@ class Api:
url = f"{root}/c/{quote(self._access_code, safe='')}"
res = self._request_utils.get_res(url, allow_redirects=True)
if res is None:
logger.error(f"校验飞牛访问码失败,无法访问 {url}")
# 访问码是 URL 路径段而非查询参数,整串进日志等于泄露凭据
logger.error(f"校验飞牛访问码失败,无法访问 {root}")
return False
if res.status_code == 404:
# 访问码错误或校验失败时返回404

View File

@@ -150,3 +150,24 @@ def test_module_image_cookies_returns_none_when_no_instance_owns_image(monkeypat
assert module.mediaserver_image_cookies(image_url="https://other.example/poster.jpg") is None
server.get_image_cookies.assert_called_once_with("https://other.example/poster.jpg")
def test_verify_access_code_failure_log_omits_access_code(monkeypatch):
"""
访问码是校验地址的路径段,连接失败时日志只记录设备根地址。
:param monkeypatch: 隔离 HTTP 会话与日志输出
"""
api = trimemedia_api.Api(
host="https://trimemedia.example/v",
apikey="apikey",
access_code="device-access-code",
)
logs = Mock()
monkeypatch.setattr(trimemedia_api, "logger", logs)
monkeypatch.setattr(api._request_utils, "get_res", lambda *_args, **_kwargs: None)
assert api.verify_access_code() is False
message = logs.error.call_args[0][0]
assert "device-access-code" not in message
assert "https://trimemedia.example" in message