All checks were successful
Build and Deploy MITM Webserver / build (push) Successful in 8s
62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
from pydantic import BaseModel, Field
|
|
from typing import List, Dict, Optional
|
|
|
|
|
|
class Nameservers(BaseModel):
|
|
addresses: List[str] = Field(default_factory=list)
|
|
search: List[str] = Field(default_factory=list)
|
|
|
|
|
|
class EthernetConfig(BaseModel):
|
|
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
|
|
optional: Optional[bool] = None
|
|
|
|
|
|
class BridgeConfig(BaseModel):
|
|
interfaces: List[str] = Field(default_factory=list) # ["eth1", "eth2"]
|
|
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.
|
|
optional: Optional[bool] = None
|
|
|
|
|
|
class NetworkConfig(BaseModel):
|
|
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
|
|
}
|
|
}
|
|
}'''
|