Alert for suspicious traffic pattern
| 85 | last_seen: datetime = field(default_factory=datetime.now) |
| 86 | flags: List[str] = field(default_factory=list) |
| 87 | |
| 88 | def to_dict(self) -> Dict[str, Any]: |
| 89 | d = asdict(self) |
| 90 | d['first_seen'] = self.first_seen.isoformat() |
| 91 | d['last_seen'] = self.last_seen.isoformat() |
| 92 | d['duration_seconds'] = (self.last_seen - self.first_seen).total_seconds() |
| 93 | return d |
| 94 | |
| 95 | |
| 96 | @dataclass |
| 97 | class TrafficAlert: |
| 98 | """Alert for suspicious traffic pattern""" |
| 99 | alert_id: str |
| 100 | level: TrafficAlertLevel |
| 101 | category: str |
| 102 | message: str |
| 103 | src_ip: Optional[str] = None |
| 104 | dst_ip: Optional[str] = None |
| 105 | details: Dict[str, Any] = field(default_factory=dict) |
| 106 | timestamp: datetime = field(default_factory=datetime.now) |
| 107 | acknowledged: bool = False |
| 108 | |
| 109 | def to_dict(self) -> Dict[str, Any]: |
| 110 | return { |
| 111 | 'alert_id': self.alert_id, |
| 112 | 'level': self.level.value, |
| 113 | 'category': self.category, |