From 71e66e6d16e2368f0be04f7fbd753299b831af3b Mon Sep 17 00:00:00 2001 From: John Murphy Date: Wed, 22 Mar 2017 14:40:01 -0500 Subject: [PATCH] Added code to trim whitespace and trim trailing slash from input server url (#1442) --- server/service/service_appconfig.go | 7 ++++++- server/service/service_appconfig_test.go | 22 +++++++++++++++++++++- server/service/validation_setup.go | 2 +- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/server/service/service_appconfig.go b/server/service/service_appconfig.go index 3f7653dcaa..4ed2dad17f 100644 --- a/server/service/service_appconfig.go +++ b/server/service/service_appconfig.go @@ -3,6 +3,7 @@ package service import ( "context" "fmt" + "strings" "github.com/kolide/kolide/server/contexts/viewer" "github.com/kolide/kolide/server/kolide" @@ -95,6 +96,10 @@ func (svc service) ModifyAppConfig(ctx context.Context, p kolide.AppConfigPayloa return config, nil } +func cleanupURL(url string) string { + return strings.TrimRight(strings.Trim(url, " \t\n"), "/") +} + func appConfigFromAppConfigPayload(p kolide.AppConfigPayload, config kolide.AppConfig) *kolide.AppConfig { if p.OrgInfo != nil && p.OrgInfo.OrgLogoURL != nil { config.OrgLogoURL = *p.OrgInfo.OrgLogoURL @@ -103,7 +108,7 @@ func appConfigFromAppConfigPayload(p kolide.AppConfigPayload, config kolide.AppC config.OrgName = *p.OrgInfo.OrgName } if p.ServerSettings != nil && p.ServerSettings.KolideServerURL != nil { - config.KolideServerURL = *p.ServerSettings.KolideServerURL + config.KolideServerURL = cleanupURL(*p.ServerSettings.KolideServerURL) } if p.ServerSettings != nil && p.ServerSettings.EnrollSecret != nil { config.EnrollSecret = *p.ServerSettings.EnrollSecret diff --git a/server/service/service_appconfig_test.go b/server/service/service_appconfig_test.go index 428c5da3cc..4cc4e4273a 100644 --- a/server/service/service_appconfig_test.go +++ b/server/service/service_appconfig_test.go @@ -11,6 +11,26 @@ import ( "github.com/stretchr/testify/require" ) +func TestCleanupURL(t *testing.T) { + tests := []struct { + in string + expected string + name string + }{ + {" http://foo.bar.com ", "http://foo.bar.com", "leading and trailing whitespace"}, + {"\n http://foo.com \t", "http://foo.com", "whitespace"}, + {"http://foo.com", "http://foo.com", "noop"}, + {"http://foo.com/", "http://foo.com", "trailing slash"}, + } + for _, test := range tests { + t.Run(test.name, func(tt *testing.T) { + actual := cleanupURL(test.in) + assert.Equal(tt, test.expected, actual) + }) + } + +} + func TestCreateAppConfig(t *testing.T) { ds, err := inmem.New(config.TestConfig()) require.Nil(t, err) @@ -42,6 +62,6 @@ func TestCreateAppConfig(t *testing.T) { assert.NotEmpty(t, result.ID) assert.Equal(t, *payload.OrgInfo.OrgLogoURL, result.OrgLogoURL) assert.Equal(t, *payload.OrgInfo.OrgName, result.OrgName) - assert.Equal(t, *payload.ServerSettings.KolideServerURL, result.KolideServerURL) + assert.Equal(t, "https://acme.co:8080", result.KolideServerURL) } } diff --git a/server/service/validation_setup.go b/server/service/validation_setup.go index 4737afc021..dd9c4469ac 100644 --- a/server/service/validation_setup.go +++ b/server/service/validation_setup.go @@ -14,7 +14,7 @@ func (mw validationMiddleware) NewAppConfig(ctx context.Context, payload kolide. if payload.ServerSettings == nil { invalid.Append("kolide_server_url", "missing required argument") } else { - serverURLString = *payload.ServerSettings.KolideServerURL + serverURLString = cleanupURL(*payload.ServerSettings.KolideServerURL) } if err := validateKolideServerURL(serverURLString); err != nil { invalid.Append("kolide_server_url", err.Error())