github.com/mattermosttest/mattermost-server/v5@v5.0.0-20200917143240-9dfa12e121f9/app/enterprise.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See LICENSE.txt for license information. 3 4 package app 5 6 import ( 7 "github.com/mattermost/mattermost-server/v5/einterfaces" 8 ejobs "github.com/mattermost/mattermost-server/v5/einterfaces/jobs" 9 tjobs "github.com/mattermost/mattermost-server/v5/jobs/interfaces" 10 "github.com/mattermost/mattermost-server/v5/mlog" 11 "github.com/mattermost/mattermost-server/v5/model" 12 "github.com/mattermost/mattermost-server/v5/services/searchengine" 13 ) 14 15 var accountMigrationInterface func(*App) einterfaces.AccountMigrationInterface 16 17 func RegisterAccountMigrationInterface(f func(*App) einterfaces.AccountMigrationInterface) { 18 accountMigrationInterface = f 19 } 20 21 var clusterInterface func(*Server) einterfaces.ClusterInterface 22 23 func RegisterClusterInterface(f func(*Server) einterfaces.ClusterInterface) { 24 clusterInterface = f 25 } 26 27 var complianceInterface func(*Server) einterfaces.ComplianceInterface 28 29 func RegisterComplianceInterface(f func(*Server) einterfaces.ComplianceInterface) { 30 complianceInterface = f 31 } 32 33 var dataRetentionInterface func(*Server) einterfaces.DataRetentionInterface 34 35 func RegisterDataRetentionInterface(f func(*Server) einterfaces.DataRetentionInterface) { 36 dataRetentionInterface = f 37 } 38 39 var elasticsearchInterface func(*Server) searchengine.SearchEngineInterface 40 41 func RegisterElasticsearchInterface(f func(*Server) searchengine.SearchEngineInterface) { 42 elasticsearchInterface = f 43 } 44 45 var jobsDataRetentionJobInterface func(*Server) ejobs.DataRetentionJobInterface 46 47 func RegisterJobsDataRetentionJobInterface(f func(*Server) ejobs.DataRetentionJobInterface) { 48 jobsDataRetentionJobInterface = f 49 } 50 51 var jobsMessageExportJobInterface func(*Server) ejobs.MessageExportJobInterface 52 53 func RegisterJobsMessageExportJobInterface(f func(*Server) ejobs.MessageExportJobInterface) { 54 jobsMessageExportJobInterface = f 55 } 56 57 var jobsElasticsearchAggregatorInterface func(*Server) ejobs.ElasticsearchAggregatorInterface 58 59 func RegisterJobsElasticsearchAggregatorInterface(f func(*Server) ejobs.ElasticsearchAggregatorInterface) { 60 jobsElasticsearchAggregatorInterface = f 61 } 62 63 var jobsElasticsearchIndexerInterface func(*Server) tjobs.IndexerJobInterface 64 65 func RegisterJobsElasticsearchIndexerInterface(f func(*Server) tjobs.IndexerJobInterface) { 66 jobsElasticsearchIndexerInterface = f 67 } 68 69 var jobsLdapSyncInterface func(*App) ejobs.LdapSyncInterface 70 71 func RegisterJobsLdapSyncInterface(f func(*App) ejobs.LdapSyncInterface) { 72 jobsLdapSyncInterface = f 73 } 74 75 var jobsMigrationsInterface func(*Server) tjobs.MigrationsJobInterface 76 77 func RegisterJobsMigrationsJobInterface(f func(*Server) tjobs.MigrationsJobInterface) { 78 jobsMigrationsInterface = f 79 } 80 81 var jobsPluginsInterface func(*App) tjobs.PluginsJobInterface 82 83 func RegisterJobsPluginsJobInterface(f func(*App) tjobs.PluginsJobInterface) { 84 jobsPluginsInterface = f 85 } 86 87 var jobsBleveIndexerInterface func(*Server) tjobs.IndexerJobInterface 88 89 func RegisterJobsBleveIndexerInterface(f func(*Server) tjobs.IndexerJobInterface) { 90 jobsBleveIndexerInterface = f 91 } 92 93 var jobsExpiryNotifyInterface func(*App) tjobs.ExpiryNotifyJobInterface 94 95 func RegisterJobsExpiryNotifyJobInterface(f func(*App) tjobs.ExpiryNotifyJobInterface) { 96 jobsExpiryNotifyInterface = f 97 } 98 99 var ldapInterface func(*App) einterfaces.LdapInterface 100 101 func RegisterLdapInterface(f func(*App) einterfaces.LdapInterface) { 102 ldapInterface = f 103 } 104 105 var messageExportInterface func(*Server) einterfaces.MessageExportInterface 106 107 func RegisterMessageExportInterface(f func(*Server) einterfaces.MessageExportInterface) { 108 messageExportInterface = f 109 } 110 111 var metricsInterface func(*Server) einterfaces.MetricsInterface 112 113 func RegisterMetricsInterface(f func(*Server) einterfaces.MetricsInterface) { 114 metricsInterface = f 115 } 116 117 var samlInterface func(*App) einterfaces.SamlInterface 118 119 func RegisterSamlInterface(f func(*App) einterfaces.SamlInterface) { 120 samlInterface = f 121 } 122 123 var samlInterfaceNew func(*App) einterfaces.SamlInterface 124 125 func RegisterNewSamlInterface(f func(*App) einterfaces.SamlInterface) { 126 samlInterfaceNew = f 127 } 128 129 var notificationInterface func(*App) einterfaces.NotificationInterface 130 131 func RegisterNotificationInterface(f func(*App) einterfaces.NotificationInterface) { 132 notificationInterface = f 133 } 134 135 func (s *Server) initEnterprise() { 136 if metricsInterface != nil { 137 s.Metrics = metricsInterface(s) 138 } 139 if complianceInterface != nil { 140 s.Compliance = complianceInterface(s) 141 } 142 if messageExportInterface != nil { 143 s.MessageExport = messageExportInterface(s) 144 } 145 if dataRetentionInterface != nil { 146 s.DataRetention = dataRetentionInterface(s) 147 } 148 if clusterInterface != nil { 149 s.Cluster = clusterInterface(s) 150 } 151 if elasticsearchInterface != nil { 152 s.SearchEngine.RegisterElasticsearchEngine(elasticsearchInterface(s)) 153 } 154 } 155 156 func (a *App) initEnterprise() { 157 if accountMigrationInterface != nil { 158 a.srv.AccountMigration = accountMigrationInterface(a) 159 } 160 if ldapInterface != nil { 161 a.srv.Ldap = ldapInterface(a) 162 } 163 if notificationInterface != nil { 164 a.srv.Notification = notificationInterface(a) 165 } 166 if samlInterface != nil { 167 if *a.Config().ExperimentalSettings.UseNewSAMLLibrary && samlInterfaceNew != nil { 168 mlog.Debug("Loading new SAML2 library") 169 a.srv.Saml = samlInterfaceNew(a) 170 } else { 171 mlog.Debug("Loading original SAML library") 172 a.srv.Saml = samlInterface(a) 173 } 174 if err := a.srv.Saml.ConfigureSP(); err != nil { 175 mlog.Error("An error occurred while configuring SAML Service Provider", mlog.Err(err)) 176 } 177 a.AddConfigListener(func(_, cfg *model.Config) { 178 if err := a.srv.Saml.ConfigureSP(); err != nil { 179 mlog.Error("An error occurred while configuring SAML Service Provider", mlog.Err(err)) 180 } 181 }) 182 } 183 }