From 43d23e0d61b132735562c9a2af92018a086cb231 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 Jul 2026 23:42:53 +0000 Subject: [PATCH 01/10] Bump softprops/action-gh-release in the all-actions group Bumps the all-actions group with 1 update: [softprops/action-gh-release](https://github.com/softprops/action-gh-release). Updates `softprops/action-gh-release` from 3.0.1 to 3.0.2 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v3.0.1...v3.0.2) --- updated-dependencies: - dependency-name: softprops/action-gh-release dependency-version: 3.0.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/Create-NewReleases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Create-NewReleases.yml b/.github/workflows/Create-NewReleases.yml index cc045d95..4c72136f 100644 --- a/.github/workflows/Create-NewReleases.yml +++ b/.github/workflows/Create-NewReleases.yml @@ -85,7 +85,7 @@ jobs: git push origin ${{ steps.nextver.outputs.tag }} - name: Create Release with Automated Release Notes - uses: softprops/action-gh-release@v3.0.1 + uses: softprops/action-gh-release@v3.0.2 with: token: ${{ secrets.GITHUB_TOKEN }} tag_name: ${{ steps.nextver.outputs.tag }} From ffdbcb348297f5d865df40be789610f567df8eb2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jul 2026 23:43:00 +0000 Subject: [PATCH 02/10] Bump actions/checkout from 7.0.0 to 7.0.1 in the all-actions group Bumps the all-actions group with 1 update: [actions/checkout](https://github.com/actions/checkout). Updates `actions/checkout` from 7.0.0 to 7.0.1 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v7.0.0...v7.0.1) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 7.0.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: all-actions ... Signed-off-by: dependabot[bot] --- .github/workflows/Create-NewReleases.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/Create-NewReleases.yml b/.github/workflows/Create-NewReleases.yml index 4c72136f..68663afa 100644 --- a/.github/workflows/Create-NewReleases.yml +++ b/.github/workflows/Create-NewReleases.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout source code - uses: actions/checkout@v7.0.0 + uses: actions/checkout@v7.0.1 with: fetch-depth: 0 ref: 'main' # Ensure we're tagging the main branch after the merge From 42f8c28d8ff45cfed7935f417a4526883dbeae8a Mon Sep 17 00:00:00 2001 From: Joel Samson Date: Thu, 30 Jul 2026 09:53:02 -0400 Subject: [PATCH 03/10] Update metadata and login data in MerlinAU.sh Updated metadata and modified login data handling in the script. --- MerlinAU.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index ad9aec4d..859ad1d9 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -4490,9 +4490,9 @@ _CheckForMinimumModelSupport_() "$routerModelCheckFailed" && return 1 || return 0 } -##-------------------------------------## -## Added by Martinski W. [2026-Jan-01] ## -##-------------------------------------## +##------------------------------------------## +## Modified by ExtremeFiretop [2026-Jul-30] ## +##------------------------------------------## _DoMainRouterLogin_() { if [ $# -lt 3 ] || [ -z "$1" ] || [ -z "$2" ] || [ -z "$3" ] @@ -4511,7 +4511,8 @@ _DoMainRouterLogin_() -H 'Content-Type: application/x-www-form-urlencoded' \ -H "Origin: ${routerURL}/" \ -H 'Connection: keep-alive' \ - --data-raw "group_id=&action_mode=&action_script=&action_wait=5¤t_page=Main_Login.asp&next_page=index.asp&login_authorization=$credsENC" \ + --data-raw "group_id=&action_mode=&action_script=&action_wait=5¤t_page=Main_Login.asp&next_page=index.asp" \ + --data-urlencode "login_authorization=$credsENC" \ --cookie-jar "$cookieFile")" curlCode="$?" From 65bfa5e2c277bcfb5632ab0264b419e74f4d5875 Mon Sep 17 00:00:00 2001 From: Joel Samson Date: Thu, 30 Jul 2026 09:57:20 -0400 Subject: [PATCH 04/10] Update script version to 1.6.6 and version tag --- MerlinAU.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index 859ad1d9..52032132 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -9,8 +9,8 @@ set -u ## Set version for each Production Release ## -readonly SCRIPT_VERSION=1.6.5 -readonly SCRIPT_VERSTAG="26062300" +readonly SCRIPT_VERSION=1.6.6 +readonly SCRIPT_VERSTAG="26073010" readonly SCRIPT_NAME="MerlinAU" ## Set to "master" for Production Releases ## SCRIPT_BRANCH="dev" From 0d9b0ee20f0870d7727a85482303b836bafd9524 Mon Sep 17 00:00:00 2001 From: Joel Samson Date: Thu, 30 Jul 2026 10:02:50 -0400 Subject: [PATCH 05/10] Refactor data submission in MerlinAU.sh --- MerlinAU.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index 52032132..59899d2a 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -5382,7 +5382,8 @@ _DoMeshNodeLogin_() -H 'Content-Type: application/x-www-form-urlencoded' \ -H "Origin: ${nodeURL}" \ -H 'Connection: keep-alive' \ - --data-raw "group_id=&action_mode=&action_script=&action_wait=5¤t_page=Main_Login.asp&next_page=index.asp&login_authorization=$credsENC" \ + --data-raw "group_id=&action_mode=&action_script=&action_wait=5¤t_page=Main_Login.asp&next_page=index.asp" \ + --data-urlencode "login_authorization=$credsENC" \ --cookie-jar "$cookieFile" \ --max-time 3 >/dev/null 2>&1 From b5254652ccb2ec20b517db75147a31857891a9b5 Mon Sep 17 00:00:00 2001 From: Joel Samson Date: Thu, 30 Jul 2026 12:06:31 -0400 Subject: [PATCH 06/10] Update Star History chart links in README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 607551e8..62d8ef2e 100644 --- a/README.md +++ b/README.md @@ -168,10 +168,10 @@ The script can be run using the below options: ## Use this Automatic F/W Update script at your own discretion. By using this script you assume all risks associated with updating a router to a new firmware version. ## Star History - + - - - Star History Chart + + + Star History Chart From bd11f6af89727971fa5f4dc1410255758686a405 Mon Sep 17 00:00:00 2001 From: Joel Samson Date: Thu, 30 Jul 2026 12:08:19 -0400 Subject: [PATCH 07/10] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 62d8ef2e..3dded4d6 100644 --- a/README.md +++ b/README.md @@ -168,10 +168,10 @@ The script can be run using the below options: ## Use this Automatic F/W Update script at your own discretion. By using this script you assume all risks associated with updating a router to a new firmware version. ## Star History - + - - - Star History Chart + + + Star History Chart From 73d88a5cd62d5e4e6e7d6370e007281f8f916538 Mon Sep 17 00:00:00 2001 From: Joel Samson Date: Thu, 30 Jul 2026 12:10:08 -0400 Subject: [PATCH 08/10] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3dded4d6..85e405bf 100644 --- a/README.md +++ b/README.md @@ -168,10 +168,10 @@ The script can be run using the below options: ## Use this Automatic F/W Update script at your own discretion. By using this script you assume all risks associated with updating a router to a new firmware version. ## Star History - + - - - Star History Chart + + + Star History Chart From 2c461aa28289a22fb4abaed6acb1160bb0b25053 Mon Sep 17 00:00:00 2001 From: Martinski4GitHub <119833648+Martinski4GitHub@users.noreply.github.com> Date: Thu, 30 Jul 2026 18:29:18 -0700 Subject: [PATCH 09/10] Removal of Cron Jobs with Timeout Modified code that removes cron jobs from 3rd-party add-ons so that the cru command call has a timeout to prevent a stuck commands. --- MerlinAU.sh | 36 ++++++++++++++++++++++++++++++------ README.md | 4 ++-- version.txt | 2 +- 3 files changed, 33 insertions(+), 9 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index 59899d2a..4b377faa 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -4,13 +4,13 @@ # # Original Creation Date: 2023-Oct-01 by @ExtremeFiretop. # Official Co-Author: @Martinski W. - Date: 2023-Nov-01 -# Last Modified: 2026-Jun-23 +# Last Modified: 2026-Jul-30 ################################################################### set -u ## Set version for each Production Release ## readonly SCRIPT_VERSION=1.6.6 -readonly SCRIPT_VERSTAG="26073010" +readonly SCRIPT_VERSTAG="26073018" readonly SCRIPT_NAME="MerlinAU" ## Set to "master" for Production Releases ## SCRIPT_BRANCH="dev" @@ -8852,11 +8852,11 @@ _Toggle_FW_UpdateCheckSetting_() } ##----------------------------------------## -## Modified by Martinski W. [2025-Feb-22] ## +## Modified by Martinski W. [2026-Jul-30] ## ##----------------------------------------## _RemoveCronJobsFromAddOns_() { - eval $cronListCmd | grep -E "$cronJobsRegEx1|$cronJobsRegEx2|$cronJobsRegEx3|cronJobsRegEx4|$cronJobsRegEx5|$cronJobsRegEx6" > "$addonCronJobList" + eval $cronListCmd | grep -E "$cronJobsRegEx1|$cronJobsRegEx2|$cronJobsRegEx3|$cronJobsRegEx4|$cronJobsRegEx5|$cronJobsRegEx6" > "$addonCronJobList" if [ ! -s "$addonCronJobList" ] then rm -f "$addonCronJobList" @@ -8864,12 +8864,36 @@ _RemoveCronJobsFromAddOns_() return 1 fi + _RemoveCronJobWithTimeout_() + { + local cruProcID cruProcOK=false + local waitSecsMAX=10 waitSecsCNT=0 + + cru d "$1" & cruProcID="$!" + + while [ "$waitSecsCNT" -lt "$waitSecsMAX" ] + do + sleep 1 + waitSecsCNT="$((waitSecsCNT + 1))" + if ! kill -EXIT "$cruProcID" 2>/dev/null + then cruProcOK=true ; break + fi + done + + if kill -EXIT "$cruProcID" 2>/dev/null + then + kill -9 "$cruProcID" + Say "Wait Timeout [$waitSecsMAX secs] for CRU command expired." + fi + } + local cronJobCount=0 cronJobIDx cronJobCMD while read -r cronJobLINE do if [ -z "$cronJobLINE" ] || echo "$cronJobLINE" | grep -qE "^[[:blank:]]*#" - then continue ; fi + then continue + fi cronJobCount="$((cronJobCount + 1))" [ "$cronJobCount" -eq 1 ] && \ @@ -8881,7 +8905,7 @@ _RemoveCronJobsFromAddOns_() if [ -n "$cronJobIDx" ] then - cru d "$cronJobIDx" ; sleep 1 + _RemoveCronJobWithTimeout_ "$cronJobIDx" if eval $cronListCmd | grep -qE "#${cronJobIDx}#$" then Say "**ERROR**: Failed to remove cron job [$cronJobIDx]." else Say "Cron job [$cronJobIDx] was removed successfully." diff --git a/README.md b/README.md index 85e405bf..69b0cc4c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # MerlinAU - AsusWRT-Merlin Firmware Auto Updater -## v1.6.5 -## 2026-June-23 +## v1.6.6 +## 2026-Jul-30 ## WebUI: image diff --git a/version.txt b/version.txt index 9f05f9f2..ec70f755 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.6.5 +1.6.6 From fe3155f1af8c2d3ae602ca08b487e4b9dadf7bd5 Mon Sep 17 00:00:00 2001 From: Martinski4GitHub <119833648+Martinski4GitHub@users.noreply.github.com> Date: Sun, 16 Aug 2026 03:49:01 -0700 Subject: [PATCH 10/10] Fix for Password with Special Chars Fixed code to properly handle saving the base64-encoded password into the add-on's configuration file. This prevents the following error message: "sed: bad option in substitution expression" --- MerlinAU.sh | 9 +++++---- README.md | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/MerlinAU.sh b/MerlinAU.sh index 4b377faa..e6121ebe 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -4,13 +4,13 @@ # # Original Creation Date: 2023-Oct-01 by @ExtremeFiretop. # Official Co-Author: @Martinski W. - Date: 2023-Nov-01 -# Last Modified: 2026-Jul-30 +# Last Modified: 2026-Aug-16 ################################################################### set -u ## Set version for each Production Release ## readonly SCRIPT_VERSION=1.6.6 -readonly SCRIPT_VERSTAG="26073018" +readonly SCRIPT_VERSTAG="26081603" readonly SCRIPT_NAME="MerlinAU" ## Set to "master" for Production Releases ## SCRIPT_BRANCH="dev" @@ -1648,7 +1648,7 @@ Get_Custom_Setting() } ##----------------------------------------## -## Modified by Martinski W. [2025-Jan-20] ## +## Modified by Martinski W. [2026-Aug-16] ## ##----------------------------------------## Update_Custom_Settings() { @@ -1678,7 +1678,8 @@ Update_Custom_Settings() then if [ "$setting_value" != "$(grep "^$setting_type" "$CONFIG_FILE" | cut -f2 -d' ')" ] then - sed -i "s/^$setting_type.*/$setting_type $setting_value/" "$CONFIG_FILE" + fixedVal="$(echo "$setting_value" | sed 's/[\/&]/\\&/g')" + sed -i "s/^${setting_type}.*/$setting_type $fixedVal/" "$CONFIG_FILE" fi else echo "$setting_type $setting_value" >> "$CONFIG_FILE" diff --git a/README.md b/README.md index 69b0cc4c..3df3be2c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # MerlinAU - AsusWRT-Merlin Firmware Auto Updater ## v1.6.6 -## 2026-Jul-30 +## 2026-Aug-16 ## WebUI: image