recordHit method
Records a denylist hit and returns the action that should be taken.
Returns "block" or "log" depending on the configured default action.
The audit event is always recorded.
Implementation
String recordHit(
String cidOrMultihash, {
required String source,
String? reason,
}) {
if (!_config.enableDenylist) return 'allowed';
final action = defaultAction;
final multihashHex = _cidOrMultihashHex(cidOrMultihash);
final resolvedReason =
reason ?? _snapshot.reasonFor(cidOrMultihash, multihashHex);
_appendAuditEvent(
DenylistAuditEvent(
timestamp: DateTime.now().toUtc(),
cidOrMultihash: cidOrMultihash,
action: action,
source: source,
reason: resolvedReason,
),
);
if (action == 'log') {
_metrics.recordSecurityEvent('denylist_logged');
_logger.info(
'Denylist hit (logged): $cidOrMultihash via $source'
'${resolvedReason != null ? ' — $resolvedReason' : ''}',
);
} else {
_metrics.recordSecurityEvent('denylist_blocked');
_logger.warning(
'Denylist hit (blocked): $cidOrMultihash via $source'
'${resolvedReason != null ? ' — $resolvedReason' : ''}',
);
}
return action;
}