72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
import json
|
|
import threading
|
|
|
|
|
|
RETIRED_MESSAGE = 'Legacy ScanManager mutation controls are retired; use the authenticated supervisor.'
|
|
|
|
|
|
class ScanManager:
|
|
"""Read-only compatibility shell for the retired legacy scanner UI."""
|
|
|
|
def __init__(self):
|
|
self.current_scan = None
|
|
self.scan_thread = None
|
|
self.results = []
|
|
self.progress = {
|
|
'total': 0,
|
|
'completed': 0,
|
|
'failed': 0,
|
|
'secrets_found': 0,
|
|
'current_target': None,
|
|
'status': 'retired',
|
|
}
|
|
self.scan_lock = threading.Lock()
|
|
self.scanned_targets = set()
|
|
self.scan_history = []
|
|
|
|
def start_scan(self, scan_type, targets, scan_options):
|
|
return False, RETIRED_MESSAGE
|
|
|
|
def pause_scan(self):
|
|
return False
|
|
|
|
def resume_scan(self):
|
|
return False
|
|
|
|
def stop_scan(self):
|
|
return False
|
|
|
|
def is_scanning(self):
|
|
return False
|
|
|
|
def get_progress(self):
|
|
with self.scan_lock:
|
|
return self.progress.copy()
|
|
|
|
def get_results(self):
|
|
with self.scan_lock:
|
|
return self.results.copy()
|
|
|
|
def clear_results(self):
|
|
return False
|
|
|
|
def get_scan_info(self):
|
|
with self.scan_lock:
|
|
return self.current_scan.copy() if self.current_scan else None
|
|
|
|
def export_results(self, format='json'):
|
|
with self.scan_lock:
|
|
if str(format).lower() == 'json':
|
|
return json.dumps(self.results, indent=2, default=str)
|
|
return None
|
|
|
|
def clear_scan_history(self):
|
|
return False
|
|
|
|
def get_scan_history(self):
|
|
with self.scan_lock:
|
|
return self.scan_history.copy()
|
|
|
|
def get_scanned_targets_count(self):
|
|
return len(self.scanned_targets)
|