From a74f1bd89fc24169bf299b2cd5868fdb76e51fd2 Mon Sep 17 00:00:00 2001 From: Mark Qvist Date: Mon, 18 May 2026 11:52:46 +0200 Subject: [PATCH] Save manifest on release fetch --- RNS/Utilities/rngit/server.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/RNS/Utilities/rngit/server.py b/RNS/Utilities/rngit/server.py index d69e331a..a9b41d3a 100644 --- a/RNS/Utilities/rngit/server.py +++ b/RNS/Utilities/rngit/server.py @@ -909,7 +909,16 @@ class ReticulumGitClient(): if not valid: self.abort(f"Release manifest not signed by {RNS.prettyhexrep(signer_hash)}, aborting") if signer_hash else self.abort("Could not validate release manifest signature") else: print(f"Release manifest validated, signed by {signing_identity}") - artifacts = signed_data["meta"].get("artifacts", []) + release_meta = signed_data.get("meta", None) + if not release_meta: self.abort(f"No release metadata in manifest") + release_name = release_meta.get("name", None) + release_version = release_meta.get("version", None) + if not release_name or not release_version: self.abort("Incomplete release data in manifest") + if "/" in release_name or "/" in release_version: self.abort("Invalid data in release manifest") + manifest_out = os.path.basename(f"{release_name}_{release_version}.{self.MSG_EXT}") + with open(manifest_out, "wb") as fh: fh.write(rsg) + + artifacts = release_meta.get("artifacts", []) if not artifacts: self.abort("Release manifest contains no artifacts") if artifact == "all": fetch_artifacts = artifacts else: