from dataclasses import dataclass from typing import List @dataclass class AddressObject: """Objet adresse""" name: str ip_netmask: str = None description: str = None misc: List[str] = None def __post_init__(self): if self.misc is None: self.misc = [] @dataclass class AddressGroup: """Groupe d'adresses""" name: str members: List[str] description: str = None misc: List[str] = None def __post_init__(self): if self.misc is None: self.misc = [] @dataclass class ServiceObject: """Objet service""" name: str protocol: str = None port: str = None source_port: str = None description: str = None misc: List[str] = None def __post_init__(self): if self.misc is None: self.misc = [] @dataclass class ServiceGroup: """Groupe de services""" name: str members: List[str] description: str = None misc: List[str] = None def __post_init__(self): if self.misc is None: self.misc = [] @dataclass class Interface: """Interface réseau""" name: str ip: str = None netmask: str = None misc: int = None comment: str = None interface_type: str = None enabled: bool = True @dataclass class SecurityRule: """Règle de sécurité""" name: str from_zones: List[str] to_zones: List[str] source_addresses: List[str] destination_addresses: List[str] applications: List[str] services: List[str] action: str description: str = None enabled: bool = True log_setting: str = "default" miscs: List[str] = None @dataclass class StaticRoute: name: str destination: str metric: int next_vr: str = None next_hop_ip: str = None interface: str = None bfd_profile: str = None @dataclass class VirtualRouter: name: str interfaces: List[str] static_routes: List[StaticRoute]