How to use Warn method of server Package

Best Testkube code snippet using server.Warn

app.go

Source:app.go Github

copy

Full Screen

...90 })91 if a.Srv().runjobs {92 a.Srv().Go(func() {93 runLicenseExpirationCheckJob(a)94 runCheckNumberOfActiveUsersWarnMetricStatusJob(a)95 })96 }97 a.srv.RunJobs()98 })99 a.accountMigration = a.srv.AccountMigration100 a.ldap = a.srv.Ldap101 a.notification = a.srv.Notification102 a.saml = a.srv.Saml103}104// DO NOT CALL THIS.105// This is to avoid having to change all the code in cmd/mattermost/commands/* for now106// shutdown should be called directly on the server107func (a *App) Shutdown() {108 a.Srv().Shutdown()109 a.srv = nil110}111func (a *App) initJobs() {112 if jobsLdapSyncInterface != nil {113 a.srv.Jobs.LdapSync = jobsLdapSyncInterface(a)114 }115 if jobsPluginsInterface != nil {116 a.srv.Jobs.Plugins = jobsPluginsInterface(a)117 }118 if jobsExpiryNotifyInterface != nil {119 a.srv.Jobs.ExpiryNotify = jobsExpiryNotifyInterface(a)120 }121 a.srv.Jobs.Workers = a.srv.Jobs.InitWorkers()122 a.srv.Jobs.Schedulers = a.srv.Jobs.InitSchedulers()123}124func (a *App) DiagnosticId() string {125 return a.Srv().diagnosticId126}127func (a *App) SetDiagnosticId(id string) {128 a.Srv().diagnosticId = id129}130func (s *Server) HTMLTemplates() *template.Template {131 if s.htmlTemplateWatcher != nil {132 return s.htmlTemplateWatcher.Templates()133 }134 return nil135}136func (a *App) Handle404(w http.ResponseWriter, r *http.Request) {137 ipAddress := utils.GetIpAddress(r, a.Config().ServiceSettings.TrustedProxyIPHeader)138 mlog.Debug("not found handler triggered", mlog.String("path", r.URL.Path), mlog.Int("code", 404), mlog.String("ip", ipAddress))139 if *a.Config().ServiceSettings.WebserverMode == "disabled" {140 http.NotFound(w, r)141 return142 }143 utils.RenderWebAppError(a.Config(), w, r, model.NewAppError("Handle404", "api.context.404.app_error", nil, "", http.StatusNotFound), a.AsymmetricSigningKey())144}145func (s *Server) getSystemInstallDate() (int64, *model.AppError) {146 systemData, appErr := s.Store.System().GetByName(model.SYSTEM_INSTALLATION_DATE_KEY)147 if appErr != nil {148 return 0, appErr149 }150 value, err := strconv.ParseInt(systemData.Value, 10, 64)151 if err != nil {152 return 0, model.NewAppError("getSystemInstallDate", "app.system_install_date.parse_int.app_error", nil, err.Error(), http.StatusInternalServerError)153 }154 return value, nil155}156func (s *Server) getFirstServerRunTimestamp() (int64, *model.AppError) {157 systemData, appErr := s.Store.System().GetByName(model.SYSTEM_FIRST_SERVER_RUN_TIMESTAMP_KEY)158 if appErr != nil {159 return 0, appErr160 }161 value, err := strconv.ParseInt(systemData.Value, 10, 64)162 if err != nil {163 return 0, model.NewAppError("getFirstServerRunTimestamp", "app.system_install_date.parse_int.app_error", nil, err.Error(), http.StatusInternalServerError)164 }165 return value, nil166}167func (a *App) GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError) {168 systemDataList, appErr := a.Srv().Store.System().Get()169 if appErr != nil {170 return nil, appErr171 }172 result := map[string]*model.WarnMetricStatus{}173 for key, value := range systemDataList {174 if strings.HasPrefix(key, model.WARN_METRIC_STATUS_STORE_PREFIX) {175 if warnMetric, ok := model.WarnMetricsTable[key]; ok {176 if !warnMetric.IsBotOnly && value == model.WARN_METRIC_STATUS_LIMIT_REACHED {177 result[key], _ = a.getWarnMetricStatusAndDisplayTextsForId(key, nil)178 }179 }180 }181 }182 return result, nil183}184func (a *App) getWarnMetricStatusAndDisplayTextsForId(warnMetricId string, T i18n.TranslateFunc) (*model.WarnMetricStatus, *model.WarnMetricDisplayTexts) {185 var warnMetricStatus *model.WarnMetricStatus186 var warnMetricDisplayTexts = &model.WarnMetricDisplayTexts{}187 if warnMetric, ok := model.WarnMetricsTable[warnMetricId]; ok {188 warnMetricStatus = &model.WarnMetricStatus{189 Id: warnMetric.Id,190 Limit: warnMetric.Limit,191 Acked: false,192 }193 if T == nil {194 mlog.Debug("No translation function")195 return warnMetricStatus, nil196 }197 warnMetricDisplayTexts.BotMailToBody = T("api.server.warn_metric.bot_response.number_of_users.mailto_body", map[string]interface{}{"Limit": warnMetric.Limit})198 warnMetricDisplayTexts.EmailBody = T("api.templates.warn_metric_ack.number_of_active_users.body", map[string]interface{}{"Limit": warnMetric.Limit})199 switch warnMetricId {200 case model.SYSTEM_WARN_METRIC_NUMBER_OF_ACTIVE_USERS_200:201 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_active_users_200.notification_title")202 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_200.notification_body")203 case model.SYSTEM_WARN_METRIC_NUMBER_OF_ACTIVE_USERS_400:204 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_active_users_400.notification_title")205 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_400.notification_body")206 case model.SYSTEM_WARN_METRIC_NUMBER_OF_ACTIVE_USERS_500:207 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_active_users_500.notification_title")208 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_500.notification_body")209 default:210 mlog.Error("Invalid metric id", mlog.String("id", warnMetricId))211 return nil, nil212 }213 return warnMetricStatus, warnMetricDisplayTexts214 }215 return nil, nil216}217func (a *App) notifyAdminsOfWarnMetricStatus(warnMetricId string) *model.AppError {218 perPage := 25219 userOptions := &model.UserGetOptions{220 Page: 0,221 PerPage: perPage,222 Role: model.SYSTEM_ADMIN_ROLE_ID,223 Inactive: false,224 }225 // get sysadmins226 var sysAdmins []*model.User227 for {228 sysAdminsList, err := a.GetUsers(userOptions)229 if err != nil {230 return err231 }232 if len(sysAdminsList) == 0 {233 return model.NewAppError("NotifyAdminsOfWarnMetricStatus", "app.system.warn_metric.notification.empty_admin_list.app_error", nil, "", http.StatusInternalServerError)234 }235 sysAdmins = append(sysAdmins, sysAdminsList...)236 if len(sysAdminsList) < perPage {237 mlog.Debug("Number of system admins is less than page limit", mlog.Int("count", len(sysAdminsList)))238 break239 }240 }241 T := utils.GetUserTranslations(sysAdmins[0].Locale)242 warnMetricsBot := &model.Bot{243 Username: model.BOT_WARN_METRIC_BOT_USERNAME,244 DisplayName: T("app.system.warn_metric.bot_displayname"),245 Description: "",246 OwnerId: sysAdmins[0].Id,247 }248 bot, err := a.getOrCreateWarnMetricsBot(warnMetricsBot)249 if err != nil {250 return err251 }252 for _, sysAdmin := range sysAdmins {253 T := utils.GetUserTranslations(sysAdmin.Locale)254 bot.DisplayName = T("app.system.warn_metric.bot_displayname")255 bot.Description = T("app.system.warn_metric.bot_description")256 channel, appErr := a.GetOrCreateDirectChannel(bot.UserId, sysAdmin.Id)257 if appErr != nil {258 mlog.Error("Cannot create channel for system bot notification!", mlog.String("Admin Id", sysAdmin.Id))259 return appErr260 }261 warnMetricStatus, warnMetricDisplayTexts := a.getWarnMetricStatusAndDisplayTextsForId(warnMetricId, T)262 if warnMetricStatus == nil {263 return model.NewAppError("NotifyAdminsOfWarnMetricStatus", "app.system.warn_metric.notification.invalid_metric.app_error", nil, "", http.StatusInternalServerError)264 }265 botPost := &model.Post{266 UserId: bot.UserId,267 ChannelId: channel.Id,268 Type: model.POST_SYSTEM_WARN_METRIC_STATUS,269 Message: "",270 }271 actions := []*model.PostAction{}272 actions = append(actions,273 &model.PostAction{274 Id: "contactUs",275 Name: T("api.server.warn_metric.contact_us"),276 Type: model.POST_ACTION_TYPE_BUTTON,277 Options: []*model.PostActionOptions{278 {279 Text: "TrackEventId",280 Value: warnMetricId,281 },282 {283 Text: "ActionExecutingMessage",284 Value: T("api.server.warn_metric.contacting_us"),285 },286 },287 Integration: &model.PostActionIntegration{288 Context: model.StringInterface{289 "bot_user_id": bot.UserId,290 "force_ack": false,291 },292 URL: fmt.Sprintf("/warn_metrics/ack/%s", warnMetricId),293 },294 },295 )296 attachments := []*model.SlackAttachment{{297 AuthorName: "",298 Title: warnMetricDisplayTexts.BotTitle,299 Text: warnMetricDisplayTexts.BotMessageBody,300 Actions: actions,301 }}302 model.ParseSlackAttachment(botPost, attachments)303 mlog.Debug("Send admin advisory for metric", mlog.String("warnMetricId", warnMetricId), mlog.String("userid", botPost.UserId))304 if _, err := a.CreatePostAsUser(botPost, a.Session().Id, true); err != nil {305 return err306 }307 }308 return nil309}310func (a *App) NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User, forceAck bool, isBot bool) *model.AppError {311 if warnMetric, ok := model.WarnMetricsTable[warnMetricId]; ok {312 data, err := a.Srv().Store.System().GetByName(warnMetric.Id)313 if err == nil && data != nil && data.Value == model.WARN_METRIC_STATUS_ACK {314 mlog.Debug("This metric warning has already been acknowledged")315 return nil316 }317 if !forceAck {318 if len(*a.Config().EmailSettings.SMTPServer) == 0 {319 return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.missing_server.app_error", nil, utils.T("api.context.invalid_param.app_error", map[string]interface{}{"Name": "SMTPServer"}), http.StatusInternalServerError)320 }321 T := utils.GetUserTranslations(sender.Locale)322 bodyPage := a.Srv().EmailService.newEmailTemplate("warn_metric_ack", sender.Locale)323 bodyPage.Props["ContactNameHeader"] = T("api.templates.warn_metric_ack.body.contact_name_header")324 bodyPage.Props["ContactNameValue"] = sender.GetFullName()325 bodyPage.Props["ContactEmailHeader"] = T("api.templates.warn_metric_ack.body.contact_email_header")326 bodyPage.Props["ContactEmailValue"] = sender.Email327 //same definition as the active users count metric displayed in the SystemConsole Analytics section328 registeredUsersCount, cerr := a.Srv().Store.User().Count(model.UserCountOptions{})329 if cerr != nil {330 mlog.Error("Error retrieving the number of registered users", mlog.Err(cerr))331 } else {332 bodyPage.Props["RegisteredUsersHeader"] = T("api.templates.warn_metric_ack.body.registered_users_header")333 bodyPage.Props["RegisteredUsersValue"] = registeredUsersCount334 }335 bodyPage.Props["SiteURLHeader"] = T("api.templates.warn_metric_ack.body.site_url_header")336 bodyPage.Props["SiteURL"] = a.GetSiteURL()337 bodyPage.Props["DiagnosticIdHeader"] = T("api.templates.warn_metric_ack.body.diagnostic_id_header")338 bodyPage.Props["DiagnosticIdValue"] = a.DiagnosticId()339 bodyPage.Props["Footer"] = T("api.templates.warn_metric_ack.footer")340 warnMetricStatus, warnMetricDisplayTexts := a.getWarnMetricStatusAndDisplayTextsForId(warnMetricId, T)341 if warnMetricStatus == nil {342 return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.invalid_warn_metric.app_error", nil, "", http.StatusInternalServerError)343 }344 subject := T("api.templates.warn_metric_ack.subject")345 bodyPage.Props["Title"] = warnMetricDisplayTexts.EmailBody346 if err = mailservice.SendMailUsingConfig(model.MM_SUPPORT_ADDRESS, subject, bodyPage.Render(), a.Config(), false, sender.Email); err != nil {347 mlog.Error("Error while sending email", mlog.String("destination email", model.MM_SUPPORT_ADDRESS), mlog.Err(err))348 return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.failure.app_error", map[string]interface{}{"Error": err.Error()}, "", http.StatusInternalServerError)349 }350 }351 mlog.Debug("Disable the monitoring of all warn metrics")352 err = a.setWarnMetricsStatus(model.WARN_METRIC_STATUS_ACK)353 if err != nil {354 return err355 }356 if !warnMetric.IsBotOnly && !isBot {357 message := model.NewWebSocketEvent(model.WEBSOCKET_WARN_METRIC_STATUS_REMOVED, "", "", "", nil)358 message.Add("warnMetricId", warnMetric.Id)359 a.Publish(message)360 }361 }362 return nil363}364func (a *App) setWarnMetricsStatus(status string) *model.AppError {365 for _, warnMetric := range model.WarnMetricsTable {366 a.setWarnMetricsStatusForId(warnMetric.Id, status)367 }368 return nil369}370func (a *App) setWarnMetricsStatusForId(warnMetricId string, status string) *model.AppError {371 mlog.Info("Storing user acknowledgement for warn metric", mlog.String("warnMetricId", warnMetricId))372 if err := a.Srv().Store.System().SaveOrUpdate(&model.System{373 Name: warnMetricId,374 Value: status,375 }); err != nil {376 mlog.Error("Unable to write to database.", mlog.Err(err))377 return model.NewAppError("setWarnMetricsStatusForId", "app.system.warn_metric.store.app_error", map[string]interface{}{"WarnMetricName": warnMetricId}, "", http.StatusInternalServerError)378 }379 return nil380}381func (a *App) Srv() *Server {382 return a.srv383}384func (a *App) Log() *mlog.Logger {385 return a.log386}387func (a *App) NotificationsLog() *mlog.Logger {388 return a.notificationsLog389}390func (a *App) T(translationID string, args ...interface{}) string {391 return a.t(translationID, args...)...

Full Screen

Full Screen

admin_advisor.go

Source:admin_advisor.go Github

copy

Full Screen

...9 "github.com/mattermost/mattermost-server/v6/shared/i18n"10 "github.com/mattermost/mattermost-server/v6/shared/mail"11 "github.com/mattermost/mattermost-server/v6/shared/mlog"12)13func (a *App) GetWarnMetricsStatus() (map[string]*model.WarnMetricStatus, *model.AppError) {14 systemDataList, nErr := a.Srv().Store.System().Get()15 if nErr != nil {16 return nil, model.NewAppError("GetWarnMetricsStatus", "app.system.get.app_error", nil, "", http.StatusInternalServerError).Wrap(nErr)17 }18 isE0Edition := model.BuildEnterpriseReady == "true" // license == nil was already validated upstream19 result := map[string]*model.WarnMetricStatus{}20 for key, value := range systemDataList {21 if strings.HasPrefix(key, model.WarnMetricStatusStorePrefix) {22 if warnMetric, ok := model.WarnMetricsTable[key]; ok {23 if !warnMetric.IsBotOnly && (value == model.WarnMetricStatusRunonce || value == model.WarnMetricStatusLimitReached) {24 result[key], _ = a.getWarnMetricStatusAndDisplayTextsForId(key, nil, isE0Edition)25 }26 }27 }28 }29 return result, nil30}31func (a *App) getWarnMetricStatusAndDisplayTextsForId(warnMetricId string, T i18n.TranslateFunc, isE0Edition bool) (*model.WarnMetricStatus, *model.WarnMetricDisplayTexts) {32 var warnMetricStatus *model.WarnMetricStatus33 var warnMetricDisplayTexts = &model.WarnMetricDisplayTexts{}34 if warnMetric, ok := model.WarnMetricsTable[warnMetricId]; ok {35 warnMetricStatus = &model.WarnMetricStatus{36 Id: warnMetric.Id,37 Limit: warnMetric.Limit,38 Acked: false,39 }40 if T == nil {41 mlog.Debug("No translation function")42 return warnMetricStatus, nil43 }44 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.bot_response.notification_success.message")45 switch warnMetricId {46 case model.SystemWarnMetricNumberOfTeams5:47 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_teams_5.notification_title")48 if isE0Edition {49 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_teams_5.start_trial.notification_body")50 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.number_of_teams_5.start_trial_notification_success.message")51 } else {52 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.number_of_teams_5.contact_us.email_body")53 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_teams_5.notification_body")54 }55 case model.SystemWarnMetricMfa:56 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.mfa.notification_title")57 if isE0Edition {58 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.mfa.start_trial.notification_body")59 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.mfa.start_trial_notification_success.message")60 } else {61 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.mfa.contact_us.email_body")62 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.mfa.notification_body")63 }64 case model.SystemWarnMetricEmailDomain:65 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.email_domain.notification_title")66 if isE0Edition {67 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.email_domain.start_trial.notification_body")68 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.email_domain.start_trial_notification_success.message")69 } else {70 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.email_domain.contact_us.email_body")71 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.email_domain.notification_body")72 }73 case model.SystemWarnMetricNumberOfChannels50:74 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_channels_50.notification_title")75 if isE0Edition {76 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_channels_50.start_trial.notification_body")77 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.number_of_channels_50.start_trial.notification_success.message")78 } else {79 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.number_of_channels_50.contact_us.email_body")80 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_channels_50.notification_body")81 }82 case model.SystemWarnMetricNumberOfActiveUsers100:83 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_active_users_100.notification_title")84 if isE0Edition {85 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_100.start_trial.notification_body")86 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.number_of_active_users_100.start_trial.notification_success.message")87 } else {88 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.number_of_active_users_100.contact_us.email_body")89 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_100.notification_body")90 }91 case model.SystemWarnMetricNumberOfActiveUsers200:92 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_active_users_200.notification_title")93 if isE0Edition {94 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_200.start_trial.notification_body")95 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.number_of_active_users_200.start_trial.notification_success.message")96 } else {97 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.number_of_active_users_200.contact_us.email_body")98 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_200.notification_body")99 }100 case model.SystemWarnMetricNumberOfActiveUsers300:101 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_active_users_300.start_trial.notification_title")102 if isE0Edition {103 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_300.start_trial.notification_body")104 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.number_of_active_users_300.start_trial.notification_success.message")105 } else {106 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.number_of_active_users_300.contact_us.email_body")107 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_300.notification_body")108 }109 case model.SystemWarnMetricNumberOfActiveUsers500:110 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_active_users_500.notification_title")111 if isE0Edition {112 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_500.start_trial.notification_body")113 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.number_of_active_users_500.start_trial.notification_success.message")114 } else {115 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.number_of_active_users_500.contact_us.email_body")116 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_active_users_500.notification_body")117 }118 case model.SystemWarnMetricNumberOfPosts2m:119 warnMetricDisplayTexts.BotTitle = T("api.server.warn_metric.number_of_posts_2M.notification_title")120 if isE0Edition {121 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_posts_2M.start_trial.notification_body")122 warnMetricDisplayTexts.BotSuccessMessage = T("api.server.warn_metric.number_of_posts_2M.start_trial.notification_success.message")123 } else {124 warnMetricDisplayTexts.EmailBody = T("api.server.warn_metric.number_of_posts_2M.contact_us.email_body")125 warnMetricDisplayTexts.BotMessageBody = T("api.server.warn_metric.number_of_posts_2M.notification_body")126 }127 default:128 mlog.Debug("Invalid metric id", mlog.String("id", warnMetricId))129 return nil, nil130 }131 return warnMetricStatus, warnMetricDisplayTexts132 }133 return nil, nil134}135func (a *App) NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User, forceAck bool, isBot bool) *model.AppError {136 if warnMetric, ok := model.WarnMetricsTable[warnMetricId]; ok {137 data, nErr := a.Srv().Store.System().GetByName(warnMetric.Id)138 if nErr == nil && data != nil && data.Value == model.WarnMetricStatusAck {139 mlog.Debug("This metric warning has already been acknowledged", mlog.String("id", warnMetric.Id))140 return nil141 }142 if !forceAck {143 if *a.Config().EmailSettings.SMTPServer == "" {144 return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.missing_server.app_error", nil, i18n.T("api.context.invalid_param.app_error", map[string]any{"Name": "SMTPServer"}), http.StatusInternalServerError)145 }146 T := i18n.GetUserTranslations(sender.Locale)147 data := a.Srv().EmailService.NewEmailTemplateData(sender.Locale)148 data.Props["ContactNameHeader"] = T("api.templates.warn_metric_ack.body.contact_name_header")149 data.Props["ContactNameValue"] = sender.GetFullName()150 data.Props["ContactEmailHeader"] = T("api.templates.warn_metric_ack.body.contact_email_header")151 data.Props["ContactEmailValue"] = sender.Email152 //same definition as the active users count metric displayed in the SystemConsole Analytics section153 registeredUsersCount, cerr := a.Srv().Store.User().Count(model.UserCountOptions{})154 if cerr != nil {155 mlog.Warn("Error retrieving the number of registered users", mlog.Err(cerr))156 } else {157 data.Props["RegisteredUsersHeader"] = T("api.templates.warn_metric_ack.body.registered_users_header")158 data.Props["RegisteredUsersValue"] = registeredUsersCount159 }160 data.Props["SiteURLHeader"] = T("api.templates.warn_metric_ack.body.site_url_header")161 data.Props["SiteURL"] = a.GetSiteURL()162 data.Props["TelemetryIdHeader"] = T("api.templates.warn_metric_ack.body.diagnostic_id_header")163 data.Props["TelemetryIdValue"] = a.TelemetryId()164 data.Props["Footer"] = T("api.templates.warn_metric_ack.footer")165 warnMetricStatus, warnMetricDisplayTexts := a.getWarnMetricStatusAndDisplayTextsForId(warnMetricId, T, false)166 if warnMetricStatus == nil {167 return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.invalid_warn_metric.app_error", nil, "", http.StatusInternalServerError)168 }169 subject := T("api.templates.warn_metric_ack.subject")170 data.Props["Title"] = warnMetricDisplayTexts.EmailBody171 mailConfig := a.Srv().MailServiceConfig()172 body, err := a.Srv().TemplatesContainer().RenderToString("warn_metric_ack", data)173 if err != nil {174 return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.failure.app_error", map[string]any{"Error": err.Error()}, "", http.StatusInternalServerError)175 }176 if err := mail.SendMailUsingConfig(model.MmSupportAdvisorAddress, subject, body, mailConfig, false, "", "", "", sender.Email); err != nil {177 return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.failure.app_error", map[string]any{"Error": err.Error()}, "", http.StatusInternalServerError)178 }179 }180 if err := a.setWarnMetricsStatusAndNotify(warnMetric.Id); err != nil {181 return err182 }183 }184 return nil185}186func (a *App) setWarnMetricsStatusAndNotify(warnMetricId string) *model.AppError {187 // Ack all metric warnings on the server188 if err := a.setWarnMetricsStatus(model.WarnMetricStatusAck); err != nil {189 return err190 }191 // Inform client that this metric warning has been acked192 message := model.NewWebSocketEvent(model.WebsocketWarnMetricStatusRemoved, "", "", "", nil, "")193 message.Add("warnMetricId", warnMetricId)194 a.Publish(message)195 return nil196}197func (a *App) setWarnMetricsStatus(status string) *model.AppError {198 mlog.Debug("Set monitoring status for all warn metrics", mlog.String("status", status))199 for _, warnMetric := range model.WarnMetricsTable {200 if err := a.setWarnMetricsStatusForId(warnMetric.Id, status); err != nil {201 return err202 }203 }204 return nil205}206func (a *App) setWarnMetricsStatusForId(warnMetricId string, status string) *model.AppError {207 mlog.Debug("Store status for warn metric", mlog.String("warnMetricId", warnMetricId), mlog.String("status", status))208 if err := a.Srv().Store.System().SaveOrUpdateWithWarnMetricHandling(&model.System{209 Name: warnMetricId,210 Value: status,211 }); err != nil {212 return model.NewAppError("setWarnMetricsStatusForId", "app.system.warn_metric.store.app_error", map[string]any{"WarnMetricName": warnMetricId}, "", http.StatusInternalServerError).Wrap(err)213 }214 return nil215}216func (a *App) RequestLicenseAndAckWarnMetric(c *request.Context, warnMetricId string, isBot bool) *model.AppError {217 if *a.Config().ExperimentalSettings.RestrictSystemAdmin {218 return model.NewAppError("RequestLicenseAndAckWarnMetric", "api.restricted_system_admin", nil, "", http.StatusForbidden)219 }220 currentUser, appErr := a.GetUser(c.Session().UserId)221 if appErr != nil {222 return appErr223 }224 registeredUsersCount, err := a.Srv().Store.User().Count(model.UserCountOptions{})225 if err != nil {226 return model.NewAppError("RequestLicenseAndAckWarnMetric", "api.license.request_trial_license.fail_get_user_count.app_error", nil, "", http.StatusBadRequest).Wrap(err)227 }228 if err := a.Channels().RequestTrialLicense(c.Session().UserId, int(registeredUsersCount), true, true); err != nil {229 // turn off warn metric warning even in case of StartTrial failure230 if nerr := a.setWarnMetricsStatusAndNotify(warnMetricId); nerr != nil {231 return nerr232 }233 return err234 }235 if appErr = a.NotifyAndSetWarnMetricAck(warnMetricId, currentUser, true, isBot); appErr != nil {236 return appErr237 }238 return nil239}...

Full Screen

Full Screen

expiration_test.go

Source:expiration_test.go Github

copy

Full Screen

...78 })79 warnShouldNotBeInvoked := func(format string, args ...interface{}) {80 t.Fatalf(format, args...)81 }82 var formattedWarning string83 warnShouldBeInvoked := func(format string, args ...interface{}) {84 formattedWarning = fmt.Sprintf(format, args...)85 }86 var formattedInfo string87 infoShouldBeInvoked := func(format string, args ...interface{}) {88 formattedInfo = fmt.Sprintf(format, args...)89 }90 for _, testCase := range []struct {91 description string92 tls bool93 serverCert []byte94 clientCertChain [][]byte95 sIDBytes []byte96 info MessageFunc97 warn MessageFunc98 now time.Time99 expectedInfoPrefix string100 expectedWarn string101 }{102 {103 description: "No TLS, enrollment cert isn't valid logs a warning",104 warn: warnShouldNotBeInvoked,105 sIDBytes: []byte{1, 2, 3},106 },107 {108 description: "No TLS, enrollment cert expires soon",109 sIDBytes: signingIdentity,110 info: infoShouldBeInvoked,111 warn: warnShouldBeInvoked,112 now: monthBeforeExpiration,113 expectedInfoPrefix: "The enrollment certificate will expire on",114 expectedWarn: "The enrollment certificate will expire within one week",115 },116 {117 description: "TLS, server cert expires soon",118 info: infoShouldBeInvoked,119 warn: warnShouldBeInvoked,120 now: monthBeforeExpiration,121 tls: true,122 serverCert: tlsCert.Cert,123 expectedInfoPrefix: "The server TLS certificate will expire on",124 expectedWarn: "The server TLS certificate will expire within one week",125 },126 {127 description: "TLS, server cert expires really soon",128 info: infoShouldBeInvoked,129 warn: warnShouldBeInvoked,130 now: twoDaysBeforeExpiration,131 tls: true,132 serverCert: tlsCert.Cert,133 expectedInfoPrefix: "The server TLS certificate will expire on",134 expectedWarn: "The server TLS certificate expires within 2 days and 12 hours",135 },136 {137 description: "TLS, server cert has expired",138 info: infoShouldBeInvoked,139 warn: warnShouldBeInvoked,140 now: expirationTime.Add(time.Hour),141 tls: true,142 serverCert: tlsCert.Cert,143 expectedWarn: "The server TLS certificate has expired",144 },145 {146 description: "TLS, client cert expires soon",147 info: infoShouldBeInvoked,148 warn: warnShouldBeInvoked,149 now: monthBeforeExpiration,150 tls: true,151 clientCertChain: [][]byte{tlsCert.Cert},152 expectedInfoPrefix: "The client TLS certificate will expire on",153 expectedWarn: "The client TLS certificate will expire within one week",154 },155 } {156 t.Run(testCase.description, func(t *testing.T) {157 defer func() {158 formattedWarning = ""159 formattedInfo = ""160 }()161 fakeTimeAfter := func(duration time.Duration, f func()) *time.Timer {162 require.NotEmpty(t, testCase.expectedWarn)163 threeWeeks := 3 * 7 * 24 * time.Hour164 require.Equal(t, threeWeeks, duration)165 f()166 return nil167 }168 TrackExpiration(testCase.tls,169 testCase.serverCert,170 testCase.clientCertChain,171 testCase.sIDBytes,172 testCase.info,173 testCase.warn,174 testCase.now,175 fakeTimeAfter)176 if testCase.expectedInfoPrefix != "" {177 require.True(t, strings.HasPrefix(formattedInfo, testCase.expectedInfoPrefix))178 } else {179 require.Empty(t, formattedInfo)180 }181 if testCase.expectedWarn != "" {182 require.Equal(t, testCase.expectedWarn, formattedWarning)183 } else {184 require.Empty(t, formattedWarning)185 }186 })187 }188}189func TestLogNonPubKeyMismatchErr(t *testing.T) {190 ca, err := tlsgen.NewCA()191 require.NoError(t, err)192 aliceKeyPair, err := ca.NewClientCertKeyPair()193 require.NoError(t, err)194 bobKeyPair, err := ca.NewClientCertKeyPair()195 require.NoError(t, err)196 expected := &bytes.Buffer{}197 expected.WriteString(fmt.Sprintf("Failed determining if public key of %s matches public key of %s: foo",198 string(aliceKeyPair.Cert),...

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {4 fmt.Fprintf(w, "Hello, %q", r.URL.Path)5 })6 log.Fatal(http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {7 fmt.Fprintf(w, "Hello, %q", r.URL.Path)8 })))9}10import (11func main() {12 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {13 fmt.Fprintf(w, "Hello, %q", r.URL.Path)14 })15 log.Fatal(http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {16 fmt.Fprintf(w, "Hello, %q", r.URL.Path)17 })))18}19import (20func main() {21 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {22 fmt.Fprintf(w, "Hello, %q", r.URL.Path)23 })24 log.Fatal(http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {25 fmt.Fprintf(w, "Hello, %q", r.URL.Path)26 })))27}28import (29func main() {30 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {31 fmt.Fprintf(w, "Hello, %q", r.URL.Path)32 })33 log.Fatal(http.ListenAndServe(":8080", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {34 fmt.Fprintf(w, "Hello, %q", r.URL.Path)35 })))36}37import (38func main() {39 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {40 fmt.Fprintf(w, "Hello, %q", r.URL.Path)41 })42 log.Fatal(http.ListenAndServe(":8080", http

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 log := logs.NewLogger(10000)4 log.SetLogger("file", `{"filename":"test.log"}`)5 log.Warn("this is warn")6 log.Debug("this is debug")7 log.Info("this is info")8 log.Error("this is error")9 log.Critical("this is critical")10}11import (12func main() {13 log := logs.NewLogger(10000)14 log.SetLogger("console")15 log.Warn("this is warn")16 log.Debug("this is debug")17 log.Info("this is info")18 log.Error("this is error")19 log.Critical("this is critical")20}

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2type MainController struct {3}4func (c *MainController) Get() {5 c.Ctx.WriteString("Hello World")6}7func main() {

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2type MainController struct {3}4func (this *MainController) Get() {5 beego.Warn("this is a warning")6 this.Ctx.WriteString("hello world")7}8func main() {9 beego.Router("/", &MainController{})10 beego.Run()11}12import (13type MainController struct {14}15func (this *MainController) Get() {16 beego.Error("this is an error")17 this.Ctx.WriteString("hello world")18}19func main() {20 beego.Router("/", &MainController{})21 beego.Run()22}23import (24type MainController struct {25}26func (this *MainController) Get() {27 beego.Critical("this is a critical error")28 this.Ctx.WriteString("hello world")29}30func main() {31 beego.Router("/", &MainController{})32 beego.Run()33}34import (35type MainController struct {36}37func (this *MainController) Get() {38 beego.Emergency("this is an emergency error")39 this.Ctx.WriteString("hello world")40}41func main() {42 beego.Router("/", &MainController{})43 beego.Run()44}

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {4 fmt.Fprintf(w, "Hello! %s", r.URL.Path)5 })6 log.Fatal(http.ListenAndServe(":8080", nil))7}8import (9func main() {10 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {11 fmt.Fprintf(w, "Hello! %s", r.URL.Path)12 })13 log.Fatal(http.ListenAndServe(":8080", nil))14}15import (16func main() {17 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {18 fmt.Fprintf(w, "Hello! %s", r.URL.Path)19 })20 log.Fatal(http.ListenAndServe(":8080", nil))21}22import (23func main() {24 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {25 fmt.Fprintf(w, "Hello! %s", r.URL.Path)26 })27 log.Fatal(http.ListenAndServe(":8080", nil))28}29import (30func main() {31 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {32 fmt.Fprintf(w, "Hello! %s", r.URL.Path)33 })34 log.Fatal(http.ListenAndServe(":8080", nil))35}36import (37func main() {38 http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {39 fmt.Fprintf(w, "Hello! %s", r.URL.Path)40 })41 log.Fatal(http.ListenAndServe(":8080", nil))42}43import (

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 log.Println("This is a log message")4 log.Fatalln("This is a fatal message")5 log.Panicln("This is a panic message")6}7log.Panicln(0xc42004ff68, 0x1, 0x1)8main.main()9log.Panicln(0xc42004ff68, 0x1, 0x1)10main.main()11import (12func main() {13 log.Println("This is a log message")14 log.Fatalf("This is a fatal message")15 log.Panicln("This is a panic message")16}

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 logs.Warn("this is a test for warn")4}5import (6func main() {7 logs.Error("this is a test for error")8}9import (10func main() {11 logs.Critical("this is a test for critical")12}13import (

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2type Server struct {3}4func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {5 s.Mux.ServeHTTP(w, r)6}7func (s *Server) Warn(w http.ResponseWriter, r *http.Request) {8 fmt.Fprintf(w, "Warning")9}10func main() {11 s := &Server{12 Mux: mux.NewRouter(),13 }14 s.Mux.HandleFunc("/warn", s.Warn).Methods("GET")15 http.ListenAndServe(":8080", s)16}17import (18type Server struct {19}20func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {21 s.Mux.ServeHTTP(w, r)22}23func (s *Server) Warn(w http.ResponseWriter, r *http.Request) {24 fmt.Fprintf(w, "Warning")25}26func main() {27 s := &Server{28 Mux: mux.NewRouter(),29 }30 s.Mux.HandleFunc("/warn", s.Warn).Methods("GET")31 http.ListenAndServe(":8080", s)32}33import (34type Server struct {35}36func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) {37 s.Mux.ServeHTTP(w, r)38}39func (s *Server) Warn(w http.ResponseWriter, r *http.Request) {40 fmt.Fprintf(w, "Warning")41}42func main() {43 s := &Server{44 Mux: mux.NewRouter(),45 }46 s.Mux.HandleFunc("/warn", s.Warn).Methods("GET")47 http.ListenAndServe(":8080", s)48}49import (50type Server struct {

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println("Hello, playground")4 server.Warn("This is a warning")5}6import (7func main() {8 fmt.Println("Hello, playground")9 server.Error("This is an error")10}11import (12func main() {13 fmt.Println("Hello, playground")14 server.Fatal("This is a fatal error")15}16import (17func main() {18 fmt.Println("Hello, playground")19 server.Panic("This is a panic error")20}21import (22func main() {23 fmt.Println("Hello, playground")24 server.Fatalf("This is a fatal error %s", "Fatal")25}26import (27func main() {28 fmt.Println("Hello, playground")29 server.Panicf("This is a panic error %s", "Panic")30}31import (32func main() {33 fmt.Println("Hello, playground")34 server.Fatalln("This is a fatal error")35}36import (37func main() {38 fmt.Println("Hello, playground")39 server.Panicln("This is a panic error")40}

Full Screen

Full Screen

Warn

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 server := NewServer()4 server.Warn("This is a warning message")5}6import (7func main() {8 server := NewServer()9 server.Info("This is a info message")10}11import (12func main() {13 server := NewServer()14 server.Error("This is a error message")15}16import (17func main() {18 server := NewServer()19 server.Fatal("This is a fatal message")20}21import (22func main() {23 server := NewServer()24 server.Panic("This is a panic message")25}26import (27func main() {28 server := NewServer()29 server.Debugf("This is a debug message")30}31import (32func main() {33 server := NewServer()34 server.Warnf("This is a warning message")35}36import (37func main() {38 server := NewServer()39 server.Infof("This is

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Testkube automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful