From 5aa22ff3eb92d4fe12d9afc2b8bae93e173a06f4 Mon Sep 17 00:00:00 2001 From: Will Norris Date: Thu, 16 Nov 2023 10:38:58 -0800 Subject: [PATCH] tsnet: add option to run integrated web client Updates #10261 Signed-off-by: Will Norris --- tsnet/example/web-client/web-client.go | 2 +- tsnet/tsnet.go | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tsnet/example/web-client/web-client.go b/tsnet/example/web-client/web-client.go index b4207659a..541efbaed 100644 --- a/tsnet/example/web-client/web-client.go +++ b/tsnet/example/web-client/web-client.go @@ -20,7 +20,7 @@ var ( func main() { flag.Parse() - s := new(tsnet.Server) + s := &tsnet.Server{RunWebClient: true} defer s.Close() lc, err := s.LocalClient() diff --git a/tsnet/tsnet.go b/tsnet/tsnet.go index 6fbfb642b..f056c991d 100644 --- a/tsnet/tsnet.go +++ b/tsnet/tsnet.go @@ -108,6 +108,10 @@ type Server struct { // If empty, the Tailscale default is used. ControlURL string + // RunWebClient, if true, runs a client for managing this node over + // its Tailscale interface on port 5252. + RunWebClient bool + // Port is the UDP port to listen on for WireGuard and peer-to-peer // traffic. If zero, a port is automatically selected. Leave this // field at zero unless you know what you are doing. @@ -575,6 +579,7 @@ func (s *Server) start() (reterr error) { prefs.Hostname = s.hostname prefs.WantRunning = true prefs.ControlURL = s.ControlURL + prefs.RunWebClient = s.RunWebClient authKey := s.getAuthKey() err = lb.Start(ipn.Options{ UpdatePrefs: prefs, @@ -603,6 +608,7 @@ func (s *Server) start() (reterr error) { s.localAPIListener = lal s.localClient = &tailscale.LocalClient{Dial: lal.Dial} s.localAPIServer = &http.Server{Handler: lah} + s.lb.ConfigureWebClient(s.localClient) go func() { if err := s.localAPIServer.Serve(lal); err != nil { logf("localapi serve error: %v", err)