provisioning-catalog/components/docker_mailserver/cluster/templates/dkim-publisher-cm.yaml.j2

49 lines
1.2 KiB
Text
Raw Permalink Normal View History

apiVersion: v1
kind: ConfigMap
metadata:
name: dkim-publisher-script
namespace: {{ taskserv.namespace | default(value="mail") }}
data:
dkim-publish.sh: |
#!/bin/bash
set -euo pipefail
domain=$1; selector=$2; ns=$3
key_file="/tmp/docker-mailserver/opendkim/keys/${domain}/${selector}.txt"
apply_dkim() {
local key=$1
kubectl apply -f - <<EOF
apiVersion: externaldns.k8s.io/v1alpha1
kind: DNSEndpoint
metadata:
name: docker-mailserver-dkim-${selector}
namespace: ${ns}
labels:
external-dns.alpha.kubernetes.io/managed-by: docker-mailserver
spec:
endpoints:
- dnsName: ${selector}._domainkey.${domain}
recordType: TXT
targets: ["${key}"]
recordTTL: 300
EOF
}
extract_key() {
awk -F'"' '/p=/{for(i=2;i<=NF;i+=2) printf "%s", $i}' "$1" | tr -d ' \t\n()'
}
while [ ! -f "$key_file" ]; do sleep 5; done
key=$(extract_key "$key_file")
apply_dkim "$key"
while true; do
sleep 3600
current=$(extract_key "$key_file")
if [ "$current" != "$key" ]; then
key="$current"
apply_dkim "$key"
fi
done