SYMBOL INDEX (3062 symbols across 625 files) FILE: backend/apps/asset/apps.py class AssetConfig (line 4) | class AssetConfig(AppConfig): FILE: backend/apps/asset/dtos/asset/directory_dto.py class DirectoryDTO (line 8) | class DirectoryDTO: FILE: backend/apps/asset/dtos/asset/endpoint_dto.py class EndpointDTO (line 8) | class EndpointDTO: method __post_init__ (line 25) | def __post_init__(self): FILE: backend/apps/asset/dtos/asset/host_port_mapping_dto.py class HostPortMappingDTO (line 7) | class HostPortMappingDTO: FILE: backend/apps/asset/dtos/asset/ip_address_dto.py class IPAddressDTO (line 7) | class IPAddressDTO: FILE: backend/apps/asset/dtos/asset/port_dto.py class PortDTO (line 7) | class PortDTO: FILE: backend/apps/asset/dtos/asset/subdomain_dto.py class SubdomainDTO (line 7) | class SubdomainDTO: FILE: backend/apps/asset/dtos/asset/vulnerability_dto.py class VulnerabilityDTO (line 9) | class VulnerabilityDTO: FILE: backend/apps/asset/dtos/asset/website_dto.py class WebSiteDTO (line 8) | class WebSiteDTO: method __post_init__ (line 25) | def __post_init__(self): FILE: backend/apps/asset/dtos/snapshot/directory_snapshot_dto.py class DirectorySnapshotDTO (line 9) | class DirectorySnapshotDTO: method to_asset_dto (line 28) | def to_asset_dto(self) -> DirectoryDTO: FILE: backend/apps/asset/dtos/snapshot/endpoint_snapshot_dto.py class EndpointSnapshotDTO (line 8) | class EndpointSnapshotDTO: method __post_init__ (line 31) | def __post_init__(self): method to_asset_dto (line 37) | def to_asset_dto(self): FILE: backend/apps/asset/dtos/snapshot/host_port_mapping_snapshot_dto.py class HostPortMappingSnapshotDTO (line 8) | class HostPortMappingSnapshotDTO: method to_asset_dto (line 16) | def to_asset_dto(self): FILE: backend/apps/asset/dtos/snapshot/subdomain_snapshot_dto.py class SubdomainSnapshotDTO (line 11) | class SubdomainSnapshotDTO: method to_asset_dto (line 22) | def to_asset_dto(self) -> 'SubdomainDTO': FILE: backend/apps/asset/dtos/snapshot/vulnerability_snapshot_dto.py class VulnerabilitySnapshotDTO (line 9) | class VulnerabilitySnapshotDTO: method to_asset_dto (line 29) | def to_asset_dto(self): FILE: backend/apps/asset/dtos/snapshot/website_snapshot_dto.py class WebsiteSnapshotDTO (line 8) | class WebsiteSnapshotDTO: method __post_init__ (line 30) | def __post_init__(self): method to_asset_dto (line 34) | def to_asset_dto(self): FILE: backend/apps/asset/migrations/0001_initial.py class Migration (line 10) | class Migration(migrations.Migration): FILE: backend/apps/asset/migrations/0002_create_search_views.py class Migration (line 10) | class Migration(migrations.Migration): FILE: backend/apps/asset/migrations/0003_add_screenshot_models.py class Migration (line 7) | class Migration(migrations.Migration): FILE: backend/apps/asset/migrations/0004_add_status_code_to_screenshot.py class Migration (line 6) | class Migration(migrations.Migration): FILE: backend/apps/asset/models/asset_models.py class Subdomain (line 8) | class Subdomain(models.Model): class Meta (line 28) | class Meta: method __str__ (line 53) | def __str__(self): class Endpoint (line 57) | class Endpoint(models.Model): class Meta (line 134) | class Meta: method __str__ (line 172) | def __str__(self): class WebSite (line 176) | class WebSite(models.Model): class Meta (line 247) | class Meta: method __str__ (line 285) | def __str__(self): class Directory (line 289) | class Directory(models.Model): class Meta (line 342) | class Meta: method __str__ (line 367) | def __str__(self): class HostPortMapping (line 371) | class HostPortMapping(models.Model): class Meta (line 416) | class Meta: method __str__ (line 437) | def __str__(self): class Vulnerability (line 441) | class Vulnerability(models.Model): class Meta (line 477) | class Meta: method __str__ (line 491) | def __str__(self): FILE: backend/apps/asset/models/screenshot_models.py class ScreenshotSnapshot (line 4) | class ScreenshotSnapshot(models.Model): class Meta (line 23) | class Meta: method __str__ (line 39) | def __str__(self): class Screenshot (line 43) | class Screenshot(models.Model): class Meta (line 63) | class Meta: method __str__ (line 79) | def __str__(self): FILE: backend/apps/asset/models/snapshot_models.py class SubdomainSnapshot (line 7) | class SubdomainSnapshot(models.Model): class Meta (line 21) | class Meta: method __str__ (line 45) | def __str__(self): class WebsiteSnapshot (line 48) | class WebsiteSnapshot(models.Model): class Meta (line 87) | class Meta: method __str__ (line 124) | def __str__(self): class DirectorySnapshot (line 128) | class DirectorySnapshot(models.Model): class Meta (line 153) | class Meta: method __str__ (line 179) | def __str__(self): class HostPortMappingSnapshot (line 183) | class HostPortMappingSnapshot(models.Model): class Meta (line 228) | class Meta: method __str__ (line 250) | def __str__(self): class EndpointSnapshot (line 254) | class EndpointSnapshot(models.Model): class Meta (line 304) | class Meta: method __str__ (line 343) | def __str__(self): class VulnerabilitySnapshot (line 347) | class VulnerabilitySnapshot(models.Model): class Meta (line 382) | class Meta: method __str__ (line 396) | def __str__(self): FILE: backend/apps/asset/models/statistics_models.py class AssetStatistics (line 4) | class AssetStatistics(models.Model): class Meta (line 35) | class Meta: method __str__ (line 40) | def __str__(self): method get_or_create_singleton (line 44) | def get_or_create_singleton(cls) -> 'AssetStatistics': class StatisticsHistory (line 50) | class StatisticsHistory(models.Model): class Meta (line 72) | class Meta: method __str__ (line 81) | def __str__(self): FILE: backend/apps/asset/repositories/asset/directory_repository.py class DjangoDirectoryRepository (line 18) | class DjangoDirectoryRepository: method bulk_upsert (line 21) | def bulk_upsert(self, items: List[DirectoryDTO]) -> int: method bulk_create_ignore_conflicts (line 77) | def bulk_create_ignore_conflicts(self, items: List[DirectoryDTO]) -> int: method count_by_target (line 127) | def count_by_target(self, target_id: int) -> int: method get_all (line 131) | def get_all(self): method get_by_target (line 135) | def get_by_target(self, target_id: int): method get_urls_for_export (line 139) | def get_urls_for_export(self, target_id: int, batch_size: int = 1000) ... method iter_raw_data_for_export (line 155) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/asset/endpoint_repository.py class DjangoEndpointRepository (line 16) | class DjangoEndpointRepository: method bulk_upsert (line 19) | def bulk_upsert(self, items: List[EndpointDTO]) -> int: method get_all (line 82) | def get_all(self): method get_by_target (line 86) | def get_by_target(self, target_id: int): method count_by_target (line 98) | def count_by_target(self, target_id: int) -> int: method bulk_create_ignore_conflicts (line 110) | def bulk_create_ignore_conflicts(self, items: List[EndpointDTO]) -> int: method iter_raw_data_for_export (line 167) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/asset/host_port_mapping_repository.py class DjangoHostPortMappingRepository (line 17) | class DjangoHostPortMappingRepository: method bulk_create_ignore_conflicts (line 23) | def bulk_create_ignore_conflicts(self, items: List[HostPortMappingDTO]... method get_for_export (line 74) | def get_for_export(self, target_id: int, batch_size: int = 1000): method get_ips_for_export (line 85) | def get_ips_for_export(self, target_id: int, batch_size: int = 1000) -... method get_queryset_by_target (line 98) | def get_queryset_by_target(self, target_id: int) -> QuerySet: method get_all_queryset (line 102) | def get_all_queryset(self) -> QuerySet: method get_queryset_by_ip (line 106) | def get_queryset_by_ip(self, ip: str, target_id: Optional[int] = None)... method iter_raw_data_for_export (line 113) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/asset/subdomain_repository.py class DjangoSubdomainRepository (line 17) | class DjangoSubdomainRepository: method bulk_create_ignore_conflicts (line 20) | def bulk_create_ignore_conflicts(self, items: List[SubdomainDTO]) -> N... method get_all (line 56) | def get_all(self): method get_by_target (line 60) | def get_by_target(self, target_id: int): method count_by_target (line 64) | def count_by_target(self, target_id: int) -> int: method get_domains_for_export (line 68) | def get_domains_for_export(self, target_id: int, batch_size: int = 100... method get_by_names_and_target_id (line 77) | def get_by_names_and_target_id(self, names: set, target_id: int) -> dict: method iter_raw_data_for_export (line 86) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/asset/website_repository.py class DjangoWebSiteRepository (line 18) | class DjangoWebSiteRepository: method bulk_upsert (line 21) | def bulk_upsert(self, items: List[WebSiteDTO]) -> int: method get_urls_for_export (line 83) | def get_urls_for_export(self, target_id: int, batch_size: int = 1000) ... method get_all (line 98) | def get_all(self): method get_by_target (line 102) | def get_by_target(self, target_id: int): method count_by_target (line 106) | def count_by_target(self, target_id: int) -> int: method get_by_url (line 110) | def get_by_url(self, url: str, target_id: int) -> Optional[int]: method bulk_create_ignore_conflicts (line 115) | def bulk_create_ignore_conflicts(self, items: List[WebSiteDTO]) -> int: method iter_raw_data_for_export (line 161) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/snapshot/directory_snapshot_repository.py class DjangoDirectorySnapshotRepository (line 16) | class DjangoDirectorySnapshotRepository: method save_snapshots (line 23) | def save_snapshots(self, items: List[DirectorySnapshotDTO]) -> None: method get_by_scan (line 80) | def get_by_scan(self, scan_id: int): method get_all (line 83) | def get_all(self): method iter_raw_data_for_export (line 86) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/snapshot/endpoint_snapshot_repository.py class DjangoEndpointSnapshotRepository (line 15) | class DjangoEndpointSnapshotRepository: method save_snapshots (line 18) | def save_snapshots(self, items: List[EndpointSnapshotDTO]) -> None: method get_by_scan (line 78) | def get_by_scan(self, scan_id: int): method get_all (line 81) | def get_all(self): method iter_raw_data_for_export (line 84) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/snapshot/host_port_mapping_snapshot_repository.py class DjangoHostPortMappingSnapshotRepository (line 15) | class DjangoHostPortMappingSnapshotRepository: method save_snapshots (line 18) | def save_snapshots(self, items: List[HostPortMappingSnapshotDTO]) -> N... method get_ip_aggregation_by_scan (line 68) | def get_ip_aggregation_by_scan(self, scan_id: int, filter_query: str =... method get_all_ip_aggregation (line 114) | def get_all_ip_aggregation(self, filter_query: str = None): method get_ips_for_export (line 156) | def get_ips_for_export(self, scan_id: int, batch_size: int = 1000) -> ... method iter_raw_data_for_export (line 169) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/snapshot/subdomain_snapshot_repository.py class DjangoSubdomainSnapshotRepository (line 15) | class DjangoSubdomainSnapshotRepository: method save_subdomain_snapshots (line 18) | def save_subdomain_snapshots(self, items: List[SubdomainSnapshotDTO]) ... method get_by_scan (line 63) | def get_by_scan(self, scan_id: int): method get_all (line 66) | def get_all(self): method iter_raw_data_for_export (line 69) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/snapshot/vulnerability_snapshot_repository.py class DjangoVulnerabilitySnapshotRepository (line 17) | class DjangoVulnerabilitySnapshotRepository: method save_snapshots (line 20) | def save_snapshots(self, items: List[VulnerabilitySnapshotDTO]) -> None: method get_by_scan (line 67) | def get_by_scan(self, scan_id: int): method get_all (line 71) | def get_all(self): FILE: backend/apps/asset/repositories/snapshot/website_snapshot_repository.py class DjangoWebsiteSnapshotRepository (line 15) | class DjangoWebsiteSnapshotRepository: method save_snapshots (line 18) | def save_snapshots(self, items: List[WebsiteSnapshotDTO]) -> None: method get_by_scan (line 77) | def get_by_scan(self, scan_id: int): method get_all (line 80) | def get_all(self): method iter_raw_data_for_export (line 83) | def iter_raw_data_for_export( FILE: backend/apps/asset/repositories/statistics_repository.py class AssetStatisticsRepository (line 11) | class AssetStatisticsRepository: method get_statistics (line 19) | def get_statistics(self) -> Optional[AssetStatistics]: method get_or_create_statistics (line 28) | def get_or_create_statistics(self) -> AssetStatistics: method update_statistics (line 37) | def update_statistics( method save_daily_snapshot (line 87) | def save_daily_snapshot(self, stats: AssetStatistics) -> StatisticsHis... method get_history (line 113) | def get_history(self, days: int = 7) -> List[StatisticsHistory]: FILE: backend/apps/asset/serializers.py class SubdomainSerializer (line 24) | class SubdomainSerializer(serializers.ModelSerializer): class Meta (line 27) | class Meta: class SubdomainListSerializer (line 35) | class SubdomainListSerializer(serializers.ModelSerializer): class Meta (line 42) | class Meta: class WebSiteSerializer (line 70) | class WebSiteSerializer(serializers.ModelSerializer): class Meta (line 76) | class Meta: class VulnerabilitySerializer (line 98) | class VulnerabilitySerializer(serializers.ModelSerializer): class Meta (line 101) | class Meta: class VulnerabilitySnapshotSerializer (line 118) | class VulnerabilitySnapshotSerializer(serializers.ModelSerializer): class Meta (line 121) | class Meta: class EndpointListSerializer (line 137) | class EndpointListSerializer(serializers.ModelSerializer): class Meta (line 148) | class Meta: class DirectorySerializer (line 169) | class DirectorySerializer(serializers.ModelSerializer): class Meta (line 174) | class Meta: class IPAddressAggregatedSerializer (line 190) | class IPAddressAggregatedSerializer(serializers.Serializer): class SubdomainSnapshotSerializer (line 208) | class SubdomainSnapshotSerializer(serializers.ModelSerializer): class Meta (line 211) | class Meta: class WebsiteSnapshotSerializer (line 217) | class WebsiteSnapshotSerializer(serializers.ModelSerializer): class Meta (line 223) | class Meta: class DirectorySnapshotSerializer (line 244) | class DirectorySnapshotSerializer(serializers.ModelSerializer): class Meta (line 247) | class Meta: class EndpointSnapshotSerializer (line 263) | class EndpointSnapshotSerializer(serializers.ModelSerializer): class Meta (line 274) | class Meta: class ScreenshotListSerializer (line 298) | class ScreenshotListSerializer(serializers.ModelSerializer): class Meta (line 301) | class Meta: class ScreenshotSnapshotListSerializer (line 307) | class ScreenshotSnapshotListSerializer(serializers.ModelSerializer): class Meta (line 310) | class Meta: FILE: backend/apps/asset/services/asset/directory_service.py class DirectoryService (line 14) | class DirectoryService: method __init__ (line 23) | def __init__(self, repository=None): method bulk_upsert (line 27) | def bulk_upsert(self, directory_dtos: List[DirectoryDTO]) -> int: method bulk_create_urls (line 48) | def bulk_create_urls(self, target_id: int, target_name: str, target_ty... method get_directories_by_target (line 104) | def get_directories_by_target(self, target_id: int, filter_query: Opti... method get_all (line 111) | def get_all(self, filter_query: Optional[str] = None): method iter_directory_urls_by_target (line 118) | def iter_directory_urls_by_target(self, target_id: int, chunk_size: in... method iter_raw_data_for_csv_export (line 122) | def iter_raw_data_for_csv_export(self, target_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/asset/endpoint_service.py class EndpointService (line 18) | class EndpointService: method __init__ (line 34) | def __init__(self): method bulk_upsert (line 38) | def bulk_upsert(self, endpoints: List[EndpointDTO]) -> int: method bulk_create_urls (line 59) | def bulk_create_urls(self, target_id: int, target_name: str, target_ty... method get_endpoints_by_target (line 115) | def get_endpoints_by_target(self, target_id: int, filter_query: Option... method count_endpoints_by_target (line 122) | def count_endpoints_by_target(self, target_id: int) -> int: method get_all (line 134) | def get_all(self, filter_query: Optional[str] = None): method iter_endpoint_urls_by_target (line 141) | def iter_endpoint_urls_by_target(self, target_id: int, chunk_size: int... method iter_raw_data_for_csv_export (line 147) | def iter_raw_data_for_csv_export(self, target_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/asset/host_port_mapping_service.py class HostPortMappingService (line 15) | class HostPortMappingService: method __init__ (line 30) | def __init__(self): method bulk_create_ignore_conflicts (line 33) | def bulk_create_ignore_conflicts(self, items: List[HostPortMappingDTO]... method iter_host_port_by_target (line 64) | def iter_host_port_by_target(self, target_id: int, batch_size: int = 1... method get_ip_aggregation_by_target (line 67) | def get_ip_aggregation_by_target( method get_all_ip_aggregation (line 91) | def get_all_ip_aggregation(self, filter_query: Optional[str] = None) -... method _aggregate_by_ip (line 110) | def _aggregate_by_ip( method iter_ips_by_target (line 155) | def iter_ips_by_target(self, target_id: int, batch_size: int = 1000) -... method iter_raw_data_for_csv_export (line 159) | def iter_raw_data_for_csv_export(self, target_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/asset/subdomain_service.py class BulkCreateResult (line 14) | class BulkCreateResult: class SubdomainService (line 23) | class SubdomainService: method __init__ (line 31) | def __init__(self, repository=None): method get_all (line 42) | def get_all(self, filter_query: Optional[str] = None): method get_subdomains_by_target (line 58) | def get_subdomains_by_target(self, target_id: int, filter_query: Optio... method count_subdomains_by_target (line 74) | def count_subdomains_by_target(self, target_id: int) -> int: method get_by_names_and_target_id (line 87) | def get_by_names_and_target_id(self, names: set, target_id: int) -> dict: method get_subdomain_names_by_target (line 101) | def get_subdomain_names_by_target(self, target_id: int) -> List[str]: method iter_subdomain_names_by_target (line 114) | def iter_subdomain_names_by_target(self, target_id: int, chunk_size: i... method iter_raw_data_for_csv_export (line 128) | def iter_raw_data_for_csv_export(self, target_id: int): method bulk_create_ignore_conflicts (line 142) | def bulk_create_ignore_conflicts(self, items: List[SubdomainDTO]) -> N... method bulk_create_subdomains (line 155) | def bulk_create_subdomains( FILE: backend/apps/asset/services/asset/vulnerability_service.py class VulnerabilityService (line 16) | class VulnerabilityService: method bulk_create_ignore_conflicts (line 30) | def bulk_create_ignore_conflicts(self, items: List[VulnerabilityDTO]) ... method get_all (line 75) | def get_all(self, filter_query: Optional[str] = None): method get_vulnerabilities_by_target (line 89) | def get_vulnerabilities_by_target(self, target_id: int, filter_query: ... method count_by_target (line 104) | def count_by_target(self, target_id: int) -> int: FILE: backend/apps/asset/services/asset/website_service.py class WebSiteService (line 14) | class WebSiteService: method __init__ (line 26) | def __init__(self, repository=None): method bulk_upsert (line 30) | def bulk_upsert(self, website_dtos: List[WebSiteDTO]) -> int: method bulk_create_urls (line 51) | def bulk_create_urls(self, target_id: int, target_name: str, target_ty... method get_websites_by_target (line 107) | def get_websites_by_target(self, target_id: int, filter_query: Optiona... method get_all (line 114) | def get_all(self, filter_query: Optional[str] = None): method get_by_url (line 121) | def get_by_url(self, url: str, target_id: int) -> int: method iter_website_urls_by_target (line 125) | def iter_website_urls_by_target(self, target_id: int, chunk_size: int ... method iter_raw_data_for_csv_export (line 129) | def iter_raw_data_for_csv_export(self, target_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/playwright_screenshot_service.py class PlaywrightScreenshotService (line 13) | class PlaywrightScreenshotService: method __init__ (line 22) | def __init__( method capture_screenshot (line 43) | async def capture_screenshot(self, url: str, page) -> tuple[Optional[b... method _capture_with_semaphore (line 82) | async def _capture_with_semaphore( method capture_batch (line 107) | async def capture_batch( method capture_batch_collect (line 170) | async def capture_batch_collect( FILE: backend/apps/asset/services/screenshot_service.py class ScreenshotService (line 16) | class ScreenshotService: method __init__ (line 19) | def __init__(self, max_width: int = 800, target_kb: int = 100): method compress_screenshot (line 30) | def compress_screenshot(self, image_path: str) -> Optional[bytes]: method compress_from_bytes (line 51) | def compress_from_bytes(self, image_bytes: bytes) -> Optional[bytes]: method _compress_image (line 71) | def _compress_image(self, img: Image.Image) -> Optional[bytes]: method save_screenshot_snapshot (line 104) | def save_screenshot_snapshot( method sync_screenshots_to_asset (line 136) | def sync_screenshots_to_asset(self, scan_id: int, target_id: int) -> int: method process_and_save_screenshot (line 169) | def process_and_save_screenshot(self, scan_id: int, url: str, image_pa... FILE: backend/apps/asset/services/search_service.py class SearchQueryParser (line 92) | class SearchQueryParser: method parse (line 114) | def parse(cls, query: str) -> Tuple[str, List[Any]]: method _split_by_or (line 157) | def _split_by_or(cls, query: str) -> List[str]: method _parse_and_group (line 186) | def _parse_and_group(cls, group: str) -> Tuple[str, List[Any]]: method _split_by_and (line 211) | def _split_by_and(cls, query: str) -> List[str]: method _parse_condition (line 240) | def _parse_condition(cls, condition: str) -> Tuple[Optional[str], List... method _build_like_condition (line 282) | def _build_like_condition(cls, field: str, value: str, is_array: bool)... method _build_exact_condition (line 297) | def _build_exact_condition(cls, field: str, value: str, is_array: bool... method _build_not_equal_condition (line 312) | def _build_not_equal_condition(cls, field: str, value: str, is_array: ... class AssetSearchService (line 329) | class AssetSearchService: method search (line 332) | def search( method count (line 384) | def count(self, query: str, asset_type: AssetType = 'website', stateme... method search_iter (line 415) | def search_iter( FILE: backend/apps/asset/services/snapshot/directory_snapshots_service.py class DirectorySnapshotsService (line 13) | class DirectorySnapshotsService: method __init__ (line 16) | def __init__(self): method save_and_sync (line 20) | def save_and_sync(self, items: List[DirectorySnapshotDTO]) -> None: method get_by_scan (line 77) | def get_by_scan(self, scan_id: int, filter_query: str = None): method get_all (line 85) | def get_all(self, filter_query: str = None): method iter_directory_urls_by_scan (line 94) | def iter_directory_urls_by_scan(self, scan_id: int, chunk_size: int = ... method iter_raw_data_for_csv_export (line 100) | def iter_raw_data_for_csv_export(self, scan_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/snapshot/endpoint_snapshots_service.py class EndpointSnapshotsService (line 13) | class EndpointSnapshotsService: method __init__ (line 16) | def __init__(self): method save_and_sync (line 20) | def save_and_sync(self, items: List[EndpointSnapshotDTO]) -> None: method get_by_scan (line 80) | def get_by_scan(self, scan_id: int, filter_query: str = None): method get_all (line 88) | def get_all(self, filter_query: str = None): method iter_endpoint_urls_by_scan (line 97) | def iter_endpoint_urls_by_scan(self, scan_id: int, chunk_size: int = 1... method iter_raw_data_for_csv_export (line 103) | def iter_raw_data_for_csv_export(self, scan_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/snapshot/host_port_mapping_snapshots_service.py class HostPortMappingSnapshotsService (line 13) | class HostPortMappingSnapshotsService: method __init__ (line 16) | def __init__(self): method save_and_sync (line 20) | def save_and_sync(self, items: List[HostPortMappingSnapshotDTO]) -> None: method get_ip_aggregation_by_scan (line 72) | def get_ip_aggregation_by_scan(self, scan_id: int, filter_query: str =... method get_all_ip_aggregation (line 75) | def get_all_ip_aggregation(self, filter_query: str = None): method iter_ips_by_scan (line 79) | def iter_ips_by_scan(self, scan_id: int, batch_size: int = 1000) -> It... method iter_raw_data_for_csv_export (line 83) | def iter_raw_data_for_csv_export(self, scan_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/snapshot/subdomain_snapshots_service.py class SubdomainSnapshotsService (line 10) | class SubdomainSnapshotsService: method __init__ (line 13) | def __init__(self): method save_and_sync (line 16) | def save_and_sync(self, items: List[SubdomainSnapshotDTO]) -> None: method get_by_scan (line 74) | def get_by_scan(self, scan_id: int, filter_query: str = None): method get_all (line 82) | def get_all(self, filter_query: str = None): method iter_subdomain_names_by_scan (line 91) | def iter_subdomain_names_by_scan(self, scan_id: int, chunk_size: int =... method iter_raw_data_for_csv_export (line 96) | def iter_raw_data_for_csv_export(self, scan_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/snapshot/vulnerability_snapshots_service.py class VulnerabilitySnapshotsService (line 13) | class VulnerabilitySnapshotsService: method __init__ (line 21) | def __init__(self): method save_and_sync (line 25) | def save_and_sync(self, items: List[VulnerabilitySnapshotDTO]) -> None: method get_by_scan (line 77) | def get_by_scan(self, scan_id: int, filter_query: str = None): method get_all (line 86) | def get_all(self, filter_query: str = None): method iter_vuln_urls_by_scan (line 95) | def iter_vuln_urls_by_scan(self, scan_id: int, chunk_size: int = 1000)... FILE: backend/apps/asset/services/snapshot/website_snapshots_service.py class WebsiteSnapshotsService (line 13) | class WebsiteSnapshotsService: method __init__ (line 16) | def __init__(self): method save_and_sync (line 20) | def save_and_sync(self, items: List[WebsiteSnapshotDTO]) -> None: method get_by_scan (line 81) | def get_by_scan(self, scan_id: int, filter_query: str = None): method get_all (line 89) | def get_all(self, filter_query: str = None): method iter_website_urls_by_scan (line 98) | def iter_website_urls_by_scan(self, scan_id: int, chunk_size: int = 10... method iter_raw_data_for_csv_export (line 104) | def iter_raw_data_for_csv_export(self, scan_id: int) -> Iterator[dict]: FILE: backend/apps/asset/services/statistics_service.py class AssetStatisticsService (line 23) | class AssetStatisticsService: method __init__ (line 32) | def __init__(self): method get_statistics (line 35) | def get_statistics(self) -> dict: method _get_vuln_by_severity (line 92) | def _get_vuln_by_severity(self) -> dict: method refresh_statistics (line 104) | def refresh_statistics(self) -> AssetStatistics: method get_statistics_history (line 139) | def get_statistics_history(self, days: int = 7) -> list[dict]: FILE: backend/apps/asset/views/asset_views.py class AssetStatisticsViewSet (line 31) | class AssetStatisticsViewSet(viewsets.ViewSet): method __init__ (line 38) | def __init__(self, **kwargs): method list (line 42) | def list(self, request): method history (line 91) | def history(self, request: Request): class SubdomainViewSet (line 126) | class SubdomainViewSet(viewsets.ModelViewSet): method __init__ (line 144) | def __init__(self, **kwargs): method get_queryset (line 148) | def get_queryset(self): method bulk_create (line 158) | def bulk_create(self, request, **kwargs): method export (line 240) | def export(self, request, **kwargs): method bulk_delete (line 264) | def bulk_delete(self, request, **kwargs): class WebSiteViewSet (line 293) | class WebSiteViewSet(viewsets.ModelViewSet): method __init__ (line 314) | def __init__(self, **kwargs): method get_queryset (line 318) | def get_queryset(self): method bulk_create (line 328) | def bulk_create(self, request, **kwargs): method export (line 395) | def export(self, request, **kwargs): method bulk_delete (line 426) | def bulk_delete(self, request, **kwargs): class DirectoryViewSet (line 455) | class DirectoryViewSet(viewsets.ModelViewSet): method __init__ (line 473) | def __init__(self, **kwargs): method get_queryset (line 477) | def get_queryset(self): method bulk_create (line 487) | def bulk_create(self, request, **kwargs): method export (line 554) | def export(self, request, **kwargs): method bulk_delete (line 583) | def bulk_delete(self, request, **kwargs): class EndpointViewSet (line 612) | class EndpointViewSet(viewsets.ModelViewSet): method __init__ (line 633) | def __init__(self, **kwargs): method get_queryset (line 637) | def get_queryset(self): method bulk_create (line 647) | def bulk_create(self, request, **kwargs): method export (line 714) | def export(self, request, **kwargs): method bulk_delete (line 746) | def bulk_delete(self, request, **kwargs): class HostPortMappingViewSet (line 775) | class HostPortMappingViewSet(viewsets.ModelViewSet): method __init__ (line 803) | def __init__(self, **kwargs): method get_queryset (line 807) | def get_queryset(self): method export (line 820) | def export(self, request, **kwargs): method bulk_delete (line 848) | def bulk_delete(self, request, **kwargs): class VulnerabilityViewSet (line 880) | class VulnerabilityViewSet(viewsets.ModelViewSet): method __init__ (line 900) | def __init__(self, **kwargs): method get_queryset (line 904) | def get_queryset(self): class SubdomainSnapshotViewSet (line 916) | class SubdomainSnapshotViewSet(viewsets.ModelViewSet): method __init__ (line 931) | def __init__(self, **kwargs): method get_queryset (line 935) | def get_queryset(self): method export (line 944) | def export(self, request, **kwargs): class WebsiteSnapshotViewSet (line 968) | class WebsiteSnapshotViewSet(viewsets.ModelViewSet): method __init__ (line 985) | def __init__(self, **kwargs): method get_queryset (line 989) | def get_queryset(self): method export (line 998) | def export(self, request, **kwargs): class DirectorySnapshotViewSet (line 1029) | class DirectorySnapshotViewSet(viewsets.ModelViewSet): method __init__ (line 1043) | def __init__(self, **kwargs): method get_queryset (line 1047) | def get_queryset(self): method export (line 1056) | def export(self, request, **kwargs): class EndpointSnapshotViewSet (line 1085) | class EndpointSnapshotViewSet(viewsets.ModelViewSet): method __init__ (line 1102) | def __init__(self, **kwargs): method get_queryset (line 1106) | def get_queryset(self): method export (line 1115) | def export(self, request, **kwargs): class HostPortMappingSnapshotViewSet (line 1147) | class HostPortMappingSnapshotViewSet(viewsets.ModelViewSet): method __init__ (line 1161) | def __init__(self, **kwargs): method get_queryset (line 1165) | def get_queryset(self): method export (line 1174) | def export(self, request, **kwargs): class VulnerabilitySnapshotViewSet (line 1202) | class VulnerabilitySnapshotViewSet(viewsets.ModelViewSet): method __init__ (line 1217) | def __init__(self, **kwargs): method get_queryset (line 1221) | def get_queryset(self): class ScreenshotViewSet (line 1232) | class ScreenshotViewSet(viewsets.ModelViewSet): method get_queryset (line 1250) | def get_queryset(self): method image (line 1268) | def image(self, request, pk=None, **kwargs): method bulk_delete (line 1298) | def bulk_delete(self, request, **kwargs): class ScreenshotSnapshotViewSet (line 1327) | class ScreenshotSnapshotViewSet(viewsets.ModelViewSet): method get_queryset (line 1341) | def get_queryset(self): method image (line 1359) | def image(self, request, pk=None, **kwargs): FILE: backend/apps/asset/views/search_views.py class AssetSearchView (line 45) | class AssetSearchView(APIView): method __init__ (line 73) | def __init__(self, **kwargs): method _parse_headers (line 77) | def _parse_headers(self, headers_data) -> dict: method _format_result (line 91) | def _format_result(self, result: dict, vulnerabilities_by_url: dict, a... method _get_vulnerabilities_by_url_prefix (line 133) | def _get_vulnerabilities_by_url_prefix(self, website_urls: list) -> dict: method get (line 216) | def get(self, request: Request): class AssetSearchExportView (line 276) | class AssetSearchExportView(APIView): method __init__ (line 290) | def __init__(self, **kwargs): method _get_headers_and_formatters (line 294) | def _get_headers_and_formatters(self, asset_type: str): method get (line 314) | def get(self, request: Request): FILE: backend/apps/common/apps.py class CommonConfig (line 4) | class CommonConfig(AppConfig): method ready (line 8) | def ready(self): FILE: backend/apps/common/authentication.py class CsrfExemptSessionAuthentication (line 4) | class CsrfExemptSessionAuthentication(SessionAuthentication): method enforce_csrf (line 11) | def enforce_csrf(self, request): FILE: backend/apps/common/container_bootstrap.py function fetch_config_and_setup_django (line 25) | def fetch_config_and_setup_django(): FILE: backend/apps/common/decorators/db_connection.py function ensure_db_connection (line 25) | def ensure_db_connection(method): function auto_ensure_db_connection (line 48) | def auto_ensure_db_connection(cls): function _check_and_reconnect (line 98) | def _check_and_reconnect(max_retries=5): function async_check_and_reconnect (line 152) | async def async_check_and_reconnect(max_retries=5): function ensure_db_connection_async (line 156) | def ensure_db_connection_async(method): FILE: backend/apps/common/definitions.py class ScanStatus (line 4) | class ScanStatus(models.TextChoices): class VulnSeverity (line 13) | class VulnSeverity(models.TextChoices): FILE: backend/apps/common/error_codes.py class ErrorCodes (line 11) | class ErrorCodes: FILE: backend/apps/common/exception_handlers.py function custom_exception_handler (line 15) | def custom_exception_handler(exc, context): FILE: backend/apps/common/management/commands/db_health_check.py class Command (line 35) | class Command(BaseCommand): method add_arguments (line 40) | def add_arguments(self, parser): method handle (line 74) | def handle(self, *args, **options): method test_database_latency (line 104) | def test_database_latency(self, db_connection, test_count): method test_api_performance (line 177) | def test_api_performance(self, test_count): method monitor_database_performance (line 249) | def monitor_database_performance(self, db_connection): method show_connection_stats (line 403) | def show_connection_stats(self, db_connection): FILE: backend/apps/common/management/commands/db_monitor.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 31) | def handle(self, *args, **options): method monitor_key_metrics (line 44) | def monitor_key_metrics(self): FILE: backend/apps/common/management/commands/init_admin.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 31) | def handle(self, *args, **options): FILE: backend/apps/common/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: backend/apps/common/models/blacklist.py class BlacklistRule (line 5) | class BlacklistRule(models.Model): class RuleType (line 12) | class RuleType(models.TextChoices): class Scope (line 18) | class Scope(models.TextChoices): class Meta (line 54) | class Meta: method __str__ (line 68) | def __str__(self): FILE: backend/apps/common/normalizer.py function normalize_domain (line 7) | def normalize_domain(domain: str) -> str: function normalize_ip (line 35) | def normalize_ip(ip: str) -> str: function normalize_cidr (line 56) | def normalize_cidr(cidr: str) -> str: function normalize_target (line 77) | def normalize_target(target: str) -> str: FILE: backend/apps/common/pagination.py class BasePagination (line 8) | class BasePagination(PageNumberPagination): method get_paginated_response (line 25) | def get_paginated_response(self, data): FILE: backend/apps/common/permissions.py class IsAuthenticatedOrPublic (line 38) | class IsAuthenticatedOrPublic(BasePermission): method has_permission (line 46) | def has_permission(self, request, view): method _check_worker_api_key (line 62) | def _check_worker_api_key(self, request): FILE: backend/apps/common/prefect_django_setup.py function setup_django_for_prefect (line 11) | def setup_django_for_prefect(): function close_old_db_connections (line 47) | def close_old_db_connections(): FILE: backend/apps/common/response_helpers.py function success_response (line 14) | def success_response( function error_response (line 48) | def error_response( FILE: backend/apps/common/serializers/blacklist_serializers.py class BlacklistRuleSerializer (line 8) | class BlacklistRuleSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta: method validate_pattern (line 24) | def validate_pattern(self, value): method create (line 30) | def create(self, validated_data): method update (line 36) | def update(self, instance, validated_data): class GlobalBlacklistRuleSerializer (line 44) | class GlobalBlacklistRuleSerializer(BlacklistRuleSerializer): class Meta (line 47) | class Meta(BlacklistRuleSerializer.Meta): method create (line 51) | def create(self, validated_data): class TargetBlacklistRuleSerializer (line 58) | class TargetBlacklistRuleSerializer(BlacklistRuleSerializer): class Meta (line 61) | class Meta(BlacklistRuleSerializer.Meta): method create (line 65) | def create(self, validated_data): FILE: backend/apps/common/services/blacklist_service.py function _normalize_patterns (line 24) | def _normalize_patterns(patterns: List[str]) -> List[str]: class BlacklistService (line 37) | class BlacklistService: method get_global_rules (line 45) | def get_global_rules(self) -> QuerySet: method get_target_rules (line 55) | def get_target_rules(self, target_id: int) -> QuerySet: method get_rules (line 71) | def get_rules(self, target_id: Optional[int] = None) -> List: method replace_global_rules (line 96) | def replace_global_rules(self, patterns: List[str]) -> Dict[str, Any]: method replace_target_rules (line 117) | def replace_target_rules(self, target, patterns: List[str]) -> Dict[st... method _replace_rules (line 139) | def _replace_rules(self, patterns: List[str], scope: str, target=None)... FILE: backend/apps/common/services/system_log_service.py class LogFileInfo (line 21) | class LogFileInfo(TypedDict): class SystemLogService (line 29) | class SystemLogService: method __init__ (line 44) | def __init__(self): method _categorize_file (line 52) | def _categorize_file(self, filename: str) -> str | None: method _validate_filename (line 64) | def _validate_filename(self, filename: str) -> bool: method get_log_files (line 83) | def get_log_files(self) -> list[LogFileInfo]: method get_logs_content (line 131) | def get_logs_content(self, filename: str | None = None, lines: int | N... FILE: backend/apps/common/utils/blacklist_filter.py function detect_rule_type (line 60) | def detect_rule_type(pattern: str) -> str: function extract_host (line 106) | def extract_host(target: str) -> str: class BlacklistFilter (line 137) | class BlacklistFilter: method __init__ (line 144) | def __init__(self, rules: List): method is_allowed (line 185) | def is_allowed(self, target: str) -> bool: method _check_domain_rules (line 208) | def _check_domain_rules(self, host: str) -> bool: method _check_ip_rules (line 228) | def _check_ip_rules(self, host: str) -> bool: FILE: backend/apps/common/utils/csv_utils.py function generate_csv_rows (line 26) | def generate_csv_rows( function format_list_field (line 71) | def format_list_field(values: List, separator: str = ';') -> str: function format_datetime (line 97) | def format_datetime(dt: Optional[datetime]) -> str: function create_csv_export_response (line 127) | def create_csv_export_response( function _create_file_response (line 166) | def _create_file_response( function _create_streaming_response (line 230) | def _create_streaming_response( FILE: backend/apps/common/utils/dedup.py function get_unique_fields (line 18) | def get_unique_fields(model: type[models.Model]) -> Optional[Tuple[str, ... function deduplicate_for_bulk (line 52) | def deduplicate_for_bulk(items: List[T], model: type[models.Model]) -> L... FILE: backend/apps/common/utils/filter_utils.py class ArrayToString (line 38) | class ArrayToString(Func): class LogicalOp (line 45) | class LogicalOp(Enum): class ParsedFilter (line 52) | class ParsedFilter: class FilterGroup (line 60) | class FilterGroup: class QueryParser (line 66) | class QueryParser: method parse (line 80) | def parse(cls, query_string: str) -> List[FilterGroup]: class QueryBuilder (line 150) | class QueryBuilder: method build_query (line 157) | def build_query( method _build_single_q (line 228) | def _build_single_q(cls, field: str, operator: str, value: str, is_jso... method _try_convert_to_int (line 251) | def _try_convert_to_int(cls, value: str) -> Optional[int]: method _build_fuzzy_q (line 259) | def _build_fuzzy_q(cls, field: str, value: str) -> Q: method _build_exact_q (line 264) | def _build_exact_q(cls, field: str, value: str) -> Q: method _build_not_equal_q (line 272) | def _build_not_equal_q(cls, field: str, value: str) -> Q: function apply_filters (line 280) | def apply_filters( FILE: backend/apps/common/utils/hash.py function calc_file_sha256 (line 18) | def calc_file_sha256(file_path: str, chunk_size: int = DEFAULT_CHUNK_SIZ... function calc_stream_sha256 (line 39) | def calc_stream_sha256(stream: BinaryIO, chunk_size: int = DEFAULT_CHUNK... function safe_calc_file_sha256 (line 55) | def safe_calc_file_sha256(file_path: str) -> Optional[str]: function is_file_hash_match (line 74) | def is_file_hash_match(file_path: str, expected_hash: str) -> bool: FILE: backend/apps/common/validators.py function validate_domain (line 11) | def validate_domain(domain: str) -> None: function is_valid_domain (line 30) | def is_valid_domain(domain: str) -> bool: function validate_ip (line 45) | def validate_ip(ip: str) -> None: function is_valid_ip (line 64) | def is_valid_ip(ip: str) -> bool: function validate_cidr (line 83) | def validate_cidr(cidr: str) -> None: function detect_target_type (line 102) | def detect_target_type(name: str) -> str: function validate_port (line 144) | def validate_port(port: any) -> tuple[bool, int | None]: function validate_url (line 183) | def validate_url(url: str) -> None: function is_valid_url (line 208) | def is_valid_url(url: str, max_length: int = 2000) -> bool: function is_url_match_target (line 228) | def is_url_match_target(url: str, target_name: str, target_type: str) ->... function detect_input_type (line 272) | def detect_input_type(input_str: str) -> str: FILE: backend/apps/common/views/auth_views.py class LoginView (line 21) | class LoginView(APIView): method post (line 29) | def post(self, request): class LogoutView (line 65) | class LogoutView(APIView): method post (line 73) | def post(self, request): class MeView (line 92) | class MeView(APIView): method get (line 100) | def get(self, request): class ChangePasswordView (line 132) | class ChangePasswordView(APIView): method post (line 138) | def post(self, request): FILE: backend/apps/common/views/blacklist_views.py class GlobalBlacklistView (line 14) | class GlobalBlacklistView(APIView): method __init__ (line 34) | def __init__(self, **kwargs): method get (line 38) | def get(self, request): method put (line 51) | def put(self, request): FILE: backend/apps/common/views/health_views.py class HealthCheckView (line 12) | class HealthCheckView(APIView): method get (line 23) | def get(self, request): FILE: backend/apps/common/views/system_log_views.py class SystemLogFilesView (line 24) | class SystemLogFilesView(APIView): method __init__ (line 45) | def __init__(self, **kwargs): method get (line 49) | def get(self, request): class SystemLogsView (line 64) | class SystemLogsView(APIView): method __init__ (line 81) | def __init__(self, **kwargs): method get (line 85) | def get(self, request): FILE: backend/apps/common/views/version_views.py function get_current_version (line 24) | def get_current_version() -> str: function compare_versions (line 48) | def compare_versions(current: str, latest: str) -> bool: class VersionView (line 73) | class VersionView(APIView): method get (line 76) | def get(self, _request: Request) -> Response: class CheckUpdateView (line 84) | class CheckUpdateView(APIView): method get (line 87) | def get(self, _request: Request) -> Response: FILE: backend/apps/common/websocket_auth.py class AuthenticatedWebsocketConsumer (line 13) | class AuthenticatedWebsocketConsumer(AsyncWebsocketConsumer): method connect (line 20) | async def connect(self): method on_connect (line 38) | async def on_connect(self): FILE: backend/apps/engine/apps.py class EngineConfig (line 5) | class EngineConfig(AppConfig): method ready (line 10) | def ready(self): method _is_runserver (line 19) | def _is_runserver(self): method _start_scheduler (line 24) | def _start_scheduler(self): FILE: backend/apps/engine/consumers/worker_deploy_consumer.py class WorkerDeployConsumer (line 19) | class WorkerDeployConsumer(AuthenticatedWebsocketConsumer): method __init__ (line 26) | def __init__(self, *args, **kwargs): method on_connect (line 34) | async def on_connect(self): method disconnect (line 47) | async def disconnect(self, close_code): method receive (line 65) | async def receive(self, text_data=None, bytes_data=None): method _auto_ssh_connect (line 111) | async def _auto_ssh_connect(self): method _ssh_connect (line 136) | async def _ssh_connect(self, password: str, cols: int = 80, rows: int ... method _read_shell_output (line 196) | async def _read_shell_output(self): method _run_deploy_script (line 211) | async def _run_deploy_script(self): method _run_uninstall_script (line 353) | async def _run_uninstall_script(self): method _attach_deploy_session (line 423) | async def _attach_deploy_session(self): method terminal_output (line 447) | async def terminal_output(self, event): method deploy_status (line 451) | async def deploy_status(self, event): FILE: backend/apps/engine/management/commands/init_default_engine.py class Command (line 28) | class Command(BaseCommand): method add_arguments (line 31) | def add_arguments(self, parser): method handle (line 43) | def handle(self, *args, **options): FILE: backend/apps/engine/management/commands/init_fingerprints.py class Command (line 95) | class Command(BaseCommand): method handle (line 98) | def handle(self, *args, **options): method _extract_fingerprints (line 177) | def _extract_fingerprints(self, json_data, data_key, fp_type): FILE: backend/apps/engine/management/commands/init_nuclei_templates.py function get_local_commit_hash (line 34) | def get_local_commit_hash(local_path: Path) -> str: class Command (line 48) | class Command(BaseCommand): method add_arguments (line 51) | def add_arguments(self, parser): method handle (line 63) | def handle(self, *args, **options): FILE: backend/apps/engine/management/commands/init_wordlists.py class Command (line 38) | class Command(BaseCommand): method handle (line 41) | def handle(self, *args, **options): FILE: backend/apps/engine/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: backend/apps/engine/models/engine.py class WorkerNode (line 9) | class WorkerNode(models.Model): class Meta (line 45) | class Meta: method __str__ (line 63) | def __str__(self): class ScanEngine (line 69) | class ScanEngine(models.Model): class Meta (line 78) | class Meta: method __str__ (line 87) | def __str__(self): class Wordlist (line 91) | class Wordlist(models.Model): class Meta (line 104) | class Meta: method __str__ (line 113) | def __str__(self) -> str: class NucleiTemplateRepo (line 117) | class NucleiTemplateRepo(models.Model): class Meta (line 128) | class Meta: method __str__ (line 133) | def __str__(self) -> str: # pragma: no cover - 简单表示 FILE: backend/apps/engine/models/fingerprints.py class GobyFingerprint (line 9) | class GobyFingerprint(models.Model): class Meta (line 22) | class Meta: method __str__ (line 33) | def __str__(self) -> str: class EholeFingerprint (line 37) | class EholeFingerprint(models.Model): class Meta (line 48) | class Meta: method __str__ (line 71) | def __str__(self) -> str: class WappalyzerFingerprint (line 75) | class WappalyzerFingerprint(models.Model): class Meta (line 95) | class Meta: method __str__ (line 107) | def __str__(self) -> str: class FingersFingerprint (line 111) | class FingersFingerprint(models.Model): class Meta (line 125) | class Meta: method __str__ (line 137) | def __str__(self) -> str: class FingerPrintHubFingerprint (line 141) | class FingerPrintHubFingerprint(models.Model): class Meta (line 157) | class Meta: method __str__ (line 170) | def __str__(self) -> str: class ARLFingerprint (line 174) | class ARLFingerprint(models.Model): class Meta (line 184) | class Meta: method __str__ (line 194) | def __str__(self) -> str: FILE: backend/apps/engine/repositories/django_engine_repository.py class DjangoEngineRepository (line 16) | class DjangoEngineRepository: method get_all (line 19) | def get_all(self): method get_by_id (line 23) | def get_by_id(self, engine_id: int) -> ScanEngine | None: FILE: backend/apps/engine/repositories/django_wordlist_repository.py class DjangoWordlistRepository (line 16) | class DjangoWordlistRepository: method get_queryset (line 19) | def get_queryset(self): method get_by_id (line 23) | def get_by_id(self, wordlist_id: int) -> Wordlist | None: method get_by_name (line 31) | def get_by_name(self, name: str) -> Wordlist | None: method create (line 38) | def create(self, **kwargs) -> Wordlist: method delete (line 42) | def delete(self, wordlist_id: int) -> bool: FILE: backend/apps/engine/repositories/django_worker_repository.py class DjangoWorkerRepository (line 19) | class DjangoWorkerRepository: method get_by_id (line 22) | def get_by_id(self, worker_id: int) -> WorkerNode | None: method get_all (line 30) | def get_all(self): method update_status (line 34) | def update_status(self, worker_id: int, status: str) -> bool: method delete_by_id (line 46) | def delete_by_id(self, worker_id: int) -> bool: method get_or_create_by_name (line 56) | def get_or_create_by_name( FILE: backend/apps/engine/repositories/nuclei_repo_repository.py class NucleiTemplateRepository (line 28) | class NucleiTemplateRepository: method get_by_id (line 35) | def get_by_id(self, repo_id: int) -> Optional[NucleiTemplateRepo]: class TemplateFileRepository (line 50) | class TemplateFileRepository: method __init__ (line 60) | def __init__(self, root: Path) -> None: method get_tree (line 69) | def get_tree(self) -> List[Dict]: method get_file_content (line 148) | def get_file_content(self, rel_path: str) -> Optional[Dict]: FILE: backend/apps/engine/scheduler.py function get_scheduler (line 19) | def get_scheduler() -> BackgroundScheduler: function start_scheduler (line 34) | def start_scheduler(): function shutdown_scheduler (line 50) | def shutdown_scheduler(): function _register_scheduled_jobs (line 59) | def _register_scheduled_jobs(scheduler: BackgroundScheduler): function _trigger_scheduled_scans (line 95) | def _trigger_scheduled_scans(): function _trigger_statistics_refresh (line 110) | def _trigger_statistics_refresh(): function _trigger_cleanup (line 124) | def _trigger_cleanup(): FILE: backend/apps/engine/serializers/engine_serializer.py class ScanEngineSerializer (line 8) | class ScanEngineSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta: method to_representation (line 22) | def to_representation(self, instance): method validate_name (line 30) | def validate_name(self, value): method validate_configuration (line 36) | def validate_configuration(self, value): FILE: backend/apps/engine/serializers/fingerprints/arl.py class ARLFingerprintSerializer (line 8) | class ARLFingerprintSerializer(serializers.ModelSerializer): class Meta (line 16) | class Meta: method validate_name (line 21) | def validate_name(self, value): method validate_rule (line 27) | def validate_rule(self, value): FILE: backend/apps/engine/serializers/fingerprints/ehole.py class EholeFingerprintSerializer (line 8) | class EholeFingerprintSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta: method validate_cms (line 17) | def validate_cms(self, value): method validate_keyword (line 23) | def validate_keyword(self, value): FILE: backend/apps/engine/serializers/fingerprints/fingerprinthub.py class FingerPrintHubFingerprintSerializer (line 8) | class FingerPrintHubFingerprintSerializer(serializers.ModelSerializer): class Meta (line 22) | class Meta: method validate_fp_id (line 28) | def validate_fp_id(self, value): method validate_name (line 34) | def validate_name(self, value): method validate_http (line 40) | def validate_http(self, value): method validate_metadata (line 46) | def validate_metadata(self, value): FILE: backend/apps/engine/serializers/fingerprints/fingers.py class FingersFingerprintSerializer (line 8) | class FingersFingerprintSerializer(serializers.ModelSerializer): class Meta (line 20) | class Meta: method validate_name (line 26) | def validate_name(self, value): method validate_rule (line 32) | def validate_rule(self, value): method validate_tag (line 38) | def validate_tag(self, value): method validate_default_port (line 44) | def validate_default_port(self, value): FILE: backend/apps/engine/serializers/fingerprints/goby.py class GobyFingerprintSerializer (line 8) | class GobyFingerprintSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta: method validate_name (line 16) | def validate_name(self, value): method validate_rule (line 22) | def validate_rule(self, value): FILE: backend/apps/engine/serializers/fingerprints/wappalyzer.py class WappalyzerFingerprintSerializer (line 8) | class WappalyzerFingerprintSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta: method validate_name (line 20) | def validate_name(self, value): FILE: backend/apps/engine/serializers/nuclei_template_repo_serializer.py class NucleiTemplateRepoSerializer (line 22) | class NucleiTemplateRepoSerializer(serializers.ModelSerializer): class Meta (line 28) | class Meta: FILE: backend/apps/engine/serializers/wordlist_serializer.py class WordlistSerializer (line 8) | class WordlistSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta: FILE: backend/apps/engine/serializers/worker_serializer.py class WorkerNodeSerializer (line 8) | class WorkerNodeSerializer(serializers.ModelSerializer): class Meta (line 24) | class Meta: method _get_load_from_context (line 30) | def _get_load_from_context(self, worker_id: int) -> dict | None: method get_status (line 35) | def get_status(self, obj) -> str: method get_info (line 57) | def get_info(self, obj) -> dict | None: method create (line 81) | def create(self, validated_data): method update (line 85) | def update(self, instance, validated_data): FILE: backend/apps/engine/services/deploy_service.py function _read_script (line 23) | def _read_script(filename: str) -> str: function get_bootstrap_script (line 32) | def get_bootstrap_script() -> str: function get_deploy_script (line 37) | def get_deploy_script() -> str: function get_uninstall_script (line 49) | def get_uninstall_script() -> str: function get_start_agent_script (line 54) | def get_start_agent_script( FILE: backend/apps/engine/services/engine_service.py class EngineService (line 15) | class EngineService: method __init__ (line 18) | def __init__(self): method get_engine (line 22) | def get_engine(self, engine_id: int) -> ScanEngine | None: method get_all_engines (line 34) | def get_all_engines(self): FILE: backend/apps/engine/services/fingerprints/arl_service.py class ARLFingerprintService (line 16) | class ARLFingerprintService(BaseFingerprintService): method validate_fingerprint (line 21) | def validate_fingerprint(self, item: dict) -> bool: method to_model_data (line 39) | def to_model_data(self, item: dict) -> dict: method get_export_data (line 54) | def get_export_data(self) -> list: method export_to_yaml (line 74) | def export_to_yaml(self, output_path: str) -> int: method parse_yaml_import (line 91) | def parse_yaml_import(self, yaml_content: str) -> list: FILE: backend/apps/engine/services/fingerprints/base.py class BaseFingerprintService (line 13) | class BaseFingerprintService: method validate_fingerprint (line 19) | def validate_fingerprint(self, item: dict) -> bool: method validate_fingerprints (line 31) | def validate_fingerprints(self, raw_data: list) -> tuple[list, list]: method to_model_data (line 49) | def to_model_data(self, item: dict) -> dict: method bulk_create (line 61) | def bulk_create(self, fingerprints: list) -> int: method batch_create_fingerprints (line 78) | def batch_create_fingerprints(self, raw_data: list) -> dict: method get_export_data (line 103) | def get_export_data(self) -> dict: method export_to_file (line 112) | def export_to_file(self, output_path: str) -> int: method get_fingerprint_version (line 129) | def get_fingerprint_version(self) -> str: FILE: backend/apps/engine/services/fingerprints/ehole.py class EholeFingerprintService (line 10) | class EholeFingerprintService(BaseFingerprintService): method validate_fingerprint (line 15) | def validate_fingerprint(self, item: dict) -> bool: method to_model_data (line 33) | def to_model_data(self, item: dict) -> dict: method get_export_data (line 55) | def get_export_data(self) -> dict: FILE: backend/apps/engine/services/fingerprints/fingerprinthub_service.py class FingerPrintHubFingerprintService (line 10) | class FingerPrintHubFingerprintService(BaseFingerprintService): method validate_fingerprint (line 15) | def validate_fingerprint(self, item: dict) -> bool: method to_model_data (line 43) | def to_model_data(self, item: dict) -> dict: method get_export_data (line 75) | def get_export_data(self) -> list: FILE: backend/apps/engine/services/fingerprints/fingers_service.py class FingersFingerprintService (line 10) | class FingersFingerprintService(BaseFingerprintService): method validate_fingerprint (line 15) | def validate_fingerprint(self, item: dict) -> bool: method to_model_data (line 33) | def to_model_data(self, item: dict) -> dict: method get_export_data (line 55) | def get_export_data(self) -> list: FILE: backend/apps/engine/services/fingerprints/goby.py class GobyFingerprintService (line 10) | class GobyFingerprintService(BaseFingerprintService): method validate_fingerprint (line 15) | def validate_fingerprint(self, item: dict) -> bool: method to_model_data (line 39) | def to_model_data(self, item: dict) -> dict: method get_export_data (line 68) | def get_export_data(self) -> list: FILE: backend/apps/engine/services/fingerprints/wappalyzer.py class WappalyzerFingerprintService (line 10) | class WappalyzerFingerprintService(BaseFingerprintService): method validate_fingerprint (line 15) | def validate_fingerprint(self, item: dict) -> bool: method to_model_data (line 31) | def to_model_data(self, item: dict) -> dict: method get_export_data (line 59) | def get_export_data(self) -> dict: FILE: backend/apps/engine/services/nuclei_template_repo_service.py class NucleiTemplateRepoService (line 42) | class NucleiTemplateRepoService: method __init__ (line 52) | def __init__(self, repository: NucleiTemplateRepository | None = None)... method _get_repo_obj (line 62) | def _get_repo_obj(self, repo_id: int): method _get_base_dir (line 79) | def _get_base_dir(self) -> Path: method remove_local_path_dir (line 93) | def remove_local_path_dir(self, repo_obj) -> None: method ensure_local_path (line 123) | def ensure_local_path(self, repo_obj) -> Path: method refresh_repo (line 163) | def refresh_repo(self, repo_id: int) -> Dict[str, Any]: method _get_fs_repo (line 280) | def _get_fs_repo(self, repo_id: int) -> TemplateFileRepository: method get_template_tree (line 298) | def get_template_tree(self, repo_id: int) -> List[Dict[str, Any]]: method get_template_content (line 310) | def get_template_content(self, repo_id: int, rel_path: str) -> Optiona... FILE: backend/apps/engine/services/task_distributor.py class TaskDistributor (line 57) | class TaskDistributor: method __init__ (line 75) | def __init__(self): method get_online_workers (line 83) | def get_online_workers(self) -> list[WorkerNode]: method select_best_worker (line 104) | def select_best_worker(self) -> Optional[WorkerNode]: method _wait_for_submit_interval (line 233) | def _wait_for_submit_interval(self): method _build_docker_command (line 246) | def _build_docker_command( method _execute_docker_command (line 327) | def _execute_docker_command( method _execute_local_docker (line 352) | def _execute_local_docker( method _execute_ssh_docker (line 386) | def _execute_ssh_docker( method execute_scan_flow (line 449) | def execute_scan_flow( method execute_cleanup_on_all_workers (line 534) | def execute_cleanup_on_all_workers( method execute_delete_task (line 597) | def execute_delete_task( function get_task_distributor (line 677) | def get_task_distributor() -> TaskDistributor: FILE: backend/apps/engine/services/wordlist_service.py class WordlistService (line 24) | class WordlistService: method __init__ (line 27) | def __init__(self) -> None: method get_queryset (line 31) | def get_queryset(self): method get_wordlist (line 35) | def get_wordlist(self, wordlist_id: int) -> Optional[Wordlist]: method get_wordlist_by_name (line 39) | def get_wordlist_by_name(self, name: str) -> Optional[Wordlist]: method create_wordlist (line 45) | def create_wordlist( method delete_wordlist (line 115) | def delete_wordlist(self, wordlist_id: int) -> bool: method _exists_by_name (line 131) | def _exists_by_name(self, name: str) -> bool: method get_wordlist_content (line 135) | def get_wordlist_content(self, wordlist_id: int) -> Optional[str]: method update_wordlist_content (line 148) | def update_wordlist_content(self, wordlist_id: int, content: str) -> O... FILE: backend/apps/engine/services/worker_load_service.py class WorkerLoadService (line 19) | class WorkerLoadService: method __init__ (line 29) | def __init__(self): method redis (line 33) | def redis(self) -> redis.Redis: method _key (line 44) | def _key(self, worker_id: int) -> str: method update_load (line 48) | def update_load(self, worker_id: int, cpu_percent: float, memory_perce... method get_load (line 79) | def get_load(self, worker_id: int) -> Optional[Dict[str, Any]]: method get_all_loads (line 102) | def get_all_loads(self, worker_ids: list[int]) -> Dict[int, Dict[str, ... method delete_load (line 132) | def delete_load(self, worker_id: int) -> bool: method is_online (line 141) | def is_online(self, worker_id: int) -> bool: FILE: backend/apps/engine/services/worker_service.py class WorkerService (line 15) | class WorkerService: method __init__ (line 18) | def __init__(self) -> None: method get_worker (line 24) | def get_worker(self, worker_id: int): method get_all_workers (line 28) | def get_all_workers(self): method update_status (line 34) | def update_status(self, worker_id: int, status: str) -> bool: method delete_worker (line 44) | def delete_worker(self, worker_id: int) -> bool: method register_worker (line 50) | def register_worker(self, name: str, is_local: bool = True): method remote_uninstall (line 68) | def remote_uninstall( method execute_remote_command (line 137) | def execute_remote_command( FILE: backend/apps/engine/views/engine_views.py class ScanEngineViewSet (line 10) | class ScanEngineViewSet(viewsets.ModelViewSet): method __init__ (line 25) | def __init__(self, **kwargs): method get_queryset (line 29) | def get_queryset(self): FILE: backend/apps/engine/views/fingerprints/arl.py class ARLFingerprintViewSet (line 17) | class ARLFingerprintViewSet(BaseFingerprintViewSet): method parse_import_data (line 57) | def parse_import_data(self, json_data) -> list: method get_export_filename (line 68) | def get_export_filename(self) -> str: method import_file (line 73) | def import_file(self, request): method export (line 111) | def export(self, request): FILE: backend/apps/engine/views/fingerprints/base.py class BaseFingerprintViewSet (line 22) | class BaseFingerprintViewSet(viewsets.ModelViewSet): method get_queryset (line 66) | def get_queryset(self): method get_service (line 79) | def get_service(self): method parse_import_data (line 85) | def parse_import_data(self, json_data: dict) -> list: method get_export_filename (line 97) | def get_export_filename(self) -> str: method batch_create (line 107) | def batch_create(self, request): method import_file (line 136) | def import_file(self, request): method _parse_json_content (line 165) | def _parse_json_content(self, content: str): method bulk_delete (line 201) | def bulk_delete(self, request): method delete_all (line 219) | def delete_all(self, request): method export (line 230) | def export(self, request): FILE: backend/apps/engine/views/fingerprints/ehole.py class EholeFingerprintViewSet (line 11) | class EholeFingerprintViewSet(BaseFingerprintViewSet): method parse_import_data (line 56) | def parse_import_data(self, json_data: dict) -> list: method get_export_filename (line 65) | def get_export_filename(self) -> str: FILE: backend/apps/engine/views/fingerprints/fingerprinthub.py class FingerPrintHubFingerprintViewSet (line 11) | class FingerPrintHubFingerprintViewSet(BaseFingerprintViewSet): method parse_import_data (line 60) | def parse_import_data(self, json_data) -> list: method get_export_filename (line 71) | def get_export_filename(self) -> str: FILE: backend/apps/engine/views/fingerprints/fingers.py class FingersFingerprintViewSet (line 11) | class FingersFingerprintViewSet(BaseFingerprintViewSet): method parse_import_data (line 56) | def parse_import_data(self, json_data) -> list: method get_export_filename (line 67) | def get_export_filename(self) -> str: FILE: backend/apps/engine/views/fingerprints/goby.py class GobyFingerprintViewSet (line 11) | class GobyFingerprintViewSet(BaseFingerprintViewSet): method parse_import_data (line 50) | def parse_import_data(self, json_data) -> list: method get_export_filename (line 63) | def get_export_filename(self) -> str: FILE: backend/apps/engine/views/fingerprints/wappalyzer.py class WappalyzerFingerprintViewSet (line 11) | class WappalyzerFingerprintViewSet(BaseFingerprintViewSet): method parse_import_data (line 57) | def parse_import_data(self, json_data: dict) -> list: method get_export_filename (line 73) | def get_export_filename(self) -> str: FILE: backend/apps/engine/views/nuclei_template_repo_views.py class NucleiTemplateRepoViewSet (line 44) | class NucleiTemplateRepoViewSet(viewsets.ModelViewSet): method __init__ (line 66) | def __init__(self, *args, **kwargs) -> None: # type: ignore[override] method perform_create (line 71) | def perform_create(self, serializer) -> None: # type: ignore[override] method perform_destroy (line 81) | def perform_destroy(self, instance: NucleiTemplateRepo) -> None: # ty... method refresh (line 95) | def refresh(self, request: Request, pk: str | None = None) -> Response: method templates_tree (line 140) | def templates_tree(self, request: Request, pk: str | None = None) -> R... method templates_content (line 185) | def templates_content(self, request: Request, pk: str | None = None) -... FILE: backend/apps/engine/views/wordlist_views.py class WordlistViewSet (line 18) | class WordlistViewSet(viewsets.ViewSet): method __init__ (line 23) | def __init__(self, *args, **kwargs): method paginator (line 28) | def paginator(self): method list (line 37) | def list(self, request): method create (line 44) | def create(self, request): method destroy (line 73) | def destroy(self, request, pk=None): method download (line 94) | def download(self, request): method content (line 129) | def content(self, request, pk=None): FILE: backend/apps/engine/views/worker_views.py class WorkerNodeViewSet (line 21) | class WorkerNodeViewSet(viewsets.ModelViewSet): method __init__ (line 37) | def __init__(self, **kwargs): method get_queryset (line 41) | def get_queryset(self): method get_serializer_context (line 45) | def get_serializer_context(self): method destroy (line 58) | def destroy(self, request, *args, **kwargs): method heartbeat (line 121) | def heartbeat(self, request, pk=None): method _trigger_remote_agent_update (line 202) | def _trigger_remote_agent_update(self, worker, target_version: str): method _set_worker_status (line 277) | def _set_worker_status(self, worker_id: int, status: str): method register (line 286) | def register(self, request): method config (line 330) | def config(self, request): FILE: backend/apps/scan/apps.py class ScanConfig (line 4) | class ScanConfig(AppConfig): method ready (line 9) | def ready(self): FILE: backend/apps/scan/configs/command_templates.py function get_supported_scan_types (line 284) | def get_supported_scan_types(): function get_command_template (line 294) | def get_command_template(scan_type: str, tool_name: str) -> dict: FILE: backend/apps/scan/flows/directory_scan_flow.py function calculate_directory_scan_timeout (line 44) | def calculate_directory_scan_timeout( function _get_max_workers (line 97) | def _get_max_workers(tool_config: dict, default: int = DEFAULT_MAX_WORKE... function _export_site_urls (line 108) | def _export_site_urls( function _generate_log_filename (line 144) | def _generate_log_filename( function _prepare_tool_wordlist (line 158) | def _prepare_tool_wordlist(tool_name: str, tool_config: dict) -> bool: function _build_scan_params (line 173) | def _build_scan_params( function _execute_batch (line 210) | def _execute_batch( function _run_scans_concurrently (line 265) | def _run_scans_concurrently( function directory_scan_flow (line 390) | def directory_scan_flow( FILE: backend/apps/scan/flows/fingerprint_detect_flow.py function calculate_fingerprint_detect_timeout (line 34) | def calculate_fingerprint_detect_timeout( function _export_urls (line 59) | def _export_urls( function _run_fingerprint_detect (line 95) | def _run_fingerprint_detect( function fingerprint_detect_flow (line 219) | def fingerprint_detect_flow( function _build_empty_result (line 364) | def _build_empty_result( FILE: backend/apps/scan/flows/initiate_scan_flow.py function _run_subflow_task (line 40) | def _run_subflow_task(scan_type: str, flow_func, flow_kwargs: dict): function initiate_scan_flow (line 54) | def initiate_scan_flow( FILE: backend/apps/scan/flows/port_scan_flow.py function calculate_port_scan_timeout (line 34) | def calculate_port_scan_timeout( function _parse_port_count (line 76) | def _parse_port_count(tool_config: dict) -> int: function _export_hosts (line 135) | def _export_hosts(target_id: int, port_scan_dir: Path) -> tuple[str, int... function _run_scans_sequentially (line 173) | def _run_scans_sequentially( function port_scan_flow (line 299) | def port_scan_flow( FILE: backend/apps/scan/flows/screenshot_flow.py function _parse_screenshot_config (line 38) | def _parse_screenshot_config(enabled_tools: dict) -> dict: function _map_url_sources_to_data_sources (line 47) | def _map_url_sources_to_data_sources(url_sources: list[str]) -> list[str]: function _collect_urls_from_provider (line 61) | def _collect_urls_from_provider(provider: TargetProvider) -> tuple[list[... function _collect_urls_from_database (line 73) | def _collect_urls_from_database( function _build_empty_result (line 83) | def _build_empty_result(scan_id: int, target_name: str) -> dict: function screenshot_flow (line 103) | def screenshot_flow( FILE: backend/apps/scan/flows/site_scan_flow.py class ScanContext (line 39) | class ScanContext: function _count_file_lines (line 49) | def _count_file_lines(file_path: str) -> int: function _calculate_timeout_by_line_count (line 64) | def _calculate_timeout_by_line_count( function _export_site_urls (line 90) | def _export_site_urls( function _get_tool_timeout (line 127) | def _get_tool_timeout(tool_config: dict, urls_file: str) -> int: function _execute_single_tool (line 138) | def _execute_single_tool( function _run_scans_sequentially (line 213) | def _run_scans_sequentially( function _build_empty_result (line 261) | def _build_empty_result( function _aggregate_tool_results (line 293) | def _aggregate_tool_results(tool_stats: dict) -> tuple[int, int, int]: function _validate_flow_params (line 307) | def _validate_flow_params( function site_scan_flow (line 331) | def site_scan_flow( FILE: backend/apps/scan/flows/subdomain_discovery_flow.py class ScanContext (line 57) | class ScanContext: function _validate_and_normalize_target (line 70) | def _validate_and_normalize_target(target_name: str) -> str: function _count_lines (line 81) | def _count_lines(file_path: str) -> int: function _merge_files (line 91) | def _merge_files(file_list: list, output_file: str) -> str: function _calculate_auto_timeout (line 110) | def _calculate_auto_timeout(file_path: str, multiplier: int = 3, default... function _run_single_tool (line 120) | def _run_single_tool( function _run_scans_parallel (line 168) | def _run_scans_parallel( function _generate_provider_config (line 249) | def _generate_provider_config(result_dir: Path, scan_id: int) -> Optiona... function _run_stage1_passive (line 265) | def _run_stage1_passive(ctx: ScanContext, enabled_tools: dict, provider_... function _run_stage2_bruteforce (line 300) | def _run_stage2_bruteforce(ctx: ScanContext, bruteforce_config: dict): function _run_stage3_permutation (line 354) | def _run_stage3_permutation(ctx: ScanContext, permutation_config: dict): function _run_stage4_resolve (line 454) | def _run_stage4_resolve(ctx: ScanContext, resolve_config: dict): function _save_to_database (line 492) | def _save_to_database(ctx: ScanContext) -> int: function _empty_result (line 515) | def _empty_result(scan_id: int, target: str, scan_workspace_dir: str) ->... function subdomain_discovery_flow (line 541) | def subdomain_discovery_flow( FILE: backend/apps/scan/flows/url_fetch/domain_name_url_fetch_flow.py function domain_name_url_fetch_flow (line 34) | def domain_name_url_fetch_flow( FILE: backend/apps/scan/flows/url_fetch/main_flow.py function _classify_tools (line 42) | def _classify_tools(enabled_tools: dict) -> tuple[dict, dict, dict, dict]: function _merge_and_deduplicate_urls (line 69) | def _merge_and_deduplicate_urls(result_files: list, url_fetch_dir: Path)... function _clean_urls_with_uro (line 92) | def _clean_urls_with_uro( function _validate_and_stream_save_urls (line 137) | def _validate_and_stream_save_urls( function _save_urls_to_database (line 218) | def _save_urls_to_database(merged_file: str, scan_id: int, target_id: in... function url_fetch_flow (line 241) | def url_fetch_flow( FILE: backend/apps/scan/flows/url_fetch/sites_url_fetch_flow.py function _export_sites_file (line 22) | def _export_sites_file(target_id: int, scan_id: int, target_name: str, o... function sites_url_fetch_flow (line 56) | def sites_url_fetch_flow( FILE: backend/apps/scan/flows/url_fetch/utils.py function calculate_timeout_by_line_count (line 16) | def calculate_timeout_by_line_count( function prepare_tool_execution (line 57) | def prepare_tool_execution( function run_tools_parallel (line 151) | def run_tools_parallel( FILE: backend/apps/scan/flows/vuln_scan/endpoints_vuln_scan_flow.py function endpoints_vuln_scan_flow (line 35) | def endpoints_vuln_scan_flow( FILE: backend/apps/scan/flows/vuln_scan/main_flow.py function _classify_vuln_tools (line 22) | def _classify_vuln_tools(enabled_tools: Dict[str, dict]) -> Tuple[Dict[s... function vuln_scan_flow (line 52) | def vuln_scan_flow( FILE: backend/apps/scan/flows/vuln_scan/utils.py function calculate_timeout_by_line_count (line 11) | def calculate_timeout_by_line_count( FILE: backend/apps/scan/handlers/initiate_scan_flow_handlers.py function on_initiate_scan_flow_running (line 22) | def on_initiate_scan_flow_running(flow: Flow, flow_run: FlowRun, state: ... function on_initiate_scan_flow_completed (line 101) | def on_initiate_scan_flow_completed(flow: Flow, flow_run: FlowRun, state... function on_initiate_scan_flow_failed (line 199) | def on_initiate_scan_flow_failed(flow: Flow, flow_run: FlowRun, state: S... FILE: backend/apps/scan/handlers/scan_flow_handlers.py function _get_stage_from_flow_name (line 25) | def _get_stage_from_flow_name(flow_name: str) -> str | None: function on_scan_flow_running (line 38) | def on_scan_flow_running(flow: Flow, flow_run: FlowRun, state: State) ->... function on_scan_flow_completed (line 78) | def on_scan_flow_completed(flow: Flow, flow_run: FlowRun, state: State) ... function on_scan_flow_failed (line 132) | def on_scan_flow_failed(flow: Flow, flow_run: FlowRun, state: State) -> ... FILE: backend/apps/scan/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: backend/apps/scan/migrations/0002_add_cached_screenshots_count.py class Migration (line 6) | class Migration(migrations.Migration): FILE: backend/apps/scan/migrations/0003_add_wecom_fields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: backend/apps/scan/models/scan_log_model.py class ScanLog (line 6) | class ScanLog(models.Model): class Level (line 9) | class Level(models.TextChoices): class Meta (line 31) | class Meta: method __str__ (line 40) | def __str__(self): FILE: backend/apps/scan/models/scan_models.py class SoftDeleteManager (line 9) | class SoftDeleteManager(models.Manager): method get_queryset (line 12) | def get_queryset(self): class Scan (line 16) | class Scan(models.Model): class Meta (line 95) | class Meta: method __str__ (line 106) | def __str__(self): FILE: backend/apps/scan/models/scheduled_scan_model.py class ScheduledScan (line 7) | class ScheduledScan(models.Model): class Meta (line 61) | class Meta: method __str__ (line 72) | def __str__(self): FILE: backend/apps/scan/models/subfinder_provider_settings_model.py class SubfinderProviderSettings (line 9) | class SubfinderProviderSettings(models.Model): class Meta (line 28) | class Meta: method save (line 44) | def save(self, *args, **kwargs): method get_instance (line 49) | def get_instance(cls) -> 'SubfinderProviderSettings': method get_provider_config (line 57) | def get_provider_config(self, provider: str) -> dict: method is_provider_enabled (line 61) | def is_provider_enabled(self, provider: str) -> bool: FILE: backend/apps/scan/notifications/consumers.py class NotificationConsumer (line 14) | class NotificationConsumer(AuthenticatedWebsocketConsumer): method __init__ (line 23) | def __init__(self, *args, **kwargs): method on_connect (line 27) | async def on_connect(self): method disconnect (line 55) | async def disconnect(self, close_code): method receive (line 76) | async def receive(self, text_data): method notification_message (line 98) | async def notification_message(self, event): method _heartbeat_loop (line 126) | async def _heartbeat_loop(self): FILE: backend/apps/scan/notifications/models.py class NotificationSettings (line 14) | class NotificationSettings(models.Model): class Meta (line 38) | class Meta: method save (line 43) | def save(self, *args, **kwargs): method get_instance (line 48) | def get_instance(cls) -> 'NotificationSettings': method is_category_enabled (line 65) | def is_category_enabled(self, category: str) -> bool: class Notification (line 70) | class Notification(models.Model): class Meta (line 99) | class Meta: method __str__ (line 111) | def __str__(self): method cleanup_old_notifications (line 115) | def cleanup_old_notifications(cls) -> int: method save (line 121) | def save(self, *args, **kwargs): FILE: backend/apps/scan/notifications/receivers.py function on_vulnerabilities_saved (line 16) | def on_vulnerabilities_saved(sender, items, scan_id, target_id, **kwargs): function on_worker_delete_failed (line 74) | def on_worker_delete_failed(sender, worker_name, message, **kwargs): function on_all_workers_high_load (line 86) | def on_all_workers_high_load(sender, worker_name, cpu, mem, **kwargs): FILE: backend/apps/scan/notifications/repositories.py class NotificationSettingsData (line 18) | class NotificationSettingsData: class NotificationSettingsRepository (line 29) | class NotificationSettingsRepository: method get_settings (line 32) | def get_settings(self) -> NotificationSettings: method update_settings (line 36) | def update_settings(self, data: NotificationSettingsData) -> Notificat... method is_category_enabled (line 47) | def is_category_enabled(self, category: str) -> bool: class DjangoNotificationRepository (line 53) | class DjangoNotificationRepository: method get_filtered (line 56) | def get_filtered( method get_unread_count (line 80) | def get_unread_count(self) -> int: method mark_all_as_read (line 84) | def mark_all_as_read(self) -> int: method create (line 91) | def create( FILE: backend/apps/scan/notifications/serializers.py class NotificationSerializer (line 8) | class NotificationSerializer(serializers.ModelSerializer): class Meta (line 9) | class Meta: FILE: backend/apps/scan/notifications/services.py function push_to_external_channels (line 38) | def push_to_external_channels(notification: Notification) -> None: function _send_discord (line 71) | def _send_discord(notification: Notification, webhook_url: str) -> bool: function _send_wecom (line 105) | def _send_wecom(notification: Notification, webhook_url: str) -> bool: class NotificationSettingsService (line 144) | class NotificationSettingsService: method __init__ (line 147) | def __init__(self, repository: NotificationSettingsRepository | None =... method get_settings (line 150) | def get_settings(self) -> dict: method update_settings (line 165) | def update_settings(self, data: dict) -> dict: class NotificationService (line 199) | class NotificationService: method __init__ (line 202) | def __init__(self, repository: DjangoNotificationRepository | None = N... method get_notifications (line 205) | def get_notifications(self, level: str | None = None, unread: bool | N... method get_unread_count (line 208) | def get_unread_count(self) -> int: method mark_all_as_read (line 211) | def mark_all_as_read(self) -> int: function create_notification (line 215) | def create_notification( function _push_to_websocket (line 326) | def _push_to_websocket(notification: Notification) -> None: function _push_via_api_callback (line 346) | def _push_via_api_callback(notification: Notification, server_url: str) ... function _push_via_channel_layer (line 384) | def _push_via_channel_layer(notification: Notification) -> None: FILE: backend/apps/scan/notifications/types.py class NotificationLevel (line 6) | class NotificationLevel(models.TextChoices): class NotificationCategory (line 14) | class NotificationCategory(models.TextChoices): FILE: backend/apps/scan/notifications/views.py function _parse_bool (line 29) | def _parse_bool(value: str | None) -> bool | None: class NotificationCollectionView (line 49) | class NotificationCollectionView(APIView): method get (line 57) | def get(self, request: Request) -> Response: class NotificationUnreadCountView (line 95) | class NotificationUnreadCountView(APIView): method get (line 107) | def get(self, request: Request) -> Response: class NotificationMarkAllAsReadView (line 114) | class NotificationMarkAllAsReadView(APIView): method post (line 127) | def post(self, request: Request) -> Response: class NotificationSettingsView (line 134) | class NotificationSettingsView(APIView): method get (line 144) | def get(self, request: Request) -> Response: method put (line 150) | def put(self, request: Request) -> Response: function notification_callback (line 163) | def notification_callback(request): function _push_notification_to_websocket (line 208) | def _push_notification_to_websocket(data: dict): FILE: backend/apps/scan/orchestrators/flow_orchestrator.py class FlowOrchestrator (line 23) | class FlowOrchestrator: method __init__ (line 30) | def __init__(self, engine_config: str): method _parse_config (line 73) | def _parse_config(self, engine_config: str) -> Dict: method _detect_scan_types (line 100) | def _detect_scan_types(self) -> List[str]: method is_scan_type_enabled (line 127) | def is_scan_type_enabled(self, scan_type: str) -> bool: method get_execution_stages (line 158) | def get_execution_stages(self): method get_flow_function (line 187) | def get_flow_function(self, scan_type: str) -> Optional[Callable]: FILE: backend/apps/scan/providers/base.py class ProviderContext (line 20) | class ProviderContext: class TargetProvider (line 32) | class TargetProvider(ABC): method __init__ (line 48) | def __init__(self, context: Optional[ProviderContext] = None): method context (line 52) | def context(self) -> ProviderContext: method _expand_host (line 57) | def _expand_host(host: str) -> Iterator[str]: method iter_hosts (line 87) | def iter_hosts(self) -> Iterator[str]: method _iter_raw_hosts (line 93) | def _iter_raw_hosts(self) -> Iterator[str]: method iter_urls (line 98) | def iter_urls(self) -> Iterator[str]: method get_blacklist_filter (line 103) | def get_blacklist_filter(self) -> Optional['BlacklistFilter']: method target_id (line 108) | def target_id(self) -> Optional[int]: method scan_id (line 113) | def scan_id(self) -> Optional[int]: FILE: backend/apps/scan/providers/database_provider.py class DatabaseTargetProvider (line 18) | class DatabaseTargetProvider(TargetProvider): method __init__ (line 32) | def __init__(self, target_id: int, context: Optional[ProviderContext] ... method iter_hosts (line 38) | def iter_hosts(self) -> Iterator[str]: method _iter_raw_hosts (line 47) | def _iter_raw_hosts(self) -> Iterator[str]: method iter_urls (line 70) | def iter_urls(self) -> Iterator[str]: method get_blacklist_filter (line 86) | def get_blacklist_filter(self) -> Optional['BlacklistFilter']: FILE: backend/apps/scan/providers/list_provider.py class ListTargetProvider (line 12) | class ListTargetProvider(TargetProvider): method __init__ (line 36) | def __init__( method _iter_raw_hosts (line 74) | def _iter_raw_hosts(self) -> Iterator[str]: method iter_urls (line 78) | def iter_urls(self) -> Iterator[str]: method get_blacklist_filter (line 82) | def get_blacklist_filter(self) -> None: FILE: backend/apps/scan/providers/pipeline_provider.py class StageOutput (line 15) | class StageOutput: class PipelineTargetProvider (line 37) | class PipelineTargetProvider(TargetProvider): method __init__ (line 58) | def __init__( method _iter_raw_hosts (line 76) | def _iter_raw_hosts(self) -> Iterator[str]: method iter_urls (line 80) | def iter_urls(self) -> Iterator[str]: method get_blacklist_filter (line 84) | def get_blacklist_filter(self) -> None: method previous_output (line 89) | def previous_output(self) -> StageOutput: FILE: backend/apps/scan/providers/snapshot_provider.py class SnapshotTargetProvider (line 19) | class SnapshotTargetProvider(TargetProvider): method __init__ (line 66) | def __init__( method _iter_raw_hosts (line 90) | def _iter_raw_hosts(self) -> Iterator[str]: method iter_hosts (line 119) | def iter_hosts(self) -> Iterator[str]: method iter_urls (line 136) | def iter_urls(self) -> Iterator[str]: method get_blacklist_filter (line 168) | def get_blacklist_filter(self) -> None: method snapshot_type (line 173) | def snapshot_type(self) -> SnapshotType: FILE: backend/apps/scan/providers/tests/test_common_properties.py class TestContextPropagation (line 24) | class TestContextPropagation: method test_property_4_list_provider_context_propagation (line 39) | def test_property_4_list_provider_context_propagation(self, target_id,... method test_property_4_database_provider_context_propagation (line 59) | def test_property_4_database_provider_context_propagation(self, target... method test_property_4_pipeline_provider_context_propagation (line 80) | def test_property_4_pipeline_provider_context_propagation(self, target... method test_property_4_snapshot_provider_context_propagation (line 101) | def test_property_4_snapshot_provider_context_propagation(self, target... class TestNonDatabaseProviderBlacklistFilter (line 122) | class TestNonDatabaseProviderBlacklistFilter: method test_property_5_list_provider_no_blacklist (line 134) | def test_property_5_list_provider_no_blacklist(self, targets): method test_property_5_pipeline_provider_no_blacklist (line 146) | def test_property_5_pipeline_provider_no_blacklist(self, hosts): method test_property_5_snapshot_provider_no_blacklist (line 157) | def test_property_5_snapshot_provider_no_blacklist(self): class TestCIDRExpansionConsistency (line 168) | class TestCIDRExpansionConsistency: method test_property_7_cidr_expansion_consistency (line 184) | def test_property_7_cidr_expansion_consistency(self, network_prefix, c... method test_cidr_expansion_with_multiple_cidrs (line 218) | def test_cidr_expansion_with_multiple_cidrs(self): method test_mixed_hosts_and_cidrs (line 242) | def test_mixed_hosts_and_cidrs(self): FILE: backend/apps/scan/providers/tests/test_database_provider.py function valid_domain_strategy (line 20) | def valid_domain_strategy(): class MockBlacklistFilter (line 33) | class MockBlacklistFilter: method __init__ (line 36) | def __init__(self, blocked_patterns: list): method is_allowed (line 39) | def is_allowed(self, target: str) -> bool: class TestDatabaseTargetProviderProperties (line 47) | class TestDatabaseTargetProviderProperties: method test_property_7_blacklist_filters_hosts (line 59) | def test_property_7_blacklist_filters_hosts(self, hosts, blocked_keywo... class TestDatabaseTargetProviderUnit (line 104) | class TestDatabaseTargetProviderUnit: method test_target_id_in_context (line 107) | def test_target_id_in_context(self): method test_context_propagation (line 113) | def test_context_propagation(self): method test_blacklist_filter_lazy_loading (line 121) | def test_blacklist_filter_lazy_loading(self): method test_nonexistent_target_returns_empty (line 147) | def test_nonexistent_target_returns_empty(self): FILE: backend/apps/scan/providers/tests/test_list_provider.py function valid_domain_strategy (line 19) | def valid_domain_strategy(): function valid_ip_strategy (line 33) | def valid_ip_strategy(): function valid_url_strategy (line 45) | def valid_url_strategy(): class TestListTargetProviderProperties (line 64) | class TestListTargetProviderProperties: method test_property_1_hosts_round_trip (line 69) | def test_property_1_hosts_round_trip(self, hosts): method test_property_1_urls_round_trip (line 86) | def test_property_1_urls_round_trip(self, urls): method test_property_1_combined_round_trip (line 106) | def test_property_1_combined_round_trip(self, hosts, urls): class TestListTargetProviderUnit (line 126) | class TestListTargetProviderUnit: method test_empty_lists (line 129) | def test_empty_lists(self): method test_blacklist_filter_returns_none (line 135) | def test_blacklist_filter_returns_none(self): method test_target_id_association (line 140) | def test_target_id_association(self): method test_context_propagation (line 146) | def test_context_propagation(self): FILE: backend/apps/scan/providers/tests/test_pipeline_provider.py function valid_domain_strategy (line 19) | def valid_domain_strategy(): function valid_ip_strategy (line 32) | def valid_ip_strategy(): function valid_url_strategy (line 44) | def valid_url_strategy(): class TestPipelineTargetProviderProperties (line 63) | class TestPipelineTargetProviderProperties: method test_property_3_hosts_round_trip (line 68) | def test_property_3_hosts_round_trip(self, hosts): method test_property_3_urls_round_trip (line 85) | def test_property_3_urls_round_trip(self, urls): method test_property_3_combined_round_trip (line 105) | def test_property_3_combined_round_trip(self, hosts, urls): class TestPipelineTargetProviderUnit (line 124) | class TestPipelineTargetProviderUnit: method test_empty_stage_output (line 127) | def test_empty_stage_output(self): method test_blacklist_filter_returns_none (line 135) | def test_blacklist_filter_returns_none(self): method test_target_id_association (line 141) | def test_target_id_association(self): method test_context_propagation (line 147) | def test_context_propagation(self): method test_previous_output_property (line 156) | def test_previous_output_property(self): method test_stage_output_with_metadata (line 165) | def test_stage_output_with_metadata(self): FILE: backend/apps/scan/providers/tests/test_snapshot_provider.py class TestSnapshotTargetProvider (line 11) | class TestSnapshotTargetProvider: method test_init_with_scan_id_and_type (line 14) | def test_init_with_scan_id_and_type(self): method test_init_with_context (line 25) | def test_init_with_context(self): method test_iter_hosts_subdomain (line 39) | def test_iter_hosts_subdomain(self, mock_service_class): method test_iter_hosts_host_port (line 65) | def test_iter_hosts_host_port(self, mock_service_class): method test_iter_urls_website (line 97) | def test_iter_urls_website(self, mock_service_class): method test_iter_urls_endpoint (line 123) | def test_iter_urls_endpoint(self, mock_service_class): method test_iter_hosts_unsupported_type (line 152) | def test_iter_hosts_unsupported_type(self): method test_iter_urls_unsupported_type (line 162) | def test_iter_urls_unsupported_type(self): method test_get_blacklist_filter (line 172) | def test_get_blacklist_filter(self): method test_context_propagation (line 181) | def test_context_propagation(self): FILE: backend/apps/scan/repositories/django_scan_repository.py class DjangoScanRepository (line 26) | class DjangoScanRepository: method get_by_id (line 32) | def get_by_id(self, method get_by_id_for_update (line 66) | def get_by_id_for_update(self, scan_id: int) -> Scan | None: method exists (line 90) | def exists(self, scan_id: int) -> bool: method create (line 103) | def create(self, method bulk_create (line 139) | def bulk_create(self, scans: List[Scan]) -> List[Scan]: method soft_delete_by_ids (line 154) | def soft_delete_by_ids(self, scan_ids: List[int]) -> int: method hard_delete_by_ids (line 184) | def hard_delete_by_ids(self, scan_ids: List[int]) -> Tuple[int, Dict[s... method get_all (line 234) | def get_all(self, prefetch_relations: bool = True) -> QuerySet[Scan]: method get_statistics (line 250) | def get_statistics(self) -> dict: method update_status (line 304) | def update_status(self, method append_container_id (line 355) | def append_container_id(self, scan_id: int, container_id: str) -> bool: method update_worker (line 395) | def update_worker(self, scan_id: int, worker_id: int) -> bool: method update_cached_stats (line 420) | def update_cached_stats(self, scan_id: int) -> dict | None: method update_status_if_match (line 506) | def update_status_if_match(self, method update_progress (line 569) | def update_progress( FILE: backend/apps/scan/repositories/scheduled_scan_repository.py class ScheduledScanDTO (line 22) | class ScheduledScanDTO: method __post_init__ (line 45) | def __post_init__(self): class DjangoScheduledScanRepository (line 53) | class DjangoScheduledScanRepository: method get_by_id (line 63) | def get_by_id(self, scheduled_scan_id: int) -> Optional[ScheduledScan]: method get_queryset (line 70) | def get_queryset(self): method get_all (line 79) | def get_all(self, page: int = 1, page_size: int = 10) -> Tuple[List[Sc... method get_enabled (line 94) | def get_enabled(self) -> List[ScheduledScan]: method create (line 102) | def create(self, dto: ScheduledScanDTO) -> ScheduledScan: method update (line 128) | def update(self, scheduled_scan_id: int, dto: ScheduledScanDTO) -> Opt... method update_next_run_time (line 179) | def update_next_run_time(self, scheduled_scan_id: int, next_run_time: ... method increment_run_count (line 186) | def increment_run_count(self, scheduled_scan_id: int) -> bool: method toggle_enabled (line 195) | def toggle_enabled(self, scheduled_scan_id: int, enabled: bool) -> bool: method hard_delete (line 202) | def hard_delete(self, scheduled_scan_id: int) -> bool: FILE: backend/apps/scan/scripts/run_cleanup.py function cleanup_results (line 26) | def cleanup_results(results_dir: str, retention_days: int) -> dict: function main (line 84) | def main(): FILE: backend/apps/scan/scripts/run_delete_scans.py function hard_delete_scans (line 21) | def hard_delete_scans(scan_ids: list[int]) -> dict: function main (line 55) | def main(): FILE: backend/apps/scan/scripts/run_initiate_scan.py function diagnose_prefect_environment (line 14) | def diagnose_prefect_environment(): function main (line 117) | def main(): FILE: backend/apps/scan/serializers/mixins.py class DuplicateKeyLoader (line 7) | class DuplicateKeyLoader(yaml.SafeLoader): function _check_duplicate_keys (line 12) | def _check_duplicate_keys(loader, node, deep=False): class ScanConfigValidationMixin (line 32) | class ScanConfigValidationMixin: method validate_configuration (line 35) | def validate_configuration(self, value): method validate_engine_ids (line 47) | def validate_engine_ids(self, value): method validate_engine_names (line 53) | def validate_engine_names(self, value): FILE: backend/apps/scan/serializers/scan_log_serializers.py class ScanLogSerializer (line 8) | class ScanLogSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta: FILE: backend/apps/scan/serializers/scan_serializers.py class ScanSerializer (line 9) | class ScanSerializer(serializers.ModelSerializer): class Meta (line 13) | class Meta: method get_target_name (line 25) | def get_target_name(self, obj): class ScanHistorySerializer (line 29) | class ScanHistorySerializer(serializers.ModelSerializer): class Meta (line 39) | class Meta: method get_summary (line 47) | def get_summary(self, obj): class QuickScanSerializer (line 66) | class QuickScanSerializer(ScanConfigValidationMixin, serializers.Seriali... method validate_targets (line 79) | def validate_targets(self, value): class InitiateScanSerializer (line 94) | class InitiateScanSerializer(ScanConfigValidationMixin, serializers.Seri... method validate (line 103) | def validate(self, data): FILE: backend/apps/scan/serializers/scheduled_scan_serializers.py class ScheduledScanSerializer (line 9) | class ScheduledScanSerializer(serializers.ModelSerializer): class Meta (line 18) | class Meta: method get_scan_mode (line 37) | def get_scan_mode(self, obj): class CreateScheduledScanSerializer (line 41) | class CreateScheduledScanSerializer(ScanConfigValidationMixin, serialize... method validate (line 53) | def validate(self, data): class UpdateScheduledScanSerializer (line 65) | class UpdateScheduledScanSerializer(serializers.Serializer): method validate_engine_ids (line 75) | def validate_engine_ids(self, value): class ToggleScheduledScanSerializer (line 81) | class ToggleScheduledScanSerializer(serializers.Serializer): FILE: backend/apps/scan/serializers/subfinder_provider_settings_serializers.py class SubfinderProviderSettingsSerializer (line 6) | class SubfinderProviderSettingsSerializer(serializers.Serializer): method to_internal_value (line 23) | def to_internal_value(self, data): method to_representation (line 51) | def to_representation(self, instance): FILE: backend/apps/scan/services/quick_scan_service.py class ParsedInputDTO (line 26) | class ParsedInputDTO: class QuickScanService (line 43) | class QuickScanService: method __init__ (line 46) | def __init__(self): method parse_inputs (line 51) | def parse_inputs(self, inputs: List[str]) -> List[ParsedInputDTO]: method _parse_url_input (line 93) | def _parse_url_input(self, url_str: str, line_number: int) -> ParsedIn... method _parse_target_input (line 129) | def _parse_target_input( method process_quick_scan (line 170) | def process_quick_scan( method create_assets_from_parsed_inputs (line 217) | def create_assets_from_parsed_inputs( FILE: backend/apps/scan/services/scan_control_service.py class ScanControlService (line 23) | class ScanControlService: method __init__ (line 33) | def __init__(self): method _stop_containers (line 39) | def _stop_containers( method delete_scans_two_phase (line 116) | def delete_scans_two_phase(self, scan_ids: List[int]) -> dict: method _async_cleanup_and_hard_delete (line 165) | def _async_cleanup_and_hard_delete( method stop_scan (line 207) | def stop_scan(self, scan_id: int) -> tuple[bool, int]: FILE: backend/apps/scan/services/scan_creation_service.py class ScanCreationService (line 34) | class ScanCreationService: method __init__ (line 45) | def __init__(self): method prepare_initiate_scan (line 60) | def prepare_initiate_scan( method prepare_initiate_scan_multi_engine (line 146) | def prepare_initiate_scan_multi_engine( method _generate_scan_workspace_dir (line 246) | def _generate_scan_workspace_dir(self) -> str: method create_scans (line 280) | def create_scans( method _distribute_scans_to_workers (line 371) | def _distribute_scans_to_workers(self, scan_data: List[dict]): FILE: backend/apps/scan/services/scan_service.py class ScanService (line 30) | class ScanService: method __init__ (line 51) | def __init__(self): method get_scan (line 69) | def get_scan(self, scan_id: int, prefetch_relations: bool) -> Scan | N... method get_all_scans (line 83) | def get_all_scans(self, prefetch_relations: bool = True): method prepare_initiate_scan (line 86) | def prepare_initiate_scan( method prepare_initiate_scan_multi_engine (line 99) | def prepare_initiate_scan_multi_engine( method create_scans (line 115) | def create_scans( method update_status (line 130) | def update_status( method update_status_if_match (line 142) | def update_status_if_match( method update_cached_stats (line 154) | def update_cached_stats(self, scan_id: int) -> dict | None: method init_stage_progress (line 160) | def init_stage_progress(self, scan_id: int, stages: list[str]) -> bool: method start_stage (line 164) | def start_stage(self, scan_id: int, stage: str) -> bool: method complete_stage (line 168) | def complete_stage(self, scan_id: int, stage: str, detail: str | None ... method fail_stage (line 172) | def fail_stage(self, scan_id: int, stage: str, error: str | None = Non... method cancel_running_stages (line 176) | def cancel_running_stages(self, scan_id: int, final_status: str = "can... method add_command_to_scan (line 181) | def add_command_to_scan(self, scan_id: int, stage_name: str, tool_name... method delete_scans_two_phase (line 227) | def delete_scans_two_phase(self, scan_ids: List[int]) -> dict: method stop_scan (line 231) | def stop_scan(self, scan_id: int) -> tuple[bool, int]: method hard_delete_scans (line 235) | def hard_delete_scans(self, scan_ids: List[int]) -> tuple[int, Dict[st... method get_statistics (line 251) | def get_statistics(self) -> dict: FILE: backend/apps/scan/services/scan_state_service.py class ScanStateService (line 21) | class ScanStateService: method __init__ (line 32) | def __init__(self): method update_status (line 38) | def update_status( method update_status_if_match (line 81) | def update_status_if_match( method update_cached_stats (line 135) | def update_cached_stats(self, scan_id: int) -> dict | None: method update_progress (line 163) | def update_progress( method init_stage_progress (line 203) | def init_stage_progress(self, scan_id: int, stages: list[str]) -> bool: method start_stage (line 225) | def start_stage(self, scan_id: int, stage: str) -> bool: method complete_stage (line 273) | def complete_stage( method fail_stage (line 343) | def fail_stage( method cancel_running_stages (line 390) | def cancel_running_stages(self, scan_id: int, final_status: str = "can... FILE: backend/apps/scan/services/scan_stats_service.py class ScanStatsService (line 17) | class ScanStatsService: method __init__ (line 26) | def __init__(self): method get_statistics (line 32) | def get_statistics(self) -> dict: FILE: backend/apps/scan/services/scheduled_scan_service.py class ScheduledScanService (line 25) | class ScheduledScanService: method __init__ (line 34) | def __init__(self): method get_by_id (line 41) | def get_by_id(self, scheduled_scan_id: int) -> Optional[ScheduledScan]: method get_queryset (line 45) | def get_queryset(self): method get_all (line 49) | def get_all(self, page: int = 1, page_size: int = 10) -> Tuple[List[Sc... method create (line 55) | def create(self, dto: ScheduledScanDTO) -> ScheduledScan: method create_with_configuration (line 110) | def create_with_configuration(self, dto: ScheduledScanDTO) -> Schedule... method _validate_create_dto (line 149) | def _validate_create_dto(self, dto: ScheduledScanDTO) -> None: method _validate_create_dto_with_configuration (line 162) | def _validate_create_dto_with_configuration(self, dto: ScheduledScanDT... method _validate_base_dto (line 170) | def _validate_base_dto(self, dto: ScheduledScanDTO) -> None: method update (line 203) | def update(self, scheduled_scan_id: int, dto: ScheduledScanDTO) -> Opt... method toggle_enabled (line 258) | def toggle_enabled(self, scheduled_scan_id: int, enabled: bool) -> bool: method record_run (line 287) | def record_run(self, scheduled_scan_id: int) -> bool: method delete (line 312) | def delete(self, scheduled_scan_id: int) -> bool: method trigger_due_scans (line 326) | def trigger_due_scans(self) -> int: method _trigger_scan_now (line 379) | def _trigger_scan_now(self, scheduled_scan: ScheduledScan) -> int: method _calculate_next_run_time (line 414) | def _calculate_next_run_time(self, scheduled_scan: ScheduledScan) -> O... FILE: backend/apps/scan/services/subfinder_provider_config_service.py class SubfinderProviderConfigService (line 18) | class SubfinderProviderConfigService: method generate (line 33) | def generate(self, output_dir: str) -> Optional[str]: method _build_provider_value (line 82) | def _build_provider_value(self, provider: str, config: dict) -> Option... method cleanup (line 127) | def cleanup(self, config_path: str) -> None: FILE: backend/apps/scan/services/target_export_service.py class DataSource (line 24) | class DataSource: function create_export_service (line 32) | def create_export_service(target_id: int) -> 'TargetExportService': function _iter_default_urls_from_target (line 49) | def _iter_default_urls_from_target( function _iter_urls_with_fallback (line 113) | def _iter_urls_with_fallback( function get_urls_with_fallback (line 195) | def get_urls_with_fallback( function export_urls_with_fallback (line 246) | def export_urls_with_fallback( class TargetExportService (line 308) | class TargetExportService: method __init__ (line 327) | def __init__(self, blacklist_filter: Optional[BlacklistFilter] = None): method export_urls (line 336) | def export_urls( method generate_default_urls (line 411) | def generate_default_urls( method export_hosts (line 459) | def export_hosts( method _export_domains (line 536) | def _export_domains( method _export_ip (line 576) | def _export_ip(self, target_name: str, output_path: Path) -> int: method _export_cidr (line 584) | def _export_cidr(self, target_name: str, output_path: Path) -> int: method _should_write_target (line 609) | def _should_write_target(self, target: str) -> bool: FILE: backend/apps/scan/tasks/directory_scan/export_sites_task.py function export_sites_task (line 25) | def export_sites_task( function _export_with_provider (line 90) | def _export_with_provider(output_file: str, provider: TargetProvider) ->... FILE: backend/apps/scan/tasks/directory_scan/run_and_stream_save_directories_task.py class ServiceSet (line 44) | class ServiceSet: method create_default (line 53) | def create_default(cls) -> "ServiceSet": function _parse_and_validate_line (line 61) | def _parse_and_validate_line(line: str) -> Optional[dict]: function _parse_ffuf_stream_output (line 110) | def _parse_ffuf_stream_output( function _save_batch_with_retry (line 174) | def _save_batch_with_retry( function _save_batch (line 253) | def _save_batch( function run_and_stream_save_directories_task (line 313) | def run_and_stream_save_directories_task( FILE: backend/apps/scan/tasks/fingerprint_detect/export_urls_task.py function export_urls_for_fingerprint_task (line 27) | def export_urls_for_fingerprint_task( function _export_with_provider (line 86) | def _export_with_provider(output_file: str, provider: TargetProvider) ->... FILE: backend/apps/scan/tasks/fingerprint_detect/run_xingfinger_task.py function parse_xingfinger_line (line 23) | def parse_xingfinger_line(line: str) -> dict | None: function bulk_merge_website_fields (line 58) | def bulk_merge_website_fields( function _parse_xingfinger_stream_output (line 147) | def _parse_xingfinger_stream_output( function run_xingfinger_and_stream_update_tech_task (line 193) | def run_xingfinger_and_stream_update_tech_task( function _process_batch (line 311) | def _process_batch( FILE: backend/apps/scan/tasks/port_scan/export_hosts_task.py function export_hosts_task (line 25) | def export_hosts_task( FILE: backend/apps/scan/tasks/port_scan/run_and_stream_save_ports_task.py class ServiceSet (line 49) | class ServiceSet: method create_default (line 58) | def create_default(cls) -> "ServiceSet": function _save_batch_with_retry (line 66) | def _save_batch_with_retry( function _save_batch (line 119) | def _save_batch( function _parse_and_validate_line (line 193) | def _parse_and_validate_line(line: str) -> Optional[PortScanRecord]: function _parse_naabu_stream_output (line 257) | def _parse_naabu_stream_output( function _validate_task_parameters (line 354) | def _validate_task_parameters(cmd: str, target_id: int, scan_id: int, cw... function _accumulate_batch_stats (line 381) | def _accumulate_batch_stats(total_stats: dict, batch_result: dict) -> None: function _process_batch (line 395) | def _process_batch( function _process_records_in_batches (line 431) | def _process_records_in_batches( function _build_final_result (line 518) | def _build_final_result(stats: dict) -> dict: function _cleanup_resources (line 549) | def _cleanup_resources(data_generator) -> None: function run_and_stream_save_ports_task (line 590) | def run_and_stream_save_ports_task( function _raise_if_cancelled (line 693) | def _raise_if_cancelled(scan_id: int) -> None: FILE: backend/apps/scan/tasks/port_scan/types.py class PortScanRecord (line 10) | class PortScanRecord(TypedDict): FILE: backend/apps/scan/tasks/screenshot/capture_screenshots_task.py function _run_async (line 14) | def _run_async(coro): function _save_screenshot_with_retry (line 33) | def _save_screenshot_with_retry( function _capture_and_save_screenshots (line 81) | async def _capture_and_save_screenshots( function capture_screenshots_task (line 144) | def capture_screenshots_task( FILE: backend/apps/scan/tasks/site_scan/export_site_urls_task.py function _generate_urls_from_port (line 27) | def _generate_urls_from_port(host: str, port: int) -> list[str]: function export_site_urls_task (line 44) | def export_site_urls_task( function _export_site_urls_legacy (line 126) | def _export_site_urls_legacy(target_id: int, output_file: str, batch_siz... FILE: backend/apps/scan/tasks/site_scan/run_and_stream_save_websites_task.py class ServiceSet (line 47) | class ServiceSet: method create_default (line 56) | def create_default(cls) -> 'ServiceSet': function _sanitize_string (line 64) | def _sanitize_string(value: str) -> str: function normalize_url (line 76) | def normalize_url(url: str) -> str: function _extract_hostname (line 131) | def _extract_hostname(url: str) -> str: class HttpxRecord (line 154) | class HttpxRecord: method __init__ (line 157) | def __init__(self, data: Dict[str, Any]): function _save_batch_with_retry (line 177) | def _save_batch_with_retry( function _save_batch (line 254) | def _save_batch( function _parse_and_validate_line (line 358) | def _parse_and_validate_line(line: str) -> Optional[HttpxRecord]: function _parse_httpx_stream_output (line 406) | def _parse_httpx_stream_output( function _validate_task_parameters (line 470) | def _validate_task_parameters(cmd: str, target_id: int, scan_id: int, cw... function _accumulate_batch_stats (line 497) | def _accumulate_batch_stats(total_stats: dict, batch_result: dict) -> None: function _process_batch (line 509) | def _process_batch( function _process_records_in_batches (line 545) | def _process_records_in_batches( function _build_final_result (line 615) | def _build_final_result(stats: dict) -> dict: function _cleanup_resources (line 644) | def _cleanup_resources(data_generator) -> None: function run_and_stream_save_websites_task (line 663) | def run_and_stream_save_websites_task( FILE: backend/apps/scan/tasks/subdomain_discovery/merge_and_validate_task.py function _count_file_lines (line 34) | def _count_file_lines(file_path: str) -> int: function _calculate_timeout (line 48) | def _calculate_timeout(total_lines: int) -> int: function _validate_input_files (line 55) | def _validate_input_files(result_files: List[str]) -> List[str]: function merge_and_validate_task (line 68) | def merge_and_validate_task(result_files: List[str], result_dir: str) ->... FILE: backend/apps/scan/tasks/subdomain_discovery/run_subdomain_discovery_task.py function run_subdomain_discovery_task (line 20) | def run_subdomain_discovery_task( FILE: backend/apps/scan/tasks/subdomain_discovery/save_domains_task.py class ServiceSet (line 22) | class ServiceSet: method create_default (line 31) | def create_default(cls) -> 'ServiceSet': function save_domains_task (line 43) | def save_domains_task( function _save_batch_with_retry (line 170) | def _save_batch_with_retry( FILE: backend/apps/scan/tasks/tests/test_task_backward_compatibility.py function valid_domain_strategy (line 23) | def valid_domain_strategy(): class TestExportHostsTaskBackwardCompatibility (line 36) | class TestExportHostsTaskBackwardCompatibility: method test_property_8_legacy_mode_creates_database_provider (line 44) | def test_property_8_legacy_mode_creates_database_provider(self, target... method test_legacy_mode_with_provider_parameter (line 98) | def test_legacy_mode_with_provider_parameter(self): method test_error_when_no_parameters (line 127) | def test_error_when_no_parameters(self): class TestExportSiteUrlsTaskBackwardCompatibility (line 140) | class TestExportSiteUrlsTaskBackwardCompatibility: method test_property_8_legacy_mode_uses_traditional_logic (line 143) | def test_property_8_legacy_mode_uses_traditional_logic(self): method test_provider_mode_uses_provider_logic (line 201) | def test_provider_mode_uses_provider_logic(self): method test_error_when_no_parameters (line 230) | def test_error_when_no_parameters(self): FILE: backend/apps/scan/tasks/url_fetch/clean_urls_task.py function clean_urls_task (line 27) | def clean_urls_task( FILE: backend/apps/scan/tasks/url_fetch/export_sites_task.py function export_sites_task (line 30) | def export_sites_task( function _export_with_provider (line 95) | def _export_with_provider(output_file: str, provider: TargetProvider) ->... FILE: backend/apps/scan/tasks/url_fetch/merge_and_deduplicate_urls_task.py function merge_and_deduplicate_urls_task (line 24) | def merge_and_deduplicate_urls_task( FILE: backend/apps/scan/tasks/url_fetch/run_and_stream_save_urls_task.py class ServiceSet (line 39) | class ServiceSet: method create_default (line 48) | def create_default(cls) -> "ServiceSet": function _sanitize_string (line 55) | def _sanitize_string(value: str) -> str: function _extract_hostname (line 67) | def _extract_hostname(url: str) -> str: class HttpxRecord (line 90) | class HttpxRecord: method __init__ (line 93) | def __init__(self, data: Dict[str, Any]): function _parse_and_validate_line (line 113) | def _parse_and_validate_line(line: str) -> Optional[HttpxRecord]: function _parse_httpx_stream_output (line 153) | def _parse_httpx_stream_output( function _validate_task_parameters (line 221) | def _validate_task_parameters(cmd: str, target_id: int, scan_id: int, cw... function _build_final_result (line 248) | def _build_final_result(stats: dict) -> dict: function _cleanup_resources (line 277) | def _cleanup_resources(data_generator) -> None: function _save_batch_with_retry (line 293) | def _save_batch_with_retry( function _save_batch (line 370) | def _save_batch( function _accumulate_batch_stats (line 467) | def _accumulate_batch_stats(total_stats: dict, batch_result: dict) -> None: function _process_batch (line 479) | def _process_batch( function _process_records_in_batches (line 515) | def _process_records_in_batches( function run_and_stream_save_urls_task (line 586) | def run_and_stream_save_urls_task( FILE: backend/apps/scan/tasks/url_fetch/run_url_fetcher_task.py function run_url_fetcher_task (line 24) | def run_url_fetcher_task( FILE: backend/apps/scan/tasks/url_fetch/save_urls_task.py class ParsedURL (line 19) | class ParsedURL: function _parse_url (line 28) | def _parse_url(url: str) -> Optional[ParsedURL]: function save_urls_task (line 78) | def save_urls_task( FILE: backend/apps/scan/tasks/vuln_scan/export_endpoints_task.py function export_endpoints_task (line 29) | def export_endpoints_task( function _export_with_provider (line 91) | def _export_with_provider(output_file: str, provider: TargetProvider) ->... FILE: backend/apps/scan/tasks/vuln_scan/run_and_stream_save_dalfox_vulns_task.py class ServiceSet (line 44) | class ServiceSet: method create_default (line 53) | def create_default(cls) -> "ServiceSet": function _validate_task_parameters (line 60) | def _validate_task_parameters(cmd: str, target_id: int, scan_id: int, cw... function _map_severity (line 75) | def _map_severity(raw: Optional[str]) -> str: function _parse_and_validate_line (line 90) | def _parse_and_validate_line(line: str) -> Optional[dict]: function _parse_dalfox_stream_output (line 154) | def _parse_dalfox_stream_output( function _save_batch (line 207) | def _save_batch( function _save_batch_with_retry (line 245) | def _save_batch_with_retry( function _accumulate_batch_stats (line 285) | def _accumulate_batch_stats(total_stats: dict, batch_result: dict) -> None: function _process_batch (line 290) | def _process_batch( function _process_records_in_batches (line 312) | def _process_records_in_batches( function _build_final_result (line 364) | def _build_final_result(stats: dict) -> dict: function _cleanup_resources (line 384) | def _cleanup_resources(data_generator) -> None: function run_and_stream_save_dalfox_vulns_task (line 401) | def run_and_stream_save_dalfox_vulns_task( function _raise_if_cancelled (line 470) | def _raise_if_cancelled(scan_id: int) -> None: FILE: backend/apps/scan/tasks/vuln_scan/run_and_stream_save_nuclei_vulns_task.py class ServiceSet (line 41) | class ServiceSet: method create_default (line 47) | def create_default(cls) -> "ServiceSet": function _validate_task_parameters (line 54) | def _validate_task_parameters(cmd: str, target_id: int, scan_id: int, cw... function _map_severity (line 69) | def _map_severity(raw: Optional[str]) -> str: function _parse_and_validate_line (line 83) | def _parse_and_validate_line(line: str) -> Optional[dict]: function _parse_nuclei_stream_output (line 156) | def _parse_nuclei_stream_output( function _save_batch (line 209) | def _save_batch( function _save_batch_with_retry (line 247) | def _save_batch_with_retry( function _accumulate_batch_stats (line 287) | def _accumulate_batch_stats(total_stats: dict, batch_result: dict) -> None: function _process_batch (line 292) | def _process_batch( function _process_records_in_batches (line 314) | def _process_records_in_batches( function _build_final_result (line 366) | def _build_final_result(stats: dict) -> dict: function _cleanup_resources (line 386) | def _cleanup_resources(data_generator) -> None: function run_and_stream_save_nuclei_vulns_task (line 403) | def run_and_stream_save_nuclei_vulns_task( function _raise_if_cancelled (line 472) | def _raise_if_cancelled(scan_id: int) -> None: FILE: backend/apps/scan/tasks/vuln_scan/run_vuln_tool_task.py function run_vuln_tool_task (line 25) | def run_vuln_tool_task( FILE: backend/apps/scan/utils/command_builder.py function build_scan_command (line 12) | def build_scan_command( FILE: backend/apps/scan/utils/command_executor.py function _get_command_tracker (line 36) | def _get_command_tracker(tool_name: str, command: str): function _wait_for_system_load (line 60) | def _wait_for_system_load() -> None: class CommandExecutor (line 88) | class CommandExecutor: method _write_command_start_header (line 97) | def _write_command_start_header(self, log_file: Path, tool_name: str, ... method _write_command_end_footer (line 117) | def _write_command_end_footer(self, log_file: Path, tool_name: str, du... method _clean_output_line (line 137) | def _clean_output_line(self, line: str, suffix_char: Optional[str] = N... method _kill_process_tree (line 203) | def _kill_process_tree(self, process: subprocess.Popen) -> None: method execute_and_wait (line 226) | def execute_and_wait( method execute_stream (line 435) | def execute_stream( method _read_log_tail (line 672) | def _read_log_tail(self, log_file: Path, max_lines: int = MAX_LOG_TAIL... function execute_and_wait (line 749) | def execute_and_wait( function execute_stream (line 775) | def execute_stream( FILE: backend/apps/scan/utils/config_merger.py class ConfigConflictError (line 12) | class ConfigConflictError(Exception): method __init__ (line 18) | def __init__(self, conflicts: List[Tuple[str, str, str]]): function merge_engine_configs (line 28) | def merge_engine_configs(engines: List[Tuple[str, str]]) -> str: FILE: backend/apps/scan/utils/config_parser.py function _normalize_config_keys (line 25) | def _normalize_config_keys(config: Dict[str, Any]) -> Dict[str, Any]: function _parse_subdomain_discovery_config (line 53) | def _parse_subdomain_discovery_config(scan_config: Dict[str, Any]) -> Di... function parse_enabled_tools_from_dict (line 125) | def parse_enabled_tools_from_dict( FILE: backend/apps/scan/utils/directory_cleanup.py function remove_directory (line 14) | def remove_directory(directory: str) -> bool: FILE: backend/apps/scan/utils/fingerprint_helpers.py function ensure_ehole_fingerprint_local (line 27) | def ensure_ehole_fingerprint_local() -> str: function ensure_goby_fingerprint_local (line 85) | def ensure_goby_fingerprint_local() -> str: function ensure_wappalyzer_fingerprint_local (line 138) | def ensure_wappalyzer_fingerprint_local() -> str: function get_fingerprint_paths (line 191) | def get_fingerprint_paths(lib_names: list) -> dict: function ensure_fingers_fingerprint_local (line 227) | def ensure_fingers_fingerprint_local() -> str: function ensure_fingerprinthub_fingerprint_local (line 279) | def ensure_fingerprinthub_fingerprint_local() -> str: function ensure_arl_fingerprint_local (line 331) | def ensure_arl_fingerprint_local() -> str: FILE: backend/apps/scan/utils/nuclei_helpers.py function get_local_commit_hash (line 27) | def get_local_commit_hash(local_path: Path) -> Optional[str]: function git_clone (line 51) | def git_clone(repo_url: str, local_path: Path) -> bool: function git_fetch_and_checkout (line 75) | def git_fetch_and_checkout(local_path: Path, commit_hash: str) -> bool: function ensure_nuclei_templates_local (line 122) | def ensure_nuclei_templates_local(repo_name: str) -> str: FILE: backend/apps/scan/utils/performance.py function _get_system_stats (line 37) | def _get_system_stats() -> dict: class FlowPerformanceMetrics (line 62) | class FlowPerformanceMetrics: class FlowPerformanceTracker (line 90) | class FlowPerformanceTracker: method __init__ (line 106) | def __init__(self, flow_name: str, scan_id: int): method start (line 115) | def start( method _sample_loop (line 153) | def _sample_loop(self) -> None: method finish (line 186) | def finish( function _get_process_stats (line 251) | def _get_process_stats(pid: int) -> dict: class CommandPerformanceTracker (line 309) | class CommandPerformanceTracker: method __init__ (line 326) | def __init__(self, tool_name: str, command: str = ""): method start (line 340) | def start(self) -> None: method set_pid (line 360) | def set_pid(self, pid: int) -> None: method sample (line 384) | def sample(self) -> dict: method finish (line 406) | def finish( FILE: backend/apps/scan/utils/system_load.py function _get_current_load (line 23) | def _get_current_load() -> tuple[float, float]: function wait_for_system_load (line 28) | def wait_for_system_load( function check_system_load (line 58) | def check_system_load( FILE: backend/apps/scan/utils/user_logger.py function user_log (line 32) | def user_log(scan_id: int, stage: str, message: str, level: str = "info"): FILE: backend/apps/scan/utils/wordlist_helpers.py function ensure_wordlist_local (line 23) | def ensure_wordlist_local(wordlist_name: str) -> str: FILE: backend/apps/scan/utils/workspace_utils.py function setup_scan_workspace (line 13) | def setup_scan_workspace(scan_workspace_dir: str) -> Path: function setup_scan_directory (line 40) | def setup_scan_directory(scan_workspace_dir: str, subdir: str) -> Path: function _verify_writable (line 68) | def _verify_writable(path: Path) -> None: FILE: backend/apps/scan/views/scan_log_views.py class ScanLogListView (line 14) | class ScanLogListView(APIView): method get (line 29) | def get(self, request, scan_id: int): FILE: backend/apps/scan/views/scan_views.py class ScanViewSet (line 33) | class ScanViewSet(viewsets.ModelViewSet): method get_queryset (line 41) | def get_queryset(self): method get_serializer_class (line 61) | def get_serializer_class(self): method destroy (line 72) | def destroy(self, request, *args, **kwargs): method quick (line 111) | def quick(self, request): method initiate (line 213) | def initiate(self, request): method bulk_delete (line 326) | def bulk_delete(self, request): method statistics (line 399) | def statistics(self, request): method stop (line 443) | def stop(self, request, pk=None): # pylint: disable=unused-argument FILE: backend/apps/scan/views/scheduled_scan_views.py class ScheduledScanViewSet (line 29) | class ScheduledScanViewSet(viewsets.ModelViewSet): method __init__ (line 53) | def __init__(self, *args, **kwargs): method get_queryset (line 57) | def get_queryset(self): method get_serializer_class (line 70) | def get_serializer_class(self): method create (line 80) | def create(self, request, *args, **kwargs): method update (line 112) | def update(self, request, *args, **kwargs): method destroy (line 150) | def destroy(self, request, *args, **kwargs): method toggle (line 165) | def toggle(self, request, pk=None): FILE: backend/apps/scan/views/subfinder_provider_settings_views.py class SubfinderProviderSettingsView (line 14) | class SubfinderProviderSettingsView(APIView): method get (line 21) | def get(self, request): method put (line 27) | def put(self, request): FILE: backend/apps/targets/apps.py class TargetsConfig (line 4) | class TargetsConfig(AppConfig): FILE: backend/apps/targets/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: backend/apps/targets/models.py class SoftDeleteManager (line 5) | class SoftDeleteManager(models.Manager): method get_queryset (line 8) | def get_queryset(self): class Organization (line 12) | class Organization(models.Model): class Meta (line 34) | class Meta: method __str__ (line 53) | def __str__(self): class Target (line 57) | class Target(models.Model): class TargetType (line 65) | class TargetType(models.TextChoices): class Meta (line 93) | class Meta: method __str__ (line 114) | def __str__(self): FILE: backend/apps/targets/repositories/django_organization_repository.py class DjangoOrganizationRepository (line 20) | class DjangoOrganizationRepository: method bulk_add_targets (line 23) | def bulk_add_targets(self, organization_id: int, targets: List[Target]... method get_by_id (line 63) | def get_by_id(self, organization_id: int) -> Organization | None: method get_names_by_ids (line 79) | def get_names_by_ids(self, organization_ids: List[int]) -> List[Tuple[... method soft_delete_by_ids (line 95) | def soft_delete_by_ids(self, organization_ids: List[int]) -> int: method get_targets (line 130) | def get_targets(self, organization_id: int) -> List[Target]: method get_all (line 145) | def get_all(self): method get_all_with_stats (line 154) | def get_all_with_stats(self): method get_by_ids (line 167) | def get_by_ids(self, organization_ids: List[int]) -> List[Organization]: method hard_delete_by_ids (line 179) | def hard_delete_by_ids(self, organization_ids: List[int]) -> Tuple[int... FILE: backend/apps/targets/repositories/django_target_repository.py class DjangoTargetRepository (line 20) | class DjangoTargetRepository: method count_by_ids (line 23) | def count_by_ids(self, target_ids: List[int]) -> int: method get_by_ids (line 37) | def get_by_ids(self, target_ids: List[int]) -> List[Target]: method bulk_create_ignore_conflicts (line 51) | def bulk_create_ignore_conflicts(self, targets: List[Target]) -> None: method get_by_names (line 72) | def get_by_names(self, names: List[str]) -> List[Target]: method get_by_id (line 86) | def get_by_id(self, target_id: int) -> Target | None: method get_names_by_ids (line 102) | def get_names_by_ids(self, target_ids: List[int]) -> List[Tuple[int, s... method soft_delete_by_ids (line 118) | def soft_delete_by_ids(self, target_ids: List[int]) -> int: method get_all (line 152) | def get_all(self): method get_or_create (line 161) | def get_or_create(self, name: str, target_type: str): method hard_delete_by_ids (line 177) | def hard_delete_by_ids(self, target_ids: List[int]) -> Tuple[int, Dict... method update_last_scanned_at (line 235) | def update_last_scanned_at(self, target_id: int, scanned_at) -> bool: FILE: backend/apps/targets/scripts/run_delete_organizations.py function hard_delete_organizations (line 21) | def hard_delete_organizations(organization_ids: list[int]) -> dict: function main (line 55) | def main(): FILE: backend/apps/targets/scripts/run_delete_targets.py function hard_delete_targets (line 21) | def hard_delete_targets(target_ids: list[int]) -> dict: function main (line 55) | def main(): FILE: backend/apps/targets/serializers.py class SimpleOrganizationSerializer (line 10) | class SimpleOrganizationSerializer(serializers.ModelSerializer): class Meta (line 22) | class Meta: class TargetSerializer (line 27) | class TargetSerializer(serializers.ModelSerializer): class Meta (line 44) | class Meta: method create (line 49) | def create(self, validated_data): method update (line 70) | def update(self, instance, validated_data): class TargetDetailSerializer (line 94) | class TargetDetailSerializer(serializers.ModelSerializer): class Meta (line 108) | class Meta: method get_summary (line 113) | def get_summary(self, obj): class OrganizationSerializer (line 172) | class OrganizationSerializer(serializers.ModelSerializer): class Meta (line 177) | class Meta: class BatchCreateTargetSerializer (line 183) | class BatchCreateTargetSerializer(serializers.Serializer): method validate_targets (line 208) | def validate_targets(self, value): FILE: backend/apps/targets/services/organization_service.py class OrganizationService (line 16) | class OrganizationService: method __init__ (line 19) | def __init__(self): method get_organization (line 25) | def get_organization(self, organization_id: int) -> Organization | None: method get_all (line 38) | def get_all(self): method get_all_with_stats (line 47) | def get_all_with_stats(self): method bulk_add_targets (line 58) | def bulk_add_targets(self, organization_id: int, targets: List) -> None: method delete_organizations_two_phase (line 71) | def delete_organizations_two_phase(self, organization_ids: List[int]) ... method soft_delete_organizations (line 129) | def soft_delete_organizations(self, organization_ids: List[int]) -> int: method hard_delete_organizations (line 153) | def hard_delete_organizations(self, organization_ids: List[int]) -> Tu... FILE: backend/apps/targets/services/target_service.py class TargetService (line 18) | class TargetService: method __init__ (line 21) | def __init__(self): method count_existing_ids (line 27) | def count_existing_ids(self, target_ids: List[int]) -> int: method get_target (line 41) | def get_target(self, target_id: int) -> Target | None: method get_by_id (line 53) | def get_by_id(self, target_id: int) -> Target | None: method get_all (line 66) | def get_all(self): method get_targets_by_names (line 75) | def get_targets_by_names(self, names: List[str]) -> List[Target]: method update_last_scanned_at (line 87) | def update_last_scanned_at(self, target_id: int) -> bool: method batch_create_targets (line 102) | def batch_create_targets( method delete_targets_two_phase (line 199) | def delete_targets_two_phase(self, target_ids: List[int]) -> Dict: method soft_delete_targets (line 257) | def soft_delete_targets(self, target_ids: List[int]) -> int: method hard_delete_targets (line 281) | def hard_delete_targets(self, target_ids: List[int]) -> Tuple[int, Dic... FILE: backend/apps/targets/views.py class OrganizationViewSet (line 20) | class OrganizationViewSet(viewsets.ModelViewSet): method __init__ (line 28) | def __init__(self, **kwargs): method get_queryset (line 32) | def get_queryset(self): method targets (line 37) | def targets(self, request, pk=None): method unlink_targets (line 59) | def unlink_targets(self, request, pk=None): method destroy (line 104) | def destroy(self, request, *args, **kwargs): method bulk_delete (line 145) | def bulk_delete(self, request): class TargetViewSet (line 197) | class TargetViewSet(viewsets.ModelViewSet): method __init__ (line 217) | def __init__(self, **kwargs): method get_queryset (line 221) | def get_queryset(self): method get_serializer_class (line 240) | def get_serializer_class(self): method destroy (line 250) | def destroy(self, request, *args, **kwargs): method bulk_delete (line 289) | def bulk_delete(self, request): method batch_create (line 344) | def batch_create(self, request): method blacklist (line 414) | def blacklist(self, request, pk=None): FILE: backend/config/logging_config.py function get_logging_config (line 45) | def get_logging_config(debug: bool = False): FILE: backend/config/settings.py function get_bool_env (line 21) | def get_bool_env(key: str, default: bool = False) -> bool: FILE: backend/manage.py function main (line 7) | def main(): FILE: backend/scripts/generate_test_data_sql.py function generate_fixed_length_url (line 36) | def generate_fixed_length_url(target_name: str, length: int = 245, path_... function generate_fixed_length_text (line 87) | def generate_fixed_length_text(length: int = 300, text_type: str = 'desc... function load_env_file (line 147) | def load_env_file(env_path: str) -> dict: function get_db_config (line 160) | def get_db_config() -> dict: function generate_raw_response_headers (line 183) | def generate_raw_response_headers(headers_dict: dict) -> str: class TestDataGenerator (line 208) | class TestDataGenerator: method __init__ (line 209) | def __init__(self, clear: bool = False): method run (line 214) | def run(self): method clear_data (line 260) | def clear_data(self): method create_workers (line 307) | def create_workers(self) -> list: method create_engines (line 353) | def create_engines(self) -> list: method create_organizations (line 402) | def create_organizations(self) -> list: method create_targets (line 456) | def create_targets(self, org_ids: list) -> list: method create_scans (line 576) | def create_scans(self, target_ids: list, engine_ids: list, worker_ids:... method create_scheduled_scans (line 666) | def create_scheduled_scans(self, org_ids: list, target_ids: list, engi... method create_subdomains (line 767) | def create_subdomains(self, target_ids: list): method create_websites (line 841) | def create_websites(self, target_ids: list) -> list: method create_endpoints (line 949) | def create_endpoints(self, target_ids: list): method create_directories (line 1134) | def create_directories(self, target_ids: list, website_ids: list): method create_host_port_mappings (line 1207) | def create_host_port_mappings(self, target_ids: list): method create_vulnerabilities (line 1276) | def create_vulnerabilities(self, target_ids: list): method create_subdomain_snapshots (line 1389) | def create_subdomain_snapshots(self, scan_ids: list): method create_website_snapshots (line 1451) | def create_website_snapshots(self, scan_ids: list): method create_endpoint_snapshots (line 1528) | def create_endpoint_snapshots(self, scan_ids: list): method create_directory_snapshots (line 1636) | def create_directory_snapshots(self, scan_ids: list): method create_host_port_mapping_snapshots (line 1697) | def create_host_port_mapping_snapshots(self, scan_ids: list): method create_vulnerability_snapshots (line 1743) | def create_vulnerability_snapshots(self, scan_ids: list): method create_ehole_fingerprints (line 1824) | def create_ehole_fingerprints(self): method create_goby_fingerprints (line 1911) | def create_goby_fingerprints(self): method create_wappalyzer_fingerprints (line 1990) | def create_wappalyzer_fingerprints(self): method create_fingers_fingerprints (line 2107) | def create_fingers_fingerprints(self): method create_fingerprinthub_fingerprints (line 2223) | def create_fingerprinthub_fingerprints(self): method create_arl_fingerprints (line 2384) | def create_arl_fingerprints(self): class MillionDataGenerator (line 2473) | class MillionDataGenerator: method __init__ (line 2487) | def __init__(self, clear: bool = False): method run (line 2492) | def run(self): method clear_data (line 2519) | def clear_data(self): method create_targets (line 2538) | def create_targets(self) -> list: method create_subdomains (line 2567) | def create_subdomains(self, target_ids: list): method create_websites (line 2624) | def create_websites(self, target_ids: list): method create_endpoints (line 2677) | def create_endpoints(self, target_ids: list): method create_host_port_mappings (line 2767) | def create_host_port_mappings(self, target_ids: list): method create_vulnerabilities (line 2813) | def create_vulnerabilities(self, target_ids: list): method create_statistics_history (line 2906) | def create_statistics_history(self): method update_asset_statistics (line 2955) | def update_asset_statistics(self): function main (line 3025) | def main(): FILE: frontend/app/[locale]/dashboard/page.tsx function Page (line 11) | function Page() { FILE: frontend/app/[locale]/layout.tsx function generateMetadata (line 35) | async function generateMetadata({ params }: { params: Promise<{ locale: ... function generateStaticParams (line 67) | function generateStaticParams() { type Props (line 71) | interface Props { function LocaleLayout (line 80) | async function LocaleLayout({ FILE: frontend/app/[locale]/login/layout.tsx type Props (line 4) | type Props = { function generateMetadata (line 8) | async function generateMetadata({ params }: Props): Promise { function LoginLayout (line 22) | function LoginLayout({ FILE: frontend/app/[locale]/login/page.tsx function LoginPage (line 20) | function LoginPage() { FILE: frontend/app/[locale]/organization/[id]/page.tsx function OrganizationDetailPage (line 10) | function OrganizationDetailPage({ FILE: frontend/app/[locale]/organization/page.tsx function OrganizationPage (line 13) | function OrganizationPage() { FILE: frontend/app/[locale]/page.tsx function Home (line 4) | function Home() { FILE: frontend/app/[locale]/scan/engine/page.tsx constant FEATURE_LIST (line 31) | const FEATURE_LIST = [ type FeatureKey (line 42) | type FeatureKey = typeof FEATURE_LIST[number]["key"] function parseEngineFeatures (line 45) | function parseEngineFeatures(engine: ScanEngine): Record) { FILE: frontend/components/auth/auth-guard.tsx constant PUBLIC_ROUTES (line 9) | const PUBLIC_ROUTES = ["/login"] constant SKIP_AUTH (line 11) | const SKIP_AUTH = process.env.NEXT_PUBLIC_SKIP_AUTH === 'true' type AuthGuardProps (line 13) | interface AuthGuardProps { function AuthGuard (line 21) | function AuthGuard({ children }: AuthGuardProps) { FILE: frontend/components/auth/auth-layout.tsx constant PUBLIC_ROUTES (line 16) | const PUBLIC_ROUTES = ["/login"] type AuthLayoutProps (line 18) | interface AuthLayoutProps { function isPublicPath (line 26) | function isPublicPath(pathname: string): boolean { function AuthLayout (line 38) | function AuthLayout({ children }: AuthLayoutProps) { FILE: frontend/components/auth/change-password-dialog.tsx type ChangePasswordDialogProps (line 19) | interface ChangePasswordDialogProps { function ChangePasswordDialog (line 24) | function ChangePasswordDialog({ open, onOpenChange }: ChangePasswordDial... FILE: frontend/components/color-theme-switcher.tsx function ColorThemeSwitcher (line 17) | function ColorThemeSwitcher() { FILE: frontend/components/common/bulk-add-urls-dialog.tsx type AssetType (line 25) | type AssetType = 'endpoint' | 'website' | 'directory' type BulkAddUrlsDialogProps (line 27) | interface BulkAddUrlsDialogProps { constant ASSET_TYPE_LABELS (line 37) | const ASSET_TYPE_LABELS: Record = { function getTranslatedFields (line 46) | function getTranslatedFields(t: (key: string) => string): Record = { function ScanOverview (line 96) | function ScanOverview({ scanId }: ScanOverviewProps) { FILE: frontend/components/scan/initiate-scan-dialog.tsx type InitiateScanDialogProps (line 35) | interface InitiateScanDialogProps { function InitiateScanDialog (line 45) | function InitiateScanDialog({ FILE: frontend/components/scan/quick-scan-dialog.tsx type QuickScanDialogProps (line 36) | interface QuickScanDialogProps { function QuickScanDialog (line 40) | function QuickScanDialog({ trigger }: QuickScanDialogProps) { FILE: frontend/components/scan/scan-config-editor.tsx type ScanConfigEditorProps (line 13) | interface ScanConfigEditorProps { function ScanConfigEditor (line 25) | function ScanConfigEditor({ FILE: frontend/components/scan/scan-log-list.tsx type ScanLogListProps (line 7) | interface ScanLogListProps { function formatTime (line 15) | function formatTime(isoString: string): string { function ScanLogList (line 31) | function ScanLogList({ logs, loading }: ScanLogListProps) { FILE: frontend/components/scan/scan-progress-dialog.tsx type StageDetail (line 30) | interface StageDetail { type ScanProgressData (line 41) | interface ScanProgressData { type ScanProgressDialogProps (line 53) | interface ScanProgressDialogProps { constant SCAN_STATUS_STYLES (line 60) | const SCAN_STATUS_STYLES: Record = { function PulsingDot (line 71) | function PulsingDot({ className }: { className?: string }) { function ScanStatusIcon (line 83) | function ScanStatusIcon({ status }: { status: string }) { function ScanStatusBadge (line 103) | function ScanStatusBadge({ status, t }: { status: string; t: (key: strin... function StageStatusIcon (line 116) | function StageStatusIcon({ status }: { status: StageStatus }) { function StageRow (line 134) | function StageRow({ stage, t }: { stage: StageDetail; t: (key: string) =... function ScanProgressDialog (line 190) | function ScanProgressDialog({ function formatDuration (line 295) | function formatDuration(seconds?: number): string | undefined { function formatDateTime (line 307) | function formatDateTime(isoString?: string, locale: string = "zh"): stri... function getStageResultCount (line 326) | function getStageResultCount(stageName: string, summary: ScanRecord["sum... constant STATUS_PRIORITY (line 356) | const STATUS_PRIORITY: Record = { function buildScanProgressData (line 364) | function buildScanProgressData(scan: ScanRecord): ScanProgressData { FILE: frontend/components/scan/scheduled/create-scheduled-scan-dialog.tsx type CreateScheduledScanDialogProps (line 65) | interface CreateScheduledScanDialogProps { type SelectionMode (line 75) | type SelectionMode = "organization" | "target" function CreateScheduledScanDialog (line 77) | function CreateScheduledScanDialog({ FILE: frontend/components/scan/scheduled/edit-scheduled-scan-dialog.tsx type EditScheduledScanDialogProps (line 28) | interface EditScheduledScanDialogProps { function EditScheduledScanDialog (line 35) | function EditScheduledScanDialog({ FILE: frontend/components/scan/scheduled/scheduled-scan-columns.tsx type ScheduledScanTranslations (line 26) | interface ScheduledScanTranslations { type CreateColumnsProps (line 58) | interface CreateColumnsProps { function parseCronExpression (line 69) | function parseCronExpression(cron: string, t: ScheduledScanTranslations)... function ScheduledScanRowActions (line 112) | function ScheduledScanRowActions({ FILE: frontend/components/scan/scheduled/scheduled-scan-data-table.tsx type ScheduledScanDataTableProps (line 13) | interface ScheduledScanDataTableProps { function ScheduledScanDataTable (line 35) | function ScheduledScanDataTable({ FILE: frontend/components/screenshots/screenshots-gallery.tsx constant PAGE_SIZE_OPTIONS (line 29) | const PAGE_SIZE_OPTIONS = [12, 24, 48] type Screenshot (line 31) | interface Screenshot { type ScreenshotsGalleryProps (line 38) | interface ScreenshotsGalleryProps { function ScreenshotsGallery (line 43) | function ScreenshotsGallery({ targetId, scanId }: ScreenshotsGalleryProp... FILE: frontend/components/search/search-page.tsx constant WEBSITE_SEARCH_EXAMPLES (line 26) | const WEBSITE_SEARCH_EXAMPLES = [ constant ENDPOINT_SEARCH_EXAMPLES (line 38) | const ENDPOINT_SEARCH_EXAMPLES = [ constant QUICK_SEARCH_TAGS (line 50) | const QUICK_SEARCH_TAGS = [ constant RECENT_SEARCHES_KEY (line 60) | const RECENT_SEARCHES_KEY = 'xingrin_recent_searches' constant MAX_RECENT_SEARCHES (line 61) | const MAX_RECENT_SEARCHES = 5 function getRecentSearches (line 64) | function getRecentSearches(): string[] { function saveRecentSearch (line 75) | function saveRecentSearch(query: string) { function removeRecentSearch (line 90) | function removeRecentSearch(query: string) { function SearchPage (line 100) | function SearchPage() { FILE: frontend/components/search/search-pagination.tsx type SearchPaginationProps (line 21) | interface SearchPaginationProps { constant DEFAULT_PAGE_SIZE_OPTIONS (line 31) | const DEFAULT_PAGE_SIZE_OPTIONS = [10, 20, 50, 100] function SearchPagination (line 36) | function SearchPagination({ FILE: frontend/components/search/search-result-card.tsx function isWebsiteResult (line 31) | function isWebsiteResult(result: SearchResult): result is WebsiteSearchR... type SearchResultCardProps (line 35) | interface SearchResultCardProps { function getStatusVariant (line 50) | function getStatusVariant(status: number | null): "default" | "secondary... function SearchResultCard (line 58) | function SearchResultCard({ result, onViewVulnerability }: SearchResultC... FILE: frontend/components/search/search-results-table.tsx type SearchResultsTableProps (line 11) | interface SearchResultsTableProps { function SearchResultsTable (line 17) | function SearchResultsTable({ results, assetType }: SearchResultsTablePr... FILE: frontend/components/settings/system-logs/ansi-log-viewer.tsx type AnsiLogViewerProps (line 7) | interface AnsiLogViewerProps { constant LOG_LEVEL_COLORS (line 15) | const LOG_LEVEL_COLORS: Record = { function hasAnsiCodes (line 51) | function hasAnsiCodes(text: string): boolean { function colorizeLogContent (line 57) | function colorizeLogContent(content: string): string { function highlightSearch (line 88) | function highlightSearch(html: string, query: string): string { constant LOG_LEVEL_PATTERNS (line 114) | const LOG_LEVEL_PATTERNS = [ constant NEW_ENTRY_PATTERNS (line 128) | const NEW_ENTRY_PATTERNS = [ function extractLogLevel (line 139) | function extractLogLevel(line: string): string | null { function isNewEntryStart (line 150) | function isNewEntryStart(line: string): boolean { function normalizeLevel (line 155) | function normalizeLevel(l: string): string { function filterByLevel (line 164) | function filterByLevel(content: string, level: LogLevel): string { function AnsiLogViewer (line 192) | function AnsiLogViewer({ content, className, searchQuery = "", logLevel ... FILE: frontend/components/settings/system-logs/log-toolbar.tsx constant LINE_OPTIONS (line 19) | const LINE_OPTIONS = [100, 200, 500, 1000, 5000, 10000] as const type LogLevel (line 21) | type LogLevel = "all" | "DEBUG" | "INFO" | "WARN" | "ERROR" constant LOG_LEVELS (line 22) | const LOG_LEVELS: LogLevel[] = ["all", "DEBUG", "INFO", "WARN", "ERROR"] type LogToolbarProps (line 24) | interface LogToolbarProps { function LogToolbar (line 36) | function LogToolbar({ FILE: frontend/components/settings/system-logs/system-logs-view.tsx constant DEFAULT_FILE (line 15) | const DEFAULT_FILE = "xingrin.log" constant DEFAULT_LINES (line 16) | const DEFAULT_LINES = 500 function SystemLogsView (line 18) | function SystemLogsView() { FILE: frontend/components/settings/workers/deploy-terminal-dialog.tsx type DeployTerminalDialogProps (line 23) | interface DeployTerminalDialogProps { function DeployTerminalDialog (line 45) | function DeployTerminalDialog({ FILE: frontend/components/settings/workers/worker-dialog.tsx type FormValues (line 31) | type FormValues = { type WorkerDialogProps (line 39) | interface WorkerDialogProps { function WorkerDialog (line 45) | function WorkerDialog({ open, onOpenChange, worker }: WorkerDialogProps) { FILE: frontend/components/settings/workers/worker-list.tsx constant STATUS_MAP (line 50) | const STATUS_MAP: Record... function WorkerCardView (line 154) | function WorkerCardView({ function EmptyState (line 243) | function EmptyState({ onAdd, t }: { onAdd: () => void, t: ReturnType { type CreateColumnsProps (line 74) | interface CreateColumnsProps { function TargetNameCell (line 86) | function TargetNameCell({ function TargetRowActions (line 152) | function TargetRowActions({ FILE: frontend/components/target/all-targets-detail-view.tsx function AllTargetsDetailView (line 32) | function AllTargetsDetailView() { FILE: frontend/components/target/target-overview.tsx type TargetOverviewProps (line 31) | interface TargetOverviewProps { function TargetOverview (line 39) | function TargetOverview({ targetId }: TargetOverviewProps) { FILE: frontend/components/target/target-settings.tsx type TargetSettingsProps (line 29) | interface TargetSettingsProps { function TargetSettings (line 37) | function TargetSettings({ targetId }: TargetSettingsProps) { FILE: frontend/components/target/targets-data-table.tsx type TargetsDataTableProps (line 13) | interface TargetsDataTableProps { function TargetsDataTable (line 36) | function TargetsDataTable({ FILE: frontend/components/theme-toggle.tsx function ThemeToggle (line 13) | function ThemeToggle() { FILE: frontend/components/tools/commands/commands-columns.tsx type CommandTranslations (line 22) | interface CommandTranslations { type CreateColumnsProps (line 44) | interface CreateColumnsProps { function createCommandColumns (line 52) | function createCommandColumns({ FILE: frontend/components/tools/commands/commands-data-table.tsx type CommandsDataTableProps (line 9) | interface CommandsDataTableProps { function CommandsDataTable (line 16) | function CommandsDataTable({ FILE: frontend/components/tools/config/add-custom-tool-dialog.tsx type AddCustomToolDialogProps (line 29) | interface AddCustomToolDialogProps { function AddCustomToolDialog (line 39) | function AddCustomToolDialog({ FILE: frontend/components/tools/config/add-tool-dialog.tsx type AddToolDialogProps (line 45) | interface AddToolDialogProps { function generateVersionCommand (line 55) | function generateVersionCommand(toolName: string, installCommand: string... function AddToolDialog (line 78) | function AddToolDialog({ FILE: frontend/components/tools/config/custom-tools-list.tsx function CustomToolsList (line 30) | function CustomToolsList() { FILE: frontend/components/tools/config/opensource-tools-list.tsx function OpensourceToolsList (line 26) | function OpensourceToolsList() { FILE: frontend/components/tools/config/tool-card.tsx type ToolCardProps (line 12) | interface ToolCardProps { function HighlightedDescription (line 24) | function HighlightedDescription({ description }: { description: string }) { function ToolCard (line 32) | function ToolCard({ tool, onCheckUpdate, onEdit, onDelete, isChecking = ... FILE: frontend/components/tools/wordlist-edit-dialog.tsx type WordlistEditDialogProps (line 21) | interface WordlistEditDialogProps { function WordlistEditDialog (line 27) | function WordlistEditDialog({ FILE: frontend/components/tools/wordlist-upload-dialog.tsx type WordlistUploadDialogProps (line 21) | interface WordlistUploadDialogProps { function WordlistUploadDialog (line 25) | function WordlistUploadDialog({ trigger }: WordlistUploadDialogProps) { FILE: frontend/components/ui/alert-dialog.tsx function AlertDialog (line 9) | function AlertDialog({ function AlertDialogTrigger (line 15) | function AlertDialogTrigger({ function AlertDialogPortal (line 23) | function AlertDialogPortal({ function AlertDialogOverlay (line 31) | function AlertDialogOverlay({ function AlertDialogContent (line 47) | function AlertDialogContent({ function AlertDialogHeader (line 66) | function AlertDialogHeader({ function AlertDialogFooter (line 79) | function AlertDialogFooter({ function AlertDialogTitle (line 95) | function AlertDialogTitle({ function AlertDialogDescription (line 108) | function AlertDialogDescription({ function AlertDialogAction (line 121) | function AlertDialogAction({ function AlertDialogCancel (line 133) | function AlertDialogCancel({ FILE: frontend/components/ui/avatar.tsx function Avatar (line 8) | function Avatar({ function AvatarImage (line 24) | function AvatarImage({ function AvatarFallback (line 37) | function AvatarFallback({ FILE: frontend/components/ui/badge.tsx function Badge (line 28) | function Badge({ FILE: frontend/components/ui/button.tsx function Button (line 39) | function Button({ FILE: frontend/components/ui/calendar.tsx function Calendar (line 14) | function Calendar({ function CalendarDayButton (line 178) | function CalendarDayButton({ FILE: frontend/components/ui/card-grid-skeleton.tsx type CardGridSkeletonProps (line 4) | interface CardGridSkeletonProps { function CardGridSkeleton (line 16) | function CardGridSkeleton({ FILE: frontend/components/ui/card.tsx function Card (line 5) | function Card({ className, ...props }: React.ComponentProps<"div">) { function CardHeader (line 18) | function CardHeader({ className, ...props }: React.ComponentProps<"div">) { function CardTitle (line 31) | function CardTitle({ className, ...props }: React.ComponentProps<"div">) { function CardDescription (line 41) | function CardDescription({ className, ...props }: React.ComponentProps<"... function CardAction (line 51) | function CardAction({ className, ...props }: React.ComponentProps<"div">) { function CardContent (line 64) | function CardContent({ className, ...props }: React.ComponentProps<"div"... function CardFooter (line 74) | function CardFooter({ className, ...props }: React.ComponentProps<"div">) { FILE: frontend/components/ui/chart.tsx constant THEMES (line 9) | const THEMES = { light: "", dark: ".dark" } as const type ChartConfig (line 11) | type ChartConfig = { type ChartContextProps (line 21) | type ChartContextProps = { function useChart (line 27) | function useChart() { function ChartContainer (line 37) | function ChartContainer({ function ChartTooltipContent (line 107) | function ChartTooltipContent({ function ChartLegendContent (line 255) | function ChartLegendContent({ function getPayloadConfigFromPayload (line 312) | function getPayloadConfigFromPayload( FILE: frontend/components/ui/checkbox.tsx function Checkbox (line 9) | function Checkbox({ FILE: frontend/components/ui/collapsible.tsx function Collapsible (line 5) | function Collapsible({ function CollapsibleTrigger (line 11) | function CollapsibleTrigger({ function CollapsibleContent (line 22) | function CollapsibleContent({ FILE: frontend/components/ui/command.tsx type CommandDialogProps (line 27) | interface CommandDialogProps extends DialogProps { FILE: frontend/components/ui/confirm-dialog.tsx type ConfirmDialogProps (line 15) | interface ConfirmDialogProps { function ConfirmDialog (line 27) | function ConfirmDialog({ FILE: frontend/components/ui/copyable-popover-content.tsx function CopyablePopoverContent (line 13) | function CopyablePopoverContent({ FILE: frontend/components/ui/data-table-skeleton.tsx type DataTableSkeletonProps (line 4) | interface DataTableSkeletonProps { function DataTableSkeleton (line 19) | function DataTableSkeleton({ FILE: frontend/components/ui/data-table/column-header.tsx type DataTableColumnHeaderProps (line 8) | interface DataTableColumnHeaderProps { function DataTableColumnHeader (line 22) | function DataTableColumnHeader({ FILE: frontend/components/ui/data-table/column-resizer.tsx type ColumnResizerProps (line 6) | interface ColumnResizerProps { function ColumnResizer (line 24) | function ColumnResizer({ header, className }: ColumnResizerProps<... FILE: frontend/components/ui/data-table/expandable-cell.tsx type ExpandableI18n (line 12) | interface ExpandableI18n { function ExpandableI18nProvider (line 28) | function ExpandableI18nProvider({ function useExpandableI18n (line 45) | function useExpandableI18n() { type ExpandableCellProps (line 53) | interface ExpandableCellProps { function ExpandableCell (line 79) | function ExpandableCell({ function ExpandableUrlCell (line 168) | function ExpandableUrlCell(props: Omit) { function ExpandableMonoCell (line 175) | function ExpandableMonoCell(props: Omit) { type BadgeItem (line 183) | interface BadgeItem { type ExpandableBadgeListProps (line 188) | interface ExpandableBadgeListProps { function ExpandableBadgeList (line 212) | function ExpandableBadgeList({ type ExpandableTagListProps (line 272) | interface ExpandableTagListProps { function ExpandableTagList (line 293) | function ExpandableTagList({ FILE: frontend/components/ui/data-table/pagination.tsx type DataTablePaginationProps (line 24) | interface DataTablePaginationProps { constant DEFAULT_PAGE_SIZE_OPTIONS (line 31) | const DEFAULT_PAGE_SIZE_OPTIONS = [10, 20, 50, 100, 200, 500, 1000] function DataTablePagination (line 39) | function DataTablePagination({ FILE: frontend/components/ui/data-table/toolbar.tsx type DataTableToolbarProps (line 12) | interface DataTableToolbarProps { function DataTableToolbar (line 40) | function DataTableToolbar({ FILE: frontend/components/ui/data-table/unified-data-table.tsx function UnifiedDataTable (line 77) | function UnifiedDataTable({ FILE: frontend/components/ui/datetime-picker.tsx type DateTimePickerProps (line 16) | interface DateTimePickerProps { function DateTimePicker (line 24) | function DateTimePicker({ FILE: frontend/components/ui/dialog.tsx function Dialog (line 9) | function Dialog({ function DialogTrigger (line 15) | function DialogTrigger({ function DialogPortal (line 21) | function DialogPortal({ function DialogClose (line 27) | function DialogClose({ function DialogOverlay (line 33) | function DialogOverlay({ function DialogContent (line 49) | function DialogContent({ function DialogHeader (line 83) | function DialogHeader({ className, ...props }: React.ComponentProps<"div... function DialogFooter (line 93) | function DialogFooter({ className, ...props }: React.ComponentProps<"div... function DialogTitle (line 106) | function DialogTitle({ function DialogDescription (line 119) | function DialogDescription({ FILE: frontend/components/ui/drawer.tsx function Drawer (line 8) | function Drawer({ function DrawerTrigger (line 14) | function DrawerTrigger({ function DrawerPortal (line 20) | function DrawerPortal({ function DrawerClose (line 26) | function DrawerClose({ function DrawerOverlay (line 32) | function DrawerOverlay({ function DrawerContent (line 48) | function DrawerContent({ function DrawerHeader (line 75) | function DrawerHeader({ className, ...props }: React.ComponentProps<"div... function DrawerFooter (line 88) | function DrawerFooter({ className, ...props }: React.ComponentProps<"div... function DrawerTitle (line 98) | function DrawerTitle({ function DrawerDescription (line 111) | function DrawerDescription({ FILE: frontend/components/ui/dropdown-menu.tsx function DropdownMenu (line 9) | function DropdownMenu({ function DropdownMenuPortal (line 15) | function DropdownMenuPortal({ function DropdownMenuTrigger (line 23) | function DropdownMenuTrigger({ function DropdownMenuContent (line 34) | function DropdownMenuContent({ function DropdownMenuGroup (line 54) | function DropdownMenuGroup({ function DropdownMenuItem (line 62) | function DropdownMenuItem({ function DropdownMenuCheckboxItem (line 85) | function DropdownMenuCheckboxItem({ function DropdownMenuRadioGroup (line 111) | function DropdownMenuRadioGroup({ function DropdownMenuRadioItem (line 122) | function DropdownMenuRadioItem({ function DropdownMenuLabel (line 146) | function DropdownMenuLabel({ function DropdownMenuSeparator (line 166) | function DropdownMenuSeparator({ function DropdownMenuShortcut (line 179) | function DropdownMenuShortcut({ function DropdownMenuSub (line 195) | function DropdownMenuSub({ function DropdownMenuSubTrigger (line 201) | function DropdownMenuSubTrigger({ function DropdownMenuSubContent (line 225) | function DropdownMenuSubContent({ FILE: frontend/components/ui/dropzone.tsx type DropzoneContextType (line 12) | type DropzoneContextType = { type DropzoneProps (line 37) | type DropzoneProps = Omit & { type DropzoneContentProps (line 113) | type DropzoneContentProps = { type DropzoneEmptyStateProps (line 152) | type DropzoneEmptyStateProps = { FILE: frontend/components/ui/field.tsx function FieldSet (line 10) | function FieldSet({ className, ...props }: React.ComponentProps<"fieldse... function FieldLegend (line 24) | function FieldLegend({ function FieldGroup (line 44) | function FieldGroup({ className, ...props }: React.ComponentProps<"div">) { function Field (line 81) | function Field({ function FieldContent (line 97) | function FieldContent({ className, ...props }: React.ComponentProps<"div... function FieldLabel (line 110) | function FieldLabel({ function FieldTitle (line 128) | function FieldTitle({ className, ...props }: React.ComponentProps<"div">) { function FieldDescription (line 141) | function FieldDescription({ className, ...props }: React.ComponentProps<... function FieldSeparator (line 156) | function FieldSeparator({ function FieldError (line 186) | function FieldError({ FILE: frontend/components/ui/form.tsx type FormFieldContextValue (line 21) | type FormFieldContextValue< type FormItemContextValue (line 68) | type FormItemContextValue = { function FormItem (line 76) | function FormItem({ className, ...props }: React.ComponentProps<"div">) { function FormLabel (line 90) | function FormLabel({ function FormControl (line 107) | function FormControl({ ...props }: React.ComponentProps) { function FormDescription (line 125) | function FormDescription({ className, ...props }: React.ComponentProps<"... function FormMessage (line 138) | function FormMessage({ className, ...props }: React.ComponentProps<"p">) { FILE: frontend/components/ui/input.tsx function Input (line 5) | function Input({ className, type, ...props }: React.ComponentProps<"inpu... FILE: frontend/components/ui/label.tsx function Label (line 8) | function Label({ FILE: frontend/components/ui/master-detail-skeleton.tsx type MasterDetailSkeletonProps (line 4) | interface MasterDetailSkeletonProps { function MasterDetailSkeleton (line 17) | function MasterDetailSkeleton({ FILE: frontend/components/ui/progress.tsx function Progress (line 8) | function Progress({ FILE: frontend/components/ui/radio-group.tsx function RadioGroup (line 9) | function RadioGroup({ function RadioGroupItem (line 22) | function RadioGroupItem({ FILE: frontend/components/ui/select.tsx function Select (line 9) | function Select({ function SelectGroup (line 15) | function SelectGroup({ function SelectValue (line 21) | function SelectValue({ function SelectTrigger (line 27) | function SelectTrigger({ function SelectContent (line 53) | function SelectContent({ function SelectLabel (line 88) | function SelectLabel({ function SelectItem (line 101) | function SelectItem({ function SelectSeparator (line 125) | function SelectSeparator({ function SelectScrollUpButton (line 138) | function SelectScrollUpButton({ function SelectScrollDownButton (line 156) | function SelectScrollDownButton({ FILE: frontend/components/ui/separator.tsx function Separator (line 8) | function Separator({ FILE: frontend/components/ui/shadcn-io/banner/index.tsx type BannerContextProps (line 15) | type BannerContextProps = { type BannerProps (line 25) | type BannerProps = HTMLAttributes & { type BannerIconProps (line 67) | type BannerIconProps = HTMLAttributes & { type BannerTitleProps (line 87) | type BannerTitleProps = HTMLAttributes; type BannerActionProps (line 93) | type BannerActionProps = ComponentProps; type BannerCloseProps (line 112) | type BannerCloseProps = ComponentProps; FILE: frontend/components/ui/shadcn-io/status/index.tsx type StatusProps (line 5) | type StatusProps = ComponentProps & { type StatusIndicatorProps (line 25) | type StatusIndicatorProps = HTMLAttributes; type StatusLabelProps (line 53) | type StatusLabelProps = HTMLAttributes; FILE: frontend/components/ui/sheet.tsx function Sheet (line 8) | function Sheet({ ...props }: React.ComponentProps) { function SidebarMenuItem (line 468) | function SidebarMenuItem({ className, ...props }: React.ComponentProps<"... function SidebarMenuButton (line 501) | function SidebarMenuButton({ function SidebarMenuAction (line 551) | function SidebarMenuAction({ function SidebarMenuBadge (line 583) | function SidebarMenuBadge({ function SidebarMenuSkeleton (line 605) | function SidebarMenuSkeleton({ function SidebarMenuSub (line 643) | function SidebarMenuSub({ className, ...props }: React.ComponentProps<"u... function SidebarMenuSubItem (line 658) | function SidebarMenuSubItem({ function SidebarMenuSubButton (line 672) | function SidebarMenuSubButton({ FILE: frontend/components/ui/skeleton.tsx function Skeleton (line 3) | function Skeleton({ className, ...props }: React.ComponentProps<"div">) { FILE: frontend/components/ui/spinner.tsx function Spinner (line 8) | function Spinner({ className, ...props }: React.ComponentProps<"svg">) { FILE: frontend/components/ui/table.tsx function Table (line 7) | function Table({ className, ...props }: React.ComponentProps<"table">) { function TableHeader (line 22) | function TableHeader({ className, ...props }: React.ComponentProps<"thea... function TableBody (line 32) | function TableBody({ className, ...props }: React.ComponentProps<"tbody"... function TableFooter (line 42) | function TableFooter({ className, ...props }: React.ComponentProps<"tfoo... function TableRow (line 55) | function TableRow({ className, ...props }: React.ComponentProps<"tr">) { function TableHead (line 68) | function TableHead({ className, ...props }: React.ComponentProps<"th">) { function TableCell (line 81) | function TableCell({ className, ...props }: React.ComponentProps<"td">) { function TableCaption (line 94) | function TableCaption({ FILE: frontend/components/ui/tabs.tsx function Tabs (line 8) | function Tabs({ type TabsListProps (line 21) | interface TabsListProps extends React.ComponentProps number)) =... function useStep (line 22) | function useStep(maxStep: number): [number, UseStepActions] { FILE: frontend/hooks/use-subdomains.ts function useSubdomain (line 22) | function useSubdomain(id: number) { function useOrganizationSubdomains (line 31) | function useOrganizationSubdomains( function useCreateSubdomain (line 59) | function useCreateSubdomain() { function useDeleteSubdomainFromOrganization (line 92) | function useDeleteSubdomainFromOrganization() { function useBatchDeleteSubdomainsFromOrganization (line 120) | function useBatchDeleteSubdomainsFromOrganization() { function useDeleteSubdomain (line 146) | function useDeleteSubdomain() { function useBatchDeleteSubdomains (line 173) | function useBatchDeleteSubdomains() { function useUpdateSubdomain (line 200) | function useUpdateSubdomain() { function useAllSubdomains (line 225) | function useAllSubdomains( function useTargetSubdomains (line 246) | function useTargetSubdomains( function useScanSubdomains (line 260) | function useScanSubdomains( function useBulkCreateSubdomains (line 274) | function useBulkCreateSubdomains() { FILE: frontend/hooks/use-system-logs.ts function useLogFiles (line 10) | function useLogFiles() { function useSystemLogs (line 21) | function useSystemLogs(options?: { FILE: frontend/hooks/use-targets.ts function useTargets (line 35) | function useTargets( function useTarget (line 103) | function useTarget(id: number, options?: { enabled?: boolean }) { function useCreateTarget (line 114) | function useCreateTarget() { function useUpdateTarget (line 133) | function useUpdateTarget() { function useDeleteTarget (line 154) | function useDeleteTarget() { function useBatchDeleteTargets (line 183) | function useBatchDeleteTargets() { function useBatchCreateTargets (line 202) | function useBatchCreateTargets() { function useTargetOrganizations (line 222) | function useTargetOrganizations(targetId: number, page = 1, pageSize = 1... function useLinkTargetOrganizations (line 233) | function useLinkTargetOrganizations() { function useUnlinkTargetOrganizations (line 254) | function useUnlinkTargetOrganizations() { function useTargetEndpoints (line 275) | function useTargetEndpoints( function useTargetBlacklist (line 312) | function useTargetBlacklist(targetId: number) { function useUpdateTargetBlacklist (line 323) | function useUpdateTargetBlacklist() { FILE: frontend/hooks/use-tools.ts function useTools (line 17) | function useTools(params: GetToolsParams = {}) { function useCreateTool (line 37) | function useCreateTool() { function useUpdateTool (line 63) | function useUpdateTool() { function useDeleteTool (line 90) | function useDeleteTool() { FILE: frontend/hooks/use-version.ts function useVersion (line 4) | function useVersion() { function useCheckUpdate (line 12) | function useCheckUpdate() { FILE: frontend/hooks/use-vulnerabilities.ts function useAllVulnerabilities (line 24) | function useAllVulnerabilities( function useScanVulnerabilities (line 93) | function useScanVulnerabilities( function useTargetVulnerabilities (line 164) | function useTargetVulnerabilities( FILE: frontend/hooks/use-websites.ts function useTargetWebSites (line 82) | function useTargetWebSites( function useScanWebSites (line 96) | function useScanWebSites( function useDeleteWebSite (line 110) | function useDeleteWebSite() { function useBulkDeleteWebSites (line 136) | function useBulkDeleteWebSites() { function useBulkCreateWebsites (line 163) | function useBulkCreateWebsites() { FILE: frontend/hooks/use-wordlists.ts function useWordlists (line 16) | function useWordlists(params?: { page?: number; pageSize?: number }) { function useUploadWordlist (line 27) | function useUploadWordlist() { function useDeleteWordlist (line 49) | function useDeleteWordlist() { function useWordlistContent (line 71) | function useWordlistContent(id: number | null) { function useUpdateWordlistContent (line 80) | function useUpdateWordlistContent() { FILE: frontend/hooks/use-workers.ts function useWorkers (line 23) | function useWorkers(page = 1, pageSize = 10) { function useWorker (line 33) | function useWorker(id: number) { function useCreateWorker (line 44) | function useCreateWorker() { function useUpdateWorker (line 63) | function useUpdateWorker() { function useDeleteWorker (line 84) | function useDeleteWorker() { function useDeployWorker (line 106) | function useDeployWorker() { function useRestartWorker (line 126) | function useRestartWorker() { function useStopWorker (line 146) | function useStopWorker() { FILE: frontend/i18n/config.ts type Locale (line 4) | type Locale = (typeof locales)[number]; FILE: frontend/lib/date-utils.ts function getDateLocale (line 9) | function getDateLocale(locale: string): string { function formatDateByLocale (line 23) | function formatDateByLocale( FILE: frontend/lib/domain-validator.ts type DomainValidationResult (line 9) | interface DomainValidationResult { class DomainValidator (line 14) | class DomainValidator { method validateDomain (line 20) | static validateDomain(domain: string): DomainValidationResult { method validateSubdomain (line 78) | static validateSubdomain(subdomain: string): DomainValidationResult { method validateDomainBatch (line 104) | static validateDomainBatch(domains: string[]): Array = { constant DEFAULT_ERROR_KEY (line 34) | const DEFAULT_ERROR_KEY = 'errors.unknown'; function getErrorI18nKey (line 49) | function getErrorI18nKey(code: string): string { function isKnownErrorCode (line 59) | function isKnownErrorCode(code: string): boolean { function getAllErrorCodes (line 68) | function getAllErrorCodes(): string[] { FILE: frontend/lib/error-handler.ts type ApiError (line 15) | interface ApiError { function handleMutationError (line 28) | function handleMutationError( function handleQueryError (line 51) | function handleQueryError(error: unknown, userMessage: string) { function handleSuccess (line 66) | function handleSuccess( function handleWarning (line 90) | function handleWarning( function isSuccessResponse (line 115) | function isSuccessResponse(response: unknown): boolean { function extractData (line 125) | function extractData(response: unknown, defaultValue: T): T { FILE: frontend/lib/i18n-format.ts function useFormatDate (line 10) | function useFormatDate() { function useFormatRelativeTime (line 62) | function useFormatRelativeTime() { function useFormatNumber (line 78) | function useFormatNumber() { FILE: frontend/lib/response-parser.ts type ApiErrorResponse (line 16) | interface ApiErrorResponse { type ApiResponse (line 29) | type ApiResponse = T | ApiErrorResponse; type LegacyApiResponse (line 34) | interface LegacyApiResponse { function isErrorResponse (line 53) | function isErrorResponse(response: unknown): response is ApiErrorResponse { function isSuccessResponse (line 70) | function isSuccessResponse(response: unknown): boolean { function isLegacyResponse (line 90) | function isLegacyResponse( function isLegacyErrorResponse (line 108) | function isLegacyErrorResponse( function parseResponse (line 132) | function parseResponse(response: unknown): T | null { function getErrorCode (line 173) | function getErrorCode(response: unknown): string | null { function getErrorMessage (line 195) | function getErrorMessage(response: unknown): string | null { type PaginationMeta (line 212) | interface PaginationMeta { function getPaginationMeta (line 225) | function getPaginationMeta(response: unknown): PaginationMeta | null { FILE: frontend/lib/subdomain-validator.ts type SubdomainValidationResult (line 8) | interface SubdomainValidationResult { type ParseResult (line 15) | interface ParseResult { constant SUBDOMAIN_REGEX (line 24) | const SUBDOMAIN_REGEX = /^(?!-)[a-zA-Z0-9-]{1,63}(? { function isISODateString (line 69) | function isISODateString(value: string): boolean { function formatDateForMeasurement (line 77) | function formatDateForMeasurement(dateString: string, locale: string): s... function calculateColumnWidths (line 93) | function calculateColumnWidths>({ function getInitialColumnSizing (line 171) | function getInitialColumnSizing>( FILE: frontend/lib/target-validator.ts type InputType (line 9) | type InputType = 'url' | 'domain' | 'ip' | 'cidr' type TargetValidationResult (line 11) | interface TargetValidationResult { class TargetValidator (line 18) | class TargetValidator { method validateDomain (line 22) | static validateDomain(domain: string): TargetValidationResult { method validateIPv4 (line 73) | static validateIPv4(ip: string): TargetValidationResult { method validateIPv6 (line 96) | static validateIPv6(ip: string): TargetValidationResult { method validateIP (line 119) | static validateIP(ip: string): TargetValidationResult { method validateCIDR (line 142) | static validateCIDR(cidr: string): TargetValidationResult { method validateTarget (line 186) | static validateTarget(target: string): TargetValidationResult { method validateTargetBatch (line 213) | static validateTargetBatch(targets: string[]): Array; type ToastMessages (line 41) | interface ToastMessages { function useToastMessages (line 121) | function useToastMessages(): ToastMessages { FILE: frontend/lib/url-validator.ts type TargetType (line 8) | type TargetType = 'domain' | 'ip' | 'cidr' type URLValidationResult (line 10) | interface URLValidationResult { type ParseResult (line 18) | interface ParseResult { constant MAX_URL_LENGTH (line 29) | const MAX_URL_LENGTH = 2000 constant URL_PROTOCOL_REGEX (line 32) | const URL_PROTOCOL_REGEX = /^https?:\/\//i class URLValidator (line 34) | class URLValidator { method parse (line 38) | static parse(input: string): string[] { method checkMatch (line 57) | static checkMatch(url: string, targetName: string, targetType: TargetT... method validate (line 85) | static validate(url: string, index: number = 0, targetName?: string, t... method validateBatch (line 155) | static validateBatch(urls: string[], targetName?: string, targetType?:... FILE: frontend/lib/utils.ts function cn (line 4) | function cn(...inputs: ClassValue[]) { function formatDate (line 13) | function formatDate(date: string | Date | null | undefined): string { function formatBytes (line 32) | function formatBytes(bytes: number, decimals = 2): string { FILE: frontend/mock/config.ts constant FORCE_MOCK (line 10) | const FORCE_MOCK = false constant USE_MOCK (line 13) | const USE_MOCK = FORCE_MOCK || process.env.NEXT_PUBLIC_USE_MOCK === 'true' constant MOCK_DELAY (line 16) | const MOCK_DELAY = 300 // ms function mockDelay (line 21) | function mockDelay(ms: number = MOCK_DELAY): Promise { FILE: frontend/mock/data/blacklist.ts type BlacklistResponse (line 9) | interface BlacklistResponse { type UpdateBlacklistRequest (line 13) | interface UpdateBlacklistRequest { function getMockGlobalBlacklist (line 36) | function getMockGlobalBlacklist(): BlacklistResponse { function updateMockGlobalBlacklist (line 45) | function updateMockGlobalBlacklist(data: UpdateBlacklistRequest): Blackl... function getMockTargetBlacklist (line 55) | function getMockTargetBlacklist(targetId: number): BlacklistResponse { function updateMockTargetBlacklist (line 64) | function updateMockTargetBlacklist(targetId: number, data: UpdateBlackli... FILE: frontend/mock/data/dashboard.ts function generateHistoryData (line 39) | function generateHistoryData(days: number): StatisticsHistoryItem[] { function getMockStatisticsHistory (line 68) | function getMockStatisticsHistory(days: number): StatisticsHistoryItem[] { FILE: frontend/mock/data/directories.ts function getMockDirectories (line 150) | function getMockDirectories(params?: { function getMockDirectoryById (line 185) | function getMockDirectoryById(id: number): Directory | undefined { FILE: frontend/mock/data/endpoints.ts function getMockEndpoints (line 221) | function getMockEndpoints(params?: { function getMockEndpointById (line 255) | function getMockEndpointById(id: number): Endpoint | undefined { FILE: frontend/mock/data/engines.ts function getMockEngines (line 72) | function getMockEngines(): ScanEngine[] { function getMockEngineById (line 76) | function getMockEngineById(id: number): ScanEngine | undefined { FILE: frontend/mock/data/fingerprints.ts function getMockEholeFingerprints (line 459) | function getMockEholeFingerprints(params?: { function getMockGobyFingerprints (line 481) | function getMockGobyFingerprints(params?: { function getMockWappalyzerFingerprints (line 503) | function getMockWappalyzerFingerprints(params?: { function getMockFingersFingerprints (line 525) | function getMockFingersFingerprints(params?: { function getMockFingerPrintHubFingerprints (line 547) | function getMockFingerPrintHubFingerprints(params?: { function getMockARLFingerprints (line 569) | function getMockARLFingerprints(params?: { function getMockFingerprintStats (line 591) | function getMockFingerprintStats(): FingerprintStats { FILE: frontend/mock/data/ip-addresses.ts function getMockIPAddresses (line 81) | function getMockIPAddresses(params?: { function getMockIPAddressByIP (line 116) | function getMockIPAddressByIP(ipStr: string): IPAddress | undefined { FILE: frontend/mock/data/notification-settings.ts function getMockNotificationSettings (line 24) | function getMockNotificationSettings(): GetNotificationSettingsResponse { function updateMockNotificationSettings (line 28) | function updateMockNotificationSettings( FILE: frontend/mock/data/notifications.ts function getMockNotifications (line 78) | function getMockNotifications(params?: { function getMockUnreadCount (line 106) | function getMockUnreadCount(): { count: number } { FILE: frontend/mock/data/nuclei-templates.ts function getMockNucleiTemplateTree (line 232) | function getMockNucleiTemplateTree(): NucleiTemplateTreeResponse { function getMockNucleiTemplateContent (line 238) | function getMockNucleiTemplateContent(path: string): NucleiTemplateConte... FILE: frontend/mock/data/organizations.ts function getMockOrganizations (line 113) | function getMockOrganizations(params?: { FILE: frontend/mock/data/scans.ts function getMockScans (line 270) | function getMockScans(params?: { function getMockScanById (line 307) | function getMockScanById(id: number): ScanRecord | undefined { FILE: frontend/mock/data/scheduled-scans.ts function getMockScheduledScans (line 96) | function getMockScheduledScans(params?: { function getMockScheduledScanById (line 130) | function getMockScheduledScanById(id: number): ScheduledScan | undefined { FILE: frontend/mock/data/search.ts function websiteToSearchResult (line 11) | function websiteToSearchResult(website: typeof mockWebsites[0]): Website... function endpointToSearchResult (line 33) | function endpointToSearchResult(endpoint: typeof mockEndpoints[0]): Endp... function parseSearchQuery (line 55) | function parseSearchQuery(query: string): { field: string; operator: str... function matchesConditions (line 73) | function matchesConditions( function getMockSearchResults (line 119) | function getMockSearchResults(params: { FILE: frontend/mock/data/subdomains.ts function getMockSubdomains (line 44) | function getMockSubdomains(params?: { function getMockSubdomainById (line 76) | function getMockSubdomainById(id: number): Subdomain | undefined { FILE: frontend/mock/data/system-logs.ts function getMockLogFiles (line 73) | function getMockLogFiles(): LogFilesResponse { function getMockSystemLogs (line 79) | function getMockSystemLogs(params?: { FILE: frontend/mock/data/targets.ts function getMockTargets (line 149) | function getMockTargets(params?: { function getMockTargetById (line 181) | function getMockTargetById(id: number): TargetDetail | undefined { FILE: frontend/mock/data/tools.ts function getMockTools (line 126) | function getMockTools(params?: { function getMockToolById (line 147) | function getMockToolById(id: number): Tool | undefined { FILE: frontend/mock/data/vulnerabilities.ts function getMockVulnerabilities (line 227) | function getMockVulnerabilities(params?: { function getMockVulnerabilityById (line 273) | function getMockVulnerabilityById(id: number): Vulnerability | undefined { FILE: frontend/mock/data/websites.ts function getMockWebsites (line 210) | function getMockWebsites(params?: { function getMockWebsiteById (line 250) | function getMockWebsiteById(id: number): WebSite | undefined { FILE: frontend/mock/data/wordlists.ts function getMockWordlists (line 92) | function getMockWordlists(params?: { function getMockWordlistById (line 113) | function getMockWordlistById(id: number): Wordlist | undefined { function getMockWordlistContent (line 117) | function getMockWordlistContent(): string { FILE: frontend/mock/data/workers.ts function getMockWorkers (line 62) | function getMockWorkers(page = 1, pageSize = 10): WorkersResponse { function getMockWorkerById (line 76) | function getMockWorkerById(id: number): WorkerNode | undefined { FILE: frontend/next.config.ts method rewrites (line 22) | async rewrites() { FILE: frontend/public/mockServiceWorker.js constant PACKAGE_VERSION (line 10) | const PACKAGE_VERSION = '2.11.6' constant INTEGRITY_CHECKSUM (line 11) | const INTEGRITY_CHECKSUM = '4db4a41e972cec1b64cc569c66952d82' constant IS_MOCKED_RESPONSE (line 12) | const IS_MOCKED_RESPONSE = Symbol('isMockedResponse') function handleRequest (line 124) | async function handleRequest(event, requestId, requestInterceptedAt) { function resolveMainClient (line 177) | async function resolveMainClient(event) { function getResponse (line 211) | async function getResponse(event, client, requestId, requestInterceptedA... function sendToClient (line 288) | function sendToClient(client, message, transferrables = []) { function respondWithMock (line 311) | function respondWithMock(response) { function serializeRequest (line 333) | async function serializeRequest(request) { FILE: frontend/services/api-key-settings.service.ts class ApiKeySettingsService (line 4) | class ApiKeySettingsService { method getSettings (line 5) | static async getSettings(): Promise { method updateSettings (line 10) | static async updateSettings(data: Partial): Promise { function logout (line 30) | async function logout(): Promise { function getMe (line 42) | async function getMe(): Promise { function changePassword (line 54) | async function changePassword(data: ChangePasswordRequest): Promise { method createCommand (line 42) | static async createCommand( method updateCommand (line 55) | static async updateCommand( method deleteCommand (line 69) | static async deleteCommand( method batchDeleteCommands (line 80) | static async batchDeleteCommands( FILE: frontend/services/dashboard.service.ts function getDashboardStats (line 5) | async function getDashboardStats(): Promise { function getAssetStatistics (line 17) | async function getAssetStatistics(): Promise { function getStatisticsHistory (line 29) | async function getStatisticsHistory(days: number = 7): Promise { method bulkCreateDirectories (line 32) | static async bulkCreateDirectories( method exportDirectoriesByTargetId (line 44) | static async exportDirectoriesByTargetId(targetId: number): Promise { FILE: frontend/services/disk.service.ts function getDiskStats (line 4) | async function getDiskStats(): Promise { FILE: frontend/services/endpoint.service.ts type BulkCreateEndpointsResponse (line 14) | interface BulkCreateEndpointsResponse { type BulkDeleteResponse (line 20) | interface BulkDeleteResponse { class EndpointService (line 24) | class EndpointService { method bulkDelete (line 30) | static async bulkDelete(ids: number[]): Promise { method bulkCreateEndpoints (line 42) | static async bulkCreateEndpoints( method getEndpointById (line 58) | static async getEndpointById(id: number): Promise { method getEndpoints (line 74) | static async getEndpoints(params: GetEndpointsRequest): Promise { method batchDeleteEndpoints (line 145) | static async batchDeleteEndpoints(data: BatchDeleteEndpointsRequest): ... method exportEndpointsByTargetId (line 152) | static async exportEndpointsByTargetId(targetId: number): Promise { method exportEndpointsByScanId (line 160) | static async exportEndpointsByScanId(scanId: number): Promise { FILE: frontend/services/engine.service.ts function getEngines (line 12) | async function getEngines(): Promise { function getEngine (line 28) | async function getEngine(id: number): Promise { function createEngine (line 42) | async function createEngine(data: { function updateEngine (line 53) | async function updateEngine( function deleteEngine (line 67) | async function deleteEngine(id: number): Promise { FILE: frontend/services/fingerprint.service.ts type QueryParams (line 20) | interface QueryParams { method getEholeFingerprints (line 32) | async getEholeFingerprints(params: QueryParams = {}): Promise { method createEholeFingerprint (line 48) | async createEholeFingerprint(data: Omit... method deleteEholeFingerprint (line 64) | async deleteEholeFingerprint(id: number): Promise { method batchCreateEholeFingerprints (line 71) | async batchCreateEholeFingerprints(fingerprints: Omit { method bulkDeleteEholeFingerprints (line 91) | async bulkDeleteEholeFingerprints(ids: number[]): Promise { method exportEholeFingerprints (line 107) | async exportEholeFingerprints(): Promise { method getEholeCount (line 117) | async getEholeCount(): Promise { method getGobyFingerprints (line 127) | async getGobyFingerprints(params: QueryParams = {}): Promise { method createGobyFingerprint (line 143) | async createGobyFingerprint(data: Omit):... method deleteGobyFingerprint (line 159) | async deleteGobyFingerprint(id: number): Promise { method importGobyFingerprints (line 166) | async importGobyFingerprints(file: File): Promise { method bulkDeleteGobyFingerprints (line 178) | async bulkDeleteGobyFingerprints(ids: number[]): Promise { method exportGobyFingerprints (line 194) | async exportGobyFingerprints(): Promise { method getGobyCount (line 204) | async getGobyCount(): Promise { method getWappalyzerFingerprints (line 214) | async getWappalyzerFingerprints(params: QueryParams = {}): Promise { method importWappalyzerFingerprints (line 253) | async importWappalyzerFingerprints(file: File): Promise { method exportWappalyzerFingerprints (line 281) | async exportWappalyzerFingerprints(): Promise { method getWappalyzerCount (line 291) | async getWappalyzerCount(): Promise { method getFingersFingerprints (line 301) | async getFingersFingerprints(params: QueryParams = {}): Promise { method createFingersFingerprint (line 317) | async createFingersFingerprint(data: Omit { method importFingersFingerprints (line 340) | async importFingersFingerprints(file: File): Promise { method bulkDeleteFingersFingerprints (line 352) | async bulkDeleteFingersFingerprints(ids: number[]): Promise { method exportFingersFingerprints (line 368) | async exportFingersFingerprints(): Promise { method getFingersCount (line 378) | async getFingersCount(): Promise { method getFingerPrintHubFingerprints (line 388) | async getFingerPrintHubFingerprints(params: QueryParams = {}): Promise { method importFingerPrintHubFingerprints (line 427) | async importFingerPrintHubFingerprints(file: File): Promise { method exportFingerPrintHubFingerprints (line 455) | async exportFingerPrintHubFingerprints(): Promise { method getFingerPrintHubCount (line 465) | async getFingerPrintHubCount(): Promise { method getARLFingerprints (line 475) | async getARLFingerprints(params: QueryParams = {}): Promise { method createARLFingerprint (line 491) | async createARLFingerprint(data: Omit): P... method deleteARLFingerprint (line 507) | async deleteARLFingerprint(id: number): Promise { method importARLFingerprints (line 514) | async importARLFingerprints(file: File): Promise { method bulkDeleteARLFingerprints (line 526) | async bulkDeleteARLFingerprints(ids: number[]): Promise { method exportARLFingerprints (line 542) | async exportARLFingerprints(): Promise { method getARLCount (line 552) | async getARLCount(): Promise { method getStats (line 562) | async getStats(): Promise { FILE: frontend/services/global-blacklist.service.ts type GlobalBlacklistResponse (line 4) | interface GlobalBlacklistResponse { type UpdateGlobalBlacklistRequest (line 8) | interface UpdateGlobalBlacklistRequest { function getGlobalBlacklist (line 15) | async function getGlobalBlacklist(): Promise { function updateGlobalBlacklist (line 27) | async function updateGlobalBlacklist(data: UpdateGlobalBlacklistRequest)... FILE: frontend/services/ip-address.service.ts type BulkDeleteResponse (line 5) | interface BulkDeleteResponse { class IPAddressService (line 9) | class IPAddressService { method bulkDelete (line 15) | static async bulkDelete(ips: string[]): Promise { method getTargetIPAddresses (line 23) | static async getTargetIPAddresses( method getScanIPAddresses (line 37) | static async getScanIPAddresses( method exportIPAddressesByTargetId (line 52) | static async exportIPAddressesByTargetId(targetId: number): Promise { FILE: frontend/services/notification-settings.service.ts class NotificationSettingsService (line 8) | class NotificationSettingsService { method getSettings (line 9) | static async getSettings(): Promise { method updateSettings (line 14) | static async updateSettings( FILE: frontend/services/notification.service.ts class NotificationService (line 14) | class NotificationService { method getNotifications (line 19) | static async getNotifications( method markAllAsRead (line 36) | static async markAllAsRead(): Promise<{ updated: number }> { method getUnreadCount (line 49) | static async getUnreadCount(): Promise<{ count: number }> { FILE: frontend/services/nuclei-git.service.ts class NucleiGitService (line 8) | class NucleiGitService { method getSettings (line 9) | static async getSettings(): Promise { method updateSettings (line 14) | static async updateSettings( FILE: frontend/services/nuclei-repo.api.ts constant BASE_URL (line 7) | const BASE_URL = "/nuclei/repos/" type NucleiRepoResponse (line 9) | interface NucleiRepoResponse { type CreateRepoPayload (line 20) | interface CreateRepoPayload { type UpdateRepoPayload (line 25) | interface UpdateRepoPayload { type TemplateTreeResponse (line 29) | interface TemplateTreeResponse { type TemplateContentResponse (line 43) | interface TemplateContentResponse { type PaginatedResponse (line 50) | interface PaginatedResponse { FILE: frontend/services/nuclei.service.ts function getNucleiTemplateTree (line 10) | async function getNucleiTemplateTree(): Promise { function getNucleiTemplateContent (line 15) | async function getNucleiTemplateContent(path: string): Promise { function saveNucleiTemplate (line 26) | async function saveNucleiTemplate(payload: SaveNucleiTemplatePayload): P... function uploadNucleiTemplate (line 30) | async function uploadNucleiTemplate(payload: UploadNucleiTemplatePayload... FILE: frontend/services/organization.service.ts class OrganizationService (line 6) | class OrganizationService { method getOrganizations (line 17) | static async getOrganizations(params?: { method getOrganizationById (line 38) | static async getOrganizationById(id: string | number): Promise { function initiateScan (line 46) | async function initiateScan(data: InitiateScanRequest): Promise { function bulkDeleteScans (line 74) | async function bulkDeleteScans(ids: number[]): Promise<{ message: string... function stopScan (line 84) | async function stopScan(id: number): Promise<{ message: string; revokedT... type ScanStatistics (line 92) | interface ScanStatistics { function getScanStatistics (line 108) | async function getScanStatistics(): Promise { type ScanLog (line 120) | interface ScanLog { type GetScanLogsResponse (line 130) | interface GetScanLogsResponse { type GetScanLogsParams (line 138) | interface GetScanLogsParams { function getScanLogs (line 149) | async function getScanLogs(scanId: number, params?: GetScanLogsParams): ... FILE: frontend/services/scheduled-scan.service.ts function getScheduledScans (line 13) | async function getScheduledScans(params?: { function getScheduledScan (line 39) | async function getScheduledScan(id: number): Promise { function createScheduledScan (line 53) | async function createScheduledScan(data: CreateScheduledScanRequest): Pr... function updateScheduledScan (line 64) | async function updateScheduledScan(id: number, data: UpdateScheduledScan... function deleteScheduledScan (line 75) | async function deleteScheduledScan(id: number): Promise<{ message: strin... function toggleScheduledScan (line 83) | async function toggleScheduledScan(id: number, isEnabled: boolean): Prom... FILE: frontend/services/screenshot.service.ts type Screenshot (line 4) | interface Screenshot { type ScreenshotSnapshot (line 13) | interface ScreenshotSnapshot { type PaginatedResponse (line 21) | interface PaginatedResponse { type BulkDeleteResponse (line 30) | interface BulkDeleteResponse { class ScreenshotService (line 37) | class ScreenshotService { method getByTarget (line 42) | static async getByTarget( method getImageUrl (line 57) | static getImageUrl(screenshotId: number): string { method getByScan (line 65) | static async getByScan( method getSnapshotImageUrl (line 79) | static getSnapshotImageUrl(scanId: number, snapshotId: number): string { method bulkDelete (line 87) | static async bulkDelete(ids: number[]): Promise { FILE: frontend/services/search.service.ts class SearchService (line 23) | class SearchService { method search (line 28) | static async search(params: SearchParams): Promise { method exportCSV (line 48) | static async exportCSV(query: string, assetType: AssetType): Promise { FILE: frontend/services/system-log.service.ts constant BASE_URL (line 4) | const BASE_URL = "/system/logs" method getLogFiles (line 10) | async getLogFiles(): Promise { method getSystemLogs (line 18) | async getSystemLogs(params?: { file?: string; lines?: number }): Promise... FILE: frontend/services/target.service.ts function getTargets (line 20) | async function getTargets(page = 1, pageSize = 10, search?: string): Pro... function getTargetById (line 38) | async function getTargetById(id: number): Promise { function createTarget (line 52) | async function createTarget(data: CreateTargetRequest): Promise { function updateTarget (line 60) | async function updateTarget(id: number, data: UpdateTargetRequest): Prom... function deleteTarget (line 68) | async function deleteTarget(id: number): Promise<{ function batchDeleteTargets (line 96) | async function batchDeleteTargets( function batchCreateTargets (line 106) | async function batchCreateTargets( function getTargetOrganizations (line 116) | async function getTargetOrganizations(id: number, page = 1, pageSize = 1... function linkTargetOrganizations (line 124) | async function linkTargetOrganizations( function unlinkTargetOrganizations (line 135) | async function unlinkTargetOrganizations( function getTargetEndpoints (line 146) | async function getTargetEndpoints( function getTargetBlacklist (line 165) | async function getTargetBlacklist(id: number): Promise<{ patterns: strin... function updateTargetBlacklist (line 177) | async function updateTargetBlacklist( FILE: frontend/services/tool.service.ts class ToolService (line 4) | class ToolService { method getTools (line 13) | static async getTools(params?: GetToolsParams): Promise { FILE: frontend/services/version.service.ts class VersionService (line 4) | class VersionService { method getVersion (line 5) | static async getVersion(): Promise { method checkUpdate (line 10) | static async checkUpdate(): Promise { FILE: frontend/services/vulnerability.service.ts class VulnerabilityService (line 5) | class VulnerabilityService { method getAllVulnerabilities (line 7) | static async getAllVulnerabilities( method getVulnerabilityById (line 22) | static async getVulnerabilityById(id: number): Promise { method getVulnerabilitiesByScanId (line 28) | static async getVulnerabilitiesByScanId( method getVulnerabilitiesByTargetId (line 40) | static async getVulnerabilitiesByTargetId( FILE: frontend/services/website.service.ts type BulkCreateWebsitesResponse (line 4) | interface BulkCreateWebsitesResponse { type BulkDeleteResponse (line 10) | interface BulkDeleteResponse { class WebsiteService (line 18) | class WebsiteService { method bulkDelete (line 23) | static async bulkDelete(ids: number[]): Promise { method bulkCreateWebsites (line 34) | static async bulkCreateWebsites( method exportWebsitesByTargetId (line 46) | static async exportWebsitesByTargetId(targetId: number): Promise { method exportWebsitesByScanId (line 54) | static async exportWebsitesByScanId(scanId: number): Promise { FILE: frontend/services/wordlist.service.ts function getWordlists (line 7) | async function getWordlists(page = 1, pageSize = 10): Promise { function getWordlistContent (line 45) | async function getWordlistContent(id: number): Promise { function updateWordlistContent (line 51) | async function updateWordlistContent(id: number, content: string): Promi... FILE: frontend/services/worker.service.ts constant BASE_URL (line 14) | const BASE_URL = '/workers' method getWorkers (line 20) | async getWorkers(page = 1, pageSize = 10): Promise { method getWorker (line 34) | async getWorker(id: number): Promise { method createWorker (line 48) | async createWorker(data: CreateWorkerRequest): Promise { method updateWorker (line 62) | async updateWorker(id: number, data: UpdateWorkerRequest): Promise { method deployWorker (line 82) | async deployWorker(id: number): Promise { method restartWorker (line 89) | async restartWorker(id: number): Promise<{ message: string }> { method stopWorker (line 97) | async stopWorker(id: number): Promise<{ message: string }> { FILE: frontend/types/api-key-settings.types.ts type SingleFieldProviderConfig (line 7) | interface SingleFieldProviderConfig { type FofaProviderConfig (line 13) | interface FofaProviderConfig { type CensysProviderConfig (line 20) | interface CensysProviderConfig { type ApiKeySettings (line 27) | interface ApiKeySettings { type ProviderKey (line 39) | type ProviderKey = keyof ApiKeySettings type ProviderConfig (line 42) | type ProviderConfig = FofaProviderConfig | CensysProviderConfig | Single... FILE: frontend/types/api-response.types.ts type ApiErrorResponse (line 13) | interface ApiErrorResponse { type LegacyApiResponse (line 25) | interface LegacyApiResponse { type BatchCreateResponse (line 34) | interface BatchCreateResponse { type PaginatedResponse (line 48) | interface PaginatedResponse { FILE: frontend/types/auth.types.ts type User (line 6) | interface User { type LoginRequest (line 14) | interface LoginRequest { type LoginResponse (line 20) | interface LoginResponse { type MeResponse (line 26) | interface MeResponse { type LogoutResponse (line 32) | interface LogoutResponse { type ChangePasswordRequest (line 37) | interface ChangePasswordRequest { type ChangePasswordResponse (line 43) | interface ChangePasswordResponse { FILE: frontend/types/command.types.ts type Command (line 6) | interface Command { type GetCommandsRequest (line 21) | interface GetCommandsRequest { type GetCommandsResponse (line 30) | interface GetCommandsResponse { type CreateCommandRequest (line 45) | interface CreateCommandRequest { type UpdateCommandRequest (line 56) | interface UpdateCommandRequest { type CommandResponseData (line 66) | interface CommandResponseData { type BatchDeleteCommandsResponseData (line 73) | interface BatchDeleteCommandsResponseData { FILE: frontend/types/common.types.ts type PaginationInfo (line 4) | interface PaginationInfo { type PaginationParams (line 12) | interface PaginationParams { FILE: frontend/types/dashboard.types.ts type DashboardStats (line 1) | interface DashboardStats { type VulnBySeverity (line 11) | interface VulnBySeverity { type AssetStatistics (line 19) | interface AssetStatistics { type StatisticsHistoryItem (line 44) | interface StatisticsHistoryItem { FILE: frontend/types/data-table.types.ts type ColumnMeta (line 9) | interface ColumnMeta { type PaginationState (line 18) | interface PaginationState { type PaginationInfo (line 26) | interface PaginationInfo { type FilterField (line 37) | interface FilterField { type DownloadOption (line 46) | interface DownloadOption { type DeleteConfirmationConfig (line 57) | interface DeleteConfirmationConfig { type UnifiedDataTableProps (line 67) | interface UnifiedDataTableProps { type DataTableToolbarProps (line 148) | interface DataTableToolbarProps { type DataTablePaginationProps (line 171) | interface DataTablePaginationProps { type DataTableColumnHeaderProps (line 182) | interface DataTableColumnHeaderProps { type ColumnResizerProps (line 191) | interface ColumnResizerProps { FILE: frontend/types/directory.types.ts type Directory (line 5) | interface Directory { type DirectoryFilters (line 18) | interface DirectoryFilters { type DirectoryListResponse (line 24) | interface DirectoryListResponse { FILE: frontend/types/disk.types.ts type DiskStats (line 1) | interface DiskStats { FILE: frontend/types/endpoint.types.ts type Endpoint (line 6) | interface Endpoint { type GetEndpointsRequest (line 39) | interface GetEndpointsRequest { type GetEndpointsResponse (line 47) | interface GetEndpointsResponse { type CreateEndpointRequest (line 59) | interface CreateEndpointRequest { type CreateEndpointsResponse (line 73) | interface CreateEndpointsResponse extends BatchCreateResponse { type UpdateEndpointRequest (line 78) | interface UpdateEndpointRequest { type BatchDeleteEndpointsRequest (line 93) | interface BatchDeleteEndpointsRequest { type BatchDeleteEndpointsResponse (line 98) | interface BatchDeleteEndpointsResponse { FILE: frontend/types/engine.types.ts type ScanEngine (line 8) | interface ScanEngine { type CreateEngineRequest (line 17) | interface CreateEngineRequest { type UpdateEngineRequest (line 23) | interface UpdateEngineRequest { FILE: frontend/types/fingerprint.types.ts type EholeFingerprint (line 6) | interface EholeFingerprint { type GobyRule (line 18) | interface GobyRule { type GobyFingerprint (line 25) | interface GobyFingerprint { type WappalyzerFingerprint (line 34) | interface WappalyzerFingerprint { type FingersRule (line 52) | interface FingersRule { type FingersFingerprint (line 68) | interface FingersFingerprint { type FingerPrintHubHttpMatcher (line 80) | interface FingerPrintHubHttpMatcher { type FingerPrintHubMetadata (line 100) | interface FingerPrintHubMetadata { type FingerPrintHubFingerprint (line 109) | interface FingerPrintHubFingerprint { type ARLFingerprint (line 123) | interface ARLFingerprint { type BatchCreateResponse (line 131) | interface BatchCreateResponse { type BulkDeleteResponse (line 137) | interface BulkDeleteResponse { type FingerprintStats (line 142) | interface FingerprintStats { FILE: frontend/types/ip-address.types.ts type Port (line 1) | interface Port { type IPAddress (line 8) | interface IPAddress { type GetIPAddressesParams (line 15) | interface GetIPAddressesParams { type GetIPAddressesResponse (line 21) | interface GetIPAddressesResponse { FILE: frontend/types/notification-settings.types.ts type DiscordSettings (line 1) | interface DiscordSettings { type WeComSettings (line 6) | interface WeComSettings { type NotificationCategory (line 12) | type NotificationCategory = 'scan' | 'vulnerability' | 'asset' | 'system' type NotificationCategories (line 15) | interface NotificationCategories { type NotificationSettings (line 22) | interface NotificationSettings { type GetNotificationSettingsResponse (line 28) | type GetNotificationSettingsResponse = NotificationSettings type UpdateNotificationSettingsRequest (line 30) | type UpdateNotificationSettingsRequest = NotificationSettings type UpdateNotificationSettingsResponse (line 32) | interface UpdateNotificationSettingsResponse { FILE: frontend/types/notification.types.ts type NotificationType (line 6) | type NotificationType = "vulnerability" | "scan" | "asset" | "system" type NotificationSeverity (line 9) | type NotificationSeverity = "low" | "medium" | "high" | "critical" type BackendNotificationLevel (line 12) | type BackendNotificationLevel = NotificationSeverity type BackendNotification (line 15) | interface BackendNotification { type Notification (line 30) | interface Notification { type GetNotificationsRequest (line 43) | interface GetNotificationsRequest { type GetNotificationsResponse (line 51) | interface GetNotificationsResponse { FILE: frontend/types/nuclei-git.types.ts type NucleiGitAuthType (line 1) | type NucleiGitAuthType = "none" | "token" type NucleiGitSettings (line 3) | interface NucleiGitSettings { type GetNucleiGitSettingsResponse (line 9) | type GetNucleiGitSettingsResponse = NucleiGitSettings type UpdateNucleiGitSettingsRequest (line 11) | type UpdateNucleiGitSettingsRequest = NucleiGitSettings type UpdateNucleiGitSettingsResponse (line 13) | interface UpdateNucleiGitSettingsResponse { FILE: frontend/types/nuclei.types.ts type NucleiTemplateNodeType (line 1) | type NucleiTemplateNodeType = "folder" | "file" type NucleiTemplateTreeNode (line 3) | interface NucleiTemplateTreeNode { type NucleiTemplateTreeResponse (line 13) | interface NucleiTemplateTreeResponse { type NucleiTemplateContent (line 17) | interface NucleiTemplateContent { type NucleiTemplateScope (line 26) | type NucleiTemplateScope = "custom" | "public" type UploadNucleiTemplatePayload (line 28) | interface UploadNucleiTemplatePayload { type SaveNucleiTemplatePayload (line 33) | interface SaveNucleiTemplatePayload { FILE: frontend/types/organization.types.ts type OrganizationStats (line 5) | interface OrganizationStats { type Organization (line 12) | interface Organization { type OrganizationsResponse (line 31) | interface OrganizationsResponse { type CreateOrganizationRequest (line 52) | interface CreateOrganizationRequest { type UpdateOrganizationRequest (line 58) | interface UpdateOrganizationRequest { type OrganizationDataTableProps (line 64) | interface OrganizationDataTableProps { FILE: frontend/types/psl.d.ts type ParsedDomain (line 2) | interface ParsedDomain { FILE: frontend/types/scan.types.ts type ScanStatus (line 5) | type ScanStatus = "cancelled" | "completed" | "failed" | "initiated" | "... type ScanStage (line 10) | type ScanStage = string type StageStatus (line 15) | type StageStatus = "pending" | "running" | "completed" | "failed" | "can... type StageProgressItem (line 20) | interface StageProgressItem { type StageProgress (line 33) | type StageProgress = Record type ScanRecord (line 35) | interface ScanRecord { type GetScansParams (line 65) | interface GetScansParams { type GetScansResponse (line 73) | interface GetScansResponse { type InitiateScanRequest (line 84) | interface InitiateScanRequest { type QuickScanRequest (line 95) | interface QuickScanRequest { type QuickScanResponse (line 105) | interface QuickScanResponse { type ScanTask (line 123) | interface ScanTask { type InitiateScanResponse (line 136) | interface InitiateScanResponse { FILE: frontend/types/scheduled-scan.types.ts type ScheduledScanStatus (line 6) | type ScheduledScanStatus = "active" | "paused" | "expired" type ScanMode (line 9) | type ScanMode = 'organization' | 'target' type ScheduledScan (line 12) | interface ScheduledScan { type CreateScheduledScanRequest (line 32) | interface CreateScheduledScanRequest { type UpdateScheduledScanRequest (line 44) | interface UpdateScheduledScanRequest { type GetScheduledScansResponse (line 56) | interface GetScheduledScansResponse { FILE: frontend/types/search.types.ts type AssetType (line 2) | type AssetType = 'website' | 'endpoint' type WebsiteSearchResult (line 5) | interface WebsiteSearchResult { type EndpointSearchResult (line 25) | interface EndpointSearchResult { type SearchResult (line 45) | type SearchResult = WebsiteSearchResult | EndpointSearchResult type Vulnerability (line 47) | interface Vulnerability { type SearchState (line 56) | type SearchState = 'initial' | 'searching' | 'results' type SearchResponse (line 59) | interface SearchResponse { type SearchOperator (line 69) | type SearchOperator = '=' | '==' | '!=' type SearchCondition (line 72) | interface SearchCondition { type SearchExpression (line 79) | interface SearchExpression { type SearchParams (line 85) | interface SearchParams { FILE: frontend/types/subdomain.types.ts type Subdomain (line 11) | interface Subdomain { type GetSubdomainsParams (line 18) | interface GetSubdomainsParams extends PaginationParams { type GetSubdomainsResponse (line 23) | interface GetSubdomainsResponse { type GetAllSubdomainsParams (line 33) | interface GetAllSubdomainsParams { type GetAllSubdomainsResponse (line 40) | interface GetAllSubdomainsResponse { type GetSubdomainByIDResponse (line 49) | type GetSubdomainByIDResponse = Subdomain type SubdomainDataTableProps (line 52) | interface SubdomainDataTableProps { type BatchCreateSubdomainsResponse (line 71) | type BatchCreateSubdomainsResponse = BatchCreateResponse FILE: frontend/types/system-log.types.ts type SystemLogResponse (line 1) | interface SystemLogResponse { type LogCategory (line 5) | type LogCategory = 'system' | 'error' | 'performance' | 'container' type LogFile (line 7) | interface LogFile { type LogFilesResponse (line 14) | interface LogFilesResponse { FILE: frontend/types/target.types.ts type TargetType (line 8) | type TargetType = 'domain' | 'ip' | 'cidr' type Target (line 13) | interface Target { type TargetDetail (line 30) | interface TargetDetail extends Target { type TargetsResponse (line 49) | interface TargetsResponse { type CreateTargetRequest (line 64) | interface CreateTargetRequest { type UpdateTargetRequest (line 72) | interface UpdateTargetRequest { type BatchDeleteTargetsRequest (line 80) | interface BatchDeleteTargetsRequest { type BatchDeleteTargetsResponse (line 87) | interface BatchDeleteTargetsResponse { type BatchCreateTargetsRequest (line 95) | interface BatchCreateTargetsRequest { type BatchCreateTargetsResponse (line 106) | interface BatchCreateTargetsResponse { FILE: frontend/types/tool.types.ts type ToolType (line 2) | type ToolType = 'opensource' | 'custom' type Tool (line 6) | interface Tool { type GetToolsResponse (line 42) | interface GetToolsResponse { type CreateToolRequest (line 54) | interface CreateToolRequest { type UpdateToolRequest (line 68) | interface UpdateToolRequest { type GetToolsParams (line 83) | interface GetToolsParams { type ToolFilter (line 89) | type ToolFilter = 'all' | 'default' | 'custom' FILE: frontend/types/version.types.ts type VersionInfo (line 1) | interface VersionInfo { type UpdateCheckResult (line 6) | interface UpdateCheckResult { FILE: frontend/types/vulnerability.types.ts type VulnerabilitySeverity (line 8) | type VulnerabilitySeverity = "critical" | "high" | "medium" | "low" | "i... type VulnerabilityStatus (line 11) | type VulnerabilityStatus = "open" | "in_progress" | "resolved" | "false_... type VulnerabilityRawOutput (line 14) | interface VulnerabilityRawOutput { type Vulnerability (line 52) | interface Vulnerability { type GetVulnerabilitiesParams (line 66) | interface GetVulnerabilitiesParams extends PaginationParams { type GetVulnerabilitiesResponse (line 76) | interface GetVulnerabilitiesResponse { type GetVulnerabilityByIDResponse (line 85) | type GetVulnerabilityByIDResponse = Vulnerability type VulnerabilityDataTableProps (line 88) | interface VulnerabilityDataTableProps { type BatchCreateVulnerabilitiesResponse (line 106) | type BatchCreateVulnerabilitiesResponse = BatchCreateResponse FILE: frontend/types/website.types.ts type WebSite (line 5) | interface WebSite { type Technology (line 25) | interface Technology { type WebSiteFilters (line 32) | interface WebSiteFilters { type WebSiteListResponse (line 40) | interface WebSiteListResponse { FILE: frontend/types/wordlist.types.ts type Wordlist (line 6) | interface Wordlist { type GetWordlistsResponse (line 21) | interface GetWordlistsResponse extends PaginationInfo { FILE: frontend/types/worker.types.ts type WorkerStatus (line 6) | type WorkerStatus = 'pending' | 'deploying' | 'online' | 'offline' | 'up... type WorkerNode (line 9) | interface WorkerNode { type CreateWorkerRequest (line 26) | interface CreateWorkerRequest { type UpdateWorkerRequest (line 35) | interface UpdateWorkerRequest { type WorkersResponse (line 43) | interface WorkersResponse {