Initialer Import home/maier/bin
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
TOKEN=$(keepassxc-cli show Nextcloud/Keepass/Keepass202503.kdbx "desec api token" -a password)
|
||||||
|
curl -sH "Authorization: Token $TOKEN" https://desec.io/api/v1/domains/ma3000.de/rrsets/srv1/A/
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# --- KONFIGURATION ---
|
||||||
|
: "${TOKEN:="DEIN_DEFAULT_API_TOKEN"}"
|
||||||
|
DOMAIN="ma3000.de"
|
||||||
|
# ---------------------
|
||||||
|
|
||||||
|
# Abfrage der API
|
||||||
|
# Wir nutzen -s für Silent und -H für den Header
|
||||||
|
response=$(curl -s -H "Authorization: Token $TOKEN" \
|
||||||
|
"https://desec.io/api/v1/domains/$DOMAIN/rrsets/")
|
||||||
|
|
||||||
|
# Prüfen, ob die Antwort leer ist oder einen Fehler enthält
|
||||||
|
if [[ -z "$response" || "$response" == *"detail"* ]]; then
|
||||||
|
echo "Fehler: Konnte Daten nicht abrufen. Token korrekt?"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Parsing mit jq:
|
||||||
|
# 1. Wir gehen durch jedes RRset (.[]).
|
||||||
|
# 2. Wir speichern Typ und Name in Variablen.
|
||||||
|
# 3. Wir gehen durch das 'records' Array des jeweiligen RRsets (.records[]).
|
||||||
|
# 4. Wir geben Typ, Name und den einzelnen Record formatiert aus.
|
||||||
|
|
||||||
|
echo "$response" | jq -r '.[] | {type: .type, name: .name, records: .records} | .type as $t | .name as $n | .records[] | "\($t)\t\($n)\t\(.)"'
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# --- Konfiguration ---
|
||||||
|
: "${TOKEN:="DEIN_API_TOKEN"}"
|
||||||
|
DOMAIN="ma3000.de"
|
||||||
|
# ---------------------
|
||||||
|
|
||||||
|
if [ "$#" -ne 3 ]; then
|
||||||
|
echo "Nutzung: $0 <subname> <typ> <wert>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
SUBNAME=$1
|
||||||
|
TYPE=$2
|
||||||
|
NEW_VALUE=$3
|
||||||
|
|
||||||
|
[[ "$SUBNAME" == "@" ]] && SUBNAME=""
|
||||||
|
|
||||||
|
# Wir nutzen den allgemeinen Endpunkt für die Abfrage UND das Senden
|
||||||
|
BASE_URL="https://desec.io/api/v1/domains/$DOMAIN/rrsets/"
|
||||||
|
SPECIFIC_URL="${BASE_URL}${SUBNAME}/${TYPE}/"
|
||||||
|
|
||||||
|
# 1. Bestehende Records abfragen
|
||||||
|
response=$(curl -s -H "Authorization: Token $TOKEN" "$SPECIFIC_URL")
|
||||||
|
|
||||||
|
# Prüfen, ob der Record existiert oder neu ist
|
||||||
|
if echo "$response" | jq -e '.detail' > /dev/null 2>&1; then
|
||||||
|
existing_records="[]"
|
||||||
|
echo "Info: Record existiert noch nicht. Erstelle neu..."
|
||||||
|
else
|
||||||
|
existing_records=$(echo "$response" | jq -c '.records')
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Prüfen, ob der Wert schon vorhanden ist
|
||||||
|
if echo "$existing_records" | jq -e ". | contains([\"$NEW_VALUE\"])" > /dev/null; then
|
||||||
|
echo "Info: Wert '$NEW_VALUE' ist bereits vorhanden. Nichts zu tun."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 3. Den neuen Wert zum Set hinzufügen
|
||||||
|
updated_records=$(echo "$existing_records" | jq -c ". + [\"$NEW_VALUE\"] | unique")
|
||||||
|
|
||||||
|
# 4. Senden an den BASIS-Endpunkt (funktioniert für Erstellung und Update)
|
||||||
|
# Wichtig: Wir nutzen hier POST gegen den Listen-Endpunkt oder PUT gegen den spezifischen
|
||||||
|
# Bei deSEC ist POST auf /rrsets/ der universelle Weg für "Upsert" (Update oder Insert)
|
||||||
|
update_response=$(curl -s -X POST "$BASE_URL" \
|
||||||
|
-H "Authorization: Token $TOKEN" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d "[{
|
||||||
|
\"subname\": \"$SUBNAME\",
|
||||||
|
\"type\": \"$TYPE\",
|
||||||
|
\"ttl\": 3600,
|
||||||
|
\"records\": $updated_records
|
||||||
|
}]")
|
||||||
|
|
||||||
|
# Erfolgsprüfung (Die API gibt bei Erfolg eine Liste zurück)
|
||||||
|
if echo "$update_response" | jq -e '.[0].records' > /dev/null; then
|
||||||
|
echo "Erfolg: $TYPE Record für '$SUBNAME' ist jetzt: $updated_records"
|
||||||
|
else
|
||||||
|
echo "Fehler beim Update:"
|
||||||
|
echo "$update_response" | jq .
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
Reference in New Issue
Block a user