Ejemplo n.º 1
0
        public RoadkillRegistry(ConfigReaderWriter configReader)
        {
            ApplicationSettings = configReader.GetApplicationSettings();

            Scan(ScanTypes);
            ConfigureInstances(configReader);
        }
 public ConfigurationTesterController(ApplicationSettings appSettings, IUserContext userContext, ConfigReaderWriter configReaderWriter, IActiveDirectoryProvider activeDirectoryProvider)
 {
     _applicationSettings     = appSettings;
     _userContext             = userContext;
     _configReaderWriter      = configReaderWriter;
     _activeDirectoryProvider = activeDirectoryProvider;
 }
Ejemplo n.º 3
0
 public UpgradeController(ApplicationSettings settings, IRepository repository, UserServiceBase userService,
                          IUserContext context, SettingsService settingsService, ConfigReaderWriter configReaderWriter)
     : base(settings, userService, context, settingsService)
 {
     _repository         = repository;
     _configReaderWriter = configReaderWriter;
 }
Ejemplo n.º 4
0
 public SettingsController(ApplicationSettings settings, UserServiceBase userManager, SettingsService settingsService,
                           IUserContext context, SiteCache siteCache, ConfigReaderWriter configReaderWriter)
     : base(settings, userManager, context, settingsService)
 {
     _settingsService    = settingsService;
     _siteCache          = siteCache;
     _configReaderWriter = configReaderWriter;
 }
Ejemplo n.º 5
0
 public ConfigurationTesterController(ApplicationSettings appSettings, IUserContext userContext, ConfigReaderWriter configReaderWriter,
                                      IActiveDirectoryProvider activeDirectoryProvider, UserServiceBase userService, IDatabaseTester databaseTester)
 {
     _applicationSettings     = appSettings;
     _userContext             = userContext;
     _configReaderWriter      = configReaderWriter;
     _activeDirectoryProvider = activeDirectoryProvider;
     _userService             = userService;
     _databaseTester          = databaseTester;
 }
Ejemplo n.º 6
0
 public InstallController(ApplicationSettings settings, UserServiceBase userService,
                          PageService pageService, SearchService searchService, IRepository respository,
                          SettingsService settingsService, IUserContext context, ConfigReaderWriter configReaderWriter)
     : base(settings, userService, context, settingsService)
 {
     _pageService        = pageService;
     _searchService      = searchService;
     _repository         = respository;
     _settingsService    = settingsService;
     _configReaderWriter = configReaderWriter;
 }
Ejemplo n.º 7
0
        private void ConfigureInstances(ConfigReaderWriter configReader)
        {
            // Appsettings and reader - these need to go first
            For <ConfigReaderWriter>().HybridHttpOrThreadLocalScoped().Use(configReader);
            For <ApplicationSettings>()
            .HybridHttpOrThreadLocalScoped()
            .Use(x => x.TryGetInstance <ConfigReaderWriter>().GetApplicationSettings());

            // Repositories
            ConfigureRepositories();

            // Work around for controllers that use RenderAction() needing to be unique
            // See https://github.com/webadvanced/Structuremap.MVC5/issues/3
            For <HomeController>().AlwaysUnique();
            For <UserController>().AlwaysUnique();
            For <ConfigurationTesterController>().AlwaysUnique();
            For <WikiController>().AlwaysUnique();

            // Plugins
            For <IPluginFactory>().Singleton().Use <PluginFactory>();

            // Screwturn importer
            For <IWikiImporter>().Use <ScrewTurnImporter>();

            // Emails
            For <SignupEmail>().Use <SignupEmail>();
            For <ResetPasswordEmail>().Use <ResetPasswordEmail>();

            // Cache
            For <ObjectCache>().Singleton().Use(new MemoryCache("Roadkill"));
            For <ListCache>().Singleton();
            For <SiteCache>().Singleton();
            For <PageViewModelCache>().Singleton();
            For <IPluginCache>().Use <SiteCache>();

            // Services
            For <IPageService>().HybridHttpOrThreadLocalScoped().Use <PageService>();
            For <IInstallationService>().HybridHttpOrThreadLocalScoped().Use <InstallationService>();

            // Security
            For <IAuthorizationProvider>().Use <AuthorizationProvider>();
            For <IUserContext>().HybridHttpOrThreadLocalScoped();
#if !MONO
            For <IActiveDirectoryProvider>().Use <ActiveDirectoryProvider>();
#endif
            // User service
            ConfigureUserService();

            // File service
            ConfigureFileService();

            // Setter injected classes
            ConfigureSetterInjection();
        }
Ejemplo n.º 8
0
        public void should_get_application_settings_from_config_reader_instance()
        {
            // Arrange
            IContainer container = CreateContainer();

            // Act
            ConfigReaderWriter  configReader = container.GetInstance <ConfigReaderWriter>();
            ApplicationSettings settings     = container.GetInstance <ApplicationSettings>();

            // Assert
            Assert.That(settings, Is.Not.Null);
            Assert.That(configReader, Is.TypeOf <ConfigReaderWriterStub>());
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Write a new config file
        /// </summary>
        /// <param name="xml">Xml of the new config file</param>
        /// <returns>Task</returns>
        public async Task WriteConfigAsync(string xml)
        {
            // Ensure valid xml before writing the file
            XmlDocument doc = new XmlDocument();

            using (XmlReader xmlReader = XmlReader.Create(new StringReader(xml), new XmlReaderSettings {
                CheckCharacters = false
            }))
            {
                doc.Load(xmlReader);
            }
            await ConfigReaderWriter.WriteConfigAsync(xml);
        }
Ejemplo n.º 10
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="applicationSettings">Use solely to detect whether Roadkill is already installed.</param>
        public InstallController(ApplicationSettings applicationSettings, ConfigReaderWriter configReaderWriter, IInstallationService installationService, IDatabaseTester databaseTester)
        {
            _configReaderWriter  = configReaderWriter;
            _installationService = installationService;
            _databaseTester      = databaseTester;

            ApplicationSettings = applicationSettings;

            // These aren't needed for the installer
            Context         = null;
            SettingsService = null;
            UserService     = null;
        }
Ejemplo n.º 11
0
        internal async Task UpdateConfiguration()
        {
            try
            {
                ConfigFilePath = (!File.Exists(ConfigFilePath) ? Path.Combine(AppContext.BaseDirectory, IPBanService.ConfigFileName) : ConfigFilePath);
                string newXml = await ConfigReaderWriter.CheckForConfigChange();

                if (!string.IsNullOrWhiteSpace(newXml))
                {
                    IPBanConfig oldConfig = Config;
                    IPBanConfig newConfig = IPBanConfig.LoadFromXml(newXml, DnsLookup);
                    ConfigChanged?.Invoke(newConfig);
                    whitelistChanged = (Config is null || Config.Whitelist != newConfig.Whitelist || Config.WhitelistRegex != newConfig.WhitelistRegex);
                    Config           = newConfig;
                    LoadFirewall(oldConfig);
                    ParseAndAddUriFirewallRules(newConfig);
                    Logger.Info("Config file changed");
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            if (Config is null)
            {
                throw new ApplicationException("Configuration failed to load, make sure to check for XML errors or unblock all the files.");
            }
            if (Firewall is null)
            {
                throw new ApplicationException("Firewall failed to load, check that your firewall is enabled and setup in configuration properly");
            }

            // set or unset default banned ip address handler based on config
            if (Config.UseDefaultBannedIPAddressHandler && BannedIPAddressHandler is null)
            {
                BannedIPAddressHandler = new DefaultBannedIPAddressHandler();
            }
            else if (!Config.UseDefaultBannedIPAddressHandler && BannedIPAddressHandler != null && BannedIPAddressHandler is DefaultBannedIPAddressHandler)
            {
                BannedIPAddressHandler = NullBannedIPAddressHandler.Instance;
            }

            // will only execute once
            UpdateBannedIPAddressesOnStart();

            // will only execute once
            SetupWindowsEventViewer();
        }
Ejemplo n.º 12
0
        internal async Task UpdateConfiguration()
        {
            try
            {
                ConfigFilePath = (!File.Exists(ConfigFilePath) ? Path.Combine(AppContext.BaseDirectory, IPBanConfig.DefaultFileName) : ConfigFilePath);
                var configChange = await ConfigReaderWriter.CheckForConfigChange();

                if (!string.IsNullOrWhiteSpace(configChange.Item1))
                {
                    IPBanConfig oldConfig = Config;
                    IPBanConfig newConfig = IPBanConfig.LoadFromXml(configChange.Item1, DnsLookup, DnsList, RequestMaker);
                    ConfigChanged?.Invoke(newConfig);
                    whitelistChanged = (Config is null || Config.Whitelist != newConfig.Whitelist || Config.WhitelistRegex != newConfig.WhitelistRegex);
                    Config           = newConfig;
                    LoadFirewall(oldConfig);
                    ParseAndAddUriFirewallRules(newConfig);

                    // if the config change was not a force refresh with no actual config values changed, log it
                    if (!configChange.Item2)
                    {
                        Logger.Info("Config file changed");
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            if (Config is null)
            {
                throw new ApplicationException("Configuration failed to load, make sure to check for XML errors or unblock all the files.");
            }
            if (Firewall is null)
            {
                throw new ApplicationException("Firewall failed to load, check that your firewall is enabled and setup in configuration properly");
            }

            // set or unset default banned ip address handler based on config
            if (Config.UseDefaultBannedIPAddressHandler && BannedIPAddressHandler is null)
            {
                BannedIPAddressHandler = new DefaultBannedIPAddressHandler();
            }
            else if (!Config.UseDefaultBannedIPAddressHandler && BannedIPAddressHandler != null && BannedIPAddressHandler is DefaultBannedIPAddressHandler)
            {
                BannedIPAddressHandler = NullBannedIPAddressHandler.Instance;
            }
        }
        public void When_WebConfigExists_Constructor_Should_BackupConfigFile()
        {
            _fileWrapperMock.Setup(f => f.Exists(It.IsAny <string>())).Returns(true);
            _configurationFactoryMock.Setup(f => f.GetConfiguration(It.IsAny <string>())).Returns(new Microsoft.Extensions.Configuration.ConfigurationBuilder().Build());
            _configManagerSettingsBuilder.Setup(f => f.GetConfigPaths()).Returns(("", WEB_CONFIG_FILE_NAME));

            _writer = new ConfigReaderWriterBuilder(_configManagerSettingsBuilder.Object, options =>
            {
                options.ConfigurationFactory = _configurationFactoryMock.Object;
                options.FileWrapper          = _fileWrapperMock.Object;
                options.XmlDocumentWrapper   = _xmlDocumentWrapperMock.Object;
                options.Logger             = _consoleLoggerMock.Object;
                options.EnvironmentWrapper = _environmentWrapperMock.Object;
                options.BuildPath          = WEB_CONFIG_FILE_NAME;
            }).Build();

            _fileWrapperMock.Verify(f => f.Copy(It.IsAny <string>(), It.IsAny <string>()), Times.Once);
        }
        private void LoadWebConfigAsXmlDocument()
        {
            XmlDocument xmldoc = new XmlDocument();

            xmldoc.Load(WEB_CONFIG_FILE_NAME);

            _fileWrapperMock.Setup(f => f.Exists(It.IsAny <string>())).Returns(true);
            _xmlDocumentWrapperMock.Setup(f => f.CreateXmlDocFromFile(It.IsAny <string>())).Returns(xmldoc);
            _configurationFactoryMock.Setup(f => f.GetConfiguration(It.IsAny <string>())).Returns(new Microsoft.Extensions.Configuration.ConfigurationBuilder().Build());

            _configManagerSettingsBuilder.Setup(f => f.GetConfigPaths()).Returns(("", WEB_CONFIG_FILE_NAME));

            _writer = new ConfigReaderWriterBuilder(_configManagerSettingsBuilder.Object, options =>
            {
                options.ConfigurationFactory = _configurationFactoryMock.Object;
                options.EnvironmentWrapper   = _environmentWrapperMock.Object;
                options.FileWrapper          = _fileWrapperMock.Object;
                options.Logger             = _consoleLoggerMock.Object;
                options.XmlDocumentWrapper = _xmlDocumentWrapperMock.Object;
                options.BuildPath          = WEB_CONFIG_FILE_NAME;
            }).Build();
        }
Ejemplo n.º 15
0
        internal async Task ReadAppSettings()
        {
            try
            {
                ConfigFilePath = (!File.Exists(ConfigFilePath) ? Path.Combine(AppDomain.CurrentDomain.BaseDirectory, IPBanService.ConfigFileName) : ConfigFilePath);
                string newXml = await ConfigReaderWriter.CheckForConfigChange();

                if (!string.IsNullOrWhiteSpace(newXml))
                {
                    IPBanConfig oldConfig = Config;
                    IPBanConfig newConfig = IPBanConfig.LoadFromXml(newXml, DnsLookup);
                    UpdateLogFiles(newConfig);
                    whitelistChanged = (Config == null || Config.WhiteList != newConfig.WhiteList || Config.WhiteListRegex != newConfig.WhiteListRegex);
                    Config           = newConfig;
                    LoadFirewall(oldConfig);
                }
            }
            catch (Exception ex)
            {
                IPBanLog.Error(ex);

                if (Config == null)
                {
                    throw new ApplicationException("Configuration failed to load, make sure to check for XML errors or unblock all the files.", ex);
                }
            }

            // set or unset default banned ip address handler based on config
            if (Config.UseDefaultBannedIPAddressHandler && BannedIPAddressHandler == null)
            {
                BannedIPAddressHandler = new DefaultBannedIPAddressHandler();
            }
            else if (!Config.UseDefaultBannedIPAddressHandler && BannedIPAddressHandler != null && BannedIPAddressHandler is DefaultBannedIPAddressHandler)
            {
                BannedIPAddressHandler = null;
            }
        }
Ejemplo n.º 16
0
 /// <summary>
 /// Read configuration
 /// </summary>
 /// <returns>Configuration xml</returns>
 public Task <string> ReadConfigAsync()
 {
     return(ConfigReaderWriter.ReadConfigAsync());
 }
Ejemplo n.º 17
0
 public InstallControllerStub(ApplicationSettings settings, UserServiceBase userService,
                              PageService pageService, SearchService searchService, IRepository respository,
                              SettingsService settingsService, IUserContext context, ConfigReaderWriter configReaderWriter)
     : base(settings, userService, pageService, searchService, respository, settingsService, context, configReaderWriter)
 {
 }
Ejemplo n.º 18
0
 public UpgradeControllerStub(ApplicationSettings settings, UserServiceBase userService, IRepository respository,
                              SettingsService settingsService, IUserContext context, ConfigReaderWriter configReaderWriter)
     : base(settings, respository, userService, context, settingsService, configReaderWriter)
 {
 }
Ejemplo n.º 19
0
 public InstallControllerStub(ApplicationSettings settings, ConfigReaderWriter configReaderWriter, IInstallationService installationService, IDatabaseTester databaseTester)
     : base(settings, configReaderWriter, installationService, databaseTester)
 {
 }