summaryrefslogtreecommitdiffstats
path: root/api/license.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2017-02-28 16:39:25 -0500
committerHarrison Healey <harrisonmhealey@gmail.com>2017-02-28 16:39:25 -0500
commit5e9adddb6f19a8d18d568871559495ea51b401ae (patch)
treeadb7f82df01611d56f6f31b6e870afd0540a1b71 /api/license.go
parent5a3bc43668353e41949d2d48c8956eaa9d061860 (diff)
downloadchat-5e9adddb6f19a8d18d568871559495ea51b401ae.tar.gz
chat-5e9adddb6f19a8d18d568871559495ea51b401ae.tar.bz2
chat-5e9adddb6f19a8d18d568871559495ea51b401ae.zip
Reload license from DB for all cluster app servers (#5525)
* Reload license from DB for all cluster app servers * Increase test timeout
Diffstat (limited to 'api/license.go')
-rw-r--r--api/license.go95
1 files changed, 4 insertions, 91 deletions
diff --git a/api/license.go b/api/license.go
index 41cba914d..ea5de20d4 100644
--- a/api/license.go
+++ b/api/license.go
@@ -7,7 +7,6 @@ import (
"bytes"
"io"
"net/http"
- "strings"
l4g "github.com/alecthomas/log4go"
"github.com/mattermost/platform/app"
@@ -15,11 +14,6 @@ import (
"github.com/mattermost/platform/utils"
)
-const (
- EXPIRED_LICENSE_ERROR = "api.license.add_license.expired.app_error"
- INVALID_LICENSE_ERROR = "api.license.add_license.invalid.app_error"
-)
-
func InitLicense() {
l4g.Debug(utils.T("api.license.init.debug"))
@@ -28,26 +22,6 @@ func InitLicense() {
BaseRoutes.License.Handle("/client_config", ApiAppHandler(getClientLicenceConfig)).Methods("GET")
}
-func LoadLicense() {
- licenseId := ""
- if result := <-app.Srv.Store.System().Get(); result.Err == nil {
- props := result.Data.(model.StringMap)
- licenseId = props[model.SYSTEM_ACTIVE_LICENSE_ID]
- }
-
- if len(licenseId) != 26 {
- l4g.Info(utils.T("mattermost.load_license.find.warn"))
- return
- }
-
- if result := <-app.Srv.Store.License().Get(licenseId); result.Err == nil {
- record := result.Data.(*model.LicenseRecord)
- utils.LoadLicense([]byte(record.Bytes))
- } else {
- l4g.Info(utils.T("mattermost.load_license.find.warn"))
- }
-}
-
func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("attempt")
err := r.ParseMultipartForm(*utils.Cfg.FileSettings.MaxFileSize)
@@ -83,10 +57,10 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
buf := bytes.NewBuffer(nil)
io.Copy(buf, file)
- if license, err := SaveLicense(buf.Bytes()); err != nil {
- if err.Id == EXPIRED_LICENSE_ERROR {
+ if license, err := app.SaveLicense(buf.Bytes()); err != nil {
+ if err.Id == model.EXPIRED_LICENSE_ERROR {
c.LogAudit("failed - expired or non-started license")
- } else if err.Id == INVALID_LICENSE_ERROR {
+ } else if err.Id == model.INVALID_LICENSE_ERROR {
c.LogAudit("failed - invalid license")
} else {
c.LogAudit("failed - unable to save license")
@@ -99,56 +73,10 @@ func addLicense(c *Context, w http.ResponseWriter, r *http.Request) {
}
}
-func SaveLicense(licenseBytes []byte) (*model.License, *model.AppError) {
- var license *model.License
-
- if success, licenseStr := utils.ValidateLicense(licenseBytes); success {
- license = model.LicenseFromJson(strings.NewReader(licenseStr))
-
- if result := <-app.Srv.Store.User().AnalyticsUniqueUserCount(""); result.Err != nil {
- return nil, model.NewLocAppError("addLicense", "api.license.add_license.invalid_count.app_error", nil, result.Err.Error())
- } else {
- uniqueUserCount := result.Data.(int64)
-
- if uniqueUserCount > int64(*license.Features.Users) {
- return nil, model.NewLocAppError("addLicense", "api.license.add_license.unique_users.app_error", map[string]interface{}{"Users": *license.Features.Users, "Count": uniqueUserCount}, "")
- }
- }
-
- if ok := utils.SetLicense(license); !ok {
- return nil, model.NewLocAppError("addLicense", EXPIRED_LICENSE_ERROR, nil, "")
- }
-
- record := &model.LicenseRecord{}
- record.Id = license.Id
- record.Bytes = string(licenseBytes)
- rchan := app.Srv.Store.License().Save(record)
-
- sysVar := &model.System{}
- sysVar.Name = model.SYSTEM_ACTIVE_LICENSE_ID
- sysVar.Value = license.Id
- schan := app.Srv.Store.System().SaveOrUpdate(sysVar)
-
- if result := <-rchan; result.Err != nil {
- RemoveLicense()
- return nil, model.NewLocAppError("addLicense", "api.license.add_license.save.app_error", nil, "err="+result.Err.Error())
- }
-
- if result := <-schan; result.Err != nil {
- RemoveLicense()
- return nil, model.NewLocAppError("addLicense", "api.license.add_license.save_active.app_error", nil, "")
- }
- } else {
- return nil, model.NewLocAppError("addLicense", INVALID_LICENSE_ERROR, nil, "")
- }
-
- return license, nil
-}
-
func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
c.LogAudit("")
- if err := RemoveLicense(); err != nil {
+ if err := app.RemoveLicense(); err != nil {
c.Err = err
return
}
@@ -158,21 +86,6 @@ func removeLicense(c *Context, w http.ResponseWriter, r *http.Request) {
w.Write([]byte(model.MapToJson(rdata)))
}
-func RemoveLicense() *model.AppError {
- utils.RemoveLicense()
-
- sysVar := &model.System{}
- sysVar.Name = model.SYSTEM_ACTIVE_LICENSE_ID
- sysVar.Value = ""
-
- if result := <-app.Srv.Store.System().SaveOrUpdate(sysVar); result.Err != nil {
- utils.RemoveLicense()
- return result.Err
- }
-
- return nil
-}
-
func getClientLicenceConfig(c *Context, w http.ResponseWriter, r *http.Request) {
useSanitizedLicense := !app.SessionHasPermissionTo(c.Session, model.PERMISSION_MANAGE_SYSTEM)