safelog: implement Redactable for network addr types.
This commit is contained in:
parent
d3f4956728
commit
f91218c78d
|
@ -0,0 +1,72 @@
|
|||
//! Implement `Redactable` for various types.
|
||||
|
||||
use super::Redactable;
|
||||
use std::fmt::{self, Formatter};
|
||||
|
||||
// Network types.
|
||||
|
||||
impl Redactable for std::net::Ipv4Addr {
|
||||
fn display_redacted(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
write!(f, "{}.x.x.x", self.octets()[0])
|
||||
}
|
||||
|
||||
fn debug_redacted(&self, f: &mut Formatter<'_>) -> fmt::Result {
|
||||
self.display_redacted(f)
|
||||
}
|
||||
}
|
||||
|
||||
impl Redactable for std::net::Ipv6Addr {
|
||||
fn display_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{:x}:x:x:…", self.segments()[0])
|
||||
}
|
||||
|
||||
fn debug_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.display_redacted(f)
|
||||
}
|
||||
}
|
||||
|
||||
impl Redactable for std::net::IpAddr {
|
||||
fn display_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
std::net::IpAddr::V4(v4) => v4.display_redacted(f),
|
||||
std::net::IpAddr::V6(v6) => v6.display_redacted(f),
|
||||
}
|
||||
}
|
||||
|
||||
fn debug_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.display_redacted(f)
|
||||
}
|
||||
}
|
||||
|
||||
impl Redactable for std::net::SocketAddrV4 {
|
||||
fn display_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "{}:{}", self.ip().redacted(), self.port())
|
||||
}
|
||||
|
||||
fn debug_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.display_redacted(f)
|
||||
}
|
||||
}
|
||||
|
||||
impl Redactable for std::net::SocketAddrV6 {
|
||||
fn display_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "[{}]:{}", self.ip().redacted(), self.port())
|
||||
}
|
||||
|
||||
fn debug_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.display_redacted(f)
|
||||
}
|
||||
}
|
||||
|
||||
impl Redactable for std::net::SocketAddr {
|
||||
fn display_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
match self {
|
||||
std::net::SocketAddr::V4(v4) => v4.display_redacted(f),
|
||||
std::net::SocketAddr::V6(v6) => v6.display_redacted(f),
|
||||
}
|
||||
}
|
||||
|
||||
fn debug_redacted(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
self.display_redacted(f)
|
||||
}
|
||||
}
|
|
@ -45,6 +45,7 @@ use serde::{Deserialize, Serialize};
|
|||
|
||||
mod err;
|
||||
mod flags;
|
||||
mod impls;
|
||||
|
||||
pub use err::Error;
|
||||
pub use flags::{disable_safe_logging, enforce_safe_logging, with_safe_logging_suppressed, Guard};
|
||||
|
|
Loading…
Reference in New Issue