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(); }
public void Settings_ThrowExceptionIfNotFullySetup() { OTHubSettings settings = new OTHubSettings { MariaDB = new MariaDBSettings { Database = "test", Server = "test", UserID = "test", Password = "******" } }; Assert.Throws <Exception>(() => settings.Validate()); }
public void Settings_NoExceptionThrownIfSetup() { OTHubSettings settings = new OTHubSettings { MariaDB = new MariaDBSettings { Database = "test", Server = "test", UserID = "test", Password = "******" }, WebServer = new WebServerSettings { AccessControlAllowOrigin = "test" } }; }
// 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; }); }
public void Settings_ThrowExceptionIfNotSetup() { OTHubSettings settings = new OTHubSettings(); Assert.Throws <Exception>(() => settings.Validate()); }