Esempio n. 1
0
        static async Task Main(string[] args)
        {
            ConfigurationBuilder builder = new ConfigurationBuilder();

            //builder.AddUserSecrets<OTHubSettings>();
            builder.AddJsonFile("appsettings.json", optional: false, reloadOnChange: false);



            IConfigurationRoot configuration = builder.Build();

            var settings = new OTHubSettings();

            configuration.Bind("OTHub", settings);

            settings.Validate();

            //Add any new tables, indexes, columns etc to the database. This can only be used to upgrade somewhat recent databases.
            DatabaseUpgradeTask.Execute();

            await RabbitMqService.Connect();

            await SmartContractManager.Load();

            Bootstrapper bootstrapper = new Bootstrapper();

            bootstrapper.RunUntilExit();
        }
Esempio n. 2
0
        public void Settings_ThrowExceptionIfNotFullySetup()
        {
            OTHubSettings settings = new OTHubSettings
            {
                MariaDB = new MariaDBSettings
                {
                    Database = "test", Server = "test", UserID = "test", Password = "******"
                }
            };

            Assert.Throws <Exception>(() => settings.Validate());
        }
Esempio n. 3
0
 public void Settings_NoExceptionThrownIfSetup()
 {
     OTHubSettings settings = new OTHubSettings
     {
         MariaDB = new MariaDBSettings
         {
             Database = "test",
             Server   = "test",
             UserID   = "test",
             Password = "******"
         },
         WebServer = new WebServerSettings
         {
             AccessControlAllowOrigin = "test"
         }
     };
 }
Esempio n. 4
0
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var settings = new OTHubSettings();

            Configuration.Bind("OTHub", settings);

            settings.Validate();

            services.AddMemoryCache();

            services.AddSwaggerExamples();

            List <string> origins = new List <string>();

#if DEBUG
            origins.Add("http://localhost:4200");
#endif

            origins.Add(OTHubSettings.Instance.WebServer.AccessControlAllowOrigin);



            services.AddCors(options =>
            {
                //options.AddPolicy("AllowAll",
                //    builder =>
                //    {
                //        builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod()
                //            .SetPreflightMaxAge(TimeSpan.FromDays(7));
                //    });

                options.AddPolicy("SignalR",
                                  builder => builder.WithOrigins(origins.ToArray())
                                  .AllowAnyHeader().SetIsOriginAllowed((origin => true))
                                  .AllowAnyMethod()
                                  .AllowCredentials().SetPreflightMaxAge(TimeSpan.FromDays(7)));
            });

            services.AddControllers()
            .AddNewtonsoftJson(
                opt =>
            {
                opt.SerializerSettings.ContractResolver = new DefaultContractResolver {
                    NamingStrategy = new DefaultNamingStrategy()
                };
            }
                );


            services.AddSignalR(o =>
            {
                o.EnableDetailedErrors = true;
            }).AddJsonProtocol(options =>
            {
                options.PayloadSerializerOptions.Converters.Add(new JsonStringEnumConverter());
            });


            services.AddSwaggerGen(c =>
            {
                c.EnableAnnotations();
                c.ExampleFilters();
                c.SwaggerDoc("Mainnet", new Microsoft.OpenApi.Models.OpenApiInfo {
                    Title = "OT Hub", Version = "1.0.0"
                });
            });

            services.AddAuthentication(options =>
            {
                options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
                options.DefaultChallengeScheme    = JwtBearerDefaults.AuthenticationScheme;
            }).AddJwtBearer(options =>
            {
                options.Authority = "https://othub.eu.auth0.com/";
                options.Audience  = "https://othubapi";
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    NameClaimType = ClaimTypes.NameIdentifier
                };

                options.Events = new JwtBearerEvents
                {
                    OnMessageReceived = context =>
                    {
                        var accessToken = context.Request.Query["access_token"];

                        // If the request is for our hub...
                        var path = context.HttpContext.Request.Path;
                        if (!string.IsNullOrEmpty(accessToken) &&
                            (path.StartsWithSegments("/signalr/notifications")))
                        {
                            // Read the token out of the query string
                            context.Token = accessToken;
                        }
                        return(Task.CompletedTask);
                    }
                };
            });



            services.AddSingleton <RabbitMQService>();

            services.AddSingleton <TelegramBot>();

            services.AddQuartz(q =>
            {
                q.UseMicrosoftDependencyInjectionScopedJobFactory();

                q.ScheduleJob <LowAvailableTokensJob>(trigger => trigger
                                                      .WithSchedule(CronScheduleBuilder
                                                                    .DailyAtHourAndMinute(0, 0)));
            });

            services.AddQuartzServer(options =>
            {
                // when shutting down we want jobs to complete gracefully
                options.WaitForJobsToComplete = true;
            });
        }
Esempio n. 5
0
        public void Settings_ThrowExceptionIfNotSetup()
        {
            OTHubSettings settings = new OTHubSettings();

            Assert.Throws <Exception>(() => settings.Validate());
        }