# SSH-Testziel fuer Integrationstests (#011). NUR fuer Tests und Entwicklung!
#
# Absichtlich offen konfiguriert (root-Login und Passwort-Anmeldung erlaubt): Das Ziel
# bildet einen frisch installierten Host vor dem Bootstrap nach, auf dem sshkv sich
# einmalig per Passwort anmeldet und dann seinen Deployment-Key hinterlegt.
FROM debian:trixie-slim

# openssh-client: Host-zu-Host-Tests (Ziel A ruft ssh/ssh-keyscan nach Ziel B auf).
# procps: pgrep/ps fuer Healthcheck und Fehlersuche.
RUN apt-get update \
    && apt-get install -y --no-install-recommends \
       openssh-server openssh-client sudo passwd procps \
    && rm -rf /var/lib/apt/lists/* \
    # Host-Keys aus dem Paket-Postinst entfernen: Sie wuerden sonst im Image-Layer
    # landen und jeder Container haette dieselben Keys. Erzeugt wird beim Start.
    && rm -f /etc/ssh/ssh_host_* \
    && mkdir -p /run/sshd \
    && useradd --create-home --shell /bin/bash --groups sudo test

# Passwoerter werden beim Start aus der Umgebung gesetzt, damit Compose sie ohne
# Neubau aendern kann; die Build-Args liefern nur die Standardwerte.
ARG ROOT_PASSWORT=sshkv-test
ARG TEST_PASSWORT=sshkv-test
ENV SSHKV_ROOT_PASSWORT=${ROOT_PASSWORT} \
    SSHKV_TEST_PASSWORT=${TEST_PASSWORT}

COPY sshd-test.conf /etc/ssh/sshd_config.d/10-sshkv-test.conf
COPY --chmod=0755 einstieg.sh /usr/local/sbin/einstieg
COPY --chmod=0755 hostkeys-tauschen.sh /usr/local/bin/hostkeys-tauschen

EXPOSE 22

# Prueft, ob sshd wirklich einen Host-Key ausliefert – ein laufender Prozess allein
# heisst nach einem Neuladen noch nicht, dass er schon Verbindungen annimmt.
HEALTHCHECK --interval=2s --timeout=3s --start-period=5s --retries=15 \
    CMD ssh-keyscan -T 2 -t ed25519 127.0.0.1 2>/dev/null | grep -q ssh-ed25519

ENTRYPOINT ["/usr/local/sbin/einstieg"]
