github.com/haalcala/mattermost-server-change-repo/v5@v5.33.2/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 jobsActiveUsersInterface func(*App) tjobs.ActiveUsersJobInterface 94 95 func RegisterJobsActiveUsersInterface(f func(*App) tjobs.ActiveUsersJobInterface) { 96 jobsActiveUsersInterface = f 97 } 98 99 var jobsCloudInterface func(*Server) ejobs.CloudJobInterface 100 101 func RegisterJobsCloudInterface(f func(*Server) ejobs.CloudJobInterface) { 102 jobsCloudInterface = f 103 } 104 105 var jobsExpiryNotifyInterface func(*App) tjobs.ExpiryNotifyJobInterface 106 107 func RegisterJobsExpiryNotifyJobInterface(f func(*App) tjobs.ExpiryNotifyJobInterface) { 108 jobsExpiryNotifyInterface = f 109 } 110 111 var jobsImportProcessInterface func(*App) tjobs.ImportProcessInterface 112 113 func RegisterJobsImportProcessInterface(f func(*App) tjobs.ImportProcessInterface) { 114 jobsImportProcessInterface = f 115 } 116 117 var jobsImportDeleteInterface func(*App) tjobs.ImportDeleteInterface 118 119 func RegisterJobsImportDeleteInterface(f func(*App) tjobs.ImportDeleteInterface) { 120 jobsImportDeleteInterface = f 121 } 122 123 var jobsExportProcessInterface func(*App) tjobs.ExportProcessInterface 124 125 func RegisterJobsExportProcessInterface(f func(*App) tjobs.ExportProcessInterface) { 126 jobsExportProcessInterface = f 127 } 128 129 var jobsExportDeleteInterface func(*App) tjobs.ExportDeleteInterface 130 131 func RegisterJobsExportDeleteInterface(f func(*App) tjobs.ExportDeleteInterface) { 132 jobsExportDeleteInterface = f 133 } 134 135 var productNoticesJobInterface func(*App) tjobs.ProductNoticesJobInterface 136 137 func RegisterProductNoticesJobInterface(f func(*App) tjobs.ProductNoticesJobInterface) { 138 productNoticesJobInterface = f 139 } 140 141 var ldapInterface func(*App) einterfaces.LdapInterface 142 143 func RegisterLdapInterface(f func(*App) einterfaces.LdapInterface) { 144 ldapInterface = f 145 } 146 147 var messageExportInterface func(*Server) einterfaces.MessageExportInterface 148 149 func RegisterMessageExportInterface(f func(*Server) einterfaces.MessageExportInterface) { 150 messageExportInterface = f 151 } 152 153 var cloudInterface func(*App) einterfaces.CloudInterface 154 155 func RegisterCloudInterface(f func(*App) einterfaces.CloudInterface) { 156 cloudInterface = f 157 } 158 159 var metricsInterface func(*Server) einterfaces.MetricsInterface 160 161 func RegisterMetricsInterface(f func(*Server) einterfaces.MetricsInterface) { 162 metricsInterface = f 163 } 164 165 var samlInterfaceNew func(*App) einterfaces.SamlInterface 166 167 func RegisterNewSamlInterface(f func(*App) einterfaces.SamlInterface) { 168 samlInterfaceNew = f 169 } 170 171 var notificationInterface func(*App) einterfaces.NotificationInterface 172 173 func RegisterNotificationInterface(f func(*App) einterfaces.NotificationInterface) { 174 notificationInterface = f 175 } 176 177 func (s *Server) initEnterprise() { 178 if metricsInterface != nil { 179 s.Metrics = metricsInterface(s) 180 } 181 if complianceInterface != nil { 182 s.Compliance = complianceInterface(s) 183 } 184 if messageExportInterface != nil { 185 s.MessageExport = messageExportInterface(s) 186 } 187 if dataRetentionInterface != nil { 188 s.DataRetention = dataRetentionInterface(s) 189 } 190 if clusterInterface != nil { 191 s.Cluster = clusterInterface(s) 192 } 193 if elasticsearchInterface != nil { 194 s.SearchEngine.RegisterElasticsearchEngine(elasticsearchInterface(s)) 195 } 196 } 197 198 func (a *App) initEnterprise() { 199 if accountMigrationInterface != nil { 200 a.srv.AccountMigration = accountMigrationInterface(a) 201 } 202 if ldapInterface != nil { 203 a.srv.Ldap = ldapInterface(a) 204 } 205 if notificationInterface != nil { 206 a.srv.Notification = notificationInterface(a) 207 } 208 if samlInterfaceNew != nil { 209 mlog.Debug("Loading SAML2 library") 210 a.srv.Saml = samlInterfaceNew(a) 211 if err := a.srv.Saml.ConfigureSP(); err != nil { 212 mlog.Error("An error occurred while configuring SAML Service Provider", mlog.Err(err)) 213 } 214 a.AddConfigListener(func(_, cfg *model.Config) { 215 if err := a.srv.Saml.ConfigureSP(); err != nil { 216 mlog.Error("An error occurred while configuring SAML Service Provider", mlog.Err(err)) 217 } 218 }) 219 } 220 if cloudInterface != nil { 221 a.srv.Cloud = cloudInterface(a) 222 } 223 }