fix(installer): Re-Exec auch ohne curl (wget/busybox/lokale Quelle)

Auf einem frischen System fehlt curl haeufig — genau dort, wo apt laeuft und
der Schutz am noetigsten ist. Der Re-Exec scheiterte deshalb still und der
Installer lief ohne Schutz weiter.

Jetzt: curl -> wget -> busybox wget -> lokale Quelle (NETBIRD_TG_SOURCE).
Ist keiner verfuegbar, wird das ausdruecklich gemeldet statt still uebergangen.
This commit is contained in:
mm committed 2026-09-14 10:19:44 +02:00
1 parent 9e6593a6f6
commit 06ad67f8f5
1 file changed
+23 -6
+23 -6
View File
@@ -21,9 +21,28 @@ if [ -z "${NETBIRD_TG_REEXEC:-}" ] && [ ! -t 0 ]; then
# Rest und die Kopie waere unvollstaendig. Stattdessen frisch von der Quelle # Rest und die Kopie waere unvollstaendig. Stattdessen frisch von der Quelle
# laden (dieselbe URL, die der Aufrufer benutzt hat). # laden (dieselbe URL, die der Aufrufer benutzt hat).
_src="${REPO_RAW:-https://gitea.m-m.bio/mm/netbird-telegraf-installer/raw/branch/main}" _src="${REPO_RAW:-https://gitea.m-m.bio/mm/netbird-telegraf-installer/raw/branch/main}"
_self="$(mktemp /tmp/netbird-telegraf-install.XXXXXX)" _self="$(mktemp /tmp/netbird-telegraf-install.XXXXXX 2>/dev/null || echo /tmp/netbird-tg.$$)"
if command -v curl >/dev/null 2>&1 && \
curl -fsSL "$_src/install.sh" -o "$_self" 2>/dev/null && [ -s "$_self" ]; then # WICHTIG: auf einem FRISCHEN System gibt es oft kein curl — genau dort, wo
# der Schutz am noetigsten ist (dort laeuft apt und damit needrestart).
# Deshalb BEIDE Wege versuchen und, wenn keiner geht, das Skript weiter
# ausfuehren wie bisher (dann bleibt das Risiko, aber es laeuft).
_dl=0
if command -v curl >/dev/null 2>&1; then
curl -fsSL "$_src/install.sh" -o "$_self" 2>/dev/null && [ -s "$_self" ] && _dl=1
fi
if [ "$_dl" -eq 0 ] && command -v wget >/dev/null 2>&1; then
wget -q -O "$_self" "$_src/install.sh" 2>/dev/null && [ -s "$_self" ] && _dl=1
fi
if [ "$_dl" -eq 0 ] && command -v busybox >/dev/null 2>&1; then
busybox wget -q -O "$_self" "$_src/install.sh" 2>/dev/null && [ -s "$_self" ] && _dl=1
fi
# Letzter Weg: liegt das Skript schon lokal (z. B. per scp), von dort kopieren.
if [ "$_dl" -eq 0 ] && [ -n "${NETBIRD_TG_SOURCE:-}" ] && [ -s "${NETBIRD_TG_SOURCE:-}" ]; then
cp "${NETBIRD_TG_SOURCE}" "$_self" 2>/dev/null && _dl=1
fi
if [ "$_dl" -eq 1 ]; then
chmod 0700 "$_self" chmod 0700 "$_self"
printf '[netbird-telegraf] Selbstschutz: Skript laeuft jetzt von %s (stdin frei).\n' "$_self" printf '[netbird-telegraf] Selbstschutz: Skript laeuft jetzt von %s (stdin frei).\n' "$_self"
# stdin ausdruecklich auf /dev/null: der Prozess erbt sonst die Pipe, und # stdin ausdruecklich auf /dev/null: der Prozess erbt sonst die Pipe, und
@@ -33,9 +52,7 @@ if [ -z "${NETBIRD_TG_REEXEC:-}" ] && [ ! -t 0 ]; then
rm -f "$_self" rm -f "$_self"
exit "$_rc" exit "$_rc"
fi fi
# Kein curl oder Download fehlgeschlagen: weiter wie bisher. Dann bleibt das printf '[netbird-telegraf] HINWEIS: kein curl/wget fuer den Selbstschutz — weiter ohne.\n'
# Risiko, aber der Installer laeuft wenigstens (z. B. in einer Umgebung ohne
# Netz beim zweiten Aufruf).
rm -f "$_self" rm -f "$_self"
fi fi
# ============================================================================ # ============================================================================