41 lines
757 B
Go
41 lines
757 B
Go
package app
|
|
|
|
import (
|
|
"os"
|
|
"sort"
|
|
"strings"
|
|
)
|
|
|
|
func readWildcardObservedHostsContent() string {
|
|
data, err := os.ReadFile(lastIPsMapDyn)
|
|
if err != nil {
|
|
return ""
|
|
}
|
|
seen := make(map[string]struct{})
|
|
out := make([]string, 0, 256)
|
|
for _, ln := range strings.Split(string(data), "\n") {
|
|
ln = strings.TrimSpace(ln)
|
|
if ln == "" || strings.HasPrefix(ln, "#") {
|
|
continue
|
|
}
|
|
fields := strings.Fields(ln)
|
|
if len(fields) < 2 {
|
|
continue
|
|
}
|
|
host := strings.TrimSpace(fields[1])
|
|
if host == "" || strings.HasPrefix(host, "[") {
|
|
continue
|
|
}
|
|
if _, ok := seen[host]; ok {
|
|
continue
|
|
}
|
|
seen[host] = struct{}{}
|
|
out = append(out, host)
|
|
}
|
|
sort.Strings(out)
|
|
if len(out) == 0 {
|
|
return ""
|
|
}
|
|
return strings.Join(out, "\n") + "\n"
|
|
}
|