}
if let Some(blocked) = local_site_data.blocked_instances.as_ref() {
- if blocked.contains(&domain) {
+ if blocked.iter().any(|i| domain.eq(&i.domain)) {
return Err("Domain is blocked");
}
}
if let Some(allowed) = local_site_data.allowed_instances.as_ref() {
- if !allowed.contains(&domain) {
+ if !allowed.iter().any(|i| domain.eq(&i.domain)) {
return Err("Domain is not in allowlist");
}
}
#[derive(Clone)]
pub(crate) struct LocalSiteData {
local_site: Option<LocalSite>,
- allowed_instances: Option<Vec<String>>,
- blocked_instances: Option<Vec<String>>,
+ allowed_instances: Option<Vec<Instance>>,
+ blocked_instances: Option<Vec<Instance>>,
}
pub(crate) async fn fetch_local_site_data(
if is_strict {
// need to allow this explicitly because apub receive might contain objects from our local
// instance.
- let mut allowed_and_local = allowed.clone();
+ let mut allowed_and_local = allowed
+ .iter()
+ .map(|i| i.domain.clone())
+ .collect::<Vec<String>>();
allowed_and_local.push(local_instance);
if !allowed_and_local.contains(&domain) {