From a07334e5ef4d509503d53bef296e77320e13e474 Mon Sep 17 00:00:00 2001 From: Jarrett Aiken Date: Mon, 4 May 2026 16:04:23 -0400 Subject: [PATCH] Add scripts. --- .gitea/workflows/scrape.yml | 26 ++++++++++++++++++++++++++ scrape.sh | 22 ++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 .gitea/workflows/scrape.yml create mode 100755 scrape.sh diff --git a/.gitea/workflows/scrape.yml b/.gitea/workflows/scrape.yml new file mode 100644 index 0000000..316d9e2 --- /dev/null +++ b/.gitea/workflows/scrape.yml @@ -0,0 +1,26 @@ +name: Scrape latest DNS records + +on: + workflow_dispatch: + schedule: + - cron: '0 * * * *' + +jobs: + scheduled: + runs-on: ubuntu-latest + steps: + - name: Check out repo + uses: actions/checkout@v2 + + - name: Fetch latest DNS records + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + run: ./scrape.sh + + - name: Commit and push if it changed + run: |- + git config user.name "Automated" + git config user.email "actions@git.arirex.me" + git add -A + git commit -m "Latest DNS records: $(date -u)" || exit 0 + git push diff --git a/scrape.sh b/scrape.sh new file mode 100755 index 0000000..ce1d5fe --- /dev/null +++ b/scrape.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +set -euo pipefail + +rm -r out 2>/dev/null || true; mkdir -p out + +CLOUDFLARE_API="https://api.cloudflare.com/client/v4" +HEADERS=( + -H "Authorization: Bearer ${CLOUDFLARE_API_TOKEN}" + -H "Content-Type: application/json" +) + +curl -s "${CLOUDFLARE_API}/zones" "${HEADERS[@]}" | \ + jq -r '.result[] | .id' | while read zone_id; do + + zone_name=$(curl -s "${CLOUDFLARE_API}/zones/${zone_id}" "${HEADERS[@]}" | \ + jq -r '.result.name') + + echo "Fetching DNS records for: ${zone_name}" + curl -s "${CLOUDFLARE_API}/zones/${zone_id}/dns_records" "${HEADERS[@]}" | \ + jq . > "out/${zone_name}.json" + done