nfsense/internal/util/service.go
2023-04-23 19:40:58 +02:00

35 lines
1,023 B
Go

package util
import "nfsense.net/nfsense/internal/definitions/object"
// ResolveBaseServices Resolves all groups to their base Services
func ResolveBaseServices(allServices map[string]object.Service, serviceNames []string) []object.Service {
baseServices := []object.Service{}
for _, serviceName := range serviceNames {
service := allServices[serviceName]
if service.Type == object.ServiceGroup {
baseServices = append(baseServices, resolveServiceChildren(allServices, service)...)
} else {
baseServices = append(baseServices, service)
}
}
return baseServices
}
func resolveServiceChildren(allServices map[string]object.Service, s object.Service) []object.Service {
serviceList := []object.Service{}
for _, serviceName := range *s.Children {
service := allServices[serviceName]
if service.Type == object.ServiceGroup {
serviceList = append(serviceList, resolveServiceChildren(allServices, service)...)
} else {
serviceList = append(serviceList, service)
}
}
return serviceList
}