client/web: add web client Server struct

Updates tailscale/corp#13775

Signed-off-by: Sonia Appasamy <sonia@tailscale.com>
This commit is contained in:
Sonia Appasamy
2023-08-09 13:14:03 -04:00
committed by Sonia Appasamy
parent 7815fbe17a
commit 2bc98abbd9
2 changed files with 36 additions and 16 deletions
+6 -4
View File
@@ -38,6 +38,7 @@ Tailscale, as opposed to a CLI or a native app.
webf := newFlagSet("web")
webf.StringVar(&webArgs.listen, "listen", "localhost:8088", "listen address; use port 0 for automatic")
webf.BoolVar(&webArgs.cgi, "cgi", false, "run as CGI script")
webf.BoolVar(&webArgs.dev, "dev", false, "run web client in developer mode")
return webf
})(),
Exec: runWeb,
@@ -46,6 +47,7 @@ Tailscale, as opposed to a CLI or a native app.
var webArgs struct {
listen string
cgi bool
dev bool
}
func tlsConfigFromEnvironment() *tls.Config {
@@ -76,10 +78,10 @@ func runWeb(ctx context.Context, args []string) error {
return fmt.Errorf("too many non-flag arguments: %q", args)
}
webHandler := http.HandlerFunc(web.Handle)
webServer := web.NewServer(webArgs.dev, nil)
if webArgs.cgi {
if err := cgi.Serve(webHandler); err != nil {
if err := cgi.Serve(webServer); err != nil {
log.Printf("tailscale.cgi: %v", err)
return err
}
@@ -91,14 +93,14 @@ func runWeb(ctx context.Context, args []string) error {
server := &http.Server{
Addr: webArgs.listen,
TLSConfig: tlsConfig,
Handler: webHandler,
Handler: webServer,
}
log.Printf("web server running on: https://%s", server.Addr)
return server.ListenAndServeTLS("", "")
} else {
log.Printf("web server running on: %s", urlOfListenAddr(webArgs.listen))
return http.ListenAndServe(webArgs.listen, webHandler)
return http.ListenAndServe(webArgs.listen, webServer)
}
}