Files
go-unifi/docs/usage_examples.md
Mateusz Filipowicz 637809c663 feat: support Zone-Based Firewalls (#33)
* feat: support Zone-Based Firewalls

* chore: add usage example of zone-based firewall

* chore: add note to readme to support unifi controller v2

* fix: invalid path for reordering firewall zone policies
2025-02-20 18:48:04 +01:00

97 lines
2.1 KiB
Markdown

# Usage Examples
This document demonstrates several common usage scenarios for the UniFi Go SDK client.
## Listing Networks
List all available networks in a given site:
```go
networks, err := c.ListNetwork(ctx, "site-name")
if err != nil {
log.Fatalf("Error listing networks: %v", err)
}
for _, network := range networks {
fmt.Printf("Network: %s\n", network.Name)
}
```
## Creating a User
Create a new user assigned to the first available network:
```go
// Assume networks have been retrieved as shown above
user, err := c.CreateUser(ctx, "site-name", &unifi.User{
Name: "My Network User",
MAC: "00:00:00:00:00:00",
NetworkID: networks[0].ID,
IP: "10.0.21.37",
})
if err != nil {
log.Fatalf("Error creating user: %v", err)
}
fmt.Printf("Created user: %s\n", user.Name)
```
## Updating a Guest Access setting
Update the guest access setting for a network:
```go
setting := &unifi.SettingGuestAccess{
PortalCustomizedBoxColor: "#ff0000",
PortalCustomizedSuccessText: "Welcome to the network!",
PortalCustomized: true,
}
setting, err = c.UpdateSettingGuestAccess(ctx, "site-name", setting)
if err != nil {
log.Fatalf("Error updating guest access setting: %v", err)
}
// Use the updated setting
```
## Create a Firewall Zone
To create firewall zone:
```go
fz, err := c.CreateFirewallZone(ctx, "default", &unifi.FirewallZone{
Name: "my-zone",
NetworkIDs: []string{},
})
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Printf("Firewall Zone created: %v\n", fz)
}
```
Then you can create a firewall zone policy (minimal example):
```go
fzp, err := c.CreateFirewallZonePolicy(ctx, "default", &unifi.FirewallZonePolicy{
Name: "my-zone-policy",
Action: "REJECT",
Enabled: true,
IPVersion: "BOTH",
Source: unifi.FirewallZonePolicySource{
ZoneID: fz.ID,
},
Destination: unifi.FirewallZonePolicyDestination{
ZoneID: fz.ID,
},
Schedule: unifi.FirewallZonePolicySchedule{
Mode: "ALWAYS",
},
})
if err != nil {
fmt.Printf("Error: %v\n", err)
return
} else {
fmt.Printf("Firewall Zone Policy created: %v\n", fzp)
}
```