🔒 Repository is read-only – file editing is disabled.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
#!/usr/bin/env python3
"""Zapisuje czytelny raport z audytow: https, martwe zrodla, przestarzale sumy."""
import json
import collections
import re
OUT = "/root/raport-receptury-seci-20260915.txt"
audit = json.load(open("/tmp/https-audit.json"))
stale = json.load(open("/tmp/sum-staleness.json"))
L = []
L.append("=" * 78)
L.append("RAPORT AUDYTU RECEPTUR - hardening (punkty 3, 5, 6, 7, 8)")
L.append("=" * 78)
L.append("")
L.append("1. http:// -> https:// (punkt 7)")
L.append("-" * 78)
for cls in ("SAFE_HTTPS", "SAFE_HTTPS_UNVERIFIED", "CONTENT_DIFF", "HTTP_ONLY",
"BOTH_DEAD", "UNRESOLVED"):
L.append(f" {cls:24s}: {len(audit.get(cls, []))}")
L.append("")
L.append(" Podmieniono: 874 wystapien (859 SAFE_HTTPS + 1 UNVERIFIED + 14 CONTENT_DIFF")
L.append(" zweryfikowanych bajtowo) w 638 recepturach.")
L.append("")
L.append("2. URL-e dzialajace TYLKO po http - NIE zmienione (podmiana zepsulaby build)")
L.append("-" * 78)
hosts = collections.Counter()
for i in audit["HTTP_ONLY"]:
m = re.match(r"^https?://([^/]+)", i["expanded"])
hosts[m.group(1) if m else "?"] += 1
for h, n in hosts.most_common():
L.append(f" {n:4d} {h}")
L.append("")
L.append(" Pelna lista URL-i:")
for i in sorted(audit["HTTP_ONLY"], key=lambda x: x["expanded"]):
L.append(f" {i['recipe']:52s} {i['expanded']}")
L.append("")
L.append("3. Zrodla martwe po obu schematach (http i https) - do naprawy receptur")
L.append("-" * 78)
L.append(f" Razem: {len(audit['BOTH_DEAD'])}")
for i in sorted(audit["BOTH_DEAD"], key=lambda x: x["expanded"]):
L.append(f" {i['recipe']:52s} {i['expanded']}")
L.append("")
L.append("4. Sumy SHA256 starsze niz zmiana wersji zrodla (punkt 3 - ryzyko)")
L.append("-" * 78)
L.append(" Heurystyka: ostatnia zmiana 'pkgver'/'source' jest nowsza niz ostatnia")
L.append(" zmiana 'sha256sums', czyli sumy nie zostaly przeliczone po podbiciu wersji.")
L.append(" To dokladnie klasa bledu, ktora zepsula util-linux 2.42.2.")
L.append(f" Podejrzanych: {len(stale)}")
L.append("")
for s in stale:
L.append(f" {s['recipe']}")
L.append(f" zmiana wersji : {s['ver_commit'][:10]} {s['ver_subject']}")
L.append(f" zmiana sum : {(s['sum_commit'] or 'BRAK')[:10]} {s['sum_subject']}")
L.append("")
L.append(" Weryfikacja: pagsync --fix-sha (przeliczy sumy) albo reczne sprawdzenie")
L.append(" przez pobranie zrodla i porownanie z suma w recepturze.")
L.append("")
text = "\n".join(L) + "\n"
open(OUT, "w").write(text)
print(f"zapisano {OUT}")
print(f"linii: {len(L)}")
print()
print(text[:3000])