* 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
2.1 KiB
2.1 KiB
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:
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:
// 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:
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:
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):
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)
}