diff --git a/Unbinder/Controllers/HomeController.cs b/Unbinder/Controllers/HomeController.cs index 4ea6e7b..f631d1b 100644 --- a/Unbinder/Controllers/HomeController.cs +++ b/Unbinder/Controllers/HomeController.cs @@ -1,24 +1,43 @@ -using Microsoft.AspNetCore.Mvc; +using Amazon.S3; +using Microsoft.AspNetCore.Mvc; +using Microsoft.VisualBasic; using Unbinder.Services; namespace Unbinder.Controllers { - public class HomeController : Controller + public class HomeController(ILogger logger) : Controller { public async Task Index() { - var objects = await S3Service.ListObjects(); - - if (objects != null) + try { - foreach (var entry in objects.S3Objects) + var objects = await S3Service.ListObjects(); + + if (objects != null) { - Console.WriteLine(entry.Key); + string keys = ""; + + foreach (var entry in objects.S3Objects) + { + keys += entry.Key + ", "; + } + + if (keys != "") logger.Log(LogLevel.Information, $"Found keys: {keys ?? "(none)"}"); + } + else + { + logger.Log(LogLevel.Debug, "Did not find results in S3"); } } - else + catch (Exception ex) { - Console.WriteLine("Did not find results in S3"); + if (ex is AmazonS3Exception s3Exception) + { + logger.Log(LogLevel.Warning, s3Exception.ErrorCode); + logger.Log(LogLevel.Warning, s3Exception.Message); + } + else + logger.Log(LogLevel.Error, ex.Message); } return View(); diff --git a/Unbinder/Docker/DOTNET.Dockerfile b/Unbinder/Docker/DOTNET.Dockerfile index 23705df..b088b02 100644 --- a/Unbinder/Docker/DOTNET.Dockerfile +++ b/Unbinder/Docker/DOTNET.Dockerfile @@ -2,6 +2,7 @@ FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /app +ENV CLIENT_PORT=${CLIENT_PORT:-8080} ENV AWS_S3_URL=$AWS_S3_URL ENV AWS_ACCESS_KEY=$AWS_ACCESS_KEY ENV AWS_SECRET_KEY=$AWS_SECRET_KEY @@ -15,4 +16,6 @@ RUN dotnet publish -o out FROM mcr.microsoft.com/dotnet/aspnet:8.0 WORKDIR /app COPY --from=build /app/out . + +EXPOSE $CLIENT_PORT ENTRYPOINT ["./Unbinder"] \ No newline at end of file diff --git a/Unbinder/Docker/MSSQL.Dockerfile b/Unbinder/Docker/MSSQL.Dockerfile index 69a7c2e..2126922 100644 --- a/Unbinder/Docker/MSSQL.Dockerfile +++ b/Unbinder/Docker/MSSQL.Dockerfile @@ -6,11 +6,5 @@ ENV ACCEPT_EULA=Y ENV MSSQL_PID Express ENV SA_PASSWORD=$DB_PASSWORD -# WORKDIR /db -# COPY ../DB/SQL/create_database.sql . - -# run the sql script -# CMD /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P fhhwergaiuh12480y53 -d master -i create_database.sql - # run the command to start sql server CMD /opt/mssql/bin/sqlservr diff --git a/Unbinder/Program.cs b/Unbinder/Program.cs index 568a34f..f55395d 100644 --- a/Unbinder/Program.cs +++ b/Unbinder/Program.cs @@ -17,6 +17,8 @@ EnvironmentLoader.Load(builder); // // By default, all incoming requests will be authorized according to the default policy. // options.FallbackPolicy = options.DefaultPolicy); + +// configure database SqlConnectionStringBuilder connBuilder = new() { ConnectionString = builder.Configuration.GetConnectionString("DefaultConnection"), @@ -54,6 +56,13 @@ builder.Services.AddServerSideBlazor(); var app = builder.Build(); +// apply most recent migration to db +using (IServiceScope scope = app.Services.CreateScope()) +{ + var db = scope.ServiceProvider.GetRequiredService(); + db.Database.Migrate(); +} + // Configure the HTTP request pipeline. if (!app.Environment.IsDevelopment()) { diff --git a/Unbinder/appsettings.json b/Unbinder/appsettings.json index 40beec2..89ec940 100644 --- a/Unbinder/appsettings.json +++ b/Unbinder/appsettings.json @@ -7,7 +7,7 @@ "CallbackPath": "/signin-oidc" }, "ConnectionStrings": { - "DefaultConnection": "Server=db;Database=master;User=sa;Encrypt=False;TrustServerCertificate=true" + "DefaultConnection": "Server=unbinder-db;Database=master;User ID=sa;Encrypt=False" }, "Logging": { "LogLevel": { diff --git a/Unbinder/docker-compose.yaml b/Unbinder/docker-compose.yaml index ceec6fc..8eebabd 100644 --- a/Unbinder/docker-compose.yaml +++ b/Unbinder/docker-compose.yaml @@ -1,31 +1,48 @@ version: '3.8' services: - client: + unbinder-client: depends_on: - - db + - unbinder-db + container_name: unbinder-client build: context: . dockerfile: ./Docker/DOTNET.Dockerfile ports: - - 80:80 + - ${CLIENT_PORT}:80 + - 8080:8080 environment: + CLIENT_PORT: /run/secrets/CLIENT_PORT SA_PASSWORD: /run/secrets/SA_PASSWORD AWS_S3_URL: /run/secrets/AWS_S3_URL AWS_ACCESS_KEY: /run/secrets/AWS_ACCESS_KEY AWS_SECRET_KEY: /run/secrets/AWS_SECRET_KEY AWS_BUCKET_NAME: /run/secrets/AWS_BUCKET_NAME - db: - image: mcr.microsoft.com/mssql/server:2022-latest - volumes: - - ./db_data:/var/opt/mssql/data + networks: + database: + unbinder-db: + container_name: unbinder-db + build: + context: . + dockerfile: ./Docker/MSSQL.Dockerfile ports: - 1433:1433 environment: SA_PASSWORD: /run/secrets/SA_PASSWORD - ACCEPT_EULA: "Y" + volumes: + - ./db_data:/var/opt/mssql/data + networks: + database: + aliases: + - unbinder-db + +networks: + database: + driver: bridge secrets: + CLIENT_PORT: + file: ./secrets/CLIENT_PORT.txt AWS_S3_URL: file: ./secrets/AWS_S3_URL.txt AWS_ACCESS_KEY: @@ -38,4 +55,4 @@ secrets: file: ./secrets/SA_PASSWORD.txt volumes: - db_data: \ No newline at end of file + db_data: \ No newline at end of file