25 lines
909 B
Python
25 lines
909 B
Python
import json, hashlib, os
|
|
|
|
MAN = "/opt/threatmarket/archive/manifest.json"
|
|
|
|
|
|
def update_manifest(zip_path, domain, date, categories, finding_count):
|
|
"""Register a finished pack in the archive manifest so the web app lists it."""
|
|
h = hashlib.sha256(open(zip_path, "rb").read()).hexdigest()
|
|
man = json.load(open(MAN)) if os.path.exists(MAN) else []
|
|
pid = domain + "-" + date.replace("-", "")
|
|
if not any(m.get("pack_id") == pid for m in man):
|
|
man.append({
|
|
"pack_id": pid,
|
|
"domain": domain,
|
|
"date": date,
|
|
"categories": categories,
|
|
"finding_counts": {"total_findings": finding_count},
|
|
"size_bytes": os.path.getsize(zip_path),
|
|
"sha256": h,
|
|
"file": os.path.basename(zip_path),
|
|
})
|
|
tmp = MAN + ".tmp"
|
|
json.dump(man, open(tmp, "w"), indent=1)
|
|
os.replace(tmp, MAN)
|