mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-16 15:26:40 +00:00
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
//go:build darwin && !ios
|
|
|
|
package debug
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"fmt"
|
|
"os/exec"
|
|
"strings"
|
|
"time"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
// addDNSInfo collects and adds DNS configuration information to the archive
|
|
func (g *BundleGenerator) addDNSInfo() error {
|
|
if err := g.addResolvConf(); err != nil {
|
|
log.Errorf("failed to add resolv.conf: %v", err)
|
|
}
|
|
|
|
if err := g.addScutilDNS(); err != nil {
|
|
log.Errorf("failed to add scutil DNS output: %v", err)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (g *BundleGenerator) addScutilDNS() error {
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
defer cancel()
|
|
|
|
cmd := exec.CommandContext(ctx, "scutil", "--dns")
|
|
output, err := cmd.CombinedOutput()
|
|
if err != nil {
|
|
return fmt.Errorf("execute scutil --dns: %w", err)
|
|
}
|
|
|
|
if len(bytes.TrimSpace(output)) == 0 {
|
|
return fmt.Errorf("no scutil DNS output")
|
|
}
|
|
|
|
content := string(output)
|
|
if g.anonymize {
|
|
content = g.anonymizer.AnonymizeString(content)
|
|
}
|
|
|
|
if err := g.addFileToZip(strings.NewReader(content), "scutil_dns.txt"); err != nil {
|
|
return fmt.Errorf("add scutil DNS output to zip: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|