summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/channel.go20
-rw-r--r--app/diagnostics.go95
-rw-r--r--config/default.json3
-rw-r--r--model/config.go117
-rw-r--r--utils/config.go1
5 files changed, 125 insertions, 111 deletions
diff --git a/app/channel.go b/app/channel.go
index d37f681bb..4b6a99d63 100644
--- a/app/channel.go
+++ b/app/channel.go
@@ -63,13 +63,15 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, channelRole s
l4g.Warn("Failed to update ChannelMemberHistory table %v", result.Err)
}
- if requestor == nil {
- if err := a.postJoinTeamMessage(user, townSquare); err != nil {
- l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
- }
- } else {
- if err := a.PostAddToTeamMessage(requestor, user, townSquare, ""); err != nil {
- l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
+ if *a.Config().ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages == true {
+ if requestor == nil {
+ if err := a.postJoinTeamMessage(user, townSquare); err != nil {
+ l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
+ }
+ } else {
+ if err := a.PostAddToTeamMessage(requestor, user, townSquare, ""); err != nil {
+ l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
+ }
}
}
@@ -1012,6 +1014,10 @@ func (a *App) LeaveChannel(channelId string, userId string) *model.AppError {
return err
}
+ if channel.Name == model.DEFAULT_CHANNEL && *a.Config().ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages == false {
+ return nil
+ }
+
a.Go(func() {
a.postLeaveChannelMessage(user, channel)
})
diff --git a/app/diagnostics.go b/app/diagnostics.go
index 8fd7f9c85..2ef608ee3 100644
--- a/app/diagnostics.go
+++ b/app/diagnostics.go
@@ -190,53 +190,54 @@ func (a *App) trackActivity() {
func (a *App) trackConfig() {
cfg := a.Config()
a.SendDiagnostic(TRACK_CONFIG_SERVICE, map[string]interface{}{
- "web_server_mode": *cfg.ServiceSettings.WebserverMode,
- "enable_security_fix_alert": *cfg.ServiceSettings.EnableSecurityFixAlert,
- "enable_insecure_outgoing_connections": *cfg.ServiceSettings.EnableInsecureOutgoingConnections,
- "enable_incoming_webhooks": cfg.ServiceSettings.EnableIncomingWebhooks,
- "enable_outgoing_webhooks": cfg.ServiceSettings.EnableOutgoingWebhooks,
- "enable_commands": *cfg.ServiceSettings.EnableCommands,
- "enable_only_admin_integrations": *cfg.ServiceSettings.EnableOnlyAdminIntegrations,
- "enable_post_username_override": cfg.ServiceSettings.EnablePostUsernameOverride,
- "enable_post_icon_override": cfg.ServiceSettings.EnablePostIconOverride,
- "enable_apiv3": *cfg.ServiceSettings.EnableAPIv3,
- "enable_user_access_tokens": *cfg.ServiceSettings.EnableUserAccessTokens,
- "enable_custom_emoji": *cfg.ServiceSettings.EnableCustomEmoji,
- "enable_emoji_picker": *cfg.ServiceSettings.EnableEmojiPicker,
- "experimental_enable_authentication_transfer": *cfg.ServiceSettings.ExperimentalEnableAuthenticationTransfer,
- "restrict_custom_emoji_creation": *cfg.ServiceSettings.RestrictCustomEmojiCreation,
- "enable_testing": cfg.ServiceSettings.EnableTesting,
- "enable_developer": *cfg.ServiceSettings.EnableDeveloper,
- "enable_multifactor_authentication": *cfg.ServiceSettings.EnableMultifactorAuthentication,
- "enforce_multifactor_authentication": *cfg.ServiceSettings.EnforceMultifactorAuthentication,
- "enable_oauth_service_provider": cfg.ServiceSettings.EnableOAuthServiceProvider,
- "connection_security": *cfg.ServiceSettings.ConnectionSecurity,
- "uses_letsencrypt": *cfg.ServiceSettings.UseLetsEncrypt,
- "forward_80_to_443": *cfg.ServiceSettings.Forward80To443,
- "maximum_login_attempts": *cfg.ServiceSettings.MaximumLoginAttempts,
- "session_length_web_in_days": *cfg.ServiceSettings.SessionLengthWebInDays,
- "session_length_mobile_in_days": *cfg.ServiceSettings.SessionLengthMobileInDays,
- "session_length_sso_in_days": *cfg.ServiceSettings.SessionLengthSSOInDays,
- "session_cache_in_minutes": *cfg.ServiceSettings.SessionCacheInMinutes,
- "session_idle_timeout_in_minutes": *cfg.ServiceSettings.SessionIdleTimeoutInMinutes,
- "isdefault_site_url": isDefault(*cfg.ServiceSettings.SiteURL, model.SERVICE_SETTINGS_DEFAULT_SITE_URL),
- "isdefault_tls_cert_file": isDefault(*cfg.ServiceSettings.TLSCertFile, model.SERVICE_SETTINGS_DEFAULT_TLS_CERT_FILE),
- "isdefault_tls_key_file": isDefault(*cfg.ServiceSettings.TLSKeyFile, model.SERVICE_SETTINGS_DEFAULT_TLS_KEY_FILE),
- "isdefault_read_timeout": isDefault(*cfg.ServiceSettings.ReadTimeout, model.SERVICE_SETTINGS_DEFAULT_READ_TIMEOUT),
- "isdefault_write_timeout": isDefault(*cfg.ServiceSettings.WriteTimeout, model.SERVICE_SETTINGS_DEFAULT_WRITE_TIMEOUT),
- "isdefault_google_developer_key": isDefault(cfg.ServiceSettings.GoogleDeveloperKey, ""),
- "isdefault_allow_cors_from": isDefault(*cfg.ServiceSettings.AllowCorsFrom, model.SERVICE_SETTINGS_DEFAULT_ALLOW_CORS_FROM),
- "isdefault_allowed_untrusted_internal_connections": isDefault(*cfg.ServiceSettings.AllowedUntrustedInternalConnections, ""),
- "restrict_post_delete": *cfg.ServiceSettings.RestrictPostDelete,
- "allow_edit_post": *cfg.ServiceSettings.AllowEditPost,
- "post_edit_time_limit": *cfg.ServiceSettings.PostEditTimeLimit,
- "enable_user_typing_messages": *cfg.ServiceSettings.EnableUserTypingMessages,
- "enable_channel_viewed_messages": *cfg.ServiceSettings.EnableChannelViewedMessages,
- "time_between_user_typing_updates_milliseconds": *cfg.ServiceSettings.TimeBetweenUserTypingUpdatesMilliseconds,
- "cluster_log_timeout_milliseconds": *cfg.ServiceSettings.ClusterLogTimeoutMilliseconds,
- "enable_post_search": *cfg.ServiceSettings.EnablePostSearch,
- "enable_user_statuses": *cfg.ServiceSettings.EnableUserStatuses,
- "close_unused_direct_messages": *cfg.ServiceSettings.CloseUnusedDirectMessages,
+ "web_server_mode": *cfg.ServiceSettings.WebserverMode,
+ "enable_security_fix_alert": *cfg.ServiceSettings.EnableSecurityFixAlert,
+ "enable_insecure_outgoing_connections": *cfg.ServiceSettings.EnableInsecureOutgoingConnections,
+ "enable_incoming_webhooks": cfg.ServiceSettings.EnableIncomingWebhooks,
+ "enable_outgoing_webhooks": cfg.ServiceSettings.EnableOutgoingWebhooks,
+ "enable_commands": *cfg.ServiceSettings.EnableCommands,
+ "enable_only_admin_integrations": *cfg.ServiceSettings.EnableOnlyAdminIntegrations,
+ "enable_post_username_override": cfg.ServiceSettings.EnablePostUsernameOverride,
+ "enable_post_icon_override": cfg.ServiceSettings.EnablePostIconOverride,
+ "enable_apiv3": *cfg.ServiceSettings.EnableAPIv3,
+ "enable_user_access_tokens": *cfg.ServiceSettings.EnableUserAccessTokens,
+ "enable_custom_emoji": *cfg.ServiceSettings.EnableCustomEmoji,
+ "enable_emoji_picker": *cfg.ServiceSettings.EnableEmojiPicker,
+ "experimental_enable_authentication_transfer": *cfg.ServiceSettings.ExperimentalEnableAuthenticationTransfer,
+ "restrict_custom_emoji_creation": *cfg.ServiceSettings.RestrictCustomEmojiCreation,
+ "enable_testing": cfg.ServiceSettings.EnableTesting,
+ "enable_developer": *cfg.ServiceSettings.EnableDeveloper,
+ "enable_multifactor_authentication": *cfg.ServiceSettings.EnableMultifactorAuthentication,
+ "enforce_multifactor_authentication": *cfg.ServiceSettings.EnforceMultifactorAuthentication,
+ "enable_oauth_service_provider": cfg.ServiceSettings.EnableOAuthServiceProvider,
+ "connection_security": *cfg.ServiceSettings.ConnectionSecurity,
+ "uses_letsencrypt": *cfg.ServiceSettings.UseLetsEncrypt,
+ "forward_80_to_443": *cfg.ServiceSettings.Forward80To443,
+ "maximum_login_attempts": *cfg.ServiceSettings.MaximumLoginAttempts,
+ "session_length_web_in_days": *cfg.ServiceSettings.SessionLengthWebInDays,
+ "session_length_mobile_in_days": *cfg.ServiceSettings.SessionLengthMobileInDays,
+ "session_length_sso_in_days": *cfg.ServiceSettings.SessionLengthSSOInDays,
+ "session_cache_in_minutes": *cfg.ServiceSettings.SessionCacheInMinutes,
+ "session_idle_timeout_in_minutes": *cfg.ServiceSettings.SessionIdleTimeoutInMinutes,
+ "isdefault_site_url": isDefault(*cfg.ServiceSettings.SiteURL, model.SERVICE_SETTINGS_DEFAULT_SITE_URL),
+ "isdefault_tls_cert_file": isDefault(*cfg.ServiceSettings.TLSCertFile, model.SERVICE_SETTINGS_DEFAULT_TLS_CERT_FILE),
+ "isdefault_tls_key_file": isDefault(*cfg.ServiceSettings.TLSKeyFile, model.SERVICE_SETTINGS_DEFAULT_TLS_KEY_FILE),
+ "isdefault_read_timeout": isDefault(*cfg.ServiceSettings.ReadTimeout, model.SERVICE_SETTINGS_DEFAULT_READ_TIMEOUT),
+ "isdefault_write_timeout": isDefault(*cfg.ServiceSettings.WriteTimeout, model.SERVICE_SETTINGS_DEFAULT_WRITE_TIMEOUT),
+ "isdefault_google_developer_key": isDefault(cfg.ServiceSettings.GoogleDeveloperKey, ""),
+ "isdefault_allow_cors_from": isDefault(*cfg.ServiceSettings.AllowCorsFrom, model.SERVICE_SETTINGS_DEFAULT_ALLOW_CORS_FROM),
+ "isdefault_allowed_untrusted_internal_connections": isDefault(*cfg.ServiceSettings.AllowedUntrustedInternalConnections, ""),
+ "restrict_post_delete": *cfg.ServiceSettings.RestrictPostDelete,
+ "allow_edit_post": *cfg.ServiceSettings.AllowEditPost,
+ "post_edit_time_limit": *cfg.ServiceSettings.PostEditTimeLimit,
+ "enable_user_typing_messages": *cfg.ServiceSettings.EnableUserTypingMessages,
+ "enable_channel_viewed_messages": *cfg.ServiceSettings.EnableChannelViewedMessages,
+ "time_between_user_typing_updates_milliseconds": *cfg.ServiceSettings.TimeBetweenUserTypingUpdatesMilliseconds,
+ "cluster_log_timeout_milliseconds": *cfg.ServiceSettings.ClusterLogTimeoutMilliseconds,
+ "enable_post_search": *cfg.ServiceSettings.EnablePostSearch,
+ "enable_user_statuses": *cfg.ServiceSettings.EnableUserStatuses,
+ "close_unused_direct_messages": *cfg.ServiceSettings.CloseUnusedDirectMessages,
+ "experimental_enable_default_channel_leave_join_messages": *cfg.ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages,
})
a.SendDiagnostic(TRACK_CONFIG_TEAM, map[string]interface{}{
diff --git a/config/default.json b/config/default.json
index 740edee6b..6ebf29789 100644
--- a/config/default.json
+++ b/config/default.json
@@ -55,7 +55,8 @@
"ClusterLogTimeoutMilliseconds": 2000,
"EnablePreviewFeatures": true,
"CloseUnusedDirectMessages": false,
- "EnableTutorial": true
+ "EnableTutorial": true,
+ "ExperimentalEnableDefaultChannelLeaveJoinMessages": true
},
"TeamSettings": {
"SiteName": "Mattermost",
diff --git a/model/config.go b/model/config.go
index fb34d1a04..d1bb0a41c 100644
--- a/model/config.go
+++ b/model/config.go
@@ -157,62 +157,63 @@ const (
)
type ServiceSettings struct {
- SiteURL *string
- LicenseFileLocation *string
- ListenAddress *string
- ConnectionSecurity *string
- TLSCertFile *string
- TLSKeyFile *string
- UseLetsEncrypt *bool
- LetsEncryptCertificateCacheFile *string
- Forward80To443 *bool
- ReadTimeout *int
- WriteTimeout *int
- MaximumLoginAttempts *int
- GoroutineHealthThreshold *int
- GoogleDeveloperKey string
- EnableOAuthServiceProvider bool
- EnableIncomingWebhooks bool
- EnableOutgoingWebhooks bool
- EnableCommands *bool
- EnableOnlyAdminIntegrations *bool
- EnablePostUsernameOverride bool
- EnablePostIconOverride bool
- EnableAPIv3 *bool
- EnableLinkPreviews *bool
- EnableTesting bool
- EnableDeveloper *bool
- EnableSecurityFixAlert *bool
- EnableInsecureOutgoingConnections *bool
- AllowedUntrustedInternalConnections *string
- EnableMultifactorAuthentication *bool
- EnforceMultifactorAuthentication *bool
- EnableUserAccessTokens *bool
- AllowCorsFrom *string
- SessionLengthWebInDays *int
- SessionLengthMobileInDays *int
- SessionLengthSSOInDays *int
- SessionCacheInMinutes *int
- SessionIdleTimeoutInMinutes *int
- WebsocketSecurePort *int
- WebsocketPort *int
- WebserverMode *string
- EnableCustomEmoji *bool
- EnableEmojiPicker *bool
- RestrictCustomEmojiCreation *string
- RestrictPostDelete *string
- AllowEditPost *string
- PostEditTimeLimit *int
- TimeBetweenUserTypingUpdatesMilliseconds *int64
- EnablePostSearch *bool
- EnableUserTypingMessages *bool
- EnableChannelViewedMessages *bool
- EnableUserStatuses *bool
- ExperimentalEnableAuthenticationTransfer *bool
- ClusterLogTimeoutMilliseconds *int
- CloseUnusedDirectMessages *bool
- EnablePreviewFeatures *bool
- EnableTutorial *bool
+ SiteURL *string
+ LicenseFileLocation *string
+ ListenAddress *string
+ ConnectionSecurity *string
+ TLSCertFile *string
+ TLSKeyFile *string
+ UseLetsEncrypt *bool
+ LetsEncryptCertificateCacheFile *string
+ Forward80To443 *bool
+ ReadTimeout *int
+ WriteTimeout *int
+ MaximumLoginAttempts *int
+ GoroutineHealthThreshold *int
+ GoogleDeveloperKey string
+ EnableOAuthServiceProvider bool
+ EnableIncomingWebhooks bool
+ EnableOutgoingWebhooks bool
+ EnableCommands *bool
+ EnableOnlyAdminIntegrations *bool
+ EnablePostUsernameOverride bool
+ EnablePostIconOverride bool
+ EnableAPIv3 *bool
+ EnableLinkPreviews *bool
+ EnableTesting bool
+ EnableDeveloper *bool
+ EnableSecurityFixAlert *bool
+ EnableInsecureOutgoingConnections *bool
+ AllowedUntrustedInternalConnections *string
+ EnableMultifactorAuthentication *bool
+ EnforceMultifactorAuthentication *bool
+ EnableUserAccessTokens *bool
+ AllowCorsFrom *string
+ SessionLengthWebInDays *int
+ SessionLengthMobileInDays *int
+ SessionLengthSSOInDays *int
+ SessionCacheInMinutes *int
+ SessionIdleTimeoutInMinutes *int
+ WebsocketSecurePort *int
+ WebsocketPort *int
+ WebserverMode *string
+ EnableCustomEmoji *bool
+ EnableEmojiPicker *bool
+ RestrictCustomEmojiCreation *string
+ RestrictPostDelete *string
+ AllowEditPost *string
+ PostEditTimeLimit *int
+ TimeBetweenUserTypingUpdatesMilliseconds *int64
+ EnablePostSearch *bool
+ EnableUserTypingMessages *bool
+ EnableChannelViewedMessages *bool
+ EnableUserStatuses *bool
+ ExperimentalEnableAuthenticationTransfer *bool
+ ClusterLogTimeoutMilliseconds *int
+ CloseUnusedDirectMessages *bool
+ EnablePreviewFeatures *bool
+ EnableTutorial *bool
+ ExperimentalEnableDefaultChannelLeaveJoinMessages *bool
}
func (s *ServiceSettings) SetDefaults() {
@@ -413,6 +414,10 @@ func (s *ServiceSettings) SetDefaults() {
if s.EnablePreviewFeatures == nil {
s.EnablePreviewFeatures = NewBool(true)
}
+
+ if s.ExperimentalEnableDefaultChannelLeaveJoinMessages == nil {
+ s.ExperimentalEnableDefaultChannelLeaveJoinMessages = NewBool(true)
+ }
}
type ClusterSettings struct {
diff --git a/utils/config.go b/utils/config.go
index 83785f045..d1522538d 100644
--- a/utils/config.go
+++ b/utils/config.go
@@ -475,6 +475,7 @@ func GenerateClientConfig(c *model.Config, diagnosticId string) map[string]strin
props["CloseUnusedDirectMessages"] = strconv.FormatBool(*c.ServiceSettings.CloseUnusedDirectMessages)
props["EnablePreviewFeatures"] = strconv.FormatBool(*c.ServiceSettings.EnablePreviewFeatures)
props["EnableTutorial"] = strconv.FormatBool(*c.ServiceSettings.EnableTutorial)
+ props["ExperimentalEnableDefaultChannelLeaveJoinMessages"] = strconv.FormatBool(*c.ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages)
props["SendEmailNotifications"] = strconv.FormatBool(c.EmailSettings.SendEmailNotifications)
props["SendPushNotifications"] = strconv.FormatBool(*c.EmailSettings.SendPushNotifications)