From: Felix Ableitner Date: Fri, 2 Oct 2020 12:16:40 +0000 (+0200) Subject: Only search locally for Community::read_from_name and similar (ref #698) X-Git-Url: http://these/git/%7B%60%24%7BwebArchiveUrl%7D/%22%7B%7D/readmes/%7B%7D/%22%7Burl%7D/%7Bthis.imageSrc%7D?a=commitdiff_plain;h=15adc21e1fb018caa8d189f9dacb44d40fc736cc;p=lemmy.git Only search locally for Community::read_from_name and similar (ref #698) --- diff --git a/lemmy_apub/src/comment.rs b/lemmy_apub/src/comment.rs index 4e5c173f..459d0796 100644 --- a/lemmy_apub/src/comment.rs +++ b/lemmy_apub/src/comment.rs @@ -35,6 +35,7 @@ use activitystreams::{ }; use actix_web::{body::Body, web, web::Path, HttpResponse}; use anyhow::Context; +use diesel::result::Error::NotFound; use itertools::Itertools; use lemmy_db::{ comment::{Comment, CommentForm}, @@ -68,6 +69,9 @@ pub async fn get_apub_comment( ) -> Result, LemmyError> { let id = info.comment_id.parse::()?; let comment = blocking(context.pool(), move |conn| Comment::read(conn, id)).await??; + if !comment.local { + return Err(NotFound.into()); + } if !comment.deleted { Ok(create_apub_response( diff --git a/lemmy_apub/src/inbox/community_inbox.rs b/lemmy_apub/src/inbox/community_inbox.rs index ee75fa00..6f5f1854 100644 --- a/lemmy_apub/src/inbox/community_inbox.rs +++ b/lemmy_apub/src/inbox/community_inbox.rs @@ -11,7 +11,7 @@ use activitystreams::{ prelude::*, }; use actix_web::{web, HttpRequest, HttpResponse}; -use anyhow::{anyhow, Context}; +use anyhow::Context; use lemmy_db::{ community::{Community, CommunityFollower, CommunityFollowerForm}, user::User_, @@ -48,15 +48,6 @@ pub async fn community_inbox( }) .await??; - if !community.local { - return Err( - anyhow!( - "Received activity is addressed to remote community {}", - &community.actor_id - ) - .into(), - ); - } debug!( "Community {} received activity {:?}", &community.name, &activity diff --git a/lemmy_apub/src/post.rs b/lemmy_apub/src/post.rs index 8f5ffbcb..efdfcfd6 100644 --- a/lemmy_apub/src/post.rs +++ b/lemmy_apub/src/post.rs @@ -31,6 +31,7 @@ use activitystreams::{ use activitystreams_ext::Ext1; use actix_web::{body::Body, web, HttpResponse}; use anyhow::Context; +use diesel::result::Error::NotFound; use lemmy_db::{ community::Community, post::{Post, PostForm}, @@ -61,6 +62,9 @@ pub async fn get_apub_post( ) -> Result, LemmyError> { let id = info.post_id.parse::()?; let post = blocking(context.pool(), move |conn| Post::read(conn, id)).await??; + if !post.local { + return Err(NotFound.into()); + } if !post.deleted { Ok(create_apub_response(&post.to_apub(context.pool()).await?)) diff --git a/lemmy_db/src/community.rs b/lemmy_db/src/community.rs index 24cf7e32..b4fa424a 100644 --- a/lemmy_db/src/community.rs +++ b/lemmy_db/src/community.rs @@ -87,6 +87,7 @@ impl Community { pub fn read_from_name(conn: &PgConnection, community_name: &str) -> Result { use crate::schema::community::dsl::*; community + .filter(local) .filter(name.eq(community_name)) .first::(conn) } diff --git a/lemmy_db/src/user.rs b/lemmy_db/src/user.rs index 60fdebbb..42be672a 100644 --- a/lemmy_db/src/user.rs +++ b/lemmy_db/src/user.rs @@ -143,11 +143,17 @@ impl User_ { } pub fn find_by_username(conn: &PgConnection, username: &str) -> Result { - user_.filter(name.ilike(username)).first::(conn) + user_ + .filter(local) + .filter(name.ilike(username)) + .first::(conn) } pub fn find_by_email(conn: &PgConnection, from_email: &str) -> Result { - user_.filter(email.eq(from_email)).first::(conn) + user_ + .filter(local) + .filter(email.eq(from_email)) + .first::(conn) } pub fn get_profile_url(&self, hostname: &str) -> String {