#!/bin/bash # go to https://dash.cloudflare.com/profile/api-tokens # "create token" -> "Edit zone DNS" ## optionaly: rename token ## set your zone # "continue to summary" -> "create token" # copy your created token CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY} ZONE_ID=${ZONE_ID} CHATMAIL_FULL_DNS_NAME=${CHATMAIL_FULL_DNS_NAME} CHATMAIL_PUBLIC_IP=${CHATMAIL_PUBLIC_IP} IPV6_ENABLED=${IPV6_ENABLED:-false} CHATMAIL_PUBLIC_IPv6=${CHATMAIL_PUBLIC_IPv6} ##################### # why 'proxied' is 'false'? # I suppose that if Cloudflare is blocked in a country, clients cannot use Deltachat without a VPN. ##################### PROXIED=${PROXIED:-"false"} check_variables() { required_vars=( CLOUDFLARE_API_KEY ZONE_ID CHATMAIL_FULL_DNS_NAME CHATMAIL_PUBLIC_IP ) missing_vars=() for var in "${required_vars[@]}"; do if [ -z "${!var}" ]; then missing_vars+=("$var") fi done if [ ${#missing_vars[@]} -ne 0 ]; then echo "❌ Error: this variables not set or empty:" for var in "${missing_vars[@]}"; do echo " - $var" done echo "Please execute command 'export var_name=\"var_value\"' and restart script." exit 1 fi } create_record() { local data=$1 curl https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer ${CLOUDFLARE_API_KEY}" \ -d "$1" } generate_post_data_a_aaaa_record() { local name=$1 local type=${2:-"A"} cat <