feature/appconnectors: start making it modular
Saves 45 KB. Updates #12614 Change-Id: Iaeb73e69633878ce0a0f58c986024784bbe218f1 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
9386a101d8
commit
6c6a1d8341
@@ -0,0 +1,39 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Package appconnectors registers support for Tailscale App Connectors.
|
||||
package appconnectors
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
|
||||
"tailscale.com/ipn/ipnlocal"
|
||||
"tailscale.com/tailcfg"
|
||||
)
|
||||
|
||||
func init() {
|
||||
ipnlocal.RegisterC2N("GET /appconnector/routes", handleC2NAppConnectorDomainRoutesGet)
|
||||
}
|
||||
|
||||
// handleC2NAppConnectorDomainRoutesGet handles returning the domains
|
||||
// that the app connector is responsible for, as well as the resolved
|
||||
// IP addresses for each domain. If the node is not configured as
|
||||
// an app connector, an empty map is returned.
|
||||
func handleC2NAppConnectorDomainRoutesGet(b *ipnlocal.LocalBackend, w http.ResponseWriter, r *http.Request) {
|
||||
logf := b.Logger()
|
||||
logf("c2n: GET /appconnector/routes received")
|
||||
|
||||
var res tailcfg.C2NAppConnectorDomainRoutesResponse
|
||||
appConnector := b.AppConnector()
|
||||
if appConnector == nil {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(res)
|
||||
return
|
||||
}
|
||||
|
||||
res.Domains = appConnector.DomainRoutes()
|
||||
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
json.NewEncoder(w).Encode(res)
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Code generated by gen.go; DO NOT EDIT.
|
||||
|
||||
//go:build ts_omit_appconnectors
|
||||
|
||||
package buildfeatures
|
||||
|
||||
// HasAppConnectors is whether the binary was built with support for modular feature "App Connectors support".
|
||||
// Specifically, it's whether the binary was NOT built with the "ts_omit_appconnectors" build tag.
|
||||
// It's a const so it can be used for dead code elimination.
|
||||
const HasAppConnectors = false
|
||||
@@ -0,0 +1,13 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
// Code generated by gen.go; DO NOT EDIT.
|
||||
|
||||
//go:build !ts_omit_appconnectors
|
||||
|
||||
package buildfeatures
|
||||
|
||||
// HasAppConnectors is whether the binary was built with support for modular feature "App Connectors support".
|
||||
// Specifically, it's whether the binary was NOT built with the "ts_omit_appconnectors" build tag.
|
||||
// It's a const so it can be used for dead code elimination.
|
||||
const HasAppConnectors = true
|
||||
@@ -0,0 +1,8 @@
|
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build !ts_omit_appconnectors
|
||||
|
||||
package condregister
|
||||
|
||||
import _ "tailscale.com/feature/appconnectors"
|
||||
@@ -88,6 +88,7 @@ type FeatureMeta struct {
|
||||
// excluded via build tags, and a description of each.
|
||||
var Features = map[FeatureTag]FeatureMeta{
|
||||
"acme": {"ACME", "ACME TLS certificate management", nil},
|
||||
"appconnectors": {"AppConnectors", "App Connectors support", nil},
|
||||
"aws": {"AWS", "AWS integration", nil},
|
||||
"bird": {"Bird", "Bird BGP integration", nil},
|
||||
"captiveportal": {"CaptivePortal", "Captive portal detection", nil},
|
||||
|
||||
Reference in New Issue
Block a user