Compare commits

...

2 commits

Author SHA1 Message Date
Felix Ableitner
555902adec Merge branch 'main' into to-canonical 2026-02-04 11:49:19 +01:00
Felix Ableitner
ec34fc9e99 Add to_canonical() for ip check 2026-02-04 11:47:39 +01:00

View file

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