@ogcio/o11y-sdk-react
Version:
Opentelemetry standard instrumentation SDK for React based project
24 lines • 1.49 kB
JavaScript
import { BasicRedactor } from "./basic-redactor.js";
export class IpRedactor extends BasicRedactor {
static IPV4_REGEX = /(?<!\d)(?:%[0-9A-Fa-f]{2})?(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}(?:%[0-9A-Fa-f]{2})?(?!\d)/gi;
static IPV6_REGEX = /(?<![0-9a-f:])(?:%[0-9A-Fa-f]{2})?((?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|:(?::[0-9A-Fa-f]{1,4}){1,7}|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?::[0-9A-Fa-f]{1,4}){1,6}|:(?::[0-9A-Fa-f]{1,4}){1,7}:?|(?:[0-9A-Fa-f]{1,4}:){1,4}:(?:25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(?:\.(?:25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})(?:%[0-9A-Fa-f]{2})?(?![0-9a-f:])/gi;
redact(value) {
const counters = {};
const redactedValue = value
.replace(IpRedactor.IPV4_REGEX, () => {
counters["IPv4"] = (counters["IPv4"] || 0) + 1;
return "[REDACTED IPV4]";
})
.replace(IpRedactor.IPV6_REGEX, () => {
counters["IPv6"] = (counters["IPv6"] || 0) + 1;
return "[REDACTED IPV6]";
});
return {
redactedValue: redactedValue,
context: {
counters,
},
};
}
}
//# sourceMappingURL=ip-redactor.js.map