diff --git a/nmapui/app_scan_runtime.py b/nmapui/app_scan_runtime.py index 8929166..26faace 100644 --- a/nmapui/app_scan_runtime.py +++ b/nmapui/app_scan_runtime.py @@ -24,6 +24,7 @@ def start_scan_task( logger, settings_state, vulners_script, + runtime_store=None, ): return start_scan_task_impl( sid=sid, @@ -31,6 +32,7 @@ def start_scan_task( broadcaster=broadcaster, emit_to_client=emit_to_client, get_client_state=get_client_state, + runtime_store=runtime_store, ensure_job_not_cancelled=ensure_job_not_cancelled, idle_state_manager=idle_state_manager, update_job_progress=update_job_progress, diff --git a/nmapui/handlers/scan_jobs.py b/nmapui/handlers/scan_jobs.py index e0527dd..aa37727 100644 --- a/nmapui/handlers/scan_jobs.py +++ b/nmapui/handlers/scan_jobs.py @@ -15,13 +15,16 @@ def register_scan_job_handlers(socketio, deps): generate_report_task = deps["generate_report_task"] generate_pdf_from_saved_task = deps.get("generate_pdf_from_saved_task") - @socketio.on("start_scan") - @require_socket_auth() - def start_scan(data): + def _start_scan_core(data, extra=None): + payload = dict(extra or {}) if isinstance(data, dict): - target = data.get("target", "") + payload.update(data) else: - target = str(data) if data else "" + payload["target"] = str(data) if data else "" + target = payload.get("target", "") + + if not isinstance(target, str): + target = str(target) is_valid, error_msg = validate_target(target) if not is_valid: @@ -51,6 +54,27 @@ def start_scan(data): emit_job_status(request.sid, "scan") socketio.start_background_task(start_scan_task, request.sid, target) + # Legacy event names emitted by the frontend buttons (quick/complete/dragnet). + @socketio.on("start_quick_scan") + @require_socket_auth() + def start_quick_scan(data): + _start_scan_core(data) + + @socketio.on("start_complete_scan") + @require_socket_auth() + def start_complete_scan(data): + _start_scan_core(data) + + @socketio.on("start_dragnet_scan") + @require_socket_auth() + def start_dragnet_scan(data): + _start_scan_core(data) + + @socketio.on("start_scan") + @require_socket_auth() + def start_scan(data): + _start_scan_core(data) + @socketio.on("generate_report") @require_socket_auth() def generate_report_event(data):