196 lines
3.6 KiB
Python
196 lines
3.6 KiB
Python
from datetime import datetime
|
|
from typing import Optional
|
|
from pydantic import BaseModel
|
|
|
|
|
|
# --- Auth ---
|
|
class UserOut(BaseModel):
|
|
id: int
|
|
username: str
|
|
email: str
|
|
is_active: bool
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Config ---
|
|
class ConfigCreate(BaseModel):
|
|
name: str
|
|
description: str = ""
|
|
is_active: bool = True
|
|
|
|
|
|
class ConfigUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
class ConfigOut(BaseModel):
|
|
id: int
|
|
name: str
|
|
description: str
|
|
is_active: bool
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
owner_id: int
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Zone ---
|
|
class ZoneCreate(BaseModel):
|
|
name: str
|
|
type: str
|
|
options: str = ""
|
|
|
|
|
|
class ZoneUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
type: Optional[str] = None
|
|
options: Optional[str] = None
|
|
|
|
|
|
class ZoneOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
name: str
|
|
type: str
|
|
options: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Interface ---
|
|
class InterfaceCreate(BaseModel):
|
|
name: str
|
|
zone_id: int
|
|
options: str = ""
|
|
|
|
|
|
class InterfaceUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
zone_id: Optional[int] = None
|
|
options: Optional[str] = None
|
|
|
|
|
|
class InterfaceOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
name: str
|
|
zone_id: int
|
|
options: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Policy ---
|
|
class PolicyCreate(BaseModel):
|
|
src_zone_id: int
|
|
dst_zone_id: int
|
|
policy: str
|
|
log_level: str = ""
|
|
comment: str = ""
|
|
position: int = 0
|
|
|
|
|
|
class PolicyUpdate(BaseModel):
|
|
src_zone_id: Optional[int] = None
|
|
dst_zone_id: Optional[int] = None
|
|
policy: Optional[str] = None
|
|
log_level: Optional[str] = None
|
|
comment: Optional[str] = None
|
|
position: Optional[int] = None
|
|
|
|
|
|
class PolicyOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
src_zone_id: int
|
|
dst_zone_id: int
|
|
policy: str
|
|
log_level: str
|
|
comment: str
|
|
position: int
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Rule ---
|
|
class RuleCreate(BaseModel):
|
|
action: str
|
|
src_zone_id: Optional[int] = None
|
|
dst_zone_id: Optional[int] = None
|
|
src_ip: str = ""
|
|
dst_ip: str = ""
|
|
proto: str = ""
|
|
dport: str = ""
|
|
sport: str = ""
|
|
comment: str = ""
|
|
position: int = 0
|
|
|
|
|
|
class RuleUpdate(BaseModel):
|
|
action: Optional[str] = None
|
|
src_zone_id: Optional[int] = None
|
|
dst_zone_id: Optional[int] = None
|
|
src_ip: Optional[str] = None
|
|
dst_ip: Optional[str] = None
|
|
proto: Optional[str] = None
|
|
dport: Optional[str] = None
|
|
sport: Optional[str] = None
|
|
comment: Optional[str] = None
|
|
position: Optional[int] = None
|
|
|
|
|
|
class RuleOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
action: str
|
|
src_zone_id: Optional[int]
|
|
dst_zone_id: Optional[int]
|
|
src_ip: str
|
|
dst_ip: str
|
|
proto: str
|
|
dport: str
|
|
sport: str
|
|
comment: str
|
|
position: int
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Masq ---
|
|
class MasqCreate(BaseModel):
|
|
source_network: str
|
|
out_interface: str
|
|
to_address: str = ""
|
|
comment: str = ""
|
|
|
|
|
|
class MasqUpdate(BaseModel):
|
|
source_network: Optional[str] = None
|
|
out_interface: Optional[str] = None
|
|
to_address: Optional[str] = None
|
|
comment: Optional[str] = None
|
|
|
|
|
|
class MasqOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
source_network: str
|
|
out_interface: str
|
|
to_address: str
|
|
comment: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Generate ---
|
|
class GenerateOut(BaseModel):
|
|
zones: str
|
|
interfaces: str
|
|
policy: str
|
|
rules: str
|
|
masq: str
|