From 9647829ac95191bc20866a19af1b6707e3815791 Mon Sep 17 00:00:00 2001 From: sneak Date: Thu, 8 Jan 2026 04:08:51 -0800 Subject: [PATCH] Support YAML list format for whitelist_hosts config --- internal/config/config.go | 41 ++++++++++++++++++++++++++++----------- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/internal/config/config.go b/internal/config/config.go index 8093e58..da6d8b8 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -147,21 +147,40 @@ func getStringSlice(sc *smartconfig.Config, key string) []string { return nil } - val, err := sc.GetString(key) - if err != nil || val == "" { + val, ok := sc.Get(key) + if !ok || val == nil { return nil } - // Parse comma-separated values - parts := strings.Split(val, ",") - result := make([]string, 0, len(parts)) - - for _, part := range parts { - trimmed := strings.TrimSpace(part) - if trimmed != "" { - result = append(result, trimmed) + // Handle YAML list format + if slice, ok := val.([]interface{}); ok { + result := make([]string, 0, len(slice)) + for _, item := range slice { + if str, ok := item.(string); ok { + trimmed := strings.TrimSpace(str) + if trimmed != "" { + result = append(result, trimmed) + } + } } + + return result } - return result + // Fall back to comma-separated string for backwards compatibility + if str, ok := val.(string); ok && str != "" { + parts := strings.Split(str, ",") + result := make([]string, 0, len(parts)) + + for _, part := range parts { + trimmed := strings.TrimSpace(part) + if trimmed != "" { + result = append(result, trimmed) + } + } + + return result + } + + return nil }