using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Http.Features; using Microsoft.IdentityModel.Tokens; //using Microsoft.OpenApi.Models; using System.Text; using AyCode.Core.Loggers; using TIAM.Core.Loggers; using TIAM.Database; using TIAM.Database.DataLayers.Admins; using TIAM.Database.DataLayers.Auctions; using TIAM.Database.DataLayers.TransferDestinations; using TIAM.Database.DataLayers.Users; using TIAM.Entities.Emails; using TIAM.Services.Server; using TIAMWebApp.Server.Controllers; using TIAMWebApp.Server.Services; using Microsoft.AspNetCore.Server.Kestrel.Core; using Microsoft.AspNetCore.ResponseCompression; using System.IO.Compression; using System.Text.Json.Serialization; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.AspNetCore.Http.Json; using Microsoft.EntityFrameworkCore; var builder = WebApplication.CreateBuilder(args); const string myAllowSpecificOrigins = "_myAllowSpecificOrigins"; // Add services to the container. builder.Services.AddControllersWithViews(); builder.Services.AddRazorPages(); builder.Services.AddServerSideBlazor(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddSingleton(); builder.Services.AddScoped(); builder.Services.AddScoped(); //Eddig a 23kb volt a legnagyobb MaximumReceiveMessageSize! "The default value of MaximumReceiveMessageSize is 32 KB" - J. builder.Services.AddSignalR(options => options.MaximumReceiveMessageSize = 256 * 1024);//.AddMessagePackProtocol(options => options.SerializerOptions = MessagePackSerializerOptions.Standard.WithSecurity(MessagePackSecurity.UntrustedData)); builder.Services.Configure(options => { options.SerializerOptions.ReferenceHandler = ReferenceHandler.Preserve; }); builder.Services.AddCors(options => { options.AddPolicy(myAllowSpecificOrigins, policy => { policy.WithOrigins("http://touriam.com", "http://www.touriam.com"); }); }); //builder.Services.AddSwaggerGen(swagger => //{ // swagger.SwaggerDoc("v1", new OpenApiInfo // { // Title = "API Title", // Version = "V1", // Description = "API Description" // }); // var securitySchema = new OpenApiSecurityScheme // { // Description = "Authorization header using the Bearer scheme. Example \"Authorization: Bearer {token}\"", // Name = "Authorization", // In = ParameterLocation.Header, // Type = SecuritySchemeType.Http, // Scheme = "Bearer", // Reference = new OpenApiReference // { // Type = ReferenceType.SecurityScheme, // Id = "Bearer" // } // }; // swagger.AddSecurityDefinition(securitySchema.Reference.Id, securitySchema); // swagger.AddSecurityRequirement(new OpenApiSecurityRequirement // { // { securitySchema, Array.Empty() } // }); //}); builder.Services.AddAuthentication(options => { options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; }).AddJwtBearer(options => { var key = Encoding.UTF8.GetBytes(builder.Configuration["JWT:Key"]); options.SaveToken = true; options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = builder.Configuration["JWT:Issuer"], ValidAudience = builder.Configuration["JWT:Audience"], IssuerSigningKey = new SymmetricSecurityKey(key), ClockSkew = TimeSpan.Zero }; }); builder.Services.Configure(options => { options.MultipartBodyLengthLimit = 200000000; // Increase the limit to 200MB }); builder.Services.AddHttpClient(client => { //ApiKey: sup_sk_0rt9IFrMpE9qA6328vqMwCtiCntRXZxGR client.BaseAddress = new Uri("https://api.sumup.com/"); }); builder.Services.AddTransient(provider => new SumupService( provider.GetRequiredService(), //"your-client-id", //"your-client-secret" "cc_classic_FHVxlhLMqFfX3ZqBe5GW4gEhySnuq", "cc_sk_classic_SDxnPImsFMmw0ApNk2KlmFwqgHN29FClMvH3op3Kkus6Zn5Ge3", provider.GetRequiredService>() )); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.ConfigureApplicationCookie(options => { options.Cookie.HttpOnly = false; options.ExpireTimeSpan = TimeSpan.FromMinutes(5); options.LoginPath = "/Login"; options.SlidingExpiration = true; }); builder.WebHost.ConfigureKestrel((context, options) => { options.ListenAnyIP(7116, listenOptions => { listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3; listenOptions.UseHttps(); }); }); //builder.Services.AddResponseCompression(options => //{ // options.EnableForHttps = true; // options.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(new[] { "application/octet-stream" }); // options.Providers.Add(); // options.Providers.Add(); //}); //builder.Services.Configure(options => options.Level = CompressionLevel.Optimal); //builder.Services.Configure(options => options.Level = CompressionLevel.Optimal); //builder.Services.AddSingleton(sp => (sp.GetRequiredService() as IWebHostEnvironment)!); var app = builder.Build(); // Configure the HTTP request pipeline. if (app.Environment.IsDevelopment()) { app.UseWebAssemblyDebugging(); } else { app.UseExceptionHandler("/Error"); app.UseHsts(); } ////if (!app.Environment.IsDevelopment()) //{ // app.UseResponseCompression(); //} //app.UseSwagger(); //app.UseSwaggerUI(c => //{ // c.SwaggerEndpoint("/swagger/v1/swagger.json", "v1"); //}); app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseAuthentication(); app.UseRouting(); app.UseCors(myAllowSpecificOrigins); app.UseAuthorization(); app.MapRazorPages(); app.MapControllers(); app.MapBlazorHub(); app.MapHub("/TiamChatHub"); app.MapHub("/TiamLoggerHub"); app.MapHub("/DevAdminHub"); app.MapHub("/gamehub"); app.MapFallbackToFile("index.html"); app.Run();