Пример #1
0
        /// <summary>
        /// Stops the service from executing.
        /// </summary>
        public void Stop()
        {
            log.Debug("Stop called");

            Simias.Server.Catalog.StopCatalogService();
            Simias.IdentitySync.Service.Stop();

            if (syncProvider != null)
            {
                IdentitySync.Service.Unregister(syncProvider);
                syncProvider = null;
            }

            if (authProvider != null)
            {
                DomainProvider.Unregister(authProvider);
                authProvider = null;
            }

            if (userProvider != null)
            {
                User.UnregisterProvider(userProvider);
                userProvider = null;
            }
        }
Пример #2
0
        /// <summary>
        /// Reads Simnias.config file to get which directory server is being used and loads that
        /// </summary>
        /// <returns>true if Loading of IdentitySuncProvider succeeds</returns>
        private bool LoadIdentityProvider()
        {
            bool status = false;

            // Bootstrap the identity provider from the Simias.config file
            Simias.Configuration config = Store.Config;
            string assemblyName         = config.Get("Identity", "ServiceAssembly");
            string userClass            = config.Get("Identity", "Class");

            if (assemblyName != null && userClass != null)
            {
                log.Debug("Identity assembly: {0}  class: {1}", assemblyName, userClass);
                Assembly idAssembly = Assembly.LoadWithPartialName(assemblyName);
                if (idAssembly != null)
                {
                    Type type = idAssembly.GetType(userClass);
                    if (type != null)
                    {
                        userProvider = Activator.CreateInstance(type) as IUserProvider;
                        if (userProvider != null)
                        {
                            log.Debug("created user provider instance");
                            User.RegisterProvider(userProvider);
                            status = true;

                            // does this provider support external syncing?
                            foreach (Type ctype in idAssembly.GetTypes())
                            {
                                foreach (Type itype in ctype.GetInterfaces())
                                {
                                    if (Simias.IdentitySynchronization.Service.master && itype == typeof(Simias.IIdentitySyncProvider))
                                    {
                                        syncProvider =
                                            Activator.CreateInstance(ctype) as IIdentitySyncProvider;
                                        if (syncProvider != null)
                                        {
                                            Simias.IdentitySynchronization.Service.Register(syncProvider);
                                            log.Debug("created sync provider instance");
                                        }
                                        else
                                        {
                                            log.Debug("failed to create an instance of IIdentitySyncProvider");
                                        }
                                        break;
                                    }
                                }

                                if (syncProvider != null)
                                {
                                    break;
                                }
                            }
                        }
                        else
                        {
                            log.Debug("userProvider is null");
                        }
                    }
                    else
                    {
                        log.Debug("Assembly type is null");
                    }
                }
                else
                {
                    log.Debug("Unable to load  Assembly");
                }
            }

            // If we couldn't load the configured provider
            // load the internal user/identity provider
            if (status == false)
            {
                if (userProvider == null)
                {
                    log.Info("Could not load the configured user provider - loading InternalUser");
                    userProvider = new Simias.Identity.InternalUser();
                    User.RegisterProvider(userProvider);
                    status = true;
                }
            }

            return(status);
        }