From e079a41308e048b6906a2dfb23bb0f321ea68469 Mon Sep 17 00:00:00 2001 From: Nutomic Date: Fri, 28 Mar 2025 11:27:59 +0000 Subject: [PATCH] Change private instance setting to allow federation (#5530) --- crates/api_common/src/utils.rs | 8 ------ crates/api_crud/src/site/create.rs | 40 ---------------------------- crates/api_crud/src/site/update.rs | 39 --------------------------- crates/utils/src/error.rs | 1 - crates/utils/src/utils/validation.rs | 29 -------------------- src/lib.rs | 6 +---- 6 files changed, 1 insertion(+), 122 deletions(-) diff --git a/crates/api_common/src/utils.rs b/crates/api_common/src/utils.rs index 34ab74380..cebbb026e 100644 --- a/crates/api_common/src/utils.rs +++ b/crates/api_common/src/utils.rs @@ -641,14 +641,6 @@ pub async fn send_new_report_email_to_admins( Ok(()) } -pub fn check_private_instance_and_federation_enabled(local_site: &LocalSite) -> LemmyResult<()> { - if local_site.private_instance && local_site.federation_enabled { - Err(LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether)? - } else { - Ok(()) - } -} - pub fn check_nsfw_allowed(nsfw: Option, local_site: Option<&LocalSite>) -> LemmyResult<()> { let is_nsfw = nsfw.unwrap_or_default(); let nsfw_disallowed = local_site.is_some_and(|s| s.disallow_nsfw_content); diff --git a/crates/api_crud/src/site/create.rs b/crates/api_crud/src/site/create.rs index 2720fe537..801d0055f 100644 --- a/crates/api_crud/src/site/create.rs +++ b/crates/api_crud/src/site/create.rs @@ -32,7 +32,6 @@ use lemmy_utils::{ slurs::check_slurs, validation::{ build_and_check_regex, - check_site_visibility_valid, is_valid_body_field, site_name_length_check, site_or_community_description_length_check, @@ -166,13 +165,6 @@ fn validate_create_payload(local_site: &LocalSite, create_site: &CreateSite) -> site_default_post_listing_type_check(&create_site.default_post_listing_type)?; - check_site_visibility_valid( - local_site.private_instance, - local_site.federation_enabled, - &create_site.private_instance, - &create_site.federation_enabled, - )?; - // Ensure that the sidebar has fewer than the max num characters... if let Some(body) = &create_site.sidebar { is_valid_body_field(body, false)?; @@ -267,38 +259,6 @@ mod tests { ..Default::default() }, ), - ( - "CreateSite is both private and federated", - LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether, - &LocalSite { - site_setup: false, - private_instance: true, - federation_enabled: false, - ..Default::default() - }, - &CreateSite { - name: String::from("site_name"), - private_instance: Some(true), - federation_enabled: Some(true), - ..Default::default() - }, - ), - ( - "LocalSite is private, but CreateSite also makes it federated", - LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether, - &LocalSite { - site_setup: false, - private_instance: true, - federation_enabled: false, - registration_mode: RegistrationMode::Open, - ..Default::default() - }, - &CreateSite { - name: String::from("site_name"), - federation_enabled: Some(true), - ..Default::default() - }, - ), ( "CreateSite requires application, but neither it nor LocalSite has an application question", LemmyErrorType::ApplicationQuestionRequired, diff --git a/crates/api_crud/src/site/update.rs b/crates/api_crud/src/site/update.rs index 81ba48798..3202295bf 100644 --- a/crates/api_crud/src/site/update.rs +++ b/crates/api_crud/src/site/update.rs @@ -34,7 +34,6 @@ use lemmy_utils::{ slurs::check_slurs_opt, validation::{ build_and_check_regex, - check_site_visibility_valid, check_urls_are_valid, is_valid_body_field, site_name_length_check, @@ -212,13 +211,6 @@ fn validate_update_payload(local_site: &LocalSite, edit_site: &EditSite) -> Lemm site_default_post_listing_type_check(&edit_site.default_post_listing_type)?; - check_site_visibility_valid( - local_site.private_instance, - local_site.federation_enabled, - &edit_site.private_instance, - &edit_site.federation_enabled, - )?; - // Ensure that the sidebar has fewer than the max num characters... if let Some(body) = &edit_site.sidebar { is_valid_body_field(body, false)?; @@ -295,37 +287,6 @@ mod tests { ..Default::default() }, ), - ( - "EditSite is both private and federated", - LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether, - &LocalSite { - private_instance: true, - federation_enabled: false, - registration_mode: RegistrationMode::Open, - ..Default::default() - }, - &EditSite { - name: Some(String::from("site_name")), - private_instance: Some(true), - federation_enabled: Some(true), - ..Default::default() - }, - ), - ( - "LocalSite is private, but EditSite also makes it federated", - LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether, - &LocalSite { - private_instance: true, - federation_enabled: false, - registration_mode: RegistrationMode::Open, - ..Default::default() - }, - &EditSite { - name: Some(String::from("site_name")), - federation_enabled: Some(true), - ..Default::default() - }, - ), ( "EditSite requires application, but neither it nor LocalSite has an application question", LemmyErrorType::ApplicationQuestionRequired, diff --git a/crates/utils/src/error.rs b/crates/utils/src/error.rs index 1ce0b132e..69a19cf38 100644 --- a/crates/utils/src/error.rs +++ b/crates/utils/src/error.rs @@ -48,7 +48,6 @@ pub enum LemmyErrorType { SiteDescriptionLengthOverflow, HoneypotFailed, RegistrationApplicationIsPending, - CantEnablePrivateInstanceAndFederationTogether, Locked, CouldntCreateComment, MaxCommentDepthReached, diff --git a/crates/utils/src/utils/validation.rs b/crates/utils/src/utils/validation.rs index 0b239feb2..c69671a33 100644 --- a/crates/utils/src/utils/validation.rs +++ b/crates/utils/src/utils/validation.rs @@ -271,22 +271,6 @@ pub fn clean_urls_in_text(text: &str) -> String { } } -pub fn check_site_visibility_valid( - current_private_instance: bool, - current_federation_enabled: bool, - new_private_instance: &Option, - new_federation_enabled: &Option, -) -> LemmyResult<()> { - let private_instance = new_private_instance.unwrap_or(current_private_instance); - let federation_enabled = new_federation_enabled.unwrap_or(current_federation_enabled); - - if private_instance && federation_enabled { - Err(LemmyErrorType::CantEnablePrivateInstanceAndFederationTogether.into()) - } else { - Ok(()) - } -} - pub fn is_valid_url(url: &Url) -> LemmyResult<()> { if !ALLOWED_POST_URL_SCHEMES.contains(&url.scheme()) { Err(LemmyErrorType::InvalidUrlScheme)? @@ -395,7 +379,6 @@ mod tests { error::{LemmyErrorType, LemmyResult}, utils::validation::{ build_and_check_regex, - check_site_visibility_valid, check_urls_are_valid, clean_url, clean_urls_in_text, @@ -650,18 +633,6 @@ Line3", }); } - #[test] - fn test_check_site_visibility_valid() { - assert!(check_site_visibility_valid(true, true, &None, &None).is_err()); - assert!(check_site_visibility_valid(true, false, &None, &Some(true)).is_err()); - assert!(check_site_visibility_valid(false, true, &Some(true), &None).is_err()); - assert!(check_site_visibility_valid(false, false, &Some(true), &Some(true)).is_err()); - assert!(check_site_visibility_valid(true, false, &None, &None).is_ok()); - assert!(check_site_visibility_valid(false, true, &None, &None).is_ok()); - assert!(check_site_visibility_valid(false, false, &Some(true), &None).is_ok()); - assert!(check_site_visibility_valid(false, false, &None, &Some(true)).is_ok()); - } - #[test] fn test_check_url_valid() -> LemmyResult<()> { assert!(is_valid_url(&Url::parse("http://example.com")?).is_ok()); diff --git a/src/lib.rs b/src/lib.rs index 6c660175b..902150e50 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -17,10 +17,7 @@ use lemmy_api_common::{ lemmy_db_views::structs::SiteView, request::client_builder, send_activity::{ActivityChannel, MATCH_OUTGOING_ACTIVITIES}, - utils::{ - check_private_instance_and_federation_enabled, - local_site_rate_limit_to_rate_limit_config, - }, + utils::local_site_rate_limit_to_rate_limit_config, }; use lemmy_apub::{ activities::{handle_outgoing_activities, match_outgoing_activities}, @@ -193,7 +190,6 @@ pub async fn start_lemmy_server(args: CmdArgs) -> LemmyResult<()> { let rate_limit_config = local_site_rate_limit_to_rate_limit_config(&site_view.local_site_rate_limit); let rate_limit_cell = RateLimitCell::new(rate_limit_config); - check_private_instance_and_federation_enabled(&site_view.local_site)?; println!( "Starting HTTP server at {}:{}",