/** * Bootstrap mechanism that loads the configuration for the server object based * on the specified configuration reading mechanism. * * The reference implementation of the configuration is XML-based, but this interface * allows for whatever mechanism is desired * * @param configurationReader desired configuration reader */ private ServerConfiguration loadconfiguration(ServerConfigurationReader configurationReader) { ServerConfiguration configuration = null; try { configuration = configurationReader.read(); } catch(ConfigurationException pe) { throw new Exception(pe.Message); } return configuration; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { var configReader = new ServerConfigurationReader(this.Configuration); // Add framework services. services.AddMvc(options => { //var policy = new AuthorizationPolicyBuilder().RequireAuthenticatedUser().Build(); //options.Filters.Add(new AuthorizeFilter(policy)); if (configReader.GetConfiguration().DisableSSLRequirement == false) { options.Filters.Add(new RequireHttpsAttribute()); } options.Filters.Add(typeof(VaultAuthorizationAttribute)); }); services.AddDistributedMemoryCache(); services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(configReader.GetConfiguration().SessionTimeoutMinutes); options.CookieName = ".Erebus"; }); services.AddSingleton <IHttpContextAccessor, HttpContextAccessor>(); services.AddSingleton <IServerConfigurationReader>(configReader); services.AddTransient <IClockProvider, ClockProvider>(); services.AddTransient <IFileSystem, ServerFileSystem>(); services.AddTransient <ISecureStringConverter, SecureStringConverter>(); services.AddTransient <ISerializer, JsonSerializer>(); services.AddTransient <ISymetricCryptographer, AesCryptographer>(); services.AddTransient <IVaultRepositoryFactory, VaultFileRepositoryFactory>(); services.AddTransient <IVaultManipulatorFactory, VaultManipulatorFactory>(); services.AddTransient <IVaultFactory, DefaultVaultFactory>(); services.AddTransient <IPasswordGenerator, PasswordGenerator>(); services.AddTransient <ISessionContext, SessionContext>(); services.AddTransient <IAuthorizationLogic, SessionAuthorizationLogic>(); services.AddTransient <ITimespanFormater, TimespanFormater>(); services.AddSingleton <ISyncContext, ServerSyncContext>(); services.AddTransient <IByteArrayHelper, ByteArrayHelper>(); services.AddTransient <IVaultFileMetadataHandler, VaultFileMetadataHandler>(); services.AddSingleton <ISecureStringBinarySerializer>(factory => { string randomPassword = factory.GetRequiredService <IPasswordGenerator>().GeneratePassword(50, true, true, true, true); var secureStringConverter = factory.GetRequiredService <ISecureStringConverter>(); return(new SecureStringBinarySerializer(factory.GetRequiredService <ISymetricCryptographer>(), secureStringConverter.ToSecureString(randomPassword), factory.GetRequiredService <ISecureStringConverter>())); }); }
/** * Bootstrap mechanism that loads the configuration for the server object based * on the specified configuration reading mechanism. * * The reference implementation of the configuration is XML-based, but this interface * allows for whatever mechanism is desired * * @param configurationReader desired configuration reader */ private ServerConfiguration loadconfiguration(ServerConfigurationReader configurationReader) { ServerConfiguration configuration = null; try { configuration = configurationReader.read(); } catch (ConfigurationException pe) { throw new Exception(pe.Message); } return(configuration); }
/// <summary> /// Fa+-* partire l'ambiente, carica /// le configurazioni ed il primo modulo /// </summary> public void startEnviroment() { try { /// leggo il file di configurazione in input per la shell string standalone = "standalone.xml"; string domain = "domain.xml"; ConfigurationManager cm = new DefaultConfigurationManager(); AppConfiguration aConfig = cm.load(); /// Inizilizza un primo module lodaer MonoBossKernel kernel = MonoBossKernel.getInstance(); /// recupera il module loader ModuleLoader mloader = kernel.getModuleLoader(); /// recupera l'instanza del server in base ai parametri ServerConfigurationReader sr = new ServerConfigurationReader(); if (mode == null) { // se non specifico la modalia di esecuzionea allora // faccio partire il tutto in modalità standalone. mode = "standalone"; // FIX: in linux the path is case sensitive sr.filePath = aConfig.configurationDir + "Standalone\\Configuration\\" + standalone; } else if (mode == "standalone") { sr.filePath = aConfig.configurationDir + "Standalone\\Configuration\\" + standalone; } else { if (mode == "domain") { sr.filePath = aConfig.configurationDir + "Domain\\Configuration\\" + domain; } else { throw new ShellException("Mode not recognized"); } } sr.configSchemaPath = aConfig.configurationDir + "\\Docs\\Schema\\"; // carica il file e valida se è tutto correttamente // definito in base allo x-schema, in questa sr.load(true, mode); // Recupero un oggetto che mantiene le configurazioni // che sono definite all'interno del file .xml ( standalone o domain) // 17/05/2015 - TODO, continuare ad implementare in questo punto ServerInstance serverInstance = sr.getServerInstance(); mloader.bootLoader(serverInstance); // mmloader.start(); } catch (Exception ex) { throw new ShellException(ex.ToString()); } }