mirror of
https://github.com/yogeshojha/rengine.git
synced 2026-10-20 15:21:30 +02:00
The export engine, with no surface on it yet. Given a dimension, a scope and the filter body a result table POSTs to search, it writes the same rows to csv, json or plain text. It selects only the columns the file will carry, so a vulnerability export does not drag a stored request and response through memory to throw them away, and it streams with yield_per, so a 50,000 row export holds one chunk at a time. Statement timeout is the export's own: a background job does not read under the api's twenty second ceiling. Two columns a table shows are joined per chunk rather than per row — the ports behind a host's addresses, and the hosts behind an address — because #523 and #703 ask for those by name. The four rollup counts the api computes per page are left out rather than written blank. A cell opening with = + - @ tab or return is a formula to Excel and Sheets, and page titles and banners are written by the target, so every cell is prefixed and stripped of control characters. CSV carries a BOM or Excel reads utf-8 as latin-1. Proven against a live scan and in tests: for every dimension, filtered or not, the export writes exactly as many rows as the table reports. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LYZfaNjq3Ym8GPvWYuHisS
4 lines
126 B
Python
4 lines
126 B
Python
from shared.services.asset_export import columns, enrich, runner, writer
|
|
|
|
__all__ = ["columns", "enrich", "runner", "writer"]
|