#!/bin/sh
# Sucht sich den erstbesten erreichbaren apt-Zwischenspeicher aus.
#
# apt ruft dieses Skript ueber Acquire::http::Proxy-Auto-Detect fuer jede
# Adresse auf und nimmt, was auf der Standardausgabe steht - entweder eine
# Proxy-Adresse oder "DIRECT".
#
# Warum ueberhaupt: In /etc/apt/apt.conf.d/01proxy standen zwei
# Proxy-Zeilen untereinander. apt nimmt die letzte, die erste war wirkungslos
# - alle Backend-Knoten hingen damit an einem einzigen Frontend. Faellt das
# weg, laesst sich auf keinem Datenbank- oder Redis-Knoten mehr etwas
# installieren, und der Grund ist nicht zu sehen.
#
# Die Liste steht hier bewusst fest und wird nicht aus dem Hetzner-Label
# gelesen: das Skript laeuft auf Maschinen ohne Netzzugang nach draussen und
# muss in Millisekunden antworten.
for ziel in 10.0.1.1 10.0.1.2; do
    # -w 1: lieber schnell weiterziehen als apt aufhalten.
    if nc -z -w 1 "$ziel" 3142 2>/dev/null; then
        echo "http://$ziel:3142"
        exit 0
    fi
done

# Keiner erreichbar: ohne Proxy weiterversuchen. Auf den Frontends klappt
# das, auf den Backend-Knoten nicht - dort ist die Fehlermeldung dann aber
# wenigstens die richtige ("konnte archive.ubuntu.com nicht aufloesen").
echo DIRECT
