Версия 0.0.3
This commit is contained in:
parent
413e9c57be
commit
8c7d0609df
189 changed files with 52063 additions and 2769 deletions
|
|
@ -31,7 +31,9 @@ class SuccessResponse(BaseModel):
|
|||
@router.get(
|
||||
"/zones",
|
||||
response_model=List[str],
|
||||
responses={500: {"model": ErrorResponse}},
|
||||
responses={500: {
|
||||
"model": ErrorResponse
|
||||
}},
|
||||
summary="Get all available zones",
|
||||
)
|
||||
async def get_zones() -> List[str]:
|
||||
|
|
@ -53,7 +55,9 @@ async def get_zones() -> List[str]:
|
|||
@router.get(
|
||||
"/zones/default",
|
||||
response_model=str,
|
||||
responses={500: {"model": ErrorResponse}},
|
||||
responses={500: {
|
||||
"model": ErrorResponse
|
||||
}},
|
||||
summary="Get default zone",
|
||||
)
|
||||
async def get_default_zone() -> str:
|
||||
|
|
@ -75,7 +79,14 @@ async def get_default_zone() -> str:
|
|||
@router.put(
|
||||
"/zones/default/{zone}",
|
||||
response_model=SuccessResponse,
|
||||
responses={404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}},
|
||||
responses={
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
}
|
||||
},
|
||||
summary="Set default zone",
|
||||
)
|
||||
async def set_default_zone(
|
||||
|
|
@ -94,9 +105,8 @@ async def set_default_zone(
|
|||
firewalld.set_default_zone(zone)
|
||||
return SuccessResponse(message=f"Default zone set to {zone}")
|
||||
except ValueError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail=f"Zone '{zone}' not found"
|
||||
)
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Zone '{zone}' not found")
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
|
|
@ -107,10 +117,18 @@ async def set_default_zone(
|
|||
@router.get(
|
||||
"/zones/{zone}",
|
||||
response_model=FirewallZone,
|
||||
responses={404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}},
|
||||
responses={
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
}
|
||||
},
|
||||
summary="Get zone configuration",
|
||||
)
|
||||
async def get_zone(zone: str = Path(..., description="Zone name")) -> FirewallZone:
|
||||
async def get_zone(zone: str = Path(...,
|
||||
description="Zone name")) -> FirewallZone:
|
||||
"""
|
||||
Get detailed configuration for a specific zone.
|
||||
|
||||
|
|
@ -122,16 +140,13 @@ async def get_zone(zone: str = Path(..., description="Zone name")) -> FirewallZo
|
|||
"""
|
||||
try:
|
||||
zone_info = firewalld.get_zone_settings(zone)
|
||||
return FirewallZone(
|
||||
name=zone,
|
||||
target=FirewallTarget.DEFAULT,
|
||||
interfaces=[],
|
||||
**zone_info
|
||||
)
|
||||
return FirewallZone(name=zone,
|
||||
target=FirewallTarget.DEFAULT,
|
||||
interfaces=[],
|
||||
**zone_info)
|
||||
except ValueError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail=f"Zone '{zone}' not found"
|
||||
)
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Zone '{zone}' not found")
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
|
|
@ -142,10 +157,13 @@ async def get_zone(zone: str = Path(..., description="Zone name")) -> FirewallZo
|
|||
@router.get(
|
||||
"/zones/{zone}/services",
|
||||
response_model=List[str],
|
||||
responses={500: {"model": ErrorResponse}},
|
||||
responses={500: {
|
||||
"model": ErrorResponse
|
||||
}},
|
||||
summary="Get services in zone",
|
||||
)
|
||||
async def get_services(zone: str = Path(..., description="Zone name")) -> List[str]:
|
||||
async def get_services(zone: str = Path(...,
|
||||
description="Zone name")) -> List[str]:
|
||||
"""
|
||||
Get all services in a zone.
|
||||
|
||||
|
|
@ -167,7 +185,14 @@ async def get_services(zone: str = Path(..., description="Zone name")) -> List[s
|
|||
@router.post(
|
||||
"/zones/{zone}/services",
|
||||
response_model=SuccessResponse,
|
||||
responses={404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}},
|
||||
responses={
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
}
|
||||
},
|
||||
summary="Add service to zone",
|
||||
)
|
||||
async def add_service(
|
||||
|
|
@ -186,11 +211,11 @@ async def add_service(
|
|||
"""
|
||||
try:
|
||||
firewalld.add_service(zone, rule.name, rule.timeout)
|
||||
return SuccessResponse(message=f"Service {rule.name} added to zone {zone}")
|
||||
return SuccessResponse(
|
||||
message=f"Service {rule.name} added to zone {zone}")
|
||||
except ValueError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail=f"Zone '{zone}' not found"
|
||||
)
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Zone '{zone}' not found")
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
|
|
@ -201,12 +226,19 @@ async def add_service(
|
|||
@router.delete(
|
||||
"/zones/{zone}/services/{service}",
|
||||
response_model=SuccessResponse,
|
||||
responses={404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}},
|
||||
responses={
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
}
|
||||
},
|
||||
summary="Remove service from zone",
|
||||
)
|
||||
async def remove_service(
|
||||
zone: str = Path(..., description="Zone name"),
|
||||
service: str = Path(..., description="Service name"),
|
||||
zone: str = Path(..., description="Zone name"),
|
||||
service: str = Path(..., description="Service name"),
|
||||
) -> SuccessResponse:
|
||||
"""
|
||||
Remove a service from a zone.
|
||||
|
|
@ -220,7 +252,8 @@ async def remove_service(
|
|||
"""
|
||||
try:
|
||||
firewalld.remove_service(zone, service)
|
||||
return SuccessResponse(message=f"Service {service} removed from zone {zone}")
|
||||
return SuccessResponse(
|
||||
message=f"Service {service} removed from zone {zone}")
|
||||
except ValueError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
|
|
@ -236,10 +269,13 @@ async def remove_service(
|
|||
@router.get(
|
||||
"/zones/{zone}/ports",
|
||||
response_model=List[str],
|
||||
responses={500: {"model": ErrorResponse}},
|
||||
responses={500: {
|
||||
"model": ErrorResponse
|
||||
}},
|
||||
summary="Get ports in zone",
|
||||
)
|
||||
async def get_ports(zone: str = Path(..., description="Zone name")) -> List[str]:
|
||||
async def get_ports(zone: str = Path(...,
|
||||
description="Zone name")) -> List[str]:
|
||||
"""
|
||||
Get all ports in a zone.
|
||||
|
||||
|
|
@ -262,9 +298,15 @@ async def get_ports(zone: str = Path(..., description="Zone name")) -> List[str]
|
|||
"/zones/{zone}/ports",
|
||||
response_model=SuccessResponse,
|
||||
responses={
|
||||
400: {"model": ErrorResponse},
|
||||
404: {"model": ErrorResponse},
|
||||
500: {"model": ErrorResponse},
|
||||
400: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
},
|
||||
summary="Add port to zone",
|
||||
)
|
||||
|
|
@ -285,10 +327,11 @@ async def add_port(
|
|||
try:
|
||||
firewalld.add_port(zone, rule.port, rule.protocol.value, rule.timeout)
|
||||
return SuccessResponse(
|
||||
message=f"Port {rule.port}/{rule.protocol.value} added to zone {zone}"
|
||||
)
|
||||
message=
|
||||
f"Port {rule.port}/{rule.protocol.value} added to zone {zone}")
|
||||
except ValueError as e:
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail=str(e))
|
||||
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST,
|
||||
detail=str(e))
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
|
|
@ -299,7 +342,14 @@ async def add_port(
|
|||
@router.delete(
|
||||
"/zones/{zone}/ports",
|
||||
response_model=SuccessResponse,
|
||||
responses={404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}},
|
||||
responses={
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
}
|
||||
},
|
||||
summary="Remove port from zone",
|
||||
)
|
||||
async def remove_port(
|
||||
|
|
@ -319,12 +369,11 @@ async def remove_port(
|
|||
try:
|
||||
firewalld.remove_port(zone, rule.port, rule.protocol.value)
|
||||
return SuccessResponse(
|
||||
message=f"Port {rule.port}/{rule.protocol.value} removed from zone {zone}"
|
||||
)
|
||||
message=
|
||||
f"Port {rule.port}/{rule.protocol.value} removed from zone {zone}")
|
||||
except ValueError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail=f"Zone '{zone}' not found"
|
||||
)
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Zone '{zone}' not found")
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
|
|
@ -335,10 +384,13 @@ async def remove_port(
|
|||
@router.get(
|
||||
"/zones/{zone}/sources",
|
||||
response_model=List[str],
|
||||
responses={500: {"model": ErrorResponse}},
|
||||
responses={500: {
|
||||
"model": ErrorResponse
|
||||
}},
|
||||
summary="Get sources in zone",
|
||||
)
|
||||
async def get_sources(zone: str = Path(..., description="Zone name")) -> List[str]:
|
||||
async def get_sources(zone: str = Path(...,
|
||||
description="Zone name")) -> List[str]:
|
||||
"""
|
||||
Get all sources in a zone.
|
||||
|
||||
|
|
@ -360,7 +412,14 @@ async def get_sources(zone: str = Path(..., description="Zone name")) -> List[st
|
|||
@router.post(
|
||||
"/zones/{zone}/sources",
|
||||
response_model=SuccessResponse,
|
||||
responses={404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}},
|
||||
responses={
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
}
|
||||
},
|
||||
summary="Add source to zone",
|
||||
)
|
||||
async def add_source(
|
||||
|
|
@ -379,11 +438,11 @@ async def add_source(
|
|||
"""
|
||||
try:
|
||||
firewalld.add_source(zone, rule.address)
|
||||
return SuccessResponse(message=f"Source {rule.address} added to zone {zone}")
|
||||
return SuccessResponse(
|
||||
message=f"Source {rule.address} added to zone {zone}")
|
||||
except ValueError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND, detail=f"Zone '{zone}' not found"
|
||||
)
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND,
|
||||
detail=f"Zone '{zone}' not found")
|
||||
except Exception as e:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,
|
||||
|
|
@ -394,7 +453,14 @@ async def add_source(
|
|||
@router.delete(
|
||||
"/zones/{zone}/sources/{source}",
|
||||
response_model=SuccessResponse,
|
||||
responses={404: {"model": ErrorResponse}, 500: {"model": ErrorResponse}},
|
||||
responses={
|
||||
404: {
|
||||
"model": ErrorResponse
|
||||
},
|
||||
500: {
|
||||
"model": ErrorResponse
|
||||
}
|
||||
},
|
||||
summary="Remove source from zone",
|
||||
)
|
||||
async def remove_source(
|
||||
|
|
@ -413,7 +479,8 @@ async def remove_source(
|
|||
"""
|
||||
try:
|
||||
firewalld.remove_source(zone, source)
|
||||
return SuccessResponse(message=f"Source {source} removed from zone {zone}")
|
||||
return SuccessResponse(
|
||||
message=f"Source {source} removed from zone {zone}")
|
||||
except ValueError:
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_404_NOT_FOUND,
|
||||
|
|
@ -429,7 +496,9 @@ async def remove_source(
|
|||
@router.post(
|
||||
"/reload",
|
||||
response_model=SuccessResponse,
|
||||
responses={500: {"model": ErrorResponse}},
|
||||
responses={500: {
|
||||
"model": ErrorResponse
|
||||
}},
|
||||
summary="Reload firewall rules",
|
||||
)
|
||||
async def reload_firewall() -> SuccessResponse:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue