304 lines
6.0 KiB
Python
304 lines
6.0 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: Optional[int] = None
|
|
broadcast: str = "detect"
|
|
options: str = ""
|
|
|
|
|
|
class InterfaceUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
zone_id: Optional[int] = None
|
|
broadcast: Optional[str] = None
|
|
options: Optional[str] = None
|
|
|
|
|
|
class InterfaceOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
name: str
|
|
zone_id: Optional[int]
|
|
broadcast: str
|
|
options: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Policy ---
|
|
class PolicyCreate(BaseModel):
|
|
src_zone_id: Optional[int] = None
|
|
dst_zone_id: Optional[int] = None
|
|
policy: str
|
|
log_level: str = ""
|
|
limit_burst: str = ""
|
|
connlimit_mask: 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
|
|
limit_burst: Optional[str] = None
|
|
connlimit_mask: Optional[str] = None
|
|
comment: Optional[str] = None
|
|
position: Optional[int] = None
|
|
|
|
|
|
class PolicyOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
src_zone_id: Optional[int]
|
|
dst_zone_id: Optional[int]
|
|
policy: str
|
|
log_level: str
|
|
limit_burst: str
|
|
connlimit_mask: 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 = ""
|
|
origdest: str = ""
|
|
rate_limit: str = ""
|
|
user_group: str = ""
|
|
mark: str = ""
|
|
connlimit: str = ""
|
|
time: str = ""
|
|
headers: str = ""
|
|
switch_name: str = ""
|
|
helper: 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
|
|
origdest: Optional[str] = None
|
|
rate_limit: Optional[str] = None
|
|
user_group: Optional[str] = None
|
|
mark: Optional[str] = None
|
|
connlimit: Optional[str] = None
|
|
time: Optional[str] = None
|
|
headers: Optional[str] = None
|
|
switch_name: Optional[str] = None
|
|
helper: 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
|
|
origdest: str
|
|
rate_limit: str
|
|
user_group: str
|
|
mark: str
|
|
connlimit: str
|
|
time: str
|
|
headers: str
|
|
switch_name: str
|
|
helper: str
|
|
comment: str
|
|
position: int
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Snat ---
|
|
class SnatCreate(BaseModel):
|
|
source_network: str
|
|
out_interface: str
|
|
to_address: str = ""
|
|
proto: str = ""
|
|
port: str = ""
|
|
ipsec: str = ""
|
|
mark: str = ""
|
|
user_group: str = ""
|
|
switch_name: str = ""
|
|
origdest: str = ""
|
|
probability: str = ""
|
|
comment: str = ""
|
|
|
|
|
|
class SnatUpdate(BaseModel):
|
|
source_network: Optional[str] = None
|
|
out_interface: Optional[str] = None
|
|
to_address: Optional[str] = None
|
|
proto: Optional[str] = None
|
|
port: Optional[str] = None
|
|
ipsec: Optional[str] = None
|
|
mark: Optional[str] = None
|
|
user_group: Optional[str] = None
|
|
switch_name: Optional[str] = None
|
|
origdest: Optional[str] = None
|
|
probability: Optional[str] = None
|
|
comment: Optional[str] = None
|
|
|
|
|
|
class SnatOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
source_network: str
|
|
out_interface: str
|
|
to_address: str
|
|
proto: str
|
|
port: str
|
|
ipsec: str
|
|
mark: str
|
|
user_group: str
|
|
switch_name: str
|
|
origdest: str
|
|
probability: str
|
|
comment: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Host ---
|
|
class HostCreate(BaseModel):
|
|
zone_id: int
|
|
interface: str
|
|
subnet: str
|
|
options: str = ""
|
|
|
|
|
|
class HostUpdate(BaseModel):
|
|
zone_id: Optional[int] = None
|
|
interface: Optional[str] = None
|
|
subnet: Optional[str] = None
|
|
options: Optional[str] = None
|
|
|
|
|
|
class HostOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
zone_id: int
|
|
interface: str
|
|
subnet: str
|
|
options: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Param ---
|
|
class ParamCreate(BaseModel):
|
|
name: str
|
|
value: str
|
|
|
|
|
|
class ParamUpdate(BaseModel):
|
|
name: Optional[str] = None
|
|
value: Optional[str] = None
|
|
|
|
|
|
class ParamOut(BaseModel):
|
|
id: int
|
|
config_id: int
|
|
name: str
|
|
value: str
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
# --- Generate ---
|
|
class GenerateOut(BaseModel):
|
|
zones: str
|
|
interfaces: str
|
|
policy: str
|
|
rules: str
|
|
snat: str
|
|
hosts: str
|
|
params: str
|