Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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());
        }
Beispiel #5
0
 public MasterServer(IOptions <MasterConfiguration> masterConfiguration, ILogger logger)
 {
     _masterConfiguration = masterConfiguration.Value;
     _logger = logger;
 }
Beispiel #6
0
 public MasterServer(MasterConfiguration masterConfiguration, ILogger logger)
 {
     _masterConfiguration = masterConfiguration;
     _logger = logger;
 }
Beispiel #7
0
 public MasterServer(MasterConfiguration masterConfiguration)
 {
     _masterConfiguration = masterConfiguration;
 }
Beispiel #8
0
        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));
        }
Beispiel #9
0
        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));
        }
Beispiel #10
0
 public Startup(MasterConfiguration configuration)
 {
     _configuration = configuration;
 }