mirror of
https://github.com/tailscale/tailscale.git
synced 2024-11-25 11:05:45 +00:00
cmd/tailscale: test web server url func
Signed-off-by: Dan Bond <danbond@protonmail.com>
This commit is contained in:
parent
652bbc9aa0
commit
4c684fcf8c
@ -15,6 +15,7 @@
|
||||
"html/template"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/http/cgi"
|
||||
"net/url"
|
||||
@ -94,10 +95,20 @@ func runWeb(ctx context.Context, args []string) error {
|
||||
}
|
||||
return nil
|
||||
}
|
||||
log.Printf("web server running on: %s\n", webArgs.listen)
|
||||
|
||||
log.Printf("web server running on: %s", urlOfListenAddr(webArgs.listen))
|
||||
return http.ListenAndServe(webArgs.listen, http.HandlerFunc(webHandler))
|
||||
}
|
||||
|
||||
// urlOfListenAddr parses a given listen address into a formatted URL
|
||||
func urlOfListenAddr(addr string) string {
|
||||
host, port, _ := net.SplitHostPort(addr)
|
||||
if host == "" {
|
||||
host = "127.0.0.1"
|
||||
}
|
||||
return fmt.Sprintf("http://%s", net.JoinHostPort(host, port))
|
||||
}
|
||||
|
||||
// authorize returns the name of the user accessing the web UI after verifying
|
||||
// whether the user has access to the web UI. The function will write the
|
||||
// error to the provided http.ResponseWriter.
|
||||
|
42
cmd/tailscale/cli/web_test.go
Normal file
42
cmd/tailscale/cli/web_test.go
Normal file
@ -0,0 +1,42 @@
|
||||
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cli
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestUrlOfListenAddr(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
testTable := map[string]struct {
|
||||
addr string
|
||||
expected string
|
||||
}{
|
||||
"TestLocalhost": {
|
||||
addr: "localhost:8088",
|
||||
expected: "http://localhost:8088",
|
||||
},
|
||||
"TestNoHost": {
|
||||
addr: ":8088",
|
||||
expected: "http://127.0.0.1:8088",
|
||||
},
|
||||
"TestExplicitHost": {
|
||||
addr: "127.0.0.2:8088",
|
||||
expected: "http://127.0.0.2:8088",
|
||||
},
|
||||
"TestIPv6": {
|
||||
addr: "[::1]:8088",
|
||||
expected: "http://[::1]:8088",
|
||||
},
|
||||
}
|
||||
|
||||
for name, test := range testTable {
|
||||
t.Run(name, func(t *testing.T) {
|
||||
url := urlOfListenAddr(test.addr)
|
||||
if url != test.expected {
|
||||
t.Errorf("expected url: '%s', got: '%s'", test.expected, url)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user