From 2b8de48511279cdce84191890a14c25dc7e66ee2 Mon Sep 17 00:00:00 2001 From: atenfyr Date: Wed, 15 Jul 2026 21:09:03 -0500 Subject: [PATCH] do not allow importing non-functional mods from astroneermods.space and its archives --- unreal_mod_manager/src/error.rs | 8 ++++++++ .../src/mod_processing/pakfile_reading.rs | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/unreal_mod_manager/src/error.rs b/unreal_mod_manager/src/error.rs index 9bb2b7c7..764cdc39 100644 --- a/unreal_mod_manager/src/error.rs +++ b/unreal_mod_manager/src/error.rs @@ -105,6 +105,7 @@ pub enum ModLoaderWarningKind { MissingMetadata, InvalidMetadata, + OutdatedSource, InvalidModId, InvalidModFileName, InvalidVersion, @@ -176,6 +177,12 @@ impl ModLoaderWarning { mod_id: Some(mod_id), } } + pub fn outdated_source(mod_id: String) -> Self { + ModLoaderWarning { + kind: ModLoaderWarningKind::OutdatedSource, + mod_id: Some(mod_id), + } + } pub fn invalid_mod_id(mod_id: String) -> Self { ModLoaderWarning { kind: ModLoaderWarningKind::InvalidModId, @@ -259,6 +266,7 @@ impl fmt::Display for ModLoaderWarning { ModLoaderWarningKind::MissingMetadata => format!("{mod_name}Missing metadata"), ModLoaderWarningKind::InvalidMetadata => format!("{mod_name}Invalid metadata"), + ModLoaderWarningKind::OutdatedSource => format!("{mod_name}mod was obtained from an outdated source (e.g. astroneermods.space) and cannot be loaded in-game"), ModLoaderWarningKind::InvalidModId => format!("{mod_name}Invalid mod ID"), ModLoaderWarningKind::InvalidModFileName => { format!("{mod_name}Invalid mod file name") diff --git a/unreal_mod_manager/src/mod_processing/pakfile_reading.rs b/unreal_mod_manager/src/mod_processing/pakfile_reading.rs index 35ee4c98..08c1fbdc 100644 --- a/unreal_mod_manager/src/mod_processing/pakfile_reading.rs +++ b/unreal_mod_manager/src/mod_processing/pakfile_reading.rs @@ -12,6 +12,8 @@ use crate::{FileToProcess, ModLoaderAppData}; use super::verify::{self, MOD_FILENAME_REGEX}; +const OUTDATED_SOURCE_URLS: &[&str] = &["astromod.space", "astroneermods.space", "atenfyr.com/ams-archive"]; + #[derive(Debug)] pub(crate) struct ReadData(String, Metadata); @@ -56,6 +58,15 @@ pub(crate) fn read_pak_files( return Err(ModLoaderWarning::invalid_mod_file_name(file_name)); } + // check that homepage doesn't contain outdated source URL + if let Some(ref homepage) = metadata.homepage { + let homepage_lower = homepage.to_lowercase(); + if OUTDATED_SOURCE_URLS.iter().any(|banned| homepage_lower.contains(banned)) + { + return Err(ModLoaderWarning::outdated_source(file_name)); + } + } + let file_name_parts = MOD_FILENAME_REGEX .captures(&file_name) .ok_or_else(|| ModLoaderWarning::invalid_metadata(file_name.clone()))?;