/// <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; } }
/// <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); }