mirror of
https://github.com/tailscale/tailscale.git
synced 2025-02-22 04:48:39 +00:00
tsnet: provide AuthenticatedAPITransport for use with tailscale.com/client/tailscale/v2
This allows use of the officially supported control server API, authenticated with the tsnet node's nodekey. Updates tailscale/corp#22748 Signed-off-by: Percy Wegmann <percy@tailscale.com>
This commit is contained in:
parent
4f0222388a
commit
8a792ab540
@ -931,8 +931,7 @@ func getTSNetDir(logf logger.Logf, confDir, prog string) (string, error) {
|
|||||||
// requests to the Tailscale control server.
|
// requests to the Tailscale control server.
|
||||||
// It requires the user to set tailscale.I_Acknowledge_This_API_Is_Unstable.
|
// It requires the user to set tailscale.I_Acknowledge_This_API_Is_Unstable.
|
||||||
//
|
//
|
||||||
// TODO: (percy) provide a way to use Noise for the official API at
|
// Deprecated: use AuthenticatedAPITransport with tailscale.com/client/tailscale/v2 instead.
|
||||||
// tailscale.com/client/tailscale/v2.
|
|
||||||
func (s *Server) APIClient() (*tailscale.Client, error) {
|
func (s *Server) APIClient() (*tailscale.Client, error) {
|
||||||
if !tailscale.I_Acknowledge_This_API_Is_Unstable {
|
if !tailscale.I_Acknowledge_This_API_Is_Unstable {
|
||||||
return nil, errors.New("use of Client without setting I_Acknowledge_This_API_Is_Unstable")
|
return nil, errors.New("use of Client without setting I_Acknowledge_This_API_Is_Unstable")
|
||||||
@ -947,6 +946,32 @@ func (s *Server) APIClient() (*tailscale.Client, error) {
|
|||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AuthenticatedAPITransport provides an HTTP transport that can be used with
|
||||||
|
// the control server API without needing additional authentication details. It
|
||||||
|
// authenticates using the current client's nodekey.
|
||||||
|
//
|
||||||
|
// For example:
|
||||||
|
//
|
||||||
|
// import "net/http"
|
||||||
|
// import "tailscale.com/client/tailscale/v2"
|
||||||
|
// import "tailscale.com/tsnet"
|
||||||
|
//
|
||||||
|
// var s *tsnet.Server
|
||||||
|
// ...
|
||||||
|
// rt, err := s.AuthenticatedAPITransport()
|
||||||
|
// // handler err ...
|
||||||
|
// var client tailscale.Client{HTTP: http.Client{
|
||||||
|
// Timeout: 1*time.Minute,
|
||||||
|
// UserAgent: "your-useragent-here",
|
||||||
|
// Transport: rt,
|
||||||
|
// }}
|
||||||
|
func (s *Server) AuthenticatedAPITransport() (http.RoundTripper, error) {
|
||||||
|
if err := s.Start(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return s.lb.KeyProvingNoiseRoundTripper(), nil
|
||||||
|
}
|
||||||
|
|
||||||
// Listen announces only on the Tailscale network.
|
// Listen announces only on the Tailscale network.
|
||||||
// It will start the server if it has not been started yet.
|
// It will start the server if it has not been started yet.
|
||||||
//
|
//
|
||||||
|
Loading…
x
Reference in New Issue
Block a user