mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-09-26 09:12:10 +03:00
4a9c2e0b04
Real production incident: the previous update flow stopped the service and rm -rf'd the existing installation, then extracted the downloaded archive straight into place -- when that extraction failed, the panel was left completely gone with no way back short of manual recovery. Now extracts into a staging directory first, fully verifies and prepares it there (arch rename, chmod), and only swaps it into place -- stopping the service and removing the old install -- once that verification has already passed. A bad download/extraction now just fails the update; the running install is never touched. Also added explicit error handling on both cd calls in this function. Root-caused the original incident to exactly this: if the first cd ever silently fails, later steps that build paths by absolute string concatenation still land correctly, but the tar extraction's bare relative filename resolves against whatever the previous cwd was instead -- producing a confusing "No such file or directory" far from its real cause. Verified via bash -n, shellcheck -S warning (no new findings beyond this file's existing ones), and live repro runs against an isolated XUI_MAIN_FOLDER on a real box: the happy path installs cleanly, and a forced cd failure now fails loudly instead of corrupting the extraction.
80 KiB
80 KiB