diff --git a/.github/workflows/Create-NewReleases.yml b/.github/workflows/Create-NewReleases.yml index 68663afa..5059e092 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.2 + uses: softprops/action-gh-release@v3.0.3 with: token: ${{ secrets.GITHUB_TOKEN }} tag_name: ${{ steps.nextver.outputs.tag }} diff --git a/.github/workflows/update-merlin-sha256.yml b/.github/workflows/update-merlin-sha256.yml deleted file mode 100644 index 7bf939be..00000000 --- a/.github/workflows/update-merlin-sha256.yml +++ /dev/null @@ -1,121 +0,0 @@ -name: Update Merlin SHA256 Checksums - -on: - schedule: - # Every 15 minutes, offset from the top of the hour to reduce scheduler congestion. - - cron: '7,22,37,52 * * * *' - workflow_dispatch: - -permissions: - contents: write - -concurrency: - group: update-merlin-sha256 - cancel-in-progress: false - -jobs: - scrape-and-commit: - runs-on: ubuntu-latest - timeout-minutes: 5 - - steps: - - name: Checkout repository - uses: actions/checkout@v7 - with: - ssh-key: ${{ secrets.DEPLOY_KEY }} - - - name: Fetch, parse, and validate SHA256 signatures - shell: bash - run: | - set -euo pipefail - - readonly SOURCE_URL='https://www.asuswrt-merlin.net/download' - readonly TARGET_FILE='merlin-sha256.txt' - readonly MIN_EXPECTED_ENTRIES=5 - - page_file="$(mktemp)" - candidate_file="$(mktemp)" - trap 'rm -f "$page_file" "$candidate_file"' EXIT - - echo "Fetching SHA256 signatures from ${SOURCE_URL}..." - curl --fail --location --silent --show-error \ - --retry 4 --retry-delay 5 --retry-connrefused \ - --connect-timeout 15 --max-time 60 \ - --user-agent 'MerlinAutoUpdate checksum mirror (+https://github.com/ExtremeFiretop/MerlinAutoUpdate-Router)' \ - --output "$page_file" \ - "$SOURCE_URL" - - # Keep the same source section MerlinAU consumes today, but write to a - # temporary candidate so a scrape/parser failure cannot destroy the - # last-known-good mirror in the repository. - sed -n '/<.*>SHA256 signatures:<\/.*>/,/<\/pre>/p' "$page_file" | \ - sed -n '/]*>/,/<\/pre>/p' | \ - sed -e 's/^.*]*>//' \ - -e 's/<[^>]*>//g' \ - -e 's/^[[:space:]]*//' \ - -e 's/[[:space:]]*$//' | \ - tr -d '\r' | \ - sed '/^[[:space:]]*$/d' > "$candidate_file" - - echo "Validating candidate checksum list..." - awk -v min_entries="$MIN_EXPECTED_ENTRIES" ' - BEGIN { - valid = 1 - count = 0 - } - { - count++ - - if (NF != 2) { - printf "Invalid field count on line %d: %s\n", NR, $0 > "/dev/stderr" - valid = 0 - next - } - - if (length($1) != 64 || $1 ~ /[^0-9A-Fa-f]/) { - printf "Invalid SHA256 on line %d: %s\n", NR, $1 > "/dev/stderr" - valid = 0 - } - - if (seen[$2]++) { - printf "Duplicate firmware filename on line %d: %s\n", NR, $2 > "/dev/stderr" - valid = 0 - } - } - END { - if (count < min_entries) { - printf "Only %d checksum entries were parsed; expected at least %d.\n", count, min_entries > "/dev/stderr" - valid = 0 - } - - if (!valid) - exit 1 - } - ' "$candidate_file" - - echo "Validated $(wc -l < "$candidate_file") checksum entries." - echo "Candidate preview:" - head -n 5 "$candidate_file" - - # Replace the working-tree copy only after the candidate has passed - # every validation check. A failed run therefore leaves the repository - # and its last-known-good checksum mirror unchanged. - mv -f "$candidate_file" "$TARGET_FILE" - - - name: Commit and push changes - shell: bash - run: | - set -euo pipefail - - git config user.name 'github-actions[bot]' - git config user.email '41898282+github-actions[bot]@users.noreply.github.com' - - git add merlin-sha256.txt - - if git diff --cached --quiet; then - echo 'No checksum changes detected. Nothing to commit.' - exit 0 - fi - - git commit -m 'Automated update: refresh Merlin SHA256 checksums' - git push diff --git a/MerlinAU.sh b/MerlinAU.sh index 08ccce56..7ad425c4 100644 --- a/MerlinAU.sh +++ b/MerlinAU.sh @@ -19,11 +19,11 @@ set -u ## Set version for each Production Release ## -readonly SCRIPT_VERSION=1.6.7 -readonly SCRIPT_VERSTAG="26090309" +readonly SCRIPT_VERSION=1.6.8 +readonly SCRIPT_VERSTAG="26090718" readonly SCRIPT_NAME="MerlinAU" ## Set to "master" for Production Releases ## -SCRIPT_BRANCH="master" +SCRIPT_BRANCH="dev" ##----------------------------------------## ## Modified by Martinski W. [2024-Jul-03] ## @@ -37,8 +37,7 @@ readonly FW_SFURL_BASE="https://sourceforge.net/projects/asuswrt-merlin/files" readonly FW_SFURL_RELEASE_SUFFIX="Release" readonly FW_GITURL_RELEASE="https://api.github.com/repos/gnuton/asuswrt-merlin.ng/releases/latest" readonly FW_SHA256_URL="https://www.asuswrt-merlin.net/download" -# The scheduled checksum mirror is maintained on the repository's default branch # -readonly FW_SHA256_MIRROR_URL="${SCRIPT_URL_BASE}/main/merlin-sha256.txt" +readonly FW_SHA256_MIRROR_URL="https://fwupdate.asuswrt-merlin.net/sha256sums-ng.txt" ##----------------------------------------## ## Modified by Martinski W. [2024-May-31] ## @@ -6119,7 +6118,7 @@ _CheckOnlineFirmwareSHA256_() Say "${MGNTct}*WARNING*${NOct}: Independently published checksum signature could NOT be retrieved from the ASUSWRT-Merlin website." #-----------------------------------------------------------------------# - # SECONDARY SOURCE: Use the repository mirror ONLY when the official + # SECONDARY SOURCE: Use the official mirror ONLY when the Merlin Website # source did NOT yield a usable checksum. Never use a checksum bundled # with the firmware image in the ZIP archive for an online F/W update. #-----------------------------------------------------------------------# @@ -6141,8 +6140,8 @@ _CheckOnlineFirmwareSHA256_() return 1 fi - checksumSource="MerlinAU GitHub repository mirror" - Say "${MGNTct}*WARNING*${NOct}: Using the MerlinAU GitHub checksum mirror for verification (15-MINUTE Update Intervals!)" + checksumSource="FwUpdate VPS mirror" + Say "${MGNTct}*WARNING*${NOct}: Using the FwUpdate VPS checksum mirror for verification." fi #--------------------------------------------------------------------------# diff --git a/README.md b/README.md index 1492a294..814a3d5b 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # MerlinAU - AsusWRT-Merlin Firmware Auto Updater -## v1.6.7 -## 2026-Sep-03 +## v1.6.8 +## 2026-Sep-07 ## WebUI: image diff --git a/version.txt b/version.txt index 400084b1..d8c5e721 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.6.7 +1.6.8