summaryrefslogtreecommitdiffstats
path: root/mattermost.go
diff options
context:
space:
mode:
authorThomas Balthazar <tbalthazar@users.noreply.github.com>2016-05-18 22:34:31 +0200
committerHarrison Healey <harrisonmhealey@gmail.com>2016-05-18 16:34:31 -0400
commit55f6a0b21c46f77fb33e1af29c5960298bdb6907 (patch)
treea1af9535800ea63fac38f31be18051adb032b2fb /mattermost.go
parent02576f3d597b3c419df20f2a50aa6e587f1d98bb (diff)
downloadchat-55f6a0b21c46f77fb33e1af29c5960298bdb6907.tar.gz
chat-55f6a0b21c46f77fb33e1af29c5960298bdb6907.tar.bz2
chat-55f6a0b21c46f77fb33e1af29c5960298bdb6907.zip
Move away from the "andForget" style of function (#3046)
This is the second and last part of the refactoring. First part is documented here: https://github.com/mattermost/platform/pull/3043
Diffstat (limited to 'mattermost.go')
-rw-r--r--mattermost.go148
1 files changed, 73 insertions, 75 deletions
diff --git a/mattermost.go b/mattermost.go
index 5bff01dee..afac18830 100644
--- a/mattermost.go
+++ b/mattermost.go
@@ -121,7 +121,7 @@ func main() {
}
setDiagnosticId()
- runSecurityAndDiagnosticsJobAndForget()
+ go runSecurityAndDiagnosticsJob()
if einterfaces.GetComplianceInterface() != nil {
einterfaces.GetComplianceInterface().StartComplianceDailyJob()
@@ -152,96 +152,94 @@ func setDiagnosticId() {
}
}
-func runSecurityAndDiagnosticsJobAndForget() {
- go func() {
- for {
- if *utils.Cfg.ServiceSettings.EnableSecurityFixAlert {
- if result := <-api.Srv.Store.System().Get(); result.Err == nil {
- props := result.Data.(model.StringMap)
- lastSecurityTime, _ := strconv.ParseInt(props[model.SYSTEM_LAST_SECURITY_TIME], 10, 0)
- currentTime := model.GetMillis()
-
- if (currentTime - lastSecurityTime) > 1000*60*60*24*1 {
- l4g.Debug(utils.T("mattermost.security_checks.debug"))
-
- v := url.Values{}
-
- v.Set(utils.PROP_DIAGNOSTIC_ID, utils.CfgDiagnosticId)
- v.Set(utils.PROP_DIAGNOSTIC_BUILD, model.CurrentVersion+"."+model.BuildNumber)
- v.Set(utils.PROP_DIAGNOSTIC_ENTERPRISE_READY, model.BuildEnterpriseReady)
- v.Set(utils.PROP_DIAGNOSTIC_DATABASE, utils.Cfg.SqlSettings.DriverName)
- v.Set(utils.PROP_DIAGNOSTIC_OS, runtime.GOOS)
- v.Set(utils.PROP_DIAGNOSTIC_CATEGORY, utils.VAL_DIAGNOSTIC_CATEGORY_DEFAULT)
-
- if len(props[model.SYSTEM_RAN_UNIT_TESTS]) > 0 {
- v.Set(utils.PROP_DIAGNOSTIC_UNIT_TESTS, "1")
- } else {
- v.Set(utils.PROP_DIAGNOSTIC_UNIT_TESTS, "0")
- }
+func runSecurityAndDiagnosticsJob() {
+ for {
+ if *utils.Cfg.ServiceSettings.EnableSecurityFixAlert {
+ if result := <-api.Srv.Store.System().Get(); result.Err == nil {
+ props := result.Data.(model.StringMap)
+ lastSecurityTime, _ := strconv.ParseInt(props[model.SYSTEM_LAST_SECURITY_TIME], 10, 0)
+ currentTime := model.GetMillis()
+
+ if (currentTime - lastSecurityTime) > 1000*60*60*24*1 {
+ l4g.Debug(utils.T("mattermost.security_checks.debug"))
+
+ v := url.Values{}
+
+ v.Set(utils.PROP_DIAGNOSTIC_ID, utils.CfgDiagnosticId)
+ v.Set(utils.PROP_DIAGNOSTIC_BUILD, model.CurrentVersion+"."+model.BuildNumber)
+ v.Set(utils.PROP_DIAGNOSTIC_ENTERPRISE_READY, model.BuildEnterpriseReady)
+ v.Set(utils.PROP_DIAGNOSTIC_DATABASE, utils.Cfg.SqlSettings.DriverName)
+ v.Set(utils.PROP_DIAGNOSTIC_OS, runtime.GOOS)
+ v.Set(utils.PROP_DIAGNOSTIC_CATEGORY, utils.VAL_DIAGNOSTIC_CATEGORY_DEFAULT)
+
+ if len(props[model.SYSTEM_RAN_UNIT_TESTS]) > 0 {
+ v.Set(utils.PROP_DIAGNOSTIC_UNIT_TESTS, "1")
+ } else {
+ v.Set(utils.PROP_DIAGNOSTIC_UNIT_TESTS, "0")
+ }
- systemSecurityLastTime := &model.System{Name: model.SYSTEM_LAST_SECURITY_TIME, Value: strconv.FormatInt(currentTime, 10)}
- if lastSecurityTime == 0 {
- <-api.Srv.Store.System().Save(systemSecurityLastTime)
- } else {
- <-api.Srv.Store.System().Update(systemSecurityLastTime)
- }
+ systemSecurityLastTime := &model.System{Name: model.SYSTEM_LAST_SECURITY_TIME, Value: strconv.FormatInt(currentTime, 10)}
+ if lastSecurityTime == 0 {
+ <-api.Srv.Store.System().Save(systemSecurityLastTime)
+ } else {
+ <-api.Srv.Store.System().Update(systemSecurityLastTime)
+ }
- if ucr := <-api.Srv.Store.User().GetTotalUsersCount(); ucr.Err == nil {
- v.Set(utils.PROP_DIAGNOSTIC_USER_COUNT, strconv.FormatInt(ucr.Data.(int64), 10))
- }
+ if ucr := <-api.Srv.Store.User().GetTotalUsersCount(); ucr.Err == nil {
+ v.Set(utils.PROP_DIAGNOSTIC_USER_COUNT, strconv.FormatInt(ucr.Data.(int64), 10))
+ }
- if ucr := <-api.Srv.Store.User().GetTotalActiveUsersCount(); ucr.Err == nil {
- v.Set(utils.PROP_DIAGNOSTIC_ACTIVE_USER_COUNT, strconv.FormatInt(ucr.Data.(int64), 10))
- }
+ if ucr := <-api.Srv.Store.User().GetTotalActiveUsersCount(); ucr.Err == nil {
+ v.Set(utils.PROP_DIAGNOSTIC_ACTIVE_USER_COUNT, strconv.FormatInt(ucr.Data.(int64), 10))
+ }
- res, err := http.Get(utils.DIAGNOSTIC_URL + "/security?" + v.Encode())
- if err != nil {
- l4g.Error(utils.T("mattermost.security_info.error"))
- return
- }
+ res, err := http.Get(utils.DIAGNOSTIC_URL + "/security?" + v.Encode())
+ if err != nil {
+ l4g.Error(utils.T("mattermost.security_info.error"))
+ return
+ }
- bulletins := model.SecurityBulletinsFromJson(res.Body)
+ bulletins := model.SecurityBulletinsFromJson(res.Body)
- for _, bulletin := range bulletins {
- if bulletin.AppliesToVersion == model.CurrentVersion {
- if props["SecurityBulletin_"+bulletin.Id] == "" {
- if results := <-api.Srv.Store.User().GetSystemAdminProfiles(); results.Err != nil {
- l4g.Error(utils.T("mattermost.system_admins.error"))
+ for _, bulletin := range bulletins {
+ if bulletin.AppliesToVersion == model.CurrentVersion {
+ if props["SecurityBulletin_"+bulletin.Id] == "" {
+ if results := <-api.Srv.Store.User().GetSystemAdminProfiles(); results.Err != nil {
+ l4g.Error(utils.T("mattermost.system_admins.error"))
+ return
+ } else {
+ users := results.Data.(map[string]*model.User)
+
+ resBody, err := http.Get(utils.DIAGNOSTIC_URL + "/bulletins/" + bulletin.Id)
+ if err != nil {
+ l4g.Error(utils.T("mattermost.security_bulletin.error"))
return
- } else {
- users := results.Data.(map[string]*model.User)
-
- resBody, err := http.Get(utils.DIAGNOSTIC_URL + "/bulletins/" + bulletin.Id)
- if err != nil {
- l4g.Error(utils.T("mattermost.security_bulletin.error"))
- return
- }
-
- body, err := ioutil.ReadAll(resBody.Body)
- res.Body.Close()
- if err != nil || resBody.StatusCode != 200 {
- l4g.Error(utils.T("mattermost.security_bulletin_read.error"))
- return
- }
-
- for _, user := range users {
- l4g.Info(utils.T("mattermost.send_bulletin.info"), bulletin.Id, user.Email)
- utils.SendMail(user.Email, utils.T("mattermost.bulletin.subject"), string(body))
- }
}
- bulletinSeen := &model.System{Name: "SecurityBulletin_" + bulletin.Id, Value: bulletin.Id}
- <-api.Srv.Store.System().Save(bulletinSeen)
+ body, err := ioutil.ReadAll(resBody.Body)
+ res.Body.Close()
+ if err != nil || resBody.StatusCode != 200 {
+ l4g.Error(utils.T("mattermost.security_bulletin_read.error"))
+ return
+ }
+
+ for _, user := range users {
+ l4g.Info(utils.T("mattermost.send_bulletin.info"), bulletin.Id, user.Email)
+ utils.SendMail(user.Email, utils.T("mattermost.bulletin.subject"), string(body))
+ }
}
+
+ bulletinSeen := &model.System{Name: "SecurityBulletin_" + bulletin.Id, Value: bulletin.Id}
+ <-api.Srv.Store.System().Save(bulletinSeen)
}
}
}
}
}
-
- time.Sleep(time.Hour * 4)
}
- }()
+
+ time.Sleep(time.Hour * 4)
+ }
}
func parseCmds() {