mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-06 20:10:11 +02:00
hotfix(dns): allow to use plain upstream type with selected builtin providers
This commit is contained in:
@@ -69,19 +69,27 @@ func (d DNS) validate() (err error) {
|
||||
}
|
||||
|
||||
providers := provider.NewProviders()
|
||||
selectedHasPlainIPv4, selectedHasPlainIPv6 := false, false
|
||||
for _, providerName := range d.Providers {
|
||||
_, err := providers.Get(providerName)
|
||||
provider, err := providers.Get(providerName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !selectedHasPlainIPv4 && len(provider.Plain.IPv4) > 0 {
|
||||
selectedHasPlainIPv4 = true
|
||||
}
|
||||
if !selectedHasPlainIPv6 && len(provider.Plain.IPv6) > 0 {
|
||||
selectedHasPlainIPv6 = true
|
||||
}
|
||||
}
|
||||
|
||||
if d.UpstreamType == DNSUpstreamTypePlain {
|
||||
if *d.IPv6 && !slices.ContainsFunc(d.UpstreamPlainAddresses, func(addrPort netip.AddrPort) bool {
|
||||
return addrPort.Addr().Is6()
|
||||
}) {
|
||||
if *d.IPv6 && !selectedHasPlainIPv6 &&
|
||||
!slices.ContainsFunc(d.UpstreamPlainAddresses, func(addrPort netip.AddrPort) bool {
|
||||
return addrPort.Addr().Is6()
|
||||
}) {
|
||||
return fmt.Errorf("%w: in %d addresses", ErrDNSUpstreamPlainNoIPv6, len(d.UpstreamPlainAddresses))
|
||||
} else if !slices.ContainsFunc(d.UpstreamPlainAddresses, func(addrPort netip.AddrPort) bool {
|
||||
} else if !selectedHasPlainIPv4 && !slices.ContainsFunc(d.UpstreamPlainAddresses, func(addrPort netip.AddrPort) bool {
|
||||
return addrPort.Addr().Is4()
|
||||
}) {
|
||||
return fmt.Errorf("%w: in %d addresses", ErrDNSUpstreamPlainNoIPv4, len(d.UpstreamPlainAddresses))
|
||||
|
||||
Reference in New Issue
Block a user