This commit is contained in:
bluepython508 committed 2026-10-22 12:27:19 +01:00
1 parent 3530afb854
commit 6903fcff27
2146 files changed
+112256 -190703

No files matched your search

+22 -1
View File
@@ -1,4 +1,4 @@
// Copyright (c) Tailscale Inc & AUTHORS
// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause
// Package cloudenv reports which known cloud environment we're running in.
@@ -47,6 +47,7 @@ const (
Azure = Cloud("azure") // Microsoft Azure
GCP = Cloud("gcp") // Google Cloud
DigitalOcean = Cloud("digitalocean") // DigitalOcean
Hetzner = Cloud("hetzner") // Hetzner Cloud
)
// ResolverIP returns the cloud host's recursive DNS server or the
@@ -64,6 +65,8 @@ func (c Cloud) ResolverIP() string {
return AzureResolverIP
case DigitalOcean:
return getDigitalOceanResolver()
case Hetzner:
return getHetznerResolver()
}
return ""
}
@@ -82,6 +85,21 @@ func getDigitalOceanResolver() string {
})
}
var (
// https://docs.hetzner.com/robot/dedicated-server/general-information/recursive-name-servers/
// IPv6 resolvers also exist: 2a01:4ff:ff00::add:1, 2a01:4ff:ff00::add:2.
hetznerResolvers = []string{"185.12.64.1", "185.12.64.2"}
hetznerResolver lazy.SyncValue[string]
)
func getHetznerResolver() string {
// Randomly select one of the available resolvers so we don't overload
// one of them by sending all traffic there.
return hetznerResolver.Get(func() string {
return hetznerResolvers[rand.IntN(len(hetznerResolvers))]
})
}
// HasInternalTLD reports whether c is a cloud environment
// whose ResolverIP serves *.internal records.
func (c Cloud) HasInternalTLD() bool {
@@ -128,6 +146,9 @@ func getCloud() Cloud {
if sysVendor == "DigitalOcean" {
return DigitalOcean
}
if sysVendor == "Hetzner" {
return Hetzner
}
// TODO(andrew): "Vultr" is also valid if we need it
prod := readFileTrimmed("/sys/class/dmi/id/product_name")