Files
felhom.eu/documentation/audits/security-2026-11-02/tools/teardown9202.py
T

31 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""teardown9202.py — scratch 9202 back as found: Paperless installed again through the product (the walks replaced the throwaway of 2026-09-22; its 90 MB of test
data went with it, the box's own page calls apps here throwaways), the box back on the live catalog, its catalog yaml byte-identical."""
import os, sys, time
sys.path.insert(0, "/mnt/5_hdd/felhom.eu/git/app-catalog-felhom.eu/scripts")
os.environ.setdefault("TARGET", "9202")
os.environ.setdefault("KEPT", "fresh")
import box_walk as w
VOL = "/var/lib/docker/volumes/felhom-controller-data/_data"
SAVE = f"{VOL}/controller.yaml.pre-sec1102"
w.login()
print(w.guest(f"""set -e
cp -p {SAVE} {VOL}/controller.yaml
cmp {SAVE} {VOL}/controller.yaml && echo YAML-IDENTICAL; grep -n repo_url {VOL}/controller.yaml
rm -f {SAVE}
docker restart felhom-controller >/dev/null"""))
for _ in range(60):
time.sleep(3)
try:
w.login()
break
except SystemExit:
continue
w.sync_rescan()
time.sleep(5)
print(w.guest(f"docker logs --since 2m felhom-controller 2>&1 | grep -a '\\[sync\\]' | grep -av DEBUG | tail -3 | cut -b1-150 | iconv -c -t ascii; git -C {VOL}/data/catalog-cache log -1 --format='cache HEAD %h' 2>/dev/null; git -C {VOL}/data/catalog-cache remote get-url origin 2>/dev/null"))
ok = w.deploy("paperless-ngx", "paperless", None)
print("paperless installed:", ok, w.stack("paperless-ngx").get("state"))
print(w.guest("docker ps --format '{{.Names}} {{.Image}} {{.Status}}'; cat /etc/felhom-controller-image; docker volume ls --format '{{.Name}}' | grep -cE 'pre-update' ; python3 -c \"import json;s=json.load(open('" + VOL + "/data/settings.json'));print('holds:',sorted((s.get('restore_holds') or {}).keys()))\"; rm -f /tmp/sec1102-sink-keep.jsonl; ls /tmp | grep -c sec1102"))