Compare commits
2 Commits
36c0bcdc03
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b20bfd2e36 | ||
|
|
c3534868ad |
@@ -194,13 +194,11 @@ class ForensicLogger:
|
|||||||
self.logger.info(f"Scan Started - Target: {target_domain}, Depth: {recursion_depth}")
|
self.logger.info(f"Scan Started - Target: {target_domain}, Depth: {recursion_depth}")
|
||||||
self.logger.info(f"Enabled Providers: {', '.join(enabled_providers)}")
|
self.logger.info(f"Enabled Providers: {', '.join(enabled_providers)}")
|
||||||
|
|
||||||
self.session_metadata['target_domains'].update(target_domain)
|
self.session_metadata['target_domains'].add(target_domain)
|
||||||
|
|
||||||
def log_scan_complete(self) -> None:
|
def log_scan_complete(self) -> None:
|
||||||
"""Log the completion of a reconnaissance scan."""
|
"""Log the completion of a reconnaissance scan."""
|
||||||
self.session_metadata['end_time'] = datetime.now(timezone.utc).isoformat()
|
self.session_metadata['end_time'] = datetime.now(timezone.utc).isoformat()
|
||||||
self.session_metadata['providers_used'] = list(self.session_metadata['providers_used'])
|
|
||||||
self.session_metadata['target_domains'] = list(self.session_metadata['target_domains'])
|
|
||||||
|
|
||||||
self.logger.info(f"Scan Complete - Session: {self.session_id}")
|
self.logger.info(f"Scan Complete - Session: {self.session_id}")
|
||||||
|
|
||||||
@@ -211,8 +209,12 @@ class ForensicLogger:
|
|||||||
Returns:
|
Returns:
|
||||||
Dictionary containing complete session audit trail
|
Dictionary containing complete session audit trail
|
||||||
"""
|
"""
|
||||||
|
session_metadata_export = self.session_metadata.copy()
|
||||||
|
session_metadata_export['providers_used'] = list(session_metadata_export['providers_used'])
|
||||||
|
session_metadata_export['target_domains'] = list(session_metadata_export['target_domains'])
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'session_metadata': self.session_metadata.copy(),
|
'session_metadata': session_metadata_export,
|
||||||
'api_requests': [asdict(req) for req in self.api_requests],
|
'api_requests': [asdict(req) for req in self.api_requests],
|
||||||
'relationships': [asdict(rel) for rel in self.relationships],
|
'relationships': [asdict(rel) for rel in self.relationships],
|
||||||
'export_timestamp': datetime.now(timezone.utc).isoformat()
|
'export_timestamp': datetime.now(timezone.utc).isoformat()
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import threading
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from typing import Dict, Any, Optional
|
from typing import Dict, Any, Optional
|
||||||
|
|
||||||
from core.logger import get_forensic_logger
|
from core.logger import get_forensic_logger # Ensure this import is present
|
||||||
from core.rate_limiter import GlobalRateLimiter
|
from core.rate_limiter import GlobalRateLimiter
|
||||||
from core.provider_result import ProviderResult
|
from core.provider_result import ProviderResult
|
||||||
|
|
||||||
@@ -41,7 +41,6 @@ class BaseProvider(ABC):
|
|||||||
self.name = name
|
self.name = name
|
||||||
self.timeout = actual_timeout
|
self.timeout = actual_timeout
|
||||||
self._local = threading.local()
|
self._local = threading.local()
|
||||||
self.logger = get_forensic_logger()
|
|
||||||
self._stop_event = None
|
self._stop_event = None
|
||||||
|
|
||||||
# Statistics (per provider instance)
|
# Statistics (per provider instance)
|
||||||
@@ -76,6 +75,11 @@ class BaseProvider(ABC):
|
|||||||
})
|
})
|
||||||
return self._local.session
|
return self._local.session
|
||||||
|
|
||||||
|
@property
|
||||||
|
def logger(self):
|
||||||
|
"""Get the current forensic logger instance."""
|
||||||
|
return get_forensic_logger()
|
||||||
|
|
||||||
@abstractmethod
|
@abstractmethod
|
||||||
def get_name(self) -> str:
|
def get_name(self) -> str:
|
||||||
"""Return the provider name."""
|
"""Return the provider name."""
|
||||||
|
|||||||
Reference in New Issue
Block a user