From ccb73fc872c2e6b1504c2f355cdbd8b5a67ae613 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Mon, 29 May 2023 12:24:54 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9E=95=20Add=20CloudFlare=20script=20(WIP)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prepare-labs/dns-cloudflare.sh | 41 +++++++++++++++++++ prepare-labs/{map-dns.py => dns-gandi.py} | 0 .../{netlify-dns.sh => dns-netlify.sh} | 0 3 files changed, 41 insertions(+) create mode 100755 prepare-labs/dns-cloudflare.sh rename prepare-labs/{map-dns.py => dns-gandi.py} (100%) rename prepare-labs/{netlify-dns.sh => dns-netlify.sh} (100%) diff --git a/prepare-labs/dns-cloudflare.sh b/prepare-labs/dns-cloudflare.sh new file mode 100755 index 00000000..8330e462 --- /dev/null +++ b/prepare-labs/dns-cloudflare.sh @@ -0,0 +1,41 @@ +#!/bin/sh +#set -eu + +if ! command -v http >/dev/null; then + echo "Could not find the 'http' command line tool." + echo "Please install it (the package name might be 'httpie')." + exit 1 +fi + +. ~/creds/creds.cloudflare.dns + +cloudflare() { + URI=$1 + shift + http https://api.cloudflare.com/client/v4/$URI "$@" "Authorization:Bearer $CLOUDFLARE_TOKEN" +} + +_list_zones() { + cloudflare zones | jq -r .result[].name +} + +_get_zone_id() { + cloudflare zones?name=$1 | jq -r .result[0].id +} + +_populate_zone() { + ZONE_ID=$(_get_zone_id $1) + shift + for IPADDR in $*; do + cloudflare zones/$ZONE_ID/dns_records "name=*" "type=A" "content=$IPADDR" + cloudflare zones/$ZONE_ID/dns_records "name=\@" "type=A" "content=$IPADDR" + done +} + +_add_zone() { + cloudflare zones "name=$1" +} + +echo "This script is still work in progress." +echo "You can source it and then use its individual functions." + diff --git a/prepare-labs/map-dns.py b/prepare-labs/dns-gandi.py similarity index 100% rename from prepare-labs/map-dns.py rename to prepare-labs/dns-gandi.py diff --git a/prepare-labs/netlify-dns.sh b/prepare-labs/dns-netlify.sh similarity index 100% rename from prepare-labs/netlify-dns.sh rename to prepare-labs/dns-netlify.sh