From 11e05135923b7060df29e4525183314f653b6353 Mon Sep 17 00:00:00 2001 From: Nutomic Date: Fri, 10 Jan 2025 17:34:12 +0000 Subject: [PATCH] Change default image_mode to proxy, remove deprecated option (#5176) * Change default image_mode to proxy, remove deprecated option * fix api test --- config/defaults.hjson | 7 +------ crates/api_common/src/request.rs | 2 +- crates/api_common/src/utils.rs | 4 ++-- crates/utils/src/settings/mod.rs | 19 ++----------------- crates/utils/src/settings/structs.rs | 14 ++++---------- docker/federation/lemmy_alpha.hjson | 1 + docker/federation/lemmy_beta.hjson | 1 + 7 files changed, 12 insertions(+), 36 deletions(-) diff --git a/config/defaults.hjson b/config/defaults.hjson index 9e24407cd..ad9d6c15f 100644 --- a/config/defaults.hjson +++ b/config/defaults.hjson @@ -20,11 +20,6 @@ url: "http://localhost:8080/" # Set a custom pictrs API key. ( Required for deleting images ) api_key: "string" - # Backwards compatibility with 0.18.1. False is equivalent to `image_mode: None`, true is - # equivalent to `image_mode: StoreLinkPreviews`. - # - # To be removed in 0.20 - cache_external_link_previews: true # Specifies how to handle remote images, so that users don't have to connect directly to remote # servers. image_mode: @@ -38,7 +33,7 @@ # ensures that they can be reliably retrieved and can be resized using pict-rs APIs. However # it also increases storage usage. # - # This is the default behaviour, and also matches Lemmy 0.18. + # This behaviour matches Lemmy 0.18. "StoreLinkPreviews" # or diff --git a/crates/api_common/src/request.rs b/crates/api_common/src/request.rs index 4ccd032b9..a0cc38b82 100644 --- a/crates/api_common/src/request.rs +++ b/crates/api_common/src/request.rs @@ -371,7 +371,7 @@ pub async fn delete_image_from_pictrs( async fn generate_pictrs_thumbnail(image_url: &Url, context: &LemmyContext) -> LemmyResult { let pictrs_config = context.settings().pictrs_config()?; - match pictrs_config.image_mode() { + match pictrs_config.image_mode { PictrsImageMode::None => return Ok(image_url.clone()), PictrsImageMode::ProxyAllImages => { return Ok(proxy_image_link(image_url.clone(), context).await?.into()) diff --git a/crates/api_common/src/utils.rs b/crates/api_common/src/utils.rs index ee232c93a..116bd5e0e 100644 --- a/crates/api_common/src/utils.rs +++ b/crates/api_common/src/utils.rs @@ -1060,7 +1060,7 @@ pub async fn process_markdown( markdown_check_for_blocked_urls(&text, url_blocklist)?; - if context.settings().pictrs_config()?.image_mode() == PictrsImageMode::ProxyAllImages { + if context.settings().pictrs_config()?.image_mode == PictrsImageMode::ProxyAllImages { let (text, links) = markdown_rewrite_image_links(text); RemoteImage::create(&mut context.pool(), links.clone()).await?; @@ -1130,7 +1130,7 @@ async fn proxy_image_link_internal( pub async fn proxy_image_link(link: Url, context: &LemmyContext) -> LemmyResult { proxy_image_link_internal( link, - context.settings().pictrs_config()?.image_mode(), + context.settings().pictrs_config()?.image_mode, context, ) .await diff --git a/crates/utils/src/settings/mod.rs b/crates/utils/src/settings/mod.rs index 72d986d2d..923e36ce6 100644 --- a/crates/utils/src/settings/mod.rs +++ b/crates/utils/src/settings/mod.rs @@ -3,12 +3,12 @@ use anyhow::{anyhow, Context}; use deser_hjson::from_str; use regex::Regex; use std::{env, fs, io::Error, sync::LazyLock}; -use structs::{PictrsConfig, PictrsImageMode, Settings}; +use structs::{PictrsConfig, Settings}; use url::Url; pub mod structs; -const DEFAULT_CONFIG_FILE: &str = "config/config.hjson"; +static DEFAULT_CONFIG_FILE: &str = "config/config.hjson"; #[allow(clippy::expect_used)] pub static SETTINGS: LazyLock = LazyLock::new(|| { @@ -104,21 +104,6 @@ impl Settings { .ok_or_else(|| anyhow!("images_disabled").into()) } } - -impl PictrsConfig { - pub fn image_mode(&self) -> PictrsImageMode { - if let Some(cache_external_link_previews) = self.cache_external_link_previews { - if cache_external_link_previews { - PictrsImageMode::StoreLinkPreviews - } else { - PictrsImageMode::None - } - } else { - self.image_mode.clone() - } - } -} - #[allow(clippy::expect_used)] /// Necessary to avoid URL expect failures fn pictrs_placeholder_url() -> Url { diff --git a/crates/utils/src/settings/structs.rs b/crates/utils/src/settings/structs.rs index 1aef9f79b..15cc2f008 100644 --- a/crates/utils/src/settings/structs.rs +++ b/crates/utils/src/settings/structs.rs @@ -77,16 +77,10 @@ pub struct PictrsConfig { #[default(None)] pub api_key: Option, - /// Backwards compatibility with 0.18.1. False is equivalent to `image_mode: None`, true is - /// equivalent to `image_mode: StoreLinkPreviews`. - /// - /// To be removed in 0.20 - pub(super) cache_external_link_previews: Option, - /// Specifies how to handle remote images, so that users don't have to connect directly to remote /// servers. - #[default(PictrsImageMode::StoreLinkPreviews)] - pub(super) image_mode: PictrsImageMode, + #[default(PictrsImageMode::ProxyAllImages)] + pub image_mode: PictrsImageMode, /// Allows bypassing proxy for specific image hosts when using ProxyAllImages. /// @@ -116,8 +110,7 @@ pub enum PictrsImageMode { /// ensures that they can be reliably retrieved and can be resized using pict-rs APIs. However /// it also increases storage usage. /// - /// This is the default behaviour, and also matches Lemmy 0.18. - #[default] + /// This behaviour matches Lemmy 0.18. StoreLinkPreviews, /// If enabled, all images from remote domains are rewritten to pass through /// `/api/v4/image_proxy`, including embedded images in markdown. Images are stored temporarily @@ -126,6 +119,7 @@ pub enum PictrsImageMode { /// local server. /// /// Requires pict-rs 0.5 + #[default] ProxyAllImages, } diff --git a/docker/federation/lemmy_alpha.hjson b/docker/federation/lemmy_alpha.hjson index a3bf2bb21..178e9124e 100644 --- a/docker/federation/lemmy_alpha.hjson +++ b/docker/federation/lemmy_alpha.hjson @@ -12,5 +12,6 @@ } pictrs: { api_key: "my-pictrs-key" + image_mode: StoreLinkPreviews } } diff --git a/docker/federation/lemmy_beta.hjson b/docker/federation/lemmy_beta.hjson index c026b2f71..cac5827b8 100644 --- a/docker/federation/lemmy_beta.hjson +++ b/docker/federation/lemmy_beta.hjson @@ -12,5 +12,6 @@ } pictrs: { api_key: "my-pictrs-key" + image_mode: StoreLinkPreviews } }