From 99ba099d1b9b97f94e3299b8ef1ba9de3d6136d7 Mon Sep 17 00:00:00 2001 From: Ethan O'Brien Date: Sun, 27 Sep 2026 11:39:31 -0500 Subject: [PATCH] Add ability to force updates for outdated asset versions --- docker/docker-compose.yml | 1 + docker/start.sh | 1 + src/options.rs | 3 +++ src/router/global.rs | 5 ++++- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 0956220..f2b60f8 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -32,6 +32,7 @@ services: #EN_ANDROID_ASSET_HASH: "" #EN_IOS_ASSET_HASH: "" #WINDOWS_ASSET_HASH: "" # Windows asset hash (JP only; GL Windows is unused) + #FORCE_UPDATES: false # Force outdated clients to update # Everything below is for the "Help" page #ANDROID_GLOBAL: "link.to/patched/android/global.apk" diff --git a/docker/start.sh b/docker/start.sh index 4036108..ea9e98b 100755 --- a/docker/start.sh +++ b/docker/start.sh @@ -18,6 +18,7 @@ args=( [ "${NERF_CUSTOM_CARDS:-}" = "true" ] && args+=(--nerf-custom-cards) [ "${ENABLE_CUSTOM_3DMV:-}" = "true" ] && args+=(--enable-custom-3dmv) [ "${ENABLE_ARCADE:-}" = "true" ] && args+=(--enable-arcade) +[ "${FORCE_UPDATES:-}" = "true" ] && args+=(--force-updates) add_opt() { local value="$1" flag="$2" diff --git a/src/options.rs b/src/options.rs index 456c68f..fb4dc2e 100644 --- a/src/options.rs +++ b/src/options.rs @@ -89,6 +89,9 @@ pub struct Args { #[arg(long, default_value = "", help = "Asset version for overridden asset hashes.")] pub asset_version: String, + #[arg(long, default_value_t = false, help = "Force an application update for asset versions not marked as latest")] + pub force_updates: bool, + #[arg(long, default_value = "", help = "Asset hash for windows client.")] pub windows_asset_hash: String, diff --git a/src/router/global.rs b/src/router/global.rs index abc3cd0..33c907b 100644 --- a/src/router/global.rs +++ b/src/router/global.rs @@ -100,13 +100,16 @@ impl AssetVersion { } fn valid_hashes(asset_version: &str, platform: &str) -> Vec { + let args = crate::get_args(); let mut out = Vec::new(); for entry in ASSET_VERSIONS { if entry.platform != platform { continue; } if entry.version == asset_version && !entry.hash.is_empty() { - out.push(entry.stock_hash()); + if entry.latest || !args.force_updates { + out.push(entry.stock_hash()); + } } if entry.latest { if let Some((ov, oh)) = entry.override_pair() {