MCPcopy Create free account
hub / github.com/CScorza/IntelOSINT / tg_export_report

Function tg_export_report

IntelOSINT.py:515–544  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

513
514@app.route('/api/tg/export_report', methods=['GET'])
515def tg_export_report():
516 denied = require_authenticated_download("tg_export_report", limit=20, window=60)
517 if denied:
518 return denied
519 target = request.args.get('target')
520 if not target:
521 return "Target mancante", 400
522 safe_id = "".join(c for c in str(target) if c.isalnum() or c in ('_', '-'))
523 log_file = f"TG_Monitor_{safe_id}.txt"
524 if not os.path.exists(log_file):
525 return "Nessun dato di monitoraggio trovato", 404
526
527 with open(log_file, "r", encoding="utf-8") as f:
528 lines = f.readlines()
529
530 rg = ReportGenerator()
531 pdf = FPDF()
532 rg._pdf_cover(pdf, f"Telegram Intelligence: {target}", "CScorza Report")
533 rg._pdf_notes_page(pdf, "Note Tab Telegram (Pagina 2)", [
534 "Log monitoraggio online/offline e cambi profilo.",
535 "La timeline non sostituisce prove forensi definitive."
536 ])
537 pdf.add_page()
538 rows = []
539 for idx, line in enumerate(lines, start=1):
540 rows.append((f"Evento {idx:03d}", line.strip()))
541 rg._pdf_table(pdf, "Timeline eventi", rows[:350])
542 rg._pdf_footer_credentials(pdf, getattr(core, "creds", {}))
543
544 return send_file(io.BytesIO(pdf.output()), mimetype='application/pdf', as_attachment=True, download_name=f"Intelligence_Report_{safe_id}.pdf")
545
546import zipfile
547

Callers

nothing calls this directly

Calls 6

_pdf_coverMethod · 0.95
_pdf_notes_pageMethod · 0.95
_pdf_tableMethod · 0.95
ReportGeneratorClass · 0.85

Tested by

no test coverage detected