...

  1. We wanted it somewhere in the system console. After brief discussion with the integrations team, it was mentioned that plugins currently can render a custom React component for a plugin’s settings but that is as much modifying they can do in the system console. There is currently no structured way to do any more modifying and would require creative thinking “creative thinking” as mentioned by integrations.

  2. We noticed that we already have a commercial support link in the dropdown in the hamburger menu of the system console which leads you the a generic Mattermost support webpage. It was decided that we like to improve upon this even further by adding a modal for licensed customers (customers with E10 and E20 licenses) which allows them to download the support packet.

...

Code Block
languagejson
{
	"ServiceSettings": {
		"SiteURL": "http://localhost:8065",
		"WebsocketURL": null,
		"LicenseFileLocation": null,
		"ListenAddress": ":8065",
		"ConnectionSecurity": "",
		"TLSCertFile": "",
		"TLSKeyFile": "",
		"TLSMinVer": null,
		"TLSStrictTransport": null,
		"TLSStrictTransportMaxAge": null,
		"TLSOverwriteCiphers": null,
		"UseLetsEncrypt": false,
		"LetsEncryptCertificateCacheFile": "./config/letsencrypt.cache",
		"Forward80To443": false,
		"TrustedProxyIPHeader": null,
		"ReadTimeout": 300,
		"WriteTimeout": 300,
		"IdleTimeout": null,
		"MaximumLoginAttempts": 10,
		"GoroutineHealthThreshold": null,
		"GoogleDeveloperKey": "",
		"EnableOAuthServiceProvider": false,
		"EnableIncomingWebhooks": true,
		"EnableOutgoingWebhooks": true,
		"EnableCommands": true,
		"EnableOnlyAdminIntegrations": null,
		"EnablePostUsernameOverride": false,
		"EnablePostIconOverride": false,
		"EnableLinkPreviews": false,
		"EnableTesting": false,
		"EnableDeveloper": true,
		"EnableOpenTracing": null,
		"EnableSecurityFixAlert": true,
		"EnableInsecureOutgoingConnections": false,
		"AllowedUntrustedInternalConnections": "localhost,",
		"EnableMultifactorAuthentication": false,
		"EnforceMultifactorAuthentication": false,
		"EnableUserAccessTokens": false,
		"AllowCorsFrom": "",
		"CorsExposedHeaders": "",
		"CorsAllowCredentials": false,
		"CorsDebug": false,
		"AllowCookiesForSubdomains": null,
		"ExtendSessionLengthWithActivity": true,
		"SessionLengthWebInDays": 30,
		"SessionLengthMobileInDays": 30,
		"SessionLengthSSOInDays": 30,
		"SessionCacheInMinutes": 10,
		"SessionIdleTimeoutInMinutes": 43200,
		"WebsocketSecurePort": null,
		"WebsocketPort": null,
		"WebserverMode": "gzip",
		"EnableCustomEmoji": false,
		"EnableEmojiPicker": true,
		"EnableGifPicker": false,
		"GfycatApiKey": "2_KtH_W5",
		"GfycatApiSecret": "********************************",
		"RestrictCustomEmojiCreation": null,
		"RestrictPostDelete": null,
		"AllowEditPost": null,
		"PostEditTimeLimit": -1,
		"TimeBetweenUserTypingUpdatesMilliseconds": null,
		"EnablePostSearch": null,
		"MinimumHashtagLength": 3,
		"EnableUserTypingMessages": null,
		"EnableChannelViewedMessages": null,
		"EnableUserStatuses": null,
		"ExperimentalEnableAuthenticationTransfer": null,
		"ClusterLogTimeoutMilliseconds": null,
		"CloseUnusedDirectMessages": null,
		"EnablePreviewFeatures": null,
		"EnableTutorial": null,
		"ExperimentalEnableDefaultChannelLeaveJoinMessages": null,
		"ExperimentalGroupUnreadChannels": null,
		"ExperimentalChannelOrganization": null,
		"ExperimentalChannelSidebarOrganization": null,
		"ImageProxyType": null,
		"ImageProxyURL": null,
		"ImageProxyOptions": null,
		"EnableAPITeamDeletion": null,
		"EnableAPIUserDeletion": null,
		"ExperimentalEnableHardenedMode": null,
		"DisableLegacyMFA": null,
		"ExperimentalStrictCSRFEnforcement": null,
		"EnableEmailInvitations": true,
		"DisableBotsWhenOwnerIsDeactivated": true,
		"EnableBotAccountCreation": true,
		"EnableSVGs": true,
		"EnableLatex": false,
		"EnableAPIChannelDeletion": null,
		"EnableLocalMode": null,
		"LocalModeSocketLocation": null,
		"EnableAWSMetering": null,
		"SplitKey": "********************************",
		"FeatureFlagSyncIntervalSeconds": 30,
		"DebugSplit": false,
		"ThreadAutoFollow": null,
		"CollapsedThreads": null,
		"ManagedResourcePaths": ""
	},
	"TeamSettings": {
		"SiteName": "Mattermost",
		"MaxUsersPerTeam": 100,
		"EnableTeamCreation": null,
		"EnableUserCreation": true,
		"EnableOpenServer": true,
		"EnableUserDeactivation": null,
		"RestrictCreationToDomains": "",
		"EnableCustomBrand": false,
		"CustomBrandText": "",
		"CustomDescriptionText": "",
		"RestrictDirectMessage": "any",
		"RestrictTeamInvite": null,
		"RestrictPublicChannelManagement": null,
		"RestrictPrivateChannelManagement": null,
		"RestrictPublicChannelCreation": null,
		"RestrictPrivateChannelCreation": null,
		"RestrictPublicChannelDeletion": null,
		"RestrictPrivateChannelDeletion": null,
		"RestrictPrivateChannelManageMembers": null,
		"EnableXToLeaveChannelsFromLHS": null,
		"UserStatusAwayTimeout": null,
		"MaxChannelsPerTeam": 2000,
		"MaxNotificationsPerChannel": 1000000,
		"EnableConfirmNotificationsToChannel": true,
		"TeammateNameDisplay": "username",
		"ExperimentalViewArchivedChannels": false,
		"ExperimentalEnableAutomaticReplies": null,
		"ExperimentalHideTownSquareinLHS": null,
		"ExperimentalTownSquareIsReadOnly": null,
		"LockTeammateNameDisplay": false,
		"ExperimentalPrimaryTeam": null,
		"ExperimentalDefaultChannels": null
	},
	"SqlSettings": {
		"DriverName": "postgres",
		"DataSource": "********************************",
		"DataSourceReplicas": [],
		"DataSourceSearchReplicas": [],
		"MaxIdleConns": 20,
		"ConnMaxLifetimeMilliseconds": 3600000,
		"MaxOpenConns": 300,
		"Trace": false,
		"AtRestEncryptKey": "********************************",
		"QueryTimeout": 30,
		"DisableDatabaseSearch": false
	},
	"FileSettings": {
		"EnableFileAttachments": true,
		"EnableMobileUpload": true,
		"EnableMobileDownload": true,
		"MaxFileSize": 52428800,
		"DriverName": "local",
		"Directory": "./data/",
		"EnablePublicLink": false,
		"PublicLinkSalt": "********************************",
		"InitialFont": "nunito-bold.ttf",
		"AmazonS3AccessKeyId": "",
		"AmazonS3SecretAccessKey": "",
		"AmazonS3Bucket": "",
		"AmazonS3PathPrefix": "",
		"AmazonS3Region": "",
		"AmazonS3Endpoint": "s3.amazonaws.com",
		"AmazonS3SSL": true,
		"AmazonS3SignV2": false,
		"AmazonS3SSE": false,
		"AmazonS3Trace": false
	},
	"EmailSettings": {
		"EnableSignUpWithEmail": true,
		"EnableSignInWithEmail": true,
		"EnableSignInWithUsername": true,
		"SendEmailNotifications": true,
		"UseChannelInEmailNotifications": null,
		"RequireEmailVerification": false,
		"FeedbackName": "",
		"FeedbackEmail": "test@example.com",
		"ReplyToAddress": "test@example.com",
		"FeedbackOrganization": "",
		"EnableSMTPAuth": true,
		"SMTPUsername": "",
		"SMTPPassword": "********************************",
		"SMTPServer": "localhost",
		"SMTPPort": "10025",
		"SMTPServerTimeout": null,
		"ConnectionSecurity": "",
		"SendPushNotifications": true,
		"PushNotificationServer": "https://push-test.mattermost.com",
		"PushNotificationContents": "generic",
		"PushNotificationBuffer": null,
		"EnableEmailBatching": false,
		"EmailBatchingBufferSize": null,
		"EmailBatchingInterval": null,
		"EnablePreviewModeBanner": true,
		"SkipServerCertificateVerification": false,
		"EmailNotificationContentsType": "full",
		"LoginButtonColor": null,
		"LoginButtonBorderColor": null,
		"LoginButtonTextColor": null
	},
	"RateLimitSettings": {
		"Enable": false,
		"PerSec": 10,
		"MaxBurst": 100,
		"MemoryStoreSize": 10000,
		"VaryByRemoteAddr": true,
		"VaryByUser": false,
		"VaryByHeader": ""
	},
	"PrivacySettings": {
		"ShowEmailAddress": true,
		"ShowFullName": true
	},
	"AnnouncementSettings": {
		"EnableBanner": false,
		"BannerText": "",
		"BannerColor": "#f2a93b",
		"BannerTextColor": "#333333",
		"AllowBannerDismissal": true,
		"AdminNoticesEnabled": false,
		"UserNoticesEnabled": false,
		"NoticesURL": "https://notices.mattermost.com/",
		"NoticesFetchFrequency": 3600,
		"NoticesSkipCache": false
	},
	"ThemeSettings": {
		"EnableThemeSelection": null,
		"DefaultTheme": null,
		"AllowCustomThemes": null,
		"AllowedThemes": null
	},
	"GitLabSettings": {
		"Enable": false,
		"Secret": "",
		"Id": "",
		"Scope": "",
		"AuthEndpoint": "",
		"TokenEndpoint": "",
		"UserApiEndpoint": "",
		"DiscoveryEndpoint": "",
		"ButtonText": "",
		"ButtonColor": ""
	},
	"GoogleSettings": {
		"Enable": false,
		"Secret": "",
		"Id": "",
		"Scope": "profile email",
		"AuthEndpoint": "https://accounts.google.com/o/oauth2/v2/auth",
		"TokenEndpoint": "https://www.googleapis.com/oauth2/v4/token",
		"UserApiEndpoint": "https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses,nicknames,metadata",
		"DiscoveryEndpoint": "https://accounts.google.com/.well-known/openid-configuration",
		"ButtonText": "",
		"ButtonColor": ""
	},
	"OpenIdSettings": {
		"Enable": false,
		"Secret": "",
		"Id": "",
		"Scope": "profile openid email",
		"AuthEndpoint": "",
		"TokenEndpoint": "",
		"UserApiEndpoint": "",
		"DiscoveryEndpoint": "",
		"ButtonText": "",
		"ButtonColor": "#145DBF"
	},
	"LdapSettings": {
		"Enable": true,
		"EnableSync": false,
		"LdapServer": "localhost",
		"LdapPort": 389,
		"ConnectionSecurity": "",
		"BaseDN": "dc=mm,dc=test,dc=com",
		"BindUsername": "cn=admin,dc=mm,dc=test,dc=com",
		"BindPassword": "********************************",
		"UserFilter": "",
		"GroupFilter": "",
		"GuestFilter": "",
		"EnableAdminFilter": null,
		"AdminFilter": null,
		"GroupDisplayNameAttribute": "cn",
		"GroupIdAttribute": "entryUUID",
		"FirstNameAttribute": "cn",
		"LastNameAttribute": "sn",
		"EmailAttribute": "mail",
		"UsernameAttribute": "uid",
		"NicknameAttribute": "cn",
		"IdAttribute": "uid",
		"PositionAttribute": "sAMAccountType",
		"LoginIdAttribute": "uid",
		"PictureAttribute": "",
		"SyncIntervalMinutes": 10000,
		"SkipCertificateVerification": false,
		"PublicCertificateFile": "",
		"PrivateKeyFile": "",
		"QueryTimeout": 60,
		"MaxPageSize": 500,
		"LoginFieldName": "",
		"LoginButtonColor": "#0000",
		"LoginButtonBorderColor": "#2389D7",
		"LoginButtonTextColor": "#2389D7",
		"Trace": false
	},
    ...
}

...

Here, I will be discussing how we will retrieve the information seen in the support_packet.yaml

Server OS:

In golang, we can use runtime.GOOS to get the operating system which the server is running on.

...