From 839f1ad444849db1dd18c9da0c3b7380b355a047 Mon Sep 17 00:00:00 2001 From: Corey Hulen Date: Thu, 25 Aug 2016 04:32:44 -0800 Subject: Fixing license (#3878) * Fixing sanitize license * Fixing license * Fixing unit tests --- api/license.go | 10 ++++++++-- api/user.go | 2 +- utils/license.go | 12 +++++++++--- utils/license_test.go | 6 +++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/api/license.go b/api/license.go index f9ecce486..b7bf8a234 100644 --- a/api/license.go +++ b/api/license.go @@ -173,12 +173,18 @@ func RemoveLicense() *model.AppError { } func getClientLicenceConfig(c *Context, w http.ResponseWriter, r *http.Request) { - etag := utils.GetClientLicenseEtag() + etag := utils.GetClientLicenseEtag(!c.IsSystemAdmin()) if HandleEtag(etag, w, r) { return } - clientLicense := utils.ClientLicense + var clientLicense map[string]string + + if c.IsSystemAdmin() { + clientLicense = utils.ClientLicense + } else { + clientLicense = utils.GetSanitizedClientLicense() + } w.Header().Set(model.HEADER_ETAG_SERVER, etag) w.Write([]byte(model.MapToJson(clientLicense))) diff --git a/api/user.go b/api/user.go index d7eab3d46..b0d2c79b4 100644 --- a/api/user.go +++ b/api/user.go @@ -922,7 +922,7 @@ func getInitialLoad(c *Context, w http.ResponseWriter, r *http.Request) { if c.IsSystemAdmin() { il.LicenseCfg = utils.ClientLicense } else { - il.LicenseCfg = utils.GetSantizedClientLicense() + il.LicenseCfg = utils.GetSanitizedClientLicense() } w.Write([]byte(il.ToJson())) diff --git a/utils/license.go b/utils/license.go index f0a91665e..4d6387788 100644 --- a/utils/license.go +++ b/utils/license.go @@ -141,17 +141,23 @@ func getClientLicense(l *model.License) map[string]string { return props } -func GetClientLicenseEtag() string { +func GetClientLicenseEtag(useSanitized bool) string { value := "" - for k, v := range ClientLicense { + lic := ClientLicense + + if useSanitized { + lic = GetSanitizedClientLicense() + } + + for k, v := range lic { value += fmt.Sprintf("%s:%s;", k, v) } return model.Etag(fmt.Sprintf("%x", md5.Sum([]byte(value)))) } -func GetSantizedClientLicense() map[string]string { +func GetSanitizedClientLicense() map[string]string { sanitizedLicense := make(map[string]string) for k, v := range ClientLicense { diff --git a/utils/license_test.go b/utils/license_test.go index d85d59dcf..6508172d5 100644 --- a/utils/license_test.go +++ b/utils/license_test.go @@ -50,18 +50,18 @@ func TestValidateLicense(t *testing.T) { } func TestClientLicenseEtag(t *testing.T) { - etag1 := GetClientLicenseEtag() + etag1 := GetClientLicenseEtag(false) ClientLicense["SomeFeature"] = "true" - etag2 := GetClientLicenseEtag() + etag2 := GetClientLicenseEtag(false) if etag1 == etag2 { t.Fatal("etags should not match") } ClientLicense["SomeFeature"] = "false" - etag3 := GetClientLicenseEtag() + etag3 := GetClientLicenseEtag(false) if etag2 == etag3 { t.Fatal("etags should not match") } -- cgit v1.2.3-1-g7c22