This commit is contained in:
parent 06a5a758a3
commit 58fa7d1ee6
19 changed files with 567 additions and 377 deletions

View file

@ -7,11 +7,11 @@ DEBUG = True
class FirewalldService:
def __init__(self):
self.bus = SystemBus()
self.proxy = self.bus.get(
"org.fedoraproject.FirewallD1", "/org/fedoraproject/FirewallD1"
)
self.proxy = self.bus.get("org.fedoraproject.FirewallD1",
"/org/fedoraproject/FirewallD1")
def get_zones(self) -> List[str]:
"""Get list of all zones."""
@ -34,12 +34,16 @@ class FirewalldService:
except Exception as e:
raise Exception(f"Failed to set default zone to {zone}: {str(e)}")
def add_service(self, zone: str, service: str, timeout: Optional[int] = 0) -> None:
def add_service(self,
zone: str,
service: str,
timeout: Optional[int] = 0) -> None:
"""Add a service to a zone."""
try:
self.proxy.addService(zone, service, timeout)
except Exception as e:
raise Exception(f"Failed to add service {service} to zone {zone}: {str(e)}")
raise Exception(
f"Failed to add service {service} to zone {zone}: {str(e)}")
def remove_service(self, zone: str, service: str) -> None:
"""Remove a service from a zone."""
@ -55,20 +59,22 @@ class FirewalldService:
try:
return self.proxy.getServices(zone)
except Exception as e:
raise Exception(f"Failed to get services for zone {zone}: {str(e)}")
raise Exception(
f"Failed to get services for zone {zone}: {str(e)}")
def add_port(
self, zone: str, port: int, protocol: str, timeout: Optional[int] = 0
) -> None:
def add_port(self,
zone: str,
port: int,
protocol: str,
timeout: Optional[int] = 0) -> None:
"""Add a port to a zone."""
try:
if DEBUG:
print(f"Adding port {port}/{protocol} to zone {zone}")
print(f"Timeout: {timeout}")
# Get the zone interface
zone_proxy = self.bus.get(
"org.fedoraproject.FirewallD1", "/org/fedoraproject/FirewallD1"
)
zone_proxy = self.bus.get("org.fedoraproject.FirewallD1",
"/org/fedoraproject/FirewallD1")
zone_iface = zone_proxy["org.fedoraproject.FirewallD1.zone"]
# Convert port to string
port_str = str(port)
@ -105,7 +111,8 @@ class FirewalldService:
try:
self.proxy.addSource(zone, source)
except Exception as e:
raise Exception(f"Failed to add source {source} to zone {zone}: {str(e)}")
raise Exception(
f"Failed to add source {source} to zone {zone}: {str(e)}")
def remove_source(self, zone: str, source: str) -> None:
"""Remove a source from a zone."""
@ -113,8 +120,7 @@ class FirewalldService:
self.proxy.removeSource(zone, source)
except Exception as e:
raise Exception(
f"Failed to remove source {source} from zone {zone}: {str(e)}"
)
f"Failed to remove source {source} from zone {zone}: {str(e)}")
def get_sources(self, zone: str) -> List[str]:
"""Get list of sources in a zone."""
@ -139,4 +145,5 @@ class FirewalldService:
"sources": self.get_sources(zone),
}
except Exception as e:
raise Exception(f"Failed to get zone settings for {zone}: {str(e)}")
raise Exception(
f"Failed to get zone settings for {zone}: {str(e)}")