mirror of
https://github.com/speatzle/nfsense.git
synced 2025-05-11 19:08:20 +00:00
37 lines
1 KiB
Go
37 lines
1 KiB
Go
package util
|
|
|
|
import (
|
|
"nfsense.net/nfsense/internal/definitions/object"
|
|
)
|
|
|
|
// ResolveBaseAddresses Resolves all groups to their base Addresses
|
|
func ResolveBaseAddresses(allAddresses map[string]object.Address, addressNames []string) []object.Address {
|
|
baseAddresses := []object.Address{}
|
|
|
|
for _, addressName := range addressNames {
|
|
address := allAddresses[addressName]
|
|
|
|
if address.Type == object.AddressGroup {
|
|
baseAddresses = append(baseAddresses, resolveAddressChildren(allAddresses, address)...)
|
|
} else {
|
|
baseAddresses = append(baseAddresses, address)
|
|
}
|
|
|
|
}
|
|
|
|
return baseAddresses
|
|
}
|
|
|
|
func resolveAddressChildren(allAddresses map[string]object.Address, a object.Address) []object.Address {
|
|
addressList := []object.Address{}
|
|
for _, addressName := range *a.Children {
|
|
address := allAddresses[addressName]
|
|
|
|
if address.Type == object.AddressGroup {
|
|
addressList = append(addressList, resolveAddressChildren(allAddresses, address)...)
|
|
} else {
|
|
addressList = append(addressList, address)
|
|
}
|
|
}
|
|
return addressList
|
|
}
|