Add Blancco erasure reports Samba share and webapp viewer
- Samba share at \\server\blancco-reports for automatic report collection - Webapp reports page with list, download, and delete - Compliance warning on delete confirmation - Sidebar link under Tools section Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -29,6 +29,7 @@ app.config["MAX_CONTENT_LENGTH"] = 16 * 1024 * 1024 * 1024 # 16 GB max upload
|
||||
# ---------------------------------------------------------------------------
|
||||
SAMBA_SHARE = os.environ.get("SAMBA_SHARE", "/srv/samba/winpeapps")
|
||||
CLONEZILLA_SHARE = os.environ.get("CLONEZILLA_SHARE", "/srv/samba/clonezilla")
|
||||
BLANCCO_REPORTS = os.environ.get("BLANCCO_REPORTS", "/srv/samba/blancco-reports")
|
||||
WEB_ROOT = os.environ.get("WEB_ROOT", "/var/www/html")
|
||||
BOOT_WIM = os.path.join(WEB_ROOT, "win11", "sources", "boot.wim")
|
||||
|
||||
@@ -640,6 +641,55 @@ def clonezilla_delete(filename):
|
||||
return redirect(url_for("clonezilla_backups"))
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Routes — Blancco Reports
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@app.route("/reports")
|
||||
def blancco_reports():
|
||||
reports = []
|
||||
if os.path.isdir(BLANCCO_REPORTS):
|
||||
for f in sorted(os.listdir(BLANCCO_REPORTS), reverse=True):
|
||||
fpath = os.path.join(BLANCCO_REPORTS, f)
|
||||
if os.path.isfile(fpath):
|
||||
stat = os.stat(fpath)
|
||||
ext = os.path.splitext(f)[1].lower()
|
||||
reports.append({
|
||||
"filename": f,
|
||||
"size": stat.st_size,
|
||||
"modified": stat.st_mtime,
|
||||
"type": ext.lstrip(".").upper() or "FILE",
|
||||
})
|
||||
return render_template(
|
||||
"reports.html",
|
||||
reports=reports,
|
||||
image_types=IMAGE_TYPES,
|
||||
friendly_names=FRIENDLY_NAMES,
|
||||
)
|
||||
|
||||
|
||||
@app.route("/reports/download/<filename>")
|
||||
def blancco_download_report(filename):
|
||||
filename = secure_filename(filename)
|
||||
fpath = os.path.join(BLANCCO_REPORTS, filename)
|
||||
if not os.path.isfile(fpath):
|
||||
flash(f"Report not found: {filename}", "danger")
|
||||
return redirect(url_for("blancco_reports"))
|
||||
return send_file(fpath, as_attachment=True)
|
||||
|
||||
|
||||
@app.route("/reports/delete/<filename>", methods=["POST"])
|
||||
def blancco_delete_report(filename):
|
||||
filename = secure_filename(filename)
|
||||
fpath = os.path.join(BLANCCO_REPORTS, filename)
|
||||
if os.path.isfile(fpath):
|
||||
os.remove(fpath)
|
||||
flash(f"Deleted {filename}.", "success")
|
||||
else:
|
||||
flash(f"Report not found: {filename}", "danger")
|
||||
return redirect(url_for("blancco_reports"))
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Routes — startnet.cmd Editor (WIM)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user