diff --git a/ShowcaseProject/ShowcaseAPI/Dockerfile b/ShowcaseProject/ShowcaseAPI/Dockerfile index af07f27..4d5bf47 100644 --- a/ShowcaseProject/ShowcaseAPI/Dockerfile +++ b/ShowcaseProject/ShowcaseAPI/Dockerfile @@ -1,41 +1,18 @@ -# Base image for running the .NET API -FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base -WORKDIR /app -EXPOSE 8080 -EXPOSE 8081 - -# Development stage (voor dotnet watch) FROM mcr.microsoft.com/dotnet/sdk:8.0 AS dev WORKDIR /app + COPY ./ShowcaseAPI ./ShowcaseAPI WORKDIR /app/ShowcaseAPI CMD ["dotnet", "watch", "run", "--no-launch-profile", "--urls", "http://+:80"] -# Build stage (voor productie) FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src -COPY ["ShowcaseAPI/ShowcaseAPI.csproj", "ShowcaseAPI/"] -RUN dotnet restore "ShowcaseAPI/ShowcaseAPI.csproj" - -# Copy and build source COPY . . -WORKDIR "/src/ShowcaseAPI" -RUN dotnet build "ShowcaseAPI.csproj" -c Release -o /app/build +RUN dotnet restore ./ShowcaseAPI/ShowcaseAPI.csproj +WORKDIR /src/ShowcaseAPI +RUN dotnet publish -c Release -o /app/publish /p:UseAppHost=false -# Publish (voor productie) -FROM build AS publish -RUN dotnet publish "ShowcaseAPI.csproj" -c Release -o /app/publish /p:UseAppHost=false - -# Final production stage FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS final WORKDIR /app - -# Kopieer wait script -COPY ShowcaseAPI/wait-for-sql.sh . -RUN chmod +x wait-for-sql.sh - -# Kopieer build output -COPY --from=publish /app/publish . - -# Start script dat wacht op SQL Server -ENTRYPOINT ["./wait-for-sql.sh"] +COPY --from=build /app/publish . +ENTRYPOINT ["dotnet", "ShowcaseAPI.dll"] diff --git a/ShowcaseProject/ShowcaseAPI/Program.cs b/ShowcaseProject/ShowcaseAPI/Program.cs index e736532..bbd10e9 100644 --- a/ShowcaseProject/ShowcaseAPI/Program.cs +++ b/ShowcaseProject/ShowcaseAPI/Program.cs @@ -11,7 +11,7 @@ builder.Services.AddCors(options => { - options.AddPolicy("AllowFrontend", + options.AddPolicy("AllowFrontendDevelopment", policy => { policy.WithOrigins("http://localhost:8080") @@ -20,7 +20,19 @@ .AllowCredentials(); }); }); - + +builder.Services.AddCors(options => +{ + options.AddPolicy("AllowFrontendProduction", + policy => + { + policy.WithOrigins("https://showcaseapi-demo123.eastus.azurecontainer.io") + .AllowAnyHeader() + .AllowAnyMethod() + .AllowCredentials(); + }); +}); + Env.Load(); // Add services to the container. @@ -73,8 +85,14 @@ { app.UseHttpsRedirection(); } +if (app.Environment.IsDevelopment()) +{ + app.UseCors("AllowFrontendDevelopment"); +}else +{ + app.UseCors("AllowFrontendProduction"); -app.UseCors("AllowFrontend"); +} app.MapHub("/hub/game"); diff --git a/ShowcaseProject/ShowcaseFrontend/Dockerfile b/ShowcaseProject/ShowcaseFrontend/Dockerfile index 6b1d457..2b1ee16 100644 --- a/ShowcaseProject/ShowcaseFrontend/Dockerfile +++ b/ShowcaseProject/ShowcaseFrontend/Dockerfile @@ -1,6 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0 AS dev WORKDIR /app + COPY . . RUN dotnet restore ./ShowcaseFrontend//ShowcaseFrontend.csproj diff --git a/ShowcaseProject/ShowcaseFrontend/Program.cs b/ShowcaseProject/ShowcaseFrontend/Program.cs index 8d5e77a..ef97ca0 100644 --- a/ShowcaseProject/ShowcaseFrontend/Program.cs +++ b/ShowcaseProject/ShowcaseFrontend/Program.cs @@ -40,7 +40,21 @@ // 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.Use(async (context, next) => +{ + context.Response.Headers.Append("Content-Security-Policy", + "default-src 'self'; " + + "script-src 'self' https://cdnjs.cloudflare.com ; " + + "style-src 'self' 'sha256-xyz4zkCjuC3lZcD2UmnqDG0vurmq12W/XKM5Vd0+MlQ='; " + + "font-src 'self' ; " + + "img-src 'self'; " + + "object-src 'none'; " + + "frame-ancestors 'none'; " + + "base-uri 'self'; " + + "form-action 'self';"+ + "connect-src 'self' ws://localhost:* http://localhost:5001 https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/6.0.1/signalr.js.map; "); + await next(); +}); if (!app.Environment.IsDevelopment()) { app.UseHttpsRedirection(); diff --git a/ShowcaseProject/ShowcaseFrontend/Views/Game/Index.cshtml b/ShowcaseProject/ShowcaseFrontend/Views/Game/Index.cshtml index c358565..2b85116 100644 --- a/ShowcaseProject/ShowcaseFrontend/Views/Game/Index.cshtml +++ b/ShowcaseProject/ShowcaseFrontend/Views/Game/Index.cshtml @@ -17,9 +17,9 @@ - + -