mirror of
https://github.com/yyhuni/xingrin.git
synced 2026-01-31 11:46:16 +08:00
- Add optional limit parameter to AssetSearchService.search() method for controlling result set size - Implement AssetSearchExportView for exporting search results as CSV files with UTF-8 BOM encoding - Add CSV export endpoint at GET /api/assets/search/export/ with configurable MAX_EXPORT_ROWS limit (10000) - Support both website and endpoint asset types with type-specific column mappings in CSV export - Format array fields (tech, matched_gf_patterns) and dates appropriately in exported CSV - Update URL routing to include new search export endpoint - Update views __init__.py to export AssetSearchExportView - Add CSV generation with streaming response for efficient memory usage on large exports - Update frontend search service to support export functionality - Add internationalization strings for export feature in en.json and zh.json - Update smart-filter-input and search-results-table components to support export UI - Update installation and Docker startup scripts for deployment compatibility
33 lines
1.0 KiB
Python
33 lines
1.0 KiB
Python
"""
|
||
Asset 应用 URL 配置
|
||
"""
|
||
|
||
from django.urls import path, include
|
||
from rest_framework.routers import DefaultRouter
|
||
from .views import (
|
||
SubdomainViewSet,
|
||
WebSiteViewSet,
|
||
DirectoryViewSet,
|
||
VulnerabilityViewSet,
|
||
AssetStatisticsViewSet,
|
||
AssetSearchView,
|
||
AssetSearchExportView,
|
||
)
|
||
|
||
# 创建 DRF 路由器
|
||
router = DefaultRouter()
|
||
|
||
# 注册 ViewSet
|
||
# 注意:IPAddress 模型已被重构为 HostPortMapping,相关路由已移除
|
||
router.register(r'subdomains', SubdomainViewSet, basename='subdomain')
|
||
router.register(r'websites', WebSiteViewSet, basename='website')
|
||
router.register(r'directories', DirectoryViewSet, basename='directory')
|
||
router.register(r'vulnerabilities', VulnerabilityViewSet, basename='vulnerability')
|
||
router.register(r'statistics', AssetStatisticsViewSet, basename='asset-statistics')
|
||
|
||
urlpatterns = [
|
||
path('assets/', include(router.urls)),
|
||
path('assets/search/', AssetSearchView.as_view(), name='asset-search'),
|
||
path('assets/search/export/', AssetSearchExportView.as_view(), name='asset-search-export'),
|
||
]
|