file structure and comments unified
Some checks failed
Build and Deploy MITM Webserver / build (push) Failing after 3s

This commit is contained in:
2026-03-06 19:03:26 +01:00
parent 7b9a7d3a4b
commit b60a1d3118
20 changed files with 697 additions and 1823 deletions

View File

@@ -1,13 +1,20 @@
"""Netplan schema models used by bridge/network configuration APIs."""
from typing import Dict, List, Optional
from pydantic import BaseModel, Field
from typing import List, Dict, Optional
class Nameservers(BaseModel):
"""DNS nameserver configuration."""
addresses: List[str] = Field(default_factory=list)
search: List[str] = Field(default_factory=list)
class EthernetConfig(BaseModel):
"""Netplan ethernet interface configuration."""
dhcp4: Optional[bool] = None
dhcp6: Optional[bool] = None
addresses: Optional[List[str]] = None
@@ -18,44 +25,23 @@ class EthernetConfig(BaseModel):
class BridgeConfig(BaseModel):
interfaces: List[str] = Field(default_factory=list) # ["eth1", "eth2"]
"""Netplan bridge configuration."""
interfaces: List[str] = Field(default_factory=list)
dhcp4: Optional[bool] = None
dhcp6: Optional[bool] = None
addresses: Optional[List[str]] = None
gateway4: Optional[str] = None
gateway6: Optional[str] = None
nameservers: Optional[Nameservers] = None
parameters: Optional[dict] = None # allows spanning-tree, port-priority, forward-delay, etc.
parameters: Optional[dict] = None
optional: Optional[bool] = None
class NetworkConfig(BaseModel):
"""Top-level Netplan network object."""
version: int = 2
renderer: Optional[str] = "networkd"
ethernets: Dict[str, EthernetConfig] = Field(default_factory=dict)
bridges: Dict[str, BridgeConfig] = Field(default_factory=dict)
'''Example usage:
{
"version": 2,
"renderer": "networkd",
"ethernets": {
"eth0": {
"dhcp4": false,
"addresses": ["192.168.10.20/24"],
"gateway4": "192.168.10.1",
"nameservers": {
"addresses": ["1.1.1.1", "8.8.8.8"]
}
},
"eth1": {},
"eth2": {}
},
"bridges": {
"br0": {
"interfaces": ["eth1", "eth2"],
"dhcp4": true
}
}
}'''

View File

@@ -1,12 +1,16 @@
# src/models/packet.py
from datetime import datetime
"""Pydantic model for packet rows returned by the backend."""
from pydantic import BaseModel, Field, IPvAnyAddress
from datetime import datetime
from typing import Optional, Union
from pydantic import BaseModel, Field, IPvAnyAddress
class PacketDBModel(BaseModel):
"""Normalized packet representation used across DB and API layers."""
id: Union[int, str]
timestamp: datetime = Field(..., description="ISO timestamp")
timestamp: datetime = Field(..., description="Packet timestamp in ISO format.")
iface: str
src_mac: Optional[str] = None
dst_mac: Optional[str] = None
@@ -18,7 +22,7 @@ class PacketDBModel(BaseModel):
dst_port: Optional[int] = None
vlan_id: Optional[int] = None
length: Optional[int] = None
raw_b64: Optional[str] = Field(None, description="Base64-encoded raw bytes")
raw_b64: Optional[str] = Field(None, description="Base64-encoded packet bytes.")
direction: Optional[str] = None
packets: Optional[int] = None
@@ -40,4 +44,4 @@ class PacketDBModel(BaseModel):
"length": 128,
"raw_b64": "BASE64...",
}
}
}