]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/lib.rs
Adding instance software and version. Fixes #2222 (#2733)
[lemmy.git] / crates / apub / src / lib.rs
index 53fe7cd3fe54e79b2b38ce5278cdeab10d58c3a2..d277a3bc80b1d13c5ffb5720e8f68d08c412a9e3 100644 (file)
@@ -114,13 +114,13 @@ fn check_apub_id_valid(
   }
 
   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");
     }
   }
@@ -131,8 +131,8 @@ fn check_apub_id_valid(
 #[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(
@@ -175,7 +175,10 @@ pub(crate) fn check_apub_id_valid_with_strictness(
     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) {