From 18159431ab68b38a691b33cec2d9bc9626e48584 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Wed, 28 Sep 2022 13:45:55 -0700 Subject: [PATCH] logpolicy: fix, test LogHost to work as documented Change-Id: I225c9602a7587c69c237e336d0714fc8315ea6bd Signed-off-by: Brad Fitzpatrick --- logpolicy/logpolicy.go | 4 +++- logpolicy/logpolicy_test.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 logpolicy/logpolicy_test.go diff --git a/logpolicy/logpolicy.go b/logpolicy/logpolicy.go index e418fb146..b8bd888e0 100644 --- a/logpolicy/logpolicy.go +++ b/logpolicy/logpolicy.go @@ -74,7 +74,9 @@ func getLogTarget() string { // logtail server, or the default. func LogHost() string { if v := getLogTarget(); v != "" { - return v + if u, err := url.Parse(v); err == nil { + return u.Hostname() + } } return logtail.DefaultHost } diff --git a/logpolicy/logpolicy_test.go b/logpolicy/logpolicy_test.go new file mode 100644 index 000000000..cdb035317 --- /dev/null +++ b/logpolicy/logpolicy_test.go @@ -0,0 +1,37 @@ +// Copyright (c) 2022 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 logpolicy + +import ( + "os" + "reflect" + "testing" +) + +func TestLogHost(t *testing.T) { + v := reflect.ValueOf(&getLogTargetOnce).Elem() + reset := func() { + v.Set(reflect.Zero(v.Type())) + } + defer reset() + + tests := []struct { + env string + want string + }{ + {"", "log.tailscale.io"}, + {"http://foo.com", "foo.com"}, + {"https://foo.com", "foo.com"}, + {"https://foo.com/", "foo.com"}, + {"https://foo.com:123/", "foo.com"}, + } + for _, tt := range tests { + reset() + os.Setenv("TS_LOG_TARGET", tt.env) + if got := LogHost(); got != tt.want { + t.Errorf("for env %q, got %q, want %q", tt.env, got, tt.want) + } + } +}