Add to_canonical() for ip check (#160)

This commit is contained in:
Nutomic 2026-02-04 11:05:59 +00:00 committed by GitHub
parent 11f95ff384
commit f60afae428
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -187,10 +187,12 @@ impl<T: Clone> FederationConfig<T> {
// Resolve domain and see if it points to private IP
// TODO: Use is_global() once stabilized
// https://doc.rust-lang.org/std/net/enum.IpAddr.html#method.is_global
let mut ips = lookup_host((domain.to_owned(), 80)).await?;
let mut ips = lookup_host((domain.to_owned(), 80))
.await?
.map(|s| s.ip().to_canonical());
let allow_local = std::env::var("DANGER_FEDERATION_ALLOW_LOCAL_IP").is_ok();
let invalid_ip = !allow_local
&& ips.any(|addr| match addr.ip() {
&& ips.any(|ip| match ip {
IpAddr::V4(addr) => {
addr.is_private()
|| addr.is_link_local()