package dns import ( "context" "io" "net" "net/http" "github.com/qdm12/gluetun/internal/settings" "github.com/qdm12/golibs/command" "github.com/qdm12/golibs/logging" "github.com/qdm12/golibs/os" ) type Configurator interface { DownloadRootHints(ctx context.Context, puid, pgid int) error DownloadRootKey(ctx context.Context, puid, pgid int) error MakeUnboundConf(ctx context.Context, settings settings.DNS, username string, puid, pgid int) (err error) UseDNSInternally(IP net.IP) UseDNSSystemWide(ip net.IP, keepNameserver bool) error Start(ctx context.Context, logLevel uint8) (stdout io.ReadCloser, waitFn func() error, err error) WaitForUnbound() (err error) Version(ctx context.Context) (version string, err error) } type configurator struct { logger logging.Logger client *http.Client openFile os.OpenFileFunc commander command.Commander lookupIP func(host string) ([]net.IP, error) } func NewConfigurator(logger logging.Logger, httpClient *http.Client, openFile os.OpenFileFunc) Configurator { return &configurator{ logger: logger.WithPrefix("dns configurator: "), client: httpClient, openFile: openFile, commander: command.NewCommander(), lookupIP: net.LookupIP, } }