From f38e3edd739859df967363c5cbe361af3f0525f2 Mon Sep 17 00:00:00 2001 From: ExtremeFiretop Date: Mon, 30 Jun 2025 21:04:20 -0400 Subject: [PATCH 1/2] Make Offline Mode True Offline Implemented the new changes for _GetRequiredRAM_KB_ into the offline mode for Gntuon and Merlin firmware --- MerlinAU.sh | 120 +++++++++++++++++++++++++++++----------------------- 1 file changed, 66 insertions(+), 54 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index 86fa16cf..15919333 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -4946,29 +4946,22 @@ _GetLatestFWUpdateVersionFromWebsite_() } ##------------------------------------------## -## Modified by ExtremeFiretop [2025-Jun-28] ## +## Modified by ExtremeFiretop [2024-May-05] ## ##------------------------------------------## _GetLatestFWUpdateVersionFromGitHub_() { - local routerVersion search_type + local routerVersion local gitURL="$1" # GitHub URL for the latest release # local firmware_type="$2" # "tuf", "rog" or "pure" # - local grep_pattern downloadURLs theURL urlVersion - search_type="$firmware_type" # Default to the input firmware_type # + local search_type="$firmware_type" # Default to the input firmware_type # - # If firmware_type is "pure", set search type to include "squashfs" as well # + # If firmware_type is "pure", set search_type to include "squashfs" as well if [ "$firmware_type" = "pure" ] then search_type="pure\|squashfs\|ubi" fi - case "$gitURL" in - */releases/latest) gitURL="${gitURL%/latest}?per_page=5" ;; - */releases) gitURL="${gitURL}?per_page=5" ;; - esac - - # Get current router version & product ID # if ! "$offlineUpdateTrigger" then routerVersion="$(_GetLatestFWUpdateVersionFromRouter_)" @@ -4981,40 +4974,38 @@ _GetLatestFWUpdateVersionFromGitHub_() return 1 fi - # Construct the grep pattern based on search type # - grep_pattern="\"browser_download_url\": \".*${PRODUCT_ID}.*\\(${search_type}\\).*\\.\(w\\|pkgtb\)\"" + # Fetch the latest release data from GitHub # + local release_data="$(curl -s "$gitURL")" + + # Construct the grep pattern based on search_type # + local grep_pattern="\"browser_download_url\": \".*${PRODUCT_ID}.*\(${search_type}\).*\.\(w\|pkgtb\)\"" # Extract all matched download URLs # - downloadURLs="$(curl -s "$gitURL" \ - | grep -o "$grep_pattern" \ - | grep -o 'https://[^"]*.\(w\|pkgtb\)')" + local downloadURLs="$(echo "$release_data" | \ + grep -o "$grep_pattern" | \ + grep -o "https://[^ ]*\.\(w\|pkgtb\)")" if [ -z "$downloadURLs" ] then echo "**ERROR** **NO_GITHUB_URL**" return 1 else + local theURL urlVersion for theURL in $downloadURLs do # Extract the version portion from the URL # urlVersion="$(echo "$theURL" \ - | grep -oE "${PRODUCT_ID}_[^/]*\.(w|pkgtb)" \ - | sed -e "s/${PRODUCT_ID}_//" \ - -e "s/\.w$//" -e "s/\.pkgtb$//" \ - -e "s/_ubi$//" -e "s/_puresqubi$//" -e "s/_nand_squashfs$//" \ - -e 's/_/./' -e 's/_/./' \ - -e "s/-gnuton[0-9][0-9]*\$//" | head -n1)" - - case "$urlVersion" in - *"$routerVersion"*) - echo "$urlVersion" - echo "$theURL" - return 0 - ;; - esac + | grep -oE "${PRODUCT_ID}_[^ ]*\.(w|pkgtb)" \ + | sed "s/${PRODUCT_ID}_//;s/.w$//;s/.pkgtb$//;s/.ubi$//;s/_/./g;s/-gnuton[0-9][0-9]*\$//" | head -n1)" + + if [ "$urlVersion" = "$routerVersion" ] + then + echo "$urlVersion" + echo "$theURL" + return 0 + fi done fi - return 1 } ##------------------------------------------## @@ -8747,27 +8738,13 @@ _RunOfflineUpdateNow_() extension="${sanitized_filename##*.}" FW_DL_FPATH="${FW_ZIP_DIR}/${FW_FileName}.${extension}" _GnutonBuildSelection_ - set -- $(_GetLatestFWUpdateVersionFromGitHub_ "$FW_GITURL_RELEASE" "$firmware_choice") - retCode="$?" - else - set -- $(_GetLatestFWUpdateVersionFromWebsite_ "$FW_SFURL_RELEASE") - retCode="$?" fi - if [ "$retCode" -eq 0 ] && [ $# -eq 2 ] && \ - [ "$1" != "**ERROR**" ] && [ "$2" != "**NO_URL**" ] + if _AcquireLock_ cliFileLock then - release_link="$2" - if _AcquireLock_ cliFileLock - then - _RunFirmwareUpdateNow_ - _ReleaseLock_ cliFileLock - fi - _ClearOfflineUpdateState_ - else - Say "${REDct}**ERROR**${NOct}: No firmware release URL was found for [$MODEL_ID] router model." - _ClearOfflineUpdateState_ 1 - return 1 + _RunFirmwareUpdateNow_ + _ReleaseLock_ cliFileLock fi + _ClearOfflineUpdateState_ else _ClearOfflineUpdateState_ 1 return 1 @@ -8965,7 +8942,14 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or ## Modified by Martinski W. [2025-Jun-01] ## ##----------------------------------------## # Get the required memory for the firmware download and extraction - requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#1')" + if ! "$offlineUpdateTrigger" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#1')" + else + if "$isGNUtonFW" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#1')" + else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#1')" + fi + fi if ! _HasRouterMoreThan256MBtotalRAM_ && [ "$requiredRAM_kb" -gt 51200 ] then if ! _ValidateUSBMountPoint_ "$FW_ZIP_BASE_DIR" 1 @@ -9038,7 +9022,14 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or ##----------------------------------------## freeRAM_kb="$(_GetFreeRAM_KB_)" availableRAM_kb="$(_GetAvailableRAM_KB_)" - requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#2')" + if ! "$offlineUpdateTrigger" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#2')" + else + if "$isGNUtonFW" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#2')" + else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#2')" + fi + fi Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB" check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb" @@ -9062,7 +9053,14 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or freeRAM_kb="$(_GetFreeRAM_KB_)" availableRAM_kb="$(_GetAvailableRAM_KB_)" - requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#3')" + if ! "$offlineUpdateTrigger" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#3')" + else + if "$isGNUtonFW" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#3')" + else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#3')" + fi + fi Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB" check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb" @@ -9084,7 +9082,14 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or freeRAM_kb="$(_GetFreeRAM_KB_)" availableRAM_kb="$(_GetAvailableRAM_KB_)" - requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#4')" + if ! "$offlineUpdateTrigger" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#4')" + else + if "$isGNUtonFW" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#4')" + else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#4')" + fi + fi Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB" check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb" @@ -9175,7 +9180,14 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or ##----------------------------------------## freeRAM_kb="$(_GetFreeRAM_KB_)" availableRAM_kb="$(_GetAvailableRAM_KB_)" - requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#5')" + if ! "$offlineUpdateTrigger" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#5')" + else + if "$isGNUtonFW" + then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#5')" + else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#5')" + fi + fi Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB" check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb" From 3541facc06e1856461f6be3d7b90543a24a59f92 Mon Sep 17 00:00:00 2001 From: ExtremeFiretop Date: Mon, 30 Jun 2025 21:07:03 -0400 Subject: [PATCH 2/2] Added Missing Date Changes Added Missing Date Changes --- MerlinAU.sh | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index 15919333..bee228ca 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -8629,9 +8629,9 @@ _RunBackupmon_() return 0 } -##----------------------------------------## -## Modified by Martinski W. [2025-Feb-15] ## -##----------------------------------------## +##------------------------------------------## +## Modified by ExtremeFiretop [2025-Jun-30] ## +##------------------------------------------## _RunOfflineUpdateNow_() { local retCode @@ -8938,9 +8938,9 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or return 1 fi - ##----------------------------------------## - ## Modified by Martinski W. [2025-Jun-01] ## - ##----------------------------------------## + ##------------------------------------------## + ## Modified by ExtremeFiretop [2025-Jun-30] ## + ##------------------------------------------## # Get the required memory for the firmware download and extraction if ! "$offlineUpdateTrigger" then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#1')" @@ -9017,9 +9017,9 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or fi fi - ##----------------------------------------## - ## Modified by Martinski W. [2025-Jun-01] ## - ##----------------------------------------## + ##------------------------------------------## + ## Modified by ExtremeFiretop [2025-Jun-30] ## + ##------------------------------------------## freeRAM_kb="$(_GetFreeRAM_KB_)" availableRAM_kb="$(_GetAvailableRAM_KB_)" if ! "$offlineUpdateTrigger" @@ -9175,9 +9175,9 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or return 1 fi - ##----------------------------------------## - ## Modified by Martinski W. [2025-Jun-01] ## - ##----------------------------------------## + ##------------------------------------------## + ## Modified by ExtremeFiretop [2025-Jun-30] ## + ##------------------------------------------## freeRAM_kb="$(_GetFreeRAM_KB_)" availableRAM_kb="$(_GetAvailableRAM_KB_)" if ! "$offlineUpdateTrigger"