Censor link keys in transaction logs; watch for a minted link's satellite

kanta's log formatter now censors uplinks/satellite_links key material
like the OIDC key. After minting a link URL, the Satellites panel polls
for a minute so the registering satellite appears live.
This commit is contained in:
LeoVasanko committed 2026-10-01 06:42:26 +00:00
1 parent 0a59e26e45
commit fa0d03729b
2 files changed
+12 -6

No files matched your search

+7 -2
View File
@@ -39,11 +39,15 @@ async function load() {
}
// While an uplink is not connected, poll gently so status goes live
// without a manual refresh (registration and reconnects included).
// without a manual refresh (registration and reconnects included); after
// minting a link URL, poll for a minute to catch the satellite appearing.
let pollTimer = null
let mintWatchUntil = 0
function schedulePoll() {
clearTimeout(pollTimer)
const watching = uplinks.value.some(u => !u.connected)
const watching =
uplinks.value.some(u => !u.connected) ||
links.value.some(l => !l.connected) && Date.now() < mintWatchUntil
if (watching) {
pollTimer = setTimeout(async () => {
await load()
@@ -111,6 +115,7 @@ async function submitLinkDialog() {
linkDialog.value = null
} else {
d.minted = await apiJson('/auth/api/admin/satellites/', { method: 'POST', body: { rp_ids } })
mintWatchUntil = Date.now() + 60_000 // watch for the satellite registering
}
await refresh()
} catch (e) {
+5 -4
View File
@@ -86,8 +86,9 @@ def _resolve_uuid_label(
return None
# The OIDC signing key is stored at oidc.key.
_OIDC_KEY_PATH = re.compile(r"^oidc\.key$")
# The OIDC signing key is stored at oidc.key; satellite link key material
# at uplinks/satellite_links.<id>.key.
_SECRET_KEY_PATH = re.compile(r"^(oidc\.key|(uplinks|satellite_links)\.[^.]+\.key)$")
@kanta.logfmt
@@ -98,10 +99,10 @@ def format_log_uuid(
current: Annotated[dict, "post"] | None = None,
) -> Optional[str]: # noqa: UP045
"""Format UUID values/keys/actor labels and censor secrets in transaction logs."""
# Censor sensitive OIDC key material regardless of value type, but only
# Censor sensitive key material regardless of value type, but only
# when formatting the value: path components are passed with the component
# itself as value and must stay visible ("oidc.key = <hidden>").
if _OIDC_KEY_PATH.fullmatch(path) and value != "key":
if _SECRET_KEY_PATH.fullmatch(path) and value != "key":
return "<hidden>"
if not isinstance(value, str):