mirror of
https://github.com/qdm12/gluetun.git
synced 2026-05-06 20:10:11 +02:00
11883aa830
- add option `IPV6_CHECK_ADDRESSESES=[2001:4860:4860::8888]:53,[2606:4700:4700::1111]:53` - gluetun needs access to the addresses above through the host firewall, to test ipv6 support before setting up the vpn
59 lines
1.5 KiB
Go
59 lines
1.5 KiB
Go
package settings
|
|
|
|
import (
|
|
"net/netip"
|
|
|
|
"github.com/qdm12/gosettings"
|
|
"github.com/qdm12/gosettings/reader"
|
|
"github.com/qdm12/gotree"
|
|
)
|
|
|
|
// IPv6 contains settings regarding IPv6 configuration.
|
|
type IPv6 struct {
|
|
// CheckAddresses are the TCP ip:port addresses to dial to check if
|
|
// IPv6 is supported, in case a default IPv6 route is found.
|
|
// It defaults to google and cloudflare IPv6 anycast addresses
|
|
// [2001:4860:4860::8888]:53,[2606:4700:4700::1111]:53
|
|
CheckAddresses []netip.AddrPort
|
|
}
|
|
|
|
func (i IPv6) validate() (err error) {
|
|
return nil
|
|
}
|
|
|
|
func (i *IPv6) copy() (copied IPv6) {
|
|
return IPv6{
|
|
CheckAddresses: gosettings.CopySlice(i.CheckAddresses),
|
|
}
|
|
}
|
|
|
|
func (i *IPv6) overrideWith(other IPv6) {
|
|
i.CheckAddresses = gosettings.OverrideWithSlice(i.CheckAddresses, other.CheckAddresses)
|
|
}
|
|
|
|
func (i *IPv6) setDefaults() {
|
|
defaultCheckAddresses := []netip.AddrPort{
|
|
netip.MustParseAddrPort("[2001:4860:4860::8888]:53"),
|
|
netip.MustParseAddrPort("[2606:4700:4700::1111]:53"),
|
|
}
|
|
i.CheckAddresses = gosettings.DefaultSlice(i.CheckAddresses, defaultCheckAddresses)
|
|
}
|
|
|
|
func (i IPv6) String() string {
|
|
return i.toLinesNode().String()
|
|
}
|
|
|
|
func (i IPv6) toLinesNode() (node *gotree.Node) {
|
|
node = gotree.New("IPv6 settings:")
|
|
addrsNode := node.Appendf("Check addresses:")
|
|
for _, addr := range i.CheckAddresses {
|
|
addrsNode.Append(addr.String())
|
|
}
|
|
return node
|
|
}
|
|
|
|
func (i *IPv6) read(r *reader.Reader) (err error) {
|
|
i.CheckAddresses, err = r.CSVNetipAddrPorts("IPV6_CHECK_ADDRESSES")
|
|
return err
|
|
}
|