using Microsoft.EntityFrameworkCore; using RR3CommunityServer.Data; using RR3CommunityServer.Services; using RR3CommunityServer.Middleware; var builder = WebApplication.CreateBuilder(args); // Add services to the container builder.Services.AddControllers(); builder.Services.AddRazorPages(); // Add Razor Pages support builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(); // Database builder.Services.AddDbContext(options => options.UseSqlite("Data Source=rr3community.db")); // Custom services builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); builder.Services.AddScoped(); // CORS for cross-origin requests builder.Services.AddCors(options => { options.AddDefaultPolicy(policy => { policy.AllowAnyOrigin() .AllowAnyMethod() .AllowAnyHeader(); }); }); var app = builder.Build(); // Configure the HTTP request pipeline if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } // Initialize database using (var scope = app.Services.CreateScope()) { var db = scope.ServiceProvider.GetRequiredService(); db.Database.EnsureCreated(); } app.UseHttpsRedirection(); app.UseCors(); // Custom middleware app.UseMiddleware(); app.UseMiddleware(); app.UseAuthorization(); app.MapControllers(); app.MapRazorPages(); // Add Razor Pages routing // Redirect root to admin panel app.MapGet("/", () => Results.Redirect("/admin")); Console.WriteLine("╔══════════════════════════════════════════════════════════╗"); Console.WriteLine("║ Real Racing 3 Community Server - RUNNING ║"); Console.WriteLine("╠══════════════════════════════════════════════════════════╣"); Console.WriteLine("║ Server is ready to accept connections ║"); Console.WriteLine("║ Ensure DNS/hosts file points EA servers to this IP ║"); Console.WriteLine("╚══════════════════════════════════════════════════════════╝"); Console.WriteLine(); Console.WriteLine("Listening on: https://localhost:5001"); Console.WriteLine("Director endpoint: /director/api/android/getDirectionByPackage"); Console.WriteLine(); app.Run();