mirror of
https://github.com/coder/coder.git
synced 2025-07-08 11:39:50 +00:00
@ -218,9 +218,10 @@ func NewOptions(t *testing.T, options *Options) (*httptest.Server, context.Cance
|
||||
DERPMap: &tailcfg.DERPMap{
|
||||
Regions: map[int]*tailcfg.DERPRegion{
|
||||
1: {
|
||||
RegionID: 1,
|
||||
RegionCode: "coder",
|
||||
RegionName: "Coder",
|
||||
EmbeddedRelay: true,
|
||||
RegionID: 1,
|
||||
RegionCode: "coder",
|
||||
RegionName: "Coder",
|
||||
Nodes: []*tailcfg.DERPNode{{
|
||||
Name: "1a",
|
||||
RegionID: 1,
|
||||
|
@ -226,9 +226,44 @@ func (api *API) dialWorkspaceAgentTailnet(r *http.Request, agentID uuid.UUID) (*
|
||||
_ = serverConn.Close()
|
||||
}()
|
||||
|
||||
derpMap := api.DERPMap.Clone()
|
||||
for _, region := range derpMap.Regions {
|
||||
if !region.EmbeddedRelay {
|
||||
continue
|
||||
}
|
||||
var node *tailcfg.DERPNode
|
||||
for _, n := range region.Nodes {
|
||||
if n.STUNOnly {
|
||||
continue
|
||||
}
|
||||
node = n
|
||||
break
|
||||
}
|
||||
if node == nil {
|
||||
continue
|
||||
}
|
||||
// TODO: This should dial directly to execute the
|
||||
// DERP server instead of contacting localhost.
|
||||
//
|
||||
// This requires modification of Tailscale internals
|
||||
// to pipe through a proxy function per-region, so
|
||||
// this is an easy and mostly reliable hack for now.
|
||||
cloned := node.Clone()
|
||||
// Add p for proxy.
|
||||
// This first node supports TLS.
|
||||
cloned.Name += "p"
|
||||
cloned.IPv4 = "127.0.0.1"
|
||||
cloned.InsecureForTests = true
|
||||
region.Nodes = append(region.Nodes, cloned.Clone())
|
||||
// This second node forces HTTP.
|
||||
cloned.Name += "-http"
|
||||
cloned.ForceHTTP = true
|
||||
region.Nodes = append(region.Nodes, cloned)
|
||||
}
|
||||
|
||||
conn, err := tailnet.NewConn(&tailnet.Options{
|
||||
Addresses: []netip.Prefix{netip.PrefixFrom(tailnet.IP(), 128)},
|
||||
DERPMap: api.DERPMap,
|
||||
DERPMap: derpMap,
|
||||
Logger: api.Logger.Named("tailnet").Leveled(slog.LevelDebug),
|
||||
})
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user