deploy --diff: never diff seeded secret files, redact secret values

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KqhjP7nud5gdBg25zCiRk9
This commit is contained in:
2026-09-23 16:41:31 -04:00
co-authored by Claude Sonnet 5
parent f4bb65de9c
commit 667edc8621
2 changed files with 34 additions and 3 deletions
+18
View File
@@ -151,4 +151,22 @@ for c in hosts/*.conf; do
done
done
# 10. --diff never touches seed-if-absent secret files, and redacts secret values
out=$(./deploy.sh --diff hosts/wan.conf 2>&1) || true
leak=$(echo "$out" | grep -E '/etc/van-gps/config\.json|/etc/van-li3/config\.json|/etc/van-battery/pushover\.json') || true
if [ -z "$leak" ]; then
ok "--diff ignores seeded secret files"
else
bad "--diff mentions seeded secret files"; echo "$leak" | sed 's/^/ /'
fi
red=$(printf '%s\n' 'wpa_passphrase=hunter2' '+ "password": "hunter2",' '- "token": "abc123"' ' "user": "u123"' | ./deploy.sh --redact 2>&1) || true
if echo "$red" | grep -qE 'hunter2|abc123|u123'; then
bad "--redact leaks a secret value"; echo "$red" | sed 's/^/ /'
elif echo "$red" | grep -q '^wpa_passphrase=' && echo "$red" | grep -q '^+ "password"' \
&& echo "$red" | grep -q '^- "token"' && echo "$red" | grep -q '^ "user"'; then
ok "--redact masks values, keeps keys and diff markers"
else
bad "--redact lost keys or diff markers"; echo "$red" | sed 's/^/ /'
fi
exit "$fail"