Contains instances of the Providers Collectors.
Ejemplo n.º 1
0
        /// <summary>
        /// Loads Formatter Providers from an assembly.
        /// </summary>
        /// <param name="assembly">The path of the Assembly to load the Providers from.</param>
        public static int LoadFormatterProvidersFromAuto(string assembly)
        {
            Type[] forms;
            LoadFormatterProvidersFromAssembly(assembly, out forms);

            int count = 0;

            // Setup and add to the Collectors
            for (int i = 0; i < forms.Length; i++)
            {
                Collectors.AddPlugin(forms[i], Assembly.GetAssembly(forms[i]));
                foreach (Configuration.Wiki wiki in GlobalSettings.Provider.GetAllWikis())
                {
                    try {
                        SetUp <IFormatterProviderV50>(forms[i], Settings.GetProvider(wiki.WikiName).GetPluginConfiguration(forms[i].FullName));
                        SavePluginStatus(wiki.WikiName, forms[i].FullName, true);
                    }
                    catch (InvalidConfigurationException) {
                        SavePluginStatus(wiki.WikiName, forms[i].FullName, false);
                    }
                }
                count++;
            }

            return(count);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets the currently selected provider.
        /// </summary>
        /// <returns>The provider.</returns>
        /// <param name="enabled">A value indicating whether the returned provider is enabled.</param>
        /// <param name="canDisable">A value indicating whether the returned provider can be disabled.</param>
        private IProviderV30 GetCurrentProvider(out bool enabled)
        {
            enabled = true;
            bool canDisable;

            return(Collectors.FindProvider(txtCurrentProvider.Value, out enabled, out canDisable));
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Loads all formatter providers from dlls.
        /// </summary>
        public static void LoadAllFormatterProviders()
        {
            string[] pluginAssemblies = GlobalSettings.Provider.ListPluginAssemblies();

            List <Type> forms = new List <Type>(2);

            for (int i = 0; i < pluginAssemblies.Length; i++)
            {
                Type[] f;
                LoadFormatterProvidersFromAssembly(pluginAssemblies[i], out f);
                forms.AddRange(f);
            }

            // Add to the Collectors and Setup
            for (int i = 0; i < forms.Count; i++)
            {
                Collectors.AddPlugin(forms[i], Assembly.GetAssembly(forms[i]));
                foreach (PluginFramework.Wiki wiki in GlobalSettings.Provider.GetAllWikis())
                {
                    try {
                        SetUp <IFormatterProviderV40>(forms[i], Settings.GetProvider(wiki.WikiName).GetPluginConfiguration(forms[i].FullName));
                        SavePluginStatus(wiki.WikiName, forms[i].FullName, true);
                    }
                    catch (InvalidConfigurationException) {
                        SavePluginStatus(wiki.WikiName, forms[i].FullName, false);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Enables a provider.
        /// </summary>
        /// <param name="typeName">The provider to enable.</param>
        public static void EnableProvider(string typeName)
        {
            bool         enabled, canDisable;
            IProviderV30 provider = Collectors.FindProvider(typeName, out enabled, out canDisable);

            if (!enabled)
            {
                provider.Init(Host.Instance, LoadConfiguration(typeName));
                Collectors.TryEnable(typeName);
                SaveStatus(typeName, true);
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Disables a provider.
        /// </summary>
        /// <param name="typeName">The provider to disable.</param>
        public static void DisableProvider(string typeName)
        {
            bool         enabled, canDisable;
            IProviderV30 provider = Collectors.FindProvider(typeName, out enabled, out canDisable);

            if (enabled && canDisable)
            {
                provider.Shutdown( );
                Collectors.TryDisable(typeName);
                SaveStatus(typeName, false);
            }
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Tries to change a provider's configuration.
        /// </summary>
        /// <param name="typeName">The provider.</param>
        /// <param name="configuration">The new configuration.</param>
        /// <param name="error">The error message, if any.</param>
        /// <returns><c>true</c> if the configuration is saved, <c>false</c> if the provider rejected it.</returns>
        public static bool TryChangeConfiguration(string typeName, string configuration, out string error)
        {
            error = null;

            bool         enabled, canDisable;
            IProviderV30 provider = Collectors.FindProvider(typeName, out enabled, out canDisable);

            try {
                provider.Init(Host.Instance, configuration);
            }
            catch (InvalidConfigurationException icex) {
                error = icex.Message;
                return(false);
            }

            SaveConfiguration(typeName, configuration);
            return(true);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Loads all formatter providers from dlls.
        /// </summary>
        public static void LoadAllFormatterProviders()
        {
            string[] pluginAssemblies = GlobalSettings.Provider.ListPluginAssemblies();

            List <Type> forms = new List <Type>(2);

            for (int i = 0; i < pluginAssemblies.Length; i++)
            {
                Type[] f;
                LoadFormatterProvidersFromAssembly(pluginAssemblies[i], out f);
                forms.AddRange(f);
            }

            // Add to the Collectors and Setup
            for (int i = 0; i < forms.Count; i++)
            {
                Collectors.AddPlugin(forms[i], Assembly.GetAssembly(forms[i]));
                foreach (Configuration.Wiki wiki in GlobalSettings.Provider.GetAllWikis())
                {
                    try
                    {
                        SetUp <IFormatterProviderV50>(forms[i],
                                                      Settings.GetProvider(wiki.WikiName).GetPluginConfiguration(forms[i].FullName));
                        SavePluginStatus(wiki.WikiName, forms[i].FullName, true);
                    }
                    catch (InvalidConfigurationException)
                    {
                        SavePluginStatus(wiki.WikiName, forms[i].FullName, false);
                    }
                    catch (Exception exception)
                    {
                        SavePluginStatus(wiki.WikiName, forms[i].FullName, false);
                        Log.LogEntry(String.Format("Unable to load provider " + forms[i].FullName + " ({0}).", exception.Message), EntryType.Error, Log.SystemUsername, wiki.WikiName);
                    }
                }
            }
        }
Ejemplo n.º 8
0
        /// <summary>
        /// Performs all needed startup operations.
        /// </summary>
        public static void Startup()
        {
            // Load Host
            Host.Instance = new Host();

            // Load config
            ISettingsStorageProviderV30 ssp = ProviderLoader.LoadSettingsStorageProvider(WebConfigurationManager.AppSettings["SettingsStorageProvider"]);

            ssp.Init(Host.Instance, GetSettingsStorageProviderConfiguration());
            Collectors.SettingsProvider = ssp;

            Settings.CanOverridePublicDirectory = false;

            if (!(ssp is SettingsStorageProvider))
            {
                // Update DLLs from public\Plugins
                UpdateDllsIntoSettingsProvider(ssp, ProviderLoader.SettingsStorageProviderAssemblyName);
            }

            if (ssp.IsFirstApplicationStart())
            {
                if (ssp.GetMetaDataItem(MetaDataItem.AccountActivationMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.AccountActivationMessage, null, Defaults.AccountActivationMessageContent);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.EditNotice, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.EditNotice, null, Defaults.EditNoticeContent);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.Footer, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.Footer, null, Defaults.FooterContent);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.Header, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.Header, null, Defaults.HeaderContent);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null, Defaults.PasswordResetProcedureMessageContent);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.Sidebar, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.Sidebar, null, Defaults.SidebarContent);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.PageChangeMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.PageChangeMessage, null, Defaults.PageChangeMessage);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null, Defaults.DiscussionChangeMessage);
                }
                if (ssp.GetMetaDataItem(MetaDataItem.ApproveDraftMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.ApproveDraftMessage, null, Defaults.ApproveDraftMessage);
                }
            }

            MimeTypes.Init();

            // Load Providers
            Collectors.FileNames = new System.Collections.Generic.Dictionary <string, string>(10);
            Collectors.UsersProviderCollector             = new ProviderCollector <IUsersStorageProviderV30>();
            Collectors.PagesProviderCollector             = new ProviderCollector <IPagesStorageProviderV30>();
            Collectors.FilesProviderCollector             = new ProviderCollector <IFilesStorageProviderV30>();
            Collectors.FormatterProviderCollector         = new ProviderCollector <IFormatterProviderV30>();
            Collectors.CacheProviderCollector             = new ProviderCollector <ICacheProviderV30>();
            Collectors.DisabledUsersProviderCollector     = new ProviderCollector <IUsersStorageProviderV30>();
            Collectors.DisabledPagesProviderCollector     = new ProviderCollector <IPagesStorageProviderV30>();
            Collectors.DisabledFilesProviderCollector     = new ProviderCollector <IFilesStorageProviderV30>();
            Collectors.DisabledFormatterProviderCollector = new ProviderCollector <IFormatterProviderV30>();
            Collectors.DisabledCacheProviderCollector     = new ProviderCollector <ICacheProviderV30>();

            // Load built-in providers
            var providers = new IProviderV30[] {
                new FilesStorageProvider(),
                new UsersStorageProvider(),
                new Footnotes()
            };

            foreach (var provider in providers)
            {
                var isDisabled = ProviderLoader.IsDisabled(provider.GetType().FullName);
                if (!isDisabled)
                {
                    provider.Init(Host.Instance, "");
                    Log.LogEntry("Provider " + provider.Information.Name + " loaded (Enabled)", EntryType.General, Log.SystemUsername);
                }
                else
                {
                    Log.LogEntry("Provider " + provider.Information.Name + " loaded (Disabled)", EntryType.General, Log.SystemUsername);
                }
                if (provider is IUsersStorageProviderV30)
                {
                    (isDisabled ? Collectors.DisabledUsersProviderCollector : Collectors.UsersProviderCollector).AddProvider(provider as IUsersStorageProviderV30);
                }
                else if (provider is IPagesStorageProviderV30)
                {
                    (isDisabled ? Collectors.DisabledPagesProviderCollector : Collectors.PagesProviderCollector).AddProvider(provider as IPagesStorageProviderV30);
                }
                else if (provider is IFilesStorageProviderV30)
                {
                    (isDisabled ? Collectors.DisabledFilesProviderCollector : Collectors.FilesProviderCollector).AddProvider(provider as IFilesStorageProviderV30);
                }
                else if (provider is IFormatterProviderV30)
                {
                    (isDisabled ? Collectors.DisabledFormatterProviderCollector : Collectors.FormatterProviderCollector).AddProvider(provider as IFormatterProviderV30);
                }
                else if (provider is ICacheProviderV30)
                {
                    (isDisabled ? Collectors.DisabledCacheProviderCollector : Collectors.CacheProviderCollector).AddProvider(provider as ICacheProviderV30);
                }
            }


            // Load Users (pages storage providers might need access to users/groups data for upgrading from 2.0 to 3.0)
            ProviderLoader.FullLoad(true, false, false, false, false);
            //Users.Instance = new Users();
            bool groupsCreated = VerifyAndCreateDefaultGroups();

            PagesStorageProvider p = new PagesStorageProvider();

            if (!ProviderLoader.IsDisabled(p.GetType().FullName))
            {
                p.Init(Host.Instance, "");
                Collectors.PagesProviderCollector.AddProvider(p);
                Log.LogEntry("Provider " + p.Information.Name + " loaded (Enabled)", EntryType.General, Log.SystemUsername);
            }
            else
            {
                Collectors.DisabledPagesProviderCollector.AddProvider(p);
                Log.LogEntry("Provider " + p.Information.Name + " loaded (Disabled)", EntryType.General, Log.SystemUsername);
            }

            CacheProvider c = new CacheProvider();

            if (!ProviderLoader.IsDisabled(c.GetType().FullName))
            {
                c.Init(Host.Instance, "");
                Collectors.CacheProviderCollector.AddProvider(c);
                Log.LogEntry("Provider " + c.Information.Name + " loaded (Enabled)", EntryType.General, Log.SystemUsername);
            }
            else
            {
                Collectors.DisabledCacheProviderCollector.AddProvider(c);
                Log.LogEntry("Provider " + c.Information.Name + " loaded (Disabled)", EntryType.General, Log.SystemUsername);
            }

            // Load all other providers
            ProviderLoader.FullLoad(false, true, true, true, true);

            if (groupsCreated)
            {
                // It is necessary to set default permissions for file management
                UserGroup administratorsGroup = Users.FindUserGroup(Settings.AdministratorsGroup);
                UserGroup anonymousGroup      = Users.FindUserGroup(Settings.AnonymousGroup);
                UserGroup usersGroup          = Users.FindUserGroup(Settings.UsersGroup);

                SetAdministratorsGroupDefaultPermissions(administratorsGroup);
                SetUsersGroupDefaultPermissions(usersGroup);
                SetAnonymousGroupDefaultPermissions(anonymousGroup);
            }

            // Init cache
            //Cache.Instance = new Cache(Collectors.CacheProviderCollector.GetProvider(Settings.DefaultCacheProvider));
            if (Collectors.CacheProviderCollector.GetProvider(Settings.DefaultCacheProvider) == null)
            {
                Log.LogEntry("Default Cache Provider was not loaded, backing to integrated provider", EntryType.Error, Log.SystemUsername);
                Settings.DefaultCacheProvider = typeof(CacheProvider).FullName;
                Collectors.TryEnable(Settings.DefaultCacheProvider);
            }

            // Create the Main Page, if needed
            if (Pages.FindPage(Settings.DefaultPage) == null)
            {
                CreateMainPage();
            }

            Log.LogEntry("ScrewTurn Wiki is ready", EntryType.General, Log.SystemUsername);

            System.Threading.ThreadPool.QueueUserWorkItem(state => {
                using (((WindowsIdentity)state).Impersonate()) {
                    if ((DateTime.Now - Settings.LastPageIndexing).TotalDays > 7)
                    {
                        Settings.LastPageIndexing = DateTime.Now;
                        System.Threading.Thread.Sleep(10000);
                        using (MemoryStream ms = new MemoryStream()) {
                            using (StreamWriter wr = new System.IO.StreamWriter(ms)) {
                                System.Web.HttpContext.Current = new System.Web.HttpContext(new System.Web.Hosting.SimpleWorkerRequest("", "", wr));
                                foreach (var provider in Collectors.PagesProviderCollector.AllProviders)
                                {
                                    if (!provider.ReadOnly)
                                    {
                                        Log.LogEntry("Starting automatic rebuilding index for provider: " + provider.Information.Name, EntryType.General, Log.SystemUsername);
                                        provider.RebuildIndex();
                                        Log.LogEntry("Finished automatic rebuilding index for provider: " + provider.Information.Name, EntryType.General, Log.SystemUsername);
                                    }
                                }
                            }
                        }

                        Pages.RebuildPageLinks(Pages.GetPages(null));
                        foreach (ScrewTurn.Wiki.PluginFramework.NamespaceInfo nspace in Pages.GetNamespaces())
                        {
                            Pages.RebuildPageLinks(Pages.GetPages(nspace));
                        }
                    }
                }
            }, WindowsIdentity.GetCurrent());
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Performs all needed startup operations.
        /// </summary>
        public static void Startup()
        {
            // Load Host
            Host.Instance = new Host();

            // Load config
            ISettingsStorageProviderV30 ssp = ProviderLoader.LoadSettingsStorageProvider(WebConfigurationManager.AppSettings["SettingsStorageProvider"]);

            ssp.Init(Host.Instance, GetSettingsStorageProviderConfiguration());
            Collectors.SettingsProvider = ssp;

            if (!(ssp is SettingsStorageProvider))
            {
                // Update DLLs from public\Plugins
                UpdateDllsIntoSettingsProvider(ssp, ProviderLoader.SettingsStorageProviderAssemblyName);
            }

            if (ssp.IsFirstApplicationStart())
            {
                if (ssp.GetMetaDataItem(MetaDataItem.AccountActivationMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.AccountActivationMessage, null, Defaults.AccountActivationMessageContent);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.EditNotice, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.EditNotice, null, Defaults.EditNoticeContent);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.Footer, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.Footer, null, Defaults.FooterContent);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.Header, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.Header, null, Defaults.HeaderContent);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null, Defaults.PasswordResetProcedureMessageContent);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.Sidebar, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.Sidebar, null, Defaults.SidebarContent);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.PageChangeMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.PageChangeMessage, null, Defaults.PageChangeMessage);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null, Defaults.DiscussionChangeMessage);
                }

                if (ssp.GetMetaDataItem(MetaDataItem.ApproveDraftMessage, null) == "")
                {
                    ssp.SetMetaDataItem(MetaDataItem.ApproveDraftMessage, null, Defaults.ApproveDraftMessage);
                }
            }

            // Load config
            IIndexDirectoryProviderV30 idp = ProviderLoader.LoadIndexDirectoryProvider(WebConfigurationManager.AppSettings["IndexDirectoryProvider"]);

            idp.Init(Host.Instance, GetSettingsStorageProviderConfiguration());
            Collectors.IndexDirectoryProvider = idp;

            MimeTypes.Init();

            // Load Providers
            Collectors.FileNames = new System.Collections.Generic.Dictionary <string, string>(10);
            Collectors.UsersProviderCollector             = new ProviderCollector <IUsersStorageProviderV30>();
            Collectors.PagesProviderCollector             = new ProviderCollector <IPagesStorageProviderV30>();
            Collectors.FilesProviderCollector             = new ProviderCollector <IFilesStorageProviderV30>();
            Collectors.FormatterProviderCollector         = new ProviderCollector <IFormatterProviderV30>();
            Collectors.CacheProviderCollector             = new ProviderCollector <ICacheProviderV30>();
            Collectors.DisabledUsersProviderCollector     = new ProviderCollector <IUsersStorageProviderV30>();
            Collectors.DisabledPagesProviderCollector     = new ProviderCollector <IPagesStorageProviderV30>();
            Collectors.DisabledFilesProviderCollector     = new ProviderCollector <IFilesStorageProviderV30>();
            Collectors.DisabledFormatterProviderCollector = new ProviderCollector <IFormatterProviderV30>();
            Collectors.DisabledCacheProviderCollector     = new ProviderCollector <ICacheProviderV30>();

            // Load built-in providers

            // Files storage providers have to be loaded BEFORE users storage providers in order to properly set permissions
            FilesStorageProvider f = new FilesStorageProvider();

            if (!ProviderLoader.IsDisabled(f.GetType().FullName))
            {
                f.Init(Host.Instance, "");
                Collectors.FilesProviderCollector.AddProvider(f);
                Log.LogEntry("Provider " + f.Information.Name + " loaded (Enabled)", EntryType.General, Log.SystemUsername);
            }
            else
            {
                Collectors.DisabledFilesProviderCollector.AddProvider(f);
                Log.LogEntry("Provider " + f.Information.Name + " loaded (Disabled)", EntryType.General, Log.SystemUsername);
            }

            UsersStorageProvider u = new UsersStorageProvider();

            if (!ProviderLoader.IsDisabled(u.GetType().FullName))
            {
                u.Init(Host.Instance, "");
                Collectors.UsersProviderCollector.AddProvider(u);
                Log.LogEntry("Provider " + u.Information.Name + " loaded (Enabled)", EntryType.General, Log.SystemUsername);
            }
            else
            {
                Collectors.DisabledUsersProviderCollector.AddProvider(u);
                Log.LogEntry("Provider " + u.Information.Name + " loaded (Disabled)", EntryType.General, Log.SystemUsername);
            }

            // Load Users (pages storage providers might need access to users/groups data for upgrading from 2.0 to 3.0)
            ProviderLoader.FullLoad(true, false, false, false, false);
            //Users.Instance = new Users();
            bool groupsCreated = VerifyAndCreateDefaultGroups();

            PagesStorageProvider p = new PagesStorageProvider();

            if (!ProviderLoader.IsDisabled(p.GetType().FullName))
            {
                p.Init(Host.Instance, "");
                Collectors.PagesProviderCollector.AddProvider(p);
                Log.LogEntry("Provider " + p.Information.Name + " loaded (Enabled)", EntryType.General, Log.SystemUsername);
            }
            else
            {
                Collectors.DisabledPagesProviderCollector.AddProvider(p);
                Log.LogEntry("Provider " + p.Information.Name + " loaded (Disabled)", EntryType.General, Log.SystemUsername);
            }

            CacheProvider c = new CacheProvider();

            if (!ProviderLoader.IsDisabled(c.GetType().FullName))
            {
                c.Init(Host.Instance, "");
                Collectors.CacheProviderCollector.AddProvider(c);
                Log.LogEntry("Provider " + c.Information.Name + " loaded (Enabled)", EntryType.General, Log.SystemUsername);
            }
            else
            {
                Collectors.DisabledCacheProviderCollector.AddProvider(c);
                Log.LogEntry("Provider " + c.Information.Name + " loaded (Disabled)", EntryType.General, Log.SystemUsername);
            }

            // Load all other providers
            ProviderLoader.FullLoad(false, true, true, true, true);

            if (groupsCreated)
            {
                // It is necessary to set default permissions for file management
                UserGroup administratorsGroup = Users.FindUserGroup(Settings.AdministratorsGroup);
                UserGroup anonymousGroup      = Users.FindUserGroup(Settings.AnonymousGroup);
                UserGroup usersGroup          = Users.FindUserGroup(Settings.UsersGroup);

                SetAdministratorsGroupDefaultPermissions(administratorsGroup);
                SetUsersGroupDefaultPermissions(usersGroup);
                SetAnonymousGroupDefaultPermissions(anonymousGroup);
            }

            // Init cache
            //Cache.Instance = new Cache(Collectors.CacheProviderCollector.GetProvider(Settings.DefaultCacheProvider));
            if (Collectors.CacheProviderCollector.GetProvider(Settings.DefaultCacheProvider) == null)
            {
                Log.LogEntry("Default Cache Provider was not loaded, backing to integrated provider", EntryType.Error, Log.SystemUsername);
                Settings.DefaultCacheProvider = typeof(CacheProvider).FullName;
                Collectors.TryEnable(Settings.DefaultCacheProvider);
            }

            // Create the Main Page, if needed
            if (Pages.FindPage(Settings.DefaultPage) == null)
            {
                CreateMainPage();
            }

            Log.LogEntry("ScrewTurn Wiki is ready", EntryType.General, Log.SystemUsername);

            System.Threading.ThreadPool.QueueUserWorkItem(ignored =>
            {
                SearchClass.RebuildIndex();
            });
        }
Ejemplo n.º 10
0
        protected void btnCopySettings_Click(object sender, EventArgs e)
        {
            ISettingsStorageProviderV30 to = null;

            ISettingsStorageProviderV30[] allProviders = ProviderLoader.LoadAllSettingsStorageProviders(Settings.Provider);
            foreach (ISettingsStorageProviderV30 prov in allProviders)
            {
                if (prov.GetType().ToString() == lstSettingsDestination.SelectedValue)
                {
                    to = prov;
                    break;
                }
            }

            Log.LogEntry("Settings data copy requested to " + to.Information.Name, EntryType.General, SessionFacade.CurrentUsername);

            try {
                to.Init(Host.Instance, txtSettingsDestinationConfig.Text);
            }
            catch (InvalidConfigurationException ex) {
                Log.LogEntry("Provider rejected configuration: " + ex, EntryType.Error, Log.SystemUsername);
                lblCopySettingsResult.CssClass = "resulterror";
                lblCopySettingsResult.Text     = Properties.Messages.ProviderRejectedConfiguration;
                return;
            }

            // Find namespaces
            List <string> namespaces = new List <string>(5);

            foreach (NamespaceInfo ns in Pages.GetNamespaces())
            {
                namespaces.Add(ns.Name);
            }

            DataMigrator.CopySettingsStorageProviderData(Settings.Provider, to, namespaces.ToArray(), Collectors.GetAllProviders());

            lblCopySettingsResult.CssClass = "resultok";
            lblCopySettingsResult.Text     = Properties.Messages.DataCopied;
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Unloads a provider from memory.
 /// </summary>
 /// <param name="typeName">The provider to unload.</param>
 public static void UnloadProvider(string typeName)
 {
     DisableProvider(typeName);
     Collectors.TryUnload(typeName);
 }
Ejemplo n.º 12
0
        /// <summary>
        /// Performs all needed startup operations.
        /// </summary>
        public static void Startup()
        {
            // Load Host
            Host.Instance = new Host();

            // Initialize MimeTypes
            MimeTypes.Init();

            GlobalSettings.CanOverridePublicDirectory = false;

            // Initialize Collectors
            Collectors.InitCollectors();
            Collectors.FileNames = new Dictionary <string, string>(10);

            // Load Global Config
            IGlobalSettingsStorageProviderV60 globalSettingsStorageProvider = ProviderLoader.LoadGlobalSettingsStorageProvider(ApplicationSettings.Instance.GlobalSettingsStorageProvider);

            Collectors.AddGlobalSettingsStorageProvider(globalSettingsStorageProvider.GetType(), Assembly.GetAssembly(globalSettingsStorageProvider.GetType()));
            globalSettingsStorageProvider.SetUp(Host.Instance, GetGlobalSettingsStorageProviderConfiguration());
            globalSettingsStorageProvider.Dispose();

            // Add StorageProviders, from WebConfig, to Collectors and Setup them
            ProviderLoader.LoadStorageProviders <ISettingsStorageProviderV60>(new List <StorageProvider>()
            {
                ApplicationSettings.Instance.SettingProvider
            });
            ProviderLoader.LoadStorageProviders <IFilesStorageProviderV60>(ApplicationSettings.Instance.FilesProviders);
            ProviderLoader.LoadStorageProviders <IThemesStorageProviderV60>(ApplicationSettings.Instance.ThemesProviders);
            ProviderLoader.LoadStorageProviders <IUsersStorageProviderV60>(ApplicationSettings.Instance.UsersProviders);
            ProviderLoader.LoadStorageProviders <IPagesStorageProviderV60>(ApplicationSettings.Instance.PagesProviders);
            ProviderLoader.LoadStorageProviders <IIndexDirectoryProviderV60>(new List <StorageProvider>()
            {
                ApplicationSettings.Instance.IndexDirectoryProvider
            });

            ProviderLoader.LoadAllFormatterProviders();

            foreach (Configuration.Wiki wiki in Collectors.CollectorsBox.GlobalSettingsProvider.GetAllWikis())
            {
                ISettingsStorageProviderV60 ssp = Collectors.CollectorsBox.GetSettingsProvider(wiki.WikiName);
                if (ssp.IsFirstApplicationStart())
                {
                    if (ssp.GetMetaDataItem(MetaDataItem.AccountActivationMessage, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.AccountActivationMessage, null, Defaults.AccountActivationMessageContent);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.EditNotice, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.EditNotice, null, Defaults.EditNoticeContent);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.Footer, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.Footer, null, Defaults.FooterContent);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.Header, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.Header, null, Defaults.HeaderContent);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.PasswordResetProcedureMessage, null, Defaults.PasswordResetProcedureMessageContent);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.Sidebar, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.Sidebar, null, Defaults.SidebarContent);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.PageChangeMessage, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.PageChangeMessage, null, Defaults.PageChangeMessage);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.DiscussionChangeMessage, null, Defaults.DiscussionChangeMessage);
                    }
                    if (ssp.GetMetaDataItem(MetaDataItem.ApproveDraftMessage, null) == "")
                    {
                        ssp.SetMetaDataItem(MetaDataItem.ApproveDraftMessage, null, Defaults.ApproveDraftMessage);
                    }
                }

                bool groupsCreated = VerifyAndCreateDefaultGroups(wiki.WikiName);

                if (groupsCreated)
                {
                    // It is necessary to set default permissions for file management
                    UserGroup administratorsGroup = Users.FindUserGroup(wiki.WikiName, Settings.GetAdministratorsGroup(wiki.WikiName));
                    UserGroup anonymousGroup      = Users.FindUserGroup(wiki.WikiName, Settings.GetAnonymousGroup(wiki.WikiName));
                    UserGroup usersGroup          = Users.FindUserGroup(wiki.WikiName, Settings.GetUsersGroup(wiki.WikiName));

                    SetAdministratorsGroupDefaultPermissions(wiki.WikiName, administratorsGroup);
                    SetUsersGroupDefaultPermissions(wiki.WikiName, usersGroup);
                    SetAnonymousGroupDefaultPermissions(wiki.WikiName, anonymousGroup);
                }

                // Create the Main Page, if needed
                if (Pages.FindPage(wiki.WikiName, Settings.GetDefaultPage(wiki.WikiName)) == null)
                {
                    CreateMainPage(wiki.WikiName);
                }

                Log.LogEntry("Wiki " + wiki.WikiName + " is ready", EntryType.General, Log.SystemUsername, null);

                //Pages.RebuildPageLinks(Pages.GetPages(wiki.WikiName, null));
                //foreach(ScrewTurn.Wiki.PluginFramework.NamespaceInfo nspace in Pages.GetNamespaces(wiki.WikiName)) {
                //	Pages.RebuildPageLinks(Pages.GetPages(wiki.WikiName, nspace));
                //}
            }

            Log.LogEntry("ScrewTurn Wiki is ready", EntryType.General, Log.SystemUsername, null);
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Unloads a plugin from memory.
 /// </summary>
 /// <param name="typeName">The provider to unload.</param>
 public static void UnloadPlugin(string typeName)
 {
     Collectors.TryUnloadPlugin(typeName);
 }
Ejemplo n.º 14
0
        /// <summary>
        /// Loads the storage providers.
        /// </summary>
        /// <typeparam name="T">The provider interface type</typeparam>
        /// <param name="storageProviders">A list of StorageProvider.</param>
        public static void LoadStorageProviders <T>(List <StorageProvider> storageProviders) where T : class, IProviderV60
        {
            foreach (StorageProvider storageProvider in storageProviders)
            {
                try {
                    // assemblyName should be an absolute path or a relative path in bin or public\Plugins
                    Assembly asm = null;
                    Type     t;
                    string   assemblyName = storageProvider.AssemblyName;
                    if (!assemblyName.ToLowerInvariant().EndsWith(".dll"))
                    {
                        assemblyName += ".dll";
                    }

                    if (File.Exists(assemblyName))
                    {
                        asm = Assembly.Load(LoadAssemblyFromDisk(assemblyName));
                        t   = asm.GetType(storageProvider.TypeName);
                    }
                    else
                    {
                        string tentativePluginsPath = null;
                        try {
                            // Settings.PublicDirectory is only available when running the web app
                            tentativePluginsPath = Path.Combine(GlobalSettings.PublicDirectory, "Plugins");
                            tentativePluginsPath = Path.Combine(tentativePluginsPath, assemblyName);
                        }
                        catch { }

                        if (!string.IsNullOrEmpty(tentativePluginsPath) && File.Exists(tentativePluginsPath))
                        {
                            asm = Assembly.Load(LoadAssemblyFromDisk(tentativePluginsPath));
                            t   = asm.GetType(storageProvider.TypeName);
                        }
                        else
                        {
                            // Trim .dll
                            t   = Type.GetType(storageProvider.TypeName + "," + assemblyName.Substring(0, assemblyName.Length - 4), true, true);
                            asm = Assembly.GetAssembly(t);
                        }
                    }

                    Collectors.AddProvider(t, asm, storageProvider.ConfigurationString, typeof(T));
                    SetUp <T>(t, storageProvider.ConfigurationString);
                    if (storageProvider.IsDefault)
                    {
                        switch (typeof(T).FullName)
                        {
                        case PagesProviderInterfaceName:
                            GlobalSettings.DefaultPagesProvider = storageProvider.TypeName;
                            break;

                        case FilesProviderInterfaceName:
                            GlobalSettings.DefaultFilesProvider = storageProvider.TypeName;
                            break;

                        case UsersProviderInterfaceName:
                            GlobalSettings.DefaultUsersProvider = storageProvider.TypeName;
                            break;

                        case ThemesProviderInterfaceName:
                            GlobalSettings.DefaultThemesProvider = storageProvider.TypeName;
                            break;
                        }
                    }
                }
                catch (Exception ex) {
                    throw new ArgumentException("Could not load the provider with name: " + storageProvider.TypeName + " - in assembly: " + storageProvider.AssemblyName, ex);
                }
            }
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Loads the Configuration data of a storage provider.
 /// </summary>
 /// <param name="typeName">The Type Name of the storage provider.</param>
 /// <returns>The Configuration, if available, otherwise an empty string.</returns>
 public static string LoadStorageProviderConfiguration(string typeName)
 {
     return(Collectors.GetStorageProviderConfiguration(typeName));
 }
Ejemplo n.º 16
0
        /// <summary>
        /// Gets the currently selected provider.
        /// </summary>
        /// <returns>The provider.</returns>
        /// <param name="enabled">A value indicating whether the returned provider is enabled.</param>
        /// <param name="canDisable">A value indicating whether the returned provider can be disabled.</param>
        private IProviderV40 GetCurrentProvider(out bool enabled)
        {
            enabled = true;

            return(Collectors.FindProvider(currentWiki, txtCurrentProvider.Value, out enabled));
        }