mirror of
https://github.com/yyhuni/xingrin.git
synced 2026-01-31 19:53:11 +08:00
- Split monolithic models.py into separate model files (scan_models.py, scan_log_model.py, scheduled_scan_model.py, subfinder_provider_settings_model.py) - Split monolithic serializers.py into separate serializer files with dedicated modules for each domain - Add SubfinderProviderSettings model to store API key configurations for subfinder data sources - Create SubfinderProviderConfigService to generate provider configuration files dynamically - Add subfinder_provider_settings views and serializers for API key management - Update subdomain_discovery_flow to support provider configuration file generation and passing to subfinder - Update command templates to use provider config file and remove recursive flag for better source coverage - Add frontend settings page for managing API keys at /settings/api-keys - Add frontend hooks and services for API key settings management - Update sidebar navigation to include API keys settings link - Add internationalization support for new API keys settings UI (English and Chinese) - Improves code maintainability by organizing related models and serializers into logical modules
42 lines
1.1 KiB
Python
42 lines
1.1 KiB
Python
"""扫描日志模型"""
|
|
|
|
from django.db import models
|
|
|
|
|
|
class ScanLog(models.Model):
|
|
"""扫描日志模型"""
|
|
|
|
class Level(models.TextChoices):
|
|
INFO = 'info', 'Info'
|
|
WARNING = 'warning', 'Warning'
|
|
ERROR = 'error', 'Error'
|
|
|
|
id = models.BigAutoField(primary_key=True)
|
|
scan = models.ForeignKey(
|
|
'Scan',
|
|
on_delete=models.CASCADE,
|
|
related_name='logs',
|
|
db_index=True,
|
|
help_text='关联的扫描任务'
|
|
)
|
|
level = models.CharField(
|
|
max_length=10,
|
|
choices=Level.choices,
|
|
default=Level.INFO,
|
|
help_text='日志级别'
|
|
)
|
|
content = models.TextField(help_text='日志内容')
|
|
created_at = models.DateTimeField(auto_now_add=True, db_index=True, help_text='创建时间')
|
|
|
|
class Meta:
|
|
db_table = 'scan_log'
|
|
verbose_name = '扫描日志'
|
|
verbose_name_plural = '扫描日志'
|
|
ordering = ['created_at']
|
|
indexes = [
|
|
models.Index(fields=['scan', 'created_at']),
|
|
]
|
|
|
|
def __str__(self):
|
|
return f"[{self.level}] {self.content[:50]}"
|