diff options
Diffstat (limited to 'utils')
-rw-r--r-- | utils/license.go | 12 | ||||
-rw-r--r-- | utils/license_test.go | 18 |
2 files changed, 30 insertions, 0 deletions
diff --git a/utils/license.go b/utils/license.go index fcc08e6b1..69279fd23 100644 --- a/utils/license.go +++ b/utils/license.go @@ -5,11 +5,13 @@ package utils import ( "crypto" + "crypto/md5" "crypto/rsa" "crypto/sha512" "crypto/x509" "encoding/base64" "encoding/pem" + "fmt" "strconv" "strings" @@ -129,3 +131,13 @@ func getClientLicense(l *model.License) map[string]string { return props } + +func GetClientLicenseEtag() string { + value := "" + + for k, v := range ClientLicense { + value += fmt.Sprintf("%s:%s;", k, v) + } + + return model.Etag(fmt.Sprintf("%x", md5.Sum([]byte(value)))) +} diff --git a/utils/license_test.go b/utils/license_test.go index 826107032..237ee5fb2 100644 --- a/utils/license_test.go +++ b/utils/license_test.go @@ -48,3 +48,21 @@ func TestValidateLicense(t *testing.T) { t.Fatal("should have failed - bad license") } } + +func TestClientLicenseEtag(t *testing.T) { + etag1 := GetClientLicenseEtag() + + ClientLicense["SomeFeature"] = "true" + + etag2 := GetClientLicenseEtag() + if etag1 == etag2 { + t.Fatal("etags should not match") + } + + ClientLicense["SomeFeature"] = "false" + + etag3 := GetClientLicenseEtag() + if etag2 == etag3 { + t.Fatal("etags should not match") + } +} |