file structure and comments unified
Some checks failed
Build and Deploy MITM Webserver / build (push) Failing after 3s
Some checks failed
Build and Deploy MITM Webserver / build (push) Failing after 3s
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}'''
|
||||
|
||||
@@ -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...",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user