From 42d7f4131bacd47a6c9643b11c6ddf955774f232 Mon Sep 17 00:00:00 2001 From: Vegard Engen Date: Mon, 14 Apr 2025 12:38:46 +0200 Subject: [PATCH] Support firewall zones --- unifi/firewall_zone.go | 48 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 unifi/firewall_zone.go diff --git a/unifi/firewall_zone.go b/unifi/firewall_zone.go new file mode 100644 index 0000000..07e86c5 --- /dev/null +++ b/unifi/firewall_zone.go @@ -0,0 +1,48 @@ +package unifi + +import ( + "context" + "fmt" +) + +type FirewallZone struct { + ID string `json:"_id,omitempty"` + + // Hidden bool `json:"attr_hidden,omitempty"` + // HiddenID string `json:"attr_hidden_id,omitempty"` + // NoDelete bool `json:"attr_no_delete,omitempty"` + // NoEdit bool `json:"attr_no_edit,omitempty"` + + Name string `json:"name"` + DefaultZone bool `json:"default_zone,omitempty"` + NetworkIDs []string `json:"network_ids,omitempty"` + ZoneKey string `json:"zone_key,omitempty"` + + // Role string `json:"role"` +} + +func (c *Client) ListFirewallZones(ctx context.Context, site string) ([]FirewallZone, error) { + var respBody []FirewallZone + + err := c.do_versioned(ctx, "V2", "GET", fmt.Sprintf("site/%s/firewall/zone", site), nil, &respBody) + if err != nil { + return nil, err + } + + return respBody, nil +} + +func (c *Client) GetFirewallZone(ctx context.Context, site, id string) (*FirewallZone, error) { + firewallzones, err := c.ListFirewallZones(ctx, site) + if err != nil { + return nil, err + } + + for _, z := range firewallzones { + if z.ID == id { + return &z, nil + } + } + + return nil, &NotFoundError{} +}