Enforce outbound policy at each HTTP connection

This commit is contained in:
ms2k 2026-07-17 03:22:06 +09:00
commit 12c59ee70f

View file

@ -0,0 +1,25 @@
use std::{future::Future, io, net::IpAddr};
pub trait Resolver: Send + Sync {
fn resolve(
&self,
host: &str,
port: u16,
) -> impl Future<Output = io::Result<Vec<IpAddr>>> + Send;
}
#[derive(Clone, Copy, Debug, Default)]
pub struct SystemResolver;
impl Resolver for SystemResolver {
async fn resolve(&self, host: &str, port: u16) -> io::Result<Vec<IpAddr>> {
let addresses = tokio::net::lookup_host((host, port)).await?;
let mut unique = Vec::new();
for address in addresses {
if !unique.contains(&address.ip()) {
unique.push(address.ip());
}
}
Ok(unique)
}
}