private MasterConfiguration InitializeConfiguration() { var builder = new ConfigurationBuilder(); MasterConfiguration masterConfiguration = new MasterConfiguration(); builder.SetBasePath(Directory.GetCurrentDirectory() + _configurationPath); builder.AddJsonFile("master.json", false); builder.Build().Bind(masterConfiguration); return(masterConfiguration); }
private MasterConfiguration InitializeConfiguration() { var builder = new ConfigurationBuilder(); var masterConfiguration = new MasterConfiguration(); builder.SetBasePath(Directory.GetCurrentDirectory() + ConfigurationPath); builder.AddJsonFile("master.json", false); builder.Build().Bind(masterConfiguration); Validator.ValidateObject(masterConfiguration, new ValidationContext(masterConfiguration), validateAllProperties: true); return(masterConfiguration); }
private MasterConfiguration InitializeConfiguration() { var builder = new ConfigurationBuilder(); var masterConfiguration = new MasterConfiguration(); builder.SetBasePath(Directory.GetCurrentDirectory() + ConfigurationPath); builder.AddJsonFile("master.json", false); builder.Build().Bind(masterConfiguration); Validator.ValidateObject(masterConfiguration, new ValidationContext(masterConfiguration), true); var optionsBuilder = new DbContextOptionsBuilder <NosCoreContext>(); optionsBuilder.UseNpgsql(masterConfiguration.Database.ConnectionString); DataAccessHelper.Instance.Initialize(optionsBuilder.Options); return(masterConfiguration); }
private static IWebHost BuildWebHost(string[] args) { var conf = new MasterConfiguration(); ConfiguratorBuilder.InitializeConfiguration(args, new[] { "logger.yml", "master.yml" }, conf); return(WebHost.CreateDefaultBuilder(args) .ConfigureLogging(logging => { logging.ClearProviders(); logging.AddSerilog(); }) .ConfigureServices((hostContext, services) => services.AddSingleton(conf)) .UseUrls(conf.WebApi !.ToString()) .UseStartup <Startup>() .PreferHostingUrls(true) .SuppressStatusMessages(true) .Build()); }
public MasterServer(IOptions <MasterConfiguration> masterConfiguration, ILogger logger) { _masterConfiguration = masterConfiguration.Value; _logger = logger; }
public MasterServer(MasterConfiguration masterConfiguration, ILogger logger) { _masterConfiguration = masterConfiguration; _logger = logger; }
public MasterServer(MasterConfiguration masterConfiguration) { _masterConfiguration = masterConfiguration; }
public IServiceProvider ConfigureServices(IServiceCollection services) { Console.Title = Title; Logger.PrintHeader(ConsoleText); _configuration = InitializeConfiguration(); services.AddSingleton <IServerAddressesFeature>(new ServerAddressesFeature { PreferHostingUrls = true, Addresses = { _configuration.WebApi.ToString() } }); LogLanguage.Language = _configuration.Language; services.AddSwaggerGen(c => c.SwaggerDoc("v1", new OpenApiInfo { Title = "NosCore Master API", Version = "v1" })); string password; switch (_configuration.WebApi.HashingType) { case HashingType.BCrypt: password = _configuration.WebApi.Password.ToBcrypt(_configuration.WebApi.Salt); break; case HashingType.Pbkdf2: password = _configuration.WebApi.Password.ToPbkdf2Hash(_configuration.WebApi.Salt); break; case HashingType.Sha512: default: password = _configuration.WebApi.Password.ToSha512(); break; } var keyByteArray = Encoding.Default.GetBytes(password); var signinKey = new SymmetricSecurityKey(keyByteArray); services.AddHttpClient(); services.RemoveAll <IHttpMessageHandlerBuilderFilter>(); services.AddLogging(builder => builder.AddFilter("Microsoft", LogLevel.Warning)); services.AddAuthentication(config => config.DefaultScheme = JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(cfg => { cfg.RequireHttpsMetadata = false; cfg.SaveToken = true; cfg.TokenValidationParameters = new TokenValidationParameters { IssuerSigningKey = signinKey, ValidAudience = "Audience", ValidIssuer = "Issuer", ValidateIssuerSigningKey = true, ValidateLifetime = true }; }); services.AddMvc(o => { o.EnableEndpointRouting = false; var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); o.Filters.Add(new AuthorizeFilter(policy)); }) .AddNewtonsoftJson() .AddApplicationPart(typeof(AuthController).GetTypeInfo().Assembly) .AddApplicationPart(typeof(FriendController).GetTypeInfo().Assembly) .AddControllersAsServices(); TypeAdapterConfig.GlobalSettings.ForDestinationType <IStaticDto>() .IgnoreMember((member, side) => typeof(I18NString).IsAssignableFrom(member.Type)); TypeAdapterConfig.GlobalSettings.Compiler = exp => exp.CompileFast(); var containerBuilder = InitializeContainer(services); containerBuilder.RegisterInstance(_configuration).As <MasterConfiguration>(); containerBuilder.RegisterInstance(_configuration.WebApi).As <WebApiConfiguration>(); var container = containerBuilder.Build(); Task.Run(() => container.Resolve <MasterServer>().Run()); return(new AutofacServiceProvider(container)); }
public IServiceProvider ConfigureServices(IServiceCollection services) { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { Console.Title = Title; } Logger.PrintHeader(ConsoleText); services.AddOptions <MasterConfiguration>().Bind(_configuration).ValidateDataAnnotations(); services.AddOptions <WebApiConfiguration>().Bind(_configuration.GetSection(nameof(MasterConfiguration.WebApi))).ValidateDataAnnotations(); var masterConfiguration = new MasterConfiguration(); _configuration.Bind(masterConfiguration); services.Configure <KestrelServerOptions>(options => options.ListenAnyIP(masterConfiguration.WebApi.Port)); services.AddDbContext <NosCoreContext>( conf => conf.UseNpgsql(masterConfiguration.Database !.ConnectionString)); services.AddSwaggerGen(c => c.SwaggerDoc("v1", new OpenApiInfo { Title = "NosCore Master API", Version = "v1" })); services.ConfigureOptions <ConfigureJwtBearerOptions>(); services.AddHttpClient(); services.RemoveAll <IHttpMessageHandlerBuilderFilter>(); services.AddLogging(builder => builder.AddFilter("Microsoft", LogLevel.Warning)); services.AddAuthentication(config => config.DefaultScheme = JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(); services.AddAuthorization(o => { o.DefaultPolicy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); }); services .AddControllers(options => //todo remove when Json.Net support jsonPatch { options.InputFormatters.Insert(0, new ServiceCollection() .AddLogging() .AddMvc() .AddNewtonsoftJson() .Services.BuildServiceProvider().GetRequiredService <IOptions <MvcOptions> >() .Value .InputFormatters .OfType <NewtonsoftJsonPatchInputFormatter>() .First()); }) .AddApplicationPart(typeof(AuthController).GetTypeInfo().Assembly) .AddApplicationPart(typeof(FriendController).GetTypeInfo().Assembly) .AddControllersAsServices(); TypeAdapterConfig.GlobalSettings.ForDestinationType <IStaticDto>() .IgnoreMember((member, side) => typeof(I18NString).IsAssignableFrom(member.Type)); TypeAdapterConfig.GlobalSettings.EnableJsonMapping(); TypeAdapterConfig.GlobalSettings.Compiler = exp => exp.CompileFast(); var containerBuilder = InitializeContainer(services); var container = containerBuilder.Build(); container.Resolve <MasterServer>().Run(); return(new AutofacServiceProvider(container)); }
public Startup(MasterConfiguration configuration) { _configuration = configuration; }