Change private instance setting to allow federation (#5530)

This commit is contained in:
Nutomic 2025-03-28 11:27:59 +00:00 committed by GitHub
parent 0c78332881
commit e079a41308
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 1 additions and 122 deletions

View file

@ -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<bool>, 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);

View file

@ -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,

View file

@ -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,

View file

@ -48,7 +48,6 @@ pub enum LemmyErrorType {
SiteDescriptionLengthOverflow,
HoneypotFailed,
RegistrationApplicationIsPending,
CantEnablePrivateInstanceAndFederationTogether,
Locked,
CouldntCreateComment,
MaxCommentDepthReached,

View file

@ -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<bool>,
new_federation_enabled: &Option<bool>,
) -> 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());

View file

@ -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 {}:{}",