* 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
97 lines
2.1 KiB
Markdown
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)
|
|
}
|
|
``` |