Версия 0.0.3

This commit is contained in:
parent 413e9c57be
commit 8c7d0609df
189 changed files with 52063 additions and 2769 deletions

View file

@ -25,42 +25,35 @@ class FirewallZone(BaseModel):
"""Represents a firewalld zone configuration"""
name: Annotated[str, StringConstraints(min_length=1)] = Field(
..., description="Name of the zone"
)
target: Optional[FirewallTarget] = Field(
default=FirewallTarget.DEFAULT, description="Zone target type"
)
services: List[str] = Field(
default_factory=list, description="List of enabled services"
)
ports: List[str] = Field(default_factory=list, description="List of enabled ports")
sources: List[str] = Field(
default_factory=list, description="List of source addresses"
)
interfaces: List[str] = Field(
default_factory=list, description="List of network interfaces"
)
..., description="Name of the zone")
target: Optional[FirewallTarget] = Field(default=FirewallTarget.DEFAULT,
description="Zone target type")
services: List[str] = Field(default_factory=list,
description="List of enabled services")
ports: List[str] = Field(default_factory=list,
description="List of enabled ports")
sources: List[str] = Field(default_factory=list,
description="List of source addresses")
interfaces: List[str] = Field(default_factory=list,
description="List of network interfaces")
class FirewallService(BaseModel):
"""Represents a firewalld service configuration"""
name: Annotated[str, StringConstraints(min_length=1)] = Field(
..., description="Name of the service"
)
ports: List[str] = Field(
default_factory=list, description="List of ports used by the service"
)
..., description="Name of the service")
ports: List[str] = Field(default_factory=list,
description="List of ports used by the service")
protocols: List[str] = Field(
default_factory=list, description="List of protocols used by the service"
)
default_factory=list,
description="List of protocols used by the service")
modules: List[str] = Field(
default_factory=list,
description="List of kernel modules required by the service",
)
timeout: Optional[int] = Field(
default=0, ge=0, description="Timeout in seconds (0 for permanent)"
)
default=0, ge=0, description="Timeout in seconds (0 for permanent)")
class FirewallPort(BaseModel):
@ -69,8 +62,7 @@ class FirewallPort(BaseModel):
port: int = Field(..., ge=1, le=65535, description="Port number (1-65535)")
protocol: Protocol = Field(..., description="Network protocol (tcp/udp)")
timeout: Optional[int] = Field(
default=0, ge=0, description="Timeout in seconds (0 for permanent)"
)
default=0, ge=0, description="Timeout in seconds (0 for permanent)")
def __str__(self) -> str:
return f"{self.port}/{self.protocol.value}"
@ -81,9 +73,11 @@ class FirewallSource(BaseModel):
address: Annotated[
str,
StringConstraints(pattern=r"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(?:/[0-9]{1,2})?$"),
StringConstraints(
pattern=r"^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(?:/[0-9]{1,2})?$"),
] = Field(..., description="IP address or network in CIDR notation")
zone: Optional[str] = Field(default=None, description="Zone name for the source")
zone: Optional[str] = Field(default=None,
description="Zone name for the source")
@field_validator("address")
def validate_ip_address(cls, v):
@ -106,10 +100,10 @@ class FirewallRule(BaseModel):
zone: str = Field(..., description="Zone name")
source: Optional[FirewallSource] = Field(
default=None, description="Source configuration"
)
port: Optional[FirewallPort] = Field(default=None, description="Port configuration")
default=None, description="Source configuration")
port: Optional[FirewallPort] = Field(default=None,
description="Port configuration")
service: Optional[str] = Field(default=None, description="Service name")
timeout: Optional[int] = Field(
default=0, ge=0, description="Rule timeout in seconds"
)
timeout: Optional[int] = Field(default=0,
ge=0,
description="Rule timeout in seconds")