Files
Aaru.Server/DiscImageChef.Server/Startup.cs

83 lines
3.0 KiB
C#
Raw Normal View History

2019-11-02 21:01:25 +00:00
using DiscImageChef.Server.Models;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
2019-11-02 22:57:53 +00:00
using Microsoft.AspNetCore.HttpOverrides;
2019-11-07 00:25:43 +00:00
using Microsoft.AspNetCore.Identity;
2019-11-02 21:01:25 +00:00
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
2019-12-14 03:06:31 +00:00
using Prometheus;
2019-11-02 21:01:25 +00:00
namespace DiscImageChef.Server
{
public class Startup
{
2019-11-02 23:52:33 +00:00
public Startup(IConfiguration configuration) => Configuration = configuration;
2019-11-02 21:01:25 +00:00
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
2019-11-25 00:54:39 +00:00
services.AddDbContext<DicServerContext>(options => options.
UseMySql(Configuration.
GetConnectionString("DefaultConnection")).
UseLazyLoadingProxies());
2019-11-02 21:01:25 +00:00
2019-11-07 00:25:43 +00:00
services.AddDefaultIdentity<IdentityUser>(options =>
{
options.SignIn.RequireConfirmedAccount = true;
options.User.RequireUniqueEmail = true;
}).AddEntityFrameworkStores<DicServerContext>();
2019-11-02 21:01:25 +00:00
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
2019-11-02 22:57:53 +00:00
app.UseForwardedHeaders(new ForwardedHeadersOptions
{
ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto
});
2019-12-14 03:06:31 +00:00
app.UseHttpMetrics();
2019-11-02 23:52:33 +00:00
if(env.IsDevelopment())
2019-11-02 21:01:25 +00:00
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
2019-11-02 23:52:33 +00:00
2019-11-02 21:01:25 +00:00
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseStaticFiles();
app.UseRouting();
2019-11-07 00:25:43 +00:00
app.UseAuthentication();
2019-11-07 01:32:15 +00:00
app.UseAuthorization();
2019-11-07 00:25:43 +00:00
2019-11-02 21:01:25 +00:00
app.UseEndpoints(endpoints =>
{
2019-11-07 22:42:50 +00:00
endpoints.MapControllerRoute("areas", "{area}/{controller=Home}/{action=Index}/{id?}");
2019-11-02 23:52:33 +00:00
endpoints.MapControllerRoute("default", "{controller=Home}/{action=Index}/{id?}");
2019-11-07 00:25:43 +00:00
endpoints.MapRazorPages();
2019-11-02 21:01:25 +00:00
});
2019-12-14 03:06:31 +00:00
2019-12-14 03:15:33 +00:00
app.Map("/metrics", metricsApp =>
{
metricsApp.UseMiddleware<BasicAuthMiddleware>("DiscImageChef");
// We already specified URL prefix in .Map() above, no need to specify it again here.
metricsApp.UseMetricServer("");
});
2019-11-02 21:01:25 +00:00
}
}
}