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  }