Do not use the term embedded

This commit is contained in:
Juan Font Alonso 2022-03-05 19:30:30 +01:00
parent df37d1a639
commit b742379627

View file

@ -28,17 +28,18 @@ var (
bootstrapDNS = "derp.tailscale.com" bootstrapDNS = "derp.tailscale.com"
) )
type EmbeddedDERPServer struct { type DERPServer struct {
tailscaleDERP *derp.Server tailscaleDERP *derp.Server
} }
func (h *Headscale) NewEmbeddedDERPServer() (*EmbeddedDERPServer, error) { func (h *Headscale) NewDERPServer() (*DERPServer, error) {
s := derp.NewServer(key.NodePrivate(*h.privateKey), log.Info().Msgf) s := derp.NewServer(key.NodePrivate(*h.privateKey), log.Info().Msgf)
return &EmbeddedDERPServer{s}, nil return &DERPServer{s}, nil
} }
func (h *Headscale) EmbeddedDERPHandler(ctx *gin.Context) { func (h *Headscale) DERPHandler(ctx *gin.Context) {
log.Trace().Caller().Msgf("/derp request from %v", ctx.ClientIP())
up := strings.ToLower(ctx.Request.Header.Get("Upgrade")) up := strings.ToLower(ctx.Request.Header.Get("Upgrade"))
if up != "websocket" && up != "derp" { if up != "websocket" && up != "derp" {
if up != "" { if up != "" {
@ -75,12 +76,12 @@ func (h *Headscale) EmbeddedDERPHandler(ctx *gin.Context) {
pubKey.UntypedHexString()) pubKey.UntypedHexString())
} }
h.EmbeddedDERPServer.tailscaleDERP.Accept(netConn, conn, netConn.RemoteAddr().String()) h.DERPServer.tailscaleDERP.Accept(netConn, conn, netConn.RemoteAddr().String())
} }
// EmbeddedDERPProbeHandler is the endpoint that js/wasm clients hit to measure // DERPProbeHandler is the endpoint that js/wasm clients hit to measure
// DERP latency, since they can't do UDP STUN queries. // DERP latency, since they can't do UDP STUN queries.
func (h *Headscale) EmbeddedDERPProbeHandler(ctx *gin.Context) { func (h *Headscale) DERPProbeHandler(ctx *gin.Context) {
switch ctx.Request.Method { switch ctx.Request.Method {
case "HEAD", "GET": case "HEAD", "GET":
ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*") ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*")
@ -89,7 +90,7 @@ func (h *Headscale) EmbeddedDERPProbeHandler(ctx *gin.Context) {
} }
} }
func (h *Headscale) EmbeddedDERPBootstrapDNSHandler(ctx *gin.Context) { func (h *Headscale) DERPBootstrapDNSHandler(ctx *gin.Context) {
ctx.Header("Content-Type", "application/json") ctx.Header("Content-Type", "application/json")
j, _ := dnsCache.Load().([]byte) j, _ := dnsCache.Load().([]byte)
// Bootstrap DNS requests occur cross-regions, // Bootstrap DNS requests occur cross-regions,
@ -105,7 +106,7 @@ func (h *Headscale) ServeSTUN() {
if err != nil { if err != nil {
log.Fatal().Msgf("failed to open STUN listener: %v", err) log.Fatal().Msgf("failed to open STUN listener: %v", err)
} }
log.Printf("running STUN server on %v", pc.LocalAddr()) log.Trace().Msgf("STUN server started at %s", pc.LocalAddr())
serverSTUNListener(context.Background(), pc.(*net.UDPConn)) serverSTUNListener(context.Background(), pc.(*net.UDPConn))
} }
@ -122,10 +123,11 @@ func serverSTUNListener(ctx context.Context, pc *net.UDPConn) {
if ctx.Err() != nil { if ctx.Err() != nil {
return return
} }
log.Printf("STUN ReadFrom: %v", err) log.Error().Caller().Err(err).Msgf("STUN ReadFrom")
time.Sleep(time.Second) time.Sleep(time.Second)
continue continue
} }
log.Trace().Caller().Msgf("STUN request from %v", ua)
pkt := buf[:n] pkt := buf[:n]
if !stun.Is(pkt) { if !stun.Is(pkt) {
continue continue
@ -164,7 +166,7 @@ func refreshBootstrapDNS() {
for _, name := range names { for _, name := range names {
addrs, err := r.LookupIP(ctx, "ip", name) addrs, err := r.LookupIP(ctx, "ip", name)
if err != nil { if err != nil {
log.Printf("bootstrap DNS lookup %q: %v", name, err) log.Trace().Caller().Err(err).Msgf("bootstrap DNS lookup %q: %v", name)
continue continue
} }
dnsEntries[name] = addrs dnsEntries[name] = addrs