Files
2026-09-07 11:55:21 +02:00

34 lines
1.2 KiB
Bash
Executable File

#!/bin/bash
# Laeuft als unprivilegierter User "mirror" (siehe entrypoint.sh, der als root
# den gemeinsamen Signing-Key nach $GNUPGHOME kopiert und dann per setpriv
# hierher wechselt).
set -euo pipefail
: "${GPG_KEY_ID:?GPG_KEY_ID muss gesetzt sein (gemeinsamer Signing-Key, siehe .env)}"
: "${MIRROR_REPO_ID:=company-mirror}"
: "${SYNC_INTERVAL_SECONDS:=21600}"
# Der Key wird NICHT vom Container erzeugt: beide Spiegel benutzen denselben,
# extern erzeugten Key aus ./gpg (den entrypoint.sh als root hierher kopiert
# hat). Ist er unbrauchbar, ist der ganze Sync sinnlos - lieber sofort und mit
# einer Meldung abbrechen, die sagt, was stattdessen im Schluesselbund liegt.
# shellcheck source=/dev/null
. /usr/local/lib/gpg-import.sh
require_usable_signing_key
mkdir -p /srv/dnf
gpg --batch --yes --armor --export "$GPG_KEY_ID" > /srv/dnf/RPM-GPG-KEY-mirror
echo "[entrypoint] Public Key nach /srv/dnf/RPM-GPG-KEY-mirror exportiert."
term_handler() {
echo "[entrypoint] Beende nach aktuellem Sync-Lauf ..."
exit 0
}
trap term_handler SIGTERM SIGINT
while true; do
/usr/local/bin/sync.sh || echo "[entrypoint] sync.sh ist mit Fehler beendet, naechster Versuch in ${SYNC_INTERVAL_SECONDS}s"
sleep "$SYNC_INTERVAL_SECONDS" &
wait $!
done