Skip to content

fix(maintenance): guard step 00 RFC1918 extraction - #42

Merged
TimInTech merged 1 commit into
mainfrom
claude/extract-step-data-rfc1918-v8povs
Jul 8, 2026
Merged

fix(maintenance): guard step 00 RFC1918 extraction#42
TimInTech merged 1 commit into
mainfrom
claude/extract-step-data-rfc1918-v8povs

Conversation

@TimInTech

Copy link
Copy Markdown
Owner

Was & Warum

extract_step_data konnte unter set -euo pipefail einen sonst erfolgreichen Lauf abbrechen, wenn die Step-00-Ausgabe keine RFC1918-IP enthielt.

Ursache: Im Case 00) lieferte grep bei fehlendem Treffer Exit-Code 1. Zusammen mit pipefail schlug damit die einfache Zuweisung STEP_DATA[00_ip]=$(… grep … | head -1) fehl, und errexit beendete den gesamten Lauf – obwohl Step 00 erfolgreich war. Die Funktion wird in run_step als letztes Kommando nach dem finalen && aufgerufen, weshalb set -e innerhalb der Funktion aktiv ist.

Korrektur

  • Case 00) nutzt jetzt grep -m1 -oE (statt grep … | head -1) mit gezielter Exit-Code-Behandlung:
    • Exit 1 (kein RFC1918-Treffer) → STEP_DATA[00_ip]="" (erlaubter Zustand, kein Abbruch).
    • Jeder andere Exit-Code (z. B. 2 = echter grep-Fehler) → via return "$grep_rc" weitergereicht.
  • Kein pauschales || true über die Pipeline – echte Fehler bleiben Fehler.
  • Betrifft ausschließlich Step 00. Steps 03/08/09/10 bleiben unverändert.
  • Dashboard-/Summary-/JSON-/Flag-Verhalten unverändert: eine leere IP war schon immer ein zulässiger Zustand (${STEP_DATA[00_ip]:+…}).

Verifikation

  • git diff --check → rc 0
  • bash -n pihole_maintenance_pro.sh → rc 0
  • make check → rc 0 (shellcheck/shfmt lokal nicht installiert → in CI geprüft)
  • Regressionstest (lokaler Harness, siehe unten):
    • Fall A: 192.168.1.50, 10.0.5.7, 172.16.3.9 → Exit 0, IP korrekt erfasst.
    • Fall B: nur 8.8.8.8 → Exit 0, IP leer, kein Abbruch unter set -euo pipefail.

Hinweis zum Test

Ein reproduzierbarer, nicht-destruktiver Regression-Harness liegt unter scripts/test-repo.sh – dieser Pfad ist in .gitignore bewusst als „Local test scripts, not for commit" ausgeschlossen, daher nicht Teil dieses PR (Repo-Konvention respektiert). Er extrahiert die echte extract_step_data-Funktion aus dem Hauptskript und prüft Fall A/B isoliert; er wird zudem vom bestehenden RUN_SELFTEST-Hook erwartet.

Nicht enthalten

Kein Auto-Merge, kein Tag, kein Release.

🤖 Generated with Claude Code


Generated by Claude Code

extract_step_data brach unter set -euo pipefail den gesamten Lauf ab,
wenn die Step-00-Ausgabe keine RFC1918-IP enthielt: grep lieferte Exit 1,
die Zuweisung schlug fehl und errexit beendete den sonst erfolgreichen Lauf.

grep -m1 -oE ersetzt grep | head; nur Exit 1 (kein Treffer) wird als
leere IP entschaerft, andere grep-Fehler werden via return weitergereicht.
Kein pauschales || true. Steps 03/08/09/10 unveraendert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FqwkYKyZ1UPZB8uvezJAdJ
@TimInTech
TimInTech merged commit 5122121 into main Jul 8, 2026
3 checks passed
@TimInTech
TimInTech deleted the claude/extract-step-data-rfc1918-v8povs branch July 8, 2026 22:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants