Skip to content

Commit 289ed4c

Browse files
Merge pull request #494 from ExtremeFiretop/TruelyOffline
Make Offline Mode True Offline
2 parents c1211ca + 3541fac commit 289ed4c

File tree

1 file changed

+78
-66
lines changed

1 file changed

+78
-66
lines changed

MerlinAU.sh

Lines changed: 78 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -4946,29 +4946,22 @@ _GetLatestFWUpdateVersionFromWebsite_()
49464946
}
49474947

49484948
##------------------------------------------##
4949-
## Modified by ExtremeFiretop [2025-Jun-28] ##
4949+
## Modified by ExtremeFiretop [2024-May-05] ##
49504950
##------------------------------------------##
49514951
_GetLatestFWUpdateVersionFromGitHub_()
49524952
{
4953-
local routerVersion search_type
4953+
local routerVersion
49544954
local gitURL="$1" # GitHub URL for the latest release #
49554955
local firmware_type="$2" # "tuf", "rog" or "pure" #
4956-
local grep_pattern downloadURLs theURL urlVersion
49574956

4958-
search_type="$firmware_type" # Default to the input firmware_type #
4957+
local search_type="$firmware_type" # Default to the input firmware_type #
49594958

4960-
# If firmware_type is "pure", set search type to include "squashfs" as well #
4959+
# If firmware_type is "pure", set search_type to include "squashfs" as well
49614960
if [ "$firmware_type" = "pure" ]
49624961
then
49634962
search_type="pure\|squashfs\|ubi"
49644963
fi
49654964

4966-
case "$gitURL" in
4967-
*/releases/latest) gitURL="${gitURL%/latest}?per_page=5" ;;
4968-
*/releases) gitURL="${gitURL}?per_page=5" ;;
4969-
esac
4970-
4971-
# Get current router version & product ID #
49724965
if ! "$offlineUpdateTrigger"
49734966
then
49744967
routerVersion="$(_GetLatestFWUpdateVersionFromRouter_)"
@@ -4981,40 +4974,38 @@ _GetLatestFWUpdateVersionFromGitHub_()
49814974
return 1
49824975
fi
49834976

4984-
# Construct the grep pattern based on search type #
4985-
grep_pattern="\"browser_download_url\": \".*${PRODUCT_ID}.*\\(${search_type}\\).*\\.\(w\\|pkgtb\)\""
4977+
# Fetch the latest release data from GitHub #
4978+
local release_data="$(curl -s "$gitURL")"
4979+
4980+
# Construct the grep pattern based on search_type #
4981+
local grep_pattern="\"browser_download_url\": \".*${PRODUCT_ID}.*\(${search_type}\).*\.\(w\|pkgtb\)\""
49864982

49874983
# Extract all matched download URLs #
4988-
downloadURLs="$(curl -s "$gitURL" \
4989-
| grep -o "$grep_pattern" \
4990-
| grep -o 'https://[^"]*.\(w\|pkgtb\)')"
4984+
local downloadURLs="$(echo "$release_data" | \
4985+
grep -o "$grep_pattern" | \
4986+
grep -o "https://[^ ]*\.\(w\|pkgtb\)")"
49914987

49924988
if [ -z "$downloadURLs" ]
49934989
then
49944990
echo "**ERROR** **NO_GITHUB_URL**"
49954991
return 1
49964992
else
4993+
local theURL urlVersion
49974994
for theURL in $downloadURLs
49984995
do
49994996
# Extract the version portion from the URL #
50004997
urlVersion="$(echo "$theURL" \
5001-
| grep -oE "${PRODUCT_ID}_[^/]*\.(w|pkgtb)" \
5002-
| sed -e "s/${PRODUCT_ID}_//" \
5003-
-e "s/\.w$//" -e "s/\.pkgtb$//" \
5004-
-e "s/_ubi$//" -e "s/_puresqubi$//" -e "s/_nand_squashfs$//" \
5005-
-e 's/_/./' -e 's/_/./' \
5006-
-e "s/-gnuton[0-9][0-9]*\$//" | head -n1)"
5007-
5008-
case "$urlVersion" in
5009-
*"$routerVersion"*)
5010-
echo "$urlVersion"
5011-
echo "$theURL"
5012-
return 0
5013-
;;
5014-
esac
4998+
| grep -oE "${PRODUCT_ID}_[^ ]*\.(w|pkgtb)" \
4999+
| sed "s/${PRODUCT_ID}_//;s/.w$//;s/.pkgtb$//;s/.ubi$//;s/_/./g;s/-gnuton[0-9][0-9]*\$//" | head -n1)"
5000+
5001+
if [ "$urlVersion" = "$routerVersion" ]
5002+
then
5003+
echo "$urlVersion"
5004+
echo "$theURL"
5005+
return 0
5006+
fi
50155007
done
50165008
fi
5017-
return 1
50185009
}
50195010

50205011
##------------------------------------------##
@@ -8638,9 +8629,9 @@ _RunBackupmon_()
86388629
return 0
86398630
}
86408631

8641-
##----------------------------------------##
8642-
## Modified by Martinski W. [2025-Feb-15] ##
8643-
##----------------------------------------##
8632+
##------------------------------------------##
8633+
## Modified by ExtremeFiretop [2025-Jun-30] ##
8634+
##------------------------------------------##
86448635
_RunOfflineUpdateNow_()
86458636
{
86468637
local retCode
@@ -8747,27 +8738,13 @@ _RunOfflineUpdateNow_()
87478738
extension="${sanitized_filename##*.}"
87488739
FW_DL_FPATH="${FW_ZIP_DIR}/${FW_FileName}.${extension}"
87498740
_GnutonBuildSelection_
8750-
set -- $(_GetLatestFWUpdateVersionFromGitHub_ "$FW_GITURL_RELEASE" "$firmware_choice")
8751-
retCode="$?"
8752-
else
8753-
set -- $(_GetLatestFWUpdateVersionFromWebsite_ "$FW_SFURL_RELEASE")
8754-
retCode="$?"
87558741
fi
8756-
if [ "$retCode" -eq 0 ] && [ $# -eq 2 ] && \
8757-
[ "$1" != "**ERROR**" ] && [ "$2" != "**NO_URL**" ]
8742+
if _AcquireLock_ cliFileLock
87588743
then
8759-
release_link="$2"
8760-
if _AcquireLock_ cliFileLock
8761-
then
8762-
_RunFirmwareUpdateNow_
8763-
_ReleaseLock_ cliFileLock
8764-
fi
8765-
_ClearOfflineUpdateState_
8766-
else
8767-
Say "${REDct}**ERROR**${NOct}: No firmware release URL was found for [$MODEL_ID] router model."
8768-
_ClearOfflineUpdateState_ 1
8769-
return 1
8744+
_RunFirmwareUpdateNow_
8745+
_ReleaseLock_ cliFileLock
87708746
fi
8747+
_ClearOfflineUpdateState_
87718748
else
87728749
_ClearOfflineUpdateState_ 1
87738750
return 1
@@ -8961,11 +8938,18 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or
89618938
return 1
89628939
fi
89638940

8964-
##----------------------------------------##
8965-
## Modified by Martinski W. [2025-Jun-01] ##
8966-
##----------------------------------------##
8941+
##------------------------------------------##
8942+
## Modified by ExtremeFiretop [2025-Jun-30] ##
8943+
##------------------------------------------##
89678944
# Get the required memory for the firmware download and extraction
8968-
requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#1')"
8945+
if ! "$offlineUpdateTrigger"
8946+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#1')"
8947+
else
8948+
if "$isGNUtonFW"
8949+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#1')"
8950+
else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#1')"
8951+
fi
8952+
fi
89698953
if ! _HasRouterMoreThan256MBtotalRAM_ && [ "$requiredRAM_kb" -gt 51200 ]
89708954
then
89718955
if ! _ValidateUSBMountPoint_ "$FW_ZIP_BASE_DIR" 1
@@ -9033,12 +9017,19 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or
90339017
fi
90349018
fi
90359019

9036-
##----------------------------------------##
9037-
## Modified by Martinski W. [2025-Jun-01] ##
9038-
##----------------------------------------##
9020+
##------------------------------------------##
9021+
## Modified by ExtremeFiretop [2025-Jun-30] ##
9022+
##------------------------------------------##
90399023
freeRAM_kb="$(_GetFreeRAM_KB_)"
90409024
availableRAM_kb="$(_GetAvailableRAM_KB_)"
9041-
requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#2')"
9025+
if ! "$offlineUpdateTrigger"
9026+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#2')"
9027+
else
9028+
if "$isGNUtonFW"
9029+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#2')"
9030+
else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#2')"
9031+
fi
9032+
fi
90429033
Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB"
90439034
check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb"
90449035

@@ -9062,7 +9053,14 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or
90629053

90639054
freeRAM_kb="$(_GetFreeRAM_KB_)"
90649055
availableRAM_kb="$(_GetAvailableRAM_KB_)"
9065-
requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#3')"
9056+
if ! "$offlineUpdateTrigger"
9057+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#3')"
9058+
else
9059+
if "$isGNUtonFW"
9060+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#3')"
9061+
else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#3')"
9062+
fi
9063+
fi
90669064
Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB"
90679065
check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb"
90689066

@@ -9084,7 +9082,14 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or
90849082

90859083
freeRAM_kb="$(_GetFreeRAM_KB_)"
90869084
availableRAM_kb="$(_GetAvailableRAM_KB_)"
9087-
requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#4')"
9085+
if ! "$offlineUpdateTrigger"
9086+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#4')"
9087+
else
9088+
if "$isGNUtonFW"
9089+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#4')"
9090+
else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#4')"
9091+
fi
9092+
fi
90889093
Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB"
90899094
check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb"
90909095

@@ -9170,12 +9175,19 @@ Please manually update to version ${GRNct}${MinSupportedFirmwareVers}${NOct} or
91709175
return 1
91719176
fi
91729177

9173-
##----------------------------------------##
9174-
## Modified by Martinski W. [2025-Jun-01] ##
9175-
##----------------------------------------##
9178+
##------------------------------------------##
9179+
## Modified by ExtremeFiretop [2025-Jun-30] ##
9180+
##------------------------------------------##
91769181
freeRAM_kb="$(_GetFreeRAM_KB_)"
91779182
availableRAM_kb="$(_GetAvailableRAM_KB_)"
9178-
requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#5')"
9183+
if ! "$offlineUpdateTrigger"
9184+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "URL=$release_link" 'phase#5')"
9185+
else
9186+
if "$isGNUtonFW"
9187+
then requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_DL_FPATH" 'phase#5')"
9188+
else requiredRAM_kb="$(_GetRequiredRAM_KB_ "FPATH=$FW_ZIP_FPATH" 'phase#5')"
9189+
fi
9190+
fi
91799191
Say "Required RAM: ${requiredRAM_kb} KB - RAM Free: ${freeRAM_kb} KB - RAM Available: ${availableRAM_kb} KB"
91809192
check_memory_and_prompt_reboot "$requiredRAM_kb" "$availableRAM_kb"
91819193

0 commit comments

Comments
 (0)