Update userkeys.sh

This commit is contained in:
Hobbabobba
2025-09-16 22:02:39 +02:00
committed by GitHub
parent a75351efd3
commit a9b325aa74

View File

@@ -1,13 +1,49 @@
#!/bin/bash
#!/usr/bin/env bash
set -euo pipefail
# Zeitlimits für curl (Sekunden)
# Konfiguration
CONNECT_TIMEOUT=2
MAX_TIME=2
# Zuerst die URL auf git.nauheimtech.de versuchen
curl -sf --connect-timeout $CONNECT_TIMEOUT --max-time $MAX_TIME \
https://git.nauheimtech.de/StefanMewes/keyserver/raw/branch/main/$1/keys && exit 0
URLS=(
"https://git.nauheimtech.de/StefanMewes/keyserver/raw/branch/main/$1/keys"
"https://raw.githubusercontent.com/Hobbabobba/keyserver/refs/heads/main/$1/keys"
)
# Falls die erste URL fehlschlägt, die GitHub-URL versuchen
curl -sf --connect-timeout $CONNECT_TIMEOUT --max-time $MAX_TIME \
https://raw.githubusercontent.com/Hobbabobba/keyserver/refs/heads/main/$1/keys
pids=()
tmpfiles=()
# Curl-Requests parallel starten, Output in Tempfiles
for url in "${URLS[@]}"; do
tmp=$(mktemp)
tmpfiles+=("$tmp")
(
if curl -fsS --connect-timeout "$CONNECT_TIMEOUT" --max-time "$MAX_TIME" \
"$url" >"$tmp" 2>/dev/null; then
echo "$tmp" # signalisiert Erfolg
fi
) &
pids+=($!)
done
# Auf den ersten erfolgreichen Job warten
while ((${#pids[@]})); do
if wait -n; then
# Erfolgreichen Output suchen
for tmp in "${tmpfiles[@]}"; do
if [[ -s "$tmp" ]]; then
cat "$tmp"
rm -f "${tmpfiles[@]}"
# Restprozesse beenden & aufräumen
for pid in "${pids[@]}"; do kill "$pid" 2>/dev/null || true; done
wait || true
exit 0
fi
done
fi
done
# Falls keiner erfolgreich war
rm -f "${tmpfiles[@]}"
echo "❌ Keine Keys abrufbar (URLs: ${URLS[*]})" >&2
exit 1