From 3d56cafd7d23cd8ca09fa677f36cbfafec02f996 Mon Sep 17 00:00:00 2001 From: Will Norris Date: Thu, 10 Aug 2023 08:34:33 -0700 Subject: [PATCH] tsnet: add new example serving the Tailscale web client Updates tailscale/corp#13775 Co-authored-by: Sonia Appasamy Signed-off-by: Will Norris Signed-off-by: Sonia Appasamy --- tsnet/example/web-client/web-client.go | 44 ++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tsnet/example/web-client/web-client.go diff --git a/tsnet/example/web-client/web-client.go b/tsnet/example/web-client/web-client.go new file mode 100644 index 000000000..e73aa19c5 --- /dev/null +++ b/tsnet/example/web-client/web-client.go @@ -0,0 +1,44 @@ +// Copyright (c) Tailscale Inc & AUTHORS +// SPDX-License-Identifier: BSD-3-Clause + +// The web-client command demonstrates serving the Tailscale web client over tsnet. +package main + +import ( + "flag" + "log" + "net/http" + + "tailscale.com/client/web" + "tailscale.com/tsnet" +) + +var ( + devMode = flag.Bool("dev", false, "run web client in dev mode") +) + +func main() { + flag.Parse() + + s := new(tsnet.Server) + defer s.Close() + + ln, err := s.Listen("tcp", ":80") + if err != nil { + log.Fatal(err) + } + defer ln.Close() + + lc, err := s.LocalClient() + if err != nil { + log.Fatal(err) + } + + // Serve the Tailscale web client. + ws := web.NewServer(*devMode, lc) + if err := http.Serve(ln, ws); err != nil { + if err != http.ErrServerClosed { + log.Fatal(err) + } + } +}