Parcourir la source

tsnet: require I_Acknowledge_This_API_Is_Experimental to use AuthenticatedAPITransport()

It's not entirely clear whether this capability will be maintained, or in what form,
so this serves as a warning to that effect.

Updates tailscale/corp#22748

Signed-off-by: Percy Wegmann <[email protected]>
Percy Wegmann il y a 1 an
Parent
commit
052eefbcce
1 fichiers modifiés avec 9 ajouts et 0 suppressions
  1. 9 0
      tsnet/tsnet.go

+ 9 - 0
tsnet/tsnet.go

@@ -946,10 +946,16 @@ func (s *Server) APIClient() (*tailscale.Client, error) {
 	return c, nil
 	return c, nil
 }
 }
 
 
+// I_Acknowledge_This_API_Is_Experimental must be set true to use AuthenticatedAPITransport()
+// for now.
+var I_Acknowledge_This_API_Is_Experimental = false
+
 // AuthenticatedAPITransport provides an HTTP transport that can be used with
 // AuthenticatedAPITransport provides an HTTP transport that can be used with
 // the control server API without needing additional authentication details. It
 // the control server API without needing additional authentication details. It
 // authenticates using the current client's nodekey.
 // authenticates using the current client's nodekey.
 //
 //
+// It requires the user to set I_Acknowledge_This_API_Is_Experimental.
+//
 // For example:
 // For example:
 //
 //
 //	import "net/http"
 //	import "net/http"
@@ -966,6 +972,9 @@ func (s *Server) APIClient() (*tailscale.Client, error) {
 //	    Transport: rt,
 //	    Transport: rt,
 //	}}
 //	}}
 func (s *Server) AuthenticatedAPITransport() (http.RoundTripper, error) {
 func (s *Server) AuthenticatedAPITransport() (http.RoundTripper, error) {
+	if !I_Acknowledge_This_API_Is_Experimental {
+		return nil, errors.New("use of AuthenticatedAPITransport without setting I_Acknowledge_This_API_Is_Experimental")
+	}
 	if err := s.Start(); err != nil {
 	if err := s.Start(); err != nil {
 		return nil, err
 		return nil, err
 	}
 	}