//============================================================================================= Static API

        public static SecuritySystem StartSecurity(ISecurityDataProvider securityDataProvider,
                                                   IMessageProvider messageProvider,
                                                   IMissingEntityHandler missingEntityHandler,
                                                   MessagingOptions messagingOptions)
        {
            var securityConfig = new SecurityConfiguration
            {
                SystemUserId    = Identifiers.SystemUserId,
                VisitorUserId   = Identifiers.VisitorUserId,
                EveryoneGroupId = Identifiers.EveryoneGroupId,
                OwnerGroupId    = Identifiers.OwnersGroupId
            };

            var securitySystem = new SecuritySystem(securityDataProvider, messageProvider, missingEntityHandler,
                                                    securityConfig, messagingOptions);

            securitySystem.Start();

            SnLog.WriteInformation("Security subsystem started in Search service", EventId.RepositoryLifecycle,
                                   properties: new Dictionary <string, object> {
                { "DataProvider", securityDataProvider.GetType().FullName },
                { "MessageProvider", messageProvider.GetType().FullName }
            });

            return(securitySystem);
        }
Beispiel #2
0
 //UNDONE: get configuration through IOptions and register SecuritySystem as a service.
 public SecuritySystem(ISecurityDataProvider dataProvider, IMessageProvider messageProvider,
                       IMissingEntityHandler missingEntityHandler, SecurityConfiguration configuration, MessagingOptions messagingOptions)
 {
     Configuration    = configuration;
     MessagingOptions = messagingOptions;
     dataProvider.ActivitySerializer = new ActivitySerializer(this);
     DataHandler          = new DataHandler(dataProvider, Options.Create(messagingOptions));
     ActivityHistory      = new SecurityActivityHistoryController();
     DataProvider         = dataProvider;
     MessageProvider      = messageProvider;
     MessageSenderManager = messageProvider.MessageSenderManager;
     MissingEntityHandler = missingEntityHandler;
     SystemUser           = new SecuritySystemUser(configuration.SystemUserId);
 }
Beispiel #3
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IHostApplicationLifetime appLifetime,
                              ISecurityDataProvider securityDataProvider,
                              IMessageProvider messageProvider,
                              IMissingEntityHandler missingEntityHandler,
                              IOptions <MessagingOptions> messagingOptions)
        {
            // This will set the global SnLog and SnTrace instances to route log messages to the
            // official .Net Core ILogger API.
            app.ApplicationServices.AddSenseNetILogger();

            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGrpcService <SearchService>();

                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
                });
            });

            // [sensenet] Start and stop the search service in the appropriate points
            // of the application life cycle.
            appLifetime.ApplicationStarted.Register(() =>
            {
                // set the index directory manually based on the current environment
                Index.SearchService.Start(
                    securityDataProvider, messageProvider, missingEntityHandler, messagingOptions.Value,
                    Path.Combine(Environment.CurrentDirectory, "App_Data", "LocalIndex"));
            });
            appLifetime.ApplicationStopping.Register(Index.SearchService.ShutDown);
        }
Beispiel #4
0
        public static void Start(
            ISecurityDataProvider securityDataProvider,
            IMessageProvider messageProvider,
            IMissingEntityHandler missingEntityHandler,
            MessagingOptions messagingOptions,
            string indexDirectoryPath)
        {
            UpdateTraceCategories();

            // Set index directory before touching the SearchManager class, so that the value
            // comes from the application above instead of an automatism in this library.
            if (!string.IsNullOrEmpty(indexDirectoryPath))
            {
                SenseNet.Configuration.Indexing.IndexDirectoryFullPath = indexDirectoryPath;
            }

            _securitySystem = SecurityHandler.StartSecurity(securityDataProvider, messageProvider, missingEntityHandler, messagingOptions);

            using (var traceWriter = new TraceTextWriter())
            {
                SearchManager.Instance.Start(traceWriter);
            }
        }
 public SecurityEntityManager(SecurityCache cache, DataHandler dataHandler, IMissingEntityHandler missingEntityHandler)
 {
     _missingEntityHandler = missingEntityHandler;
     _cache       = cache;
     _dataHandler = dataHandler;
 }