ipn/ipnlocal,tsd: add NoiseRoundTripper to tsd.Sys
Adds a new NoiseRoundTripper field to tsd.Sys to expose an http.RoundTripper to make requests over the control plane Noise connection. This will be used in PAM use cases soon. Updates tailscale/corp#41800 Signed-off-by: Adriano Sela Aviles <adriano@tailscale.com>
This commit is contained in:
committed by
Adriano Sela Aviles
parent
32f984f54c
commit
41286c2b56
@@ -536,6 +536,8 @@ func NewLocalBackend(logf logger.Logf, logID logid.PublicID, sys *tsd.System, lo
|
|||||||
needsCaptiveDetection: make(chan bool),
|
needsCaptiveDetection: make(chan bool),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sys.NoiseRoundTripper.Set(noiseRoundTripper{b})
|
||||||
|
|
||||||
nb := newNodeBackend(ctx, b.logf, b.sys.Bus.Get())
|
nb := newNodeBackend(ctx, b.logf, b.sys.Bus.Get())
|
||||||
b.currentNodeAtomic.Store(nb)
|
b.currentNodeAtomic.Store(nb)
|
||||||
nb.ready()
|
nb.ready()
|
||||||
@@ -7274,6 +7276,15 @@ func (b *LocalBackend) DoNoiseRequest(req *http.Request) (*http.Response, error)
|
|||||||
return cc.DoNoiseRequest(req)
|
return cc.DoNoiseRequest(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// noiseRoundTripper adapts LocalBackend.DoNoiseRequest to http.RoundTripper.
|
||||||
|
type noiseRoundTripper struct {
|
||||||
|
lb *LocalBackend
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n noiseRoundTripper) RoundTrip(req *http.Request) (*http.Response, error) {
|
||||||
|
return n.lb.DoNoiseRequest(req)
|
||||||
|
}
|
||||||
|
|
||||||
// ActiveSSHConns returns the number of active SSH connections,
|
// ActiveSSHConns returns the number of active SSH connections,
|
||||||
// or 0 if SSH is not linked into the binary or available on the platform.
|
// or 0 if SSH is not linked into the binary or available on the platform.
|
||||||
func (b *LocalBackend) ActiveSSHConns() int {
|
func (b *LocalBackend) ActiveSSHConns() int {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ package tsd
|
|||||||
import (
|
import (
|
||||||
"crypto/x509"
|
"crypto/x509"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
"reflect"
|
"reflect"
|
||||||
|
|
||||||
"tailscale.com/control/controlknobs"
|
"tailscale.com/control/controlknobs"
|
||||||
@@ -64,6 +65,10 @@ type System struct {
|
|||||||
PolicyClient SubSystem[policyclient.Client]
|
PolicyClient SubSystem[policyclient.Client]
|
||||||
HealthTracker SubSystem[*health.Tracker]
|
HealthTracker SubSystem[*health.Tracker]
|
||||||
|
|
||||||
|
// NoiseRoundTripper, if set, provides an http.RoundTripper that
|
||||||
|
// sends requests over the control plane Noise connection.
|
||||||
|
NoiseRoundTripper SubSystem[http.RoundTripper]
|
||||||
|
|
||||||
// ExtraRootCAs, if non-nil, specifies additional trusted root CAs
|
// ExtraRootCAs, if non-nil, specifies additional trusted root CAs
|
||||||
// beyond the system roots. On Android, this includes user-installed
|
// beyond the system roots. On Android, this includes user-installed
|
||||||
// CA certificates that Go's crypto/x509 does not see.
|
// CA certificates that Go's crypto/x509 does not see.
|
||||||
|
|||||||
Reference in New Issue
Block a user