diff --git a/MareSynchronosServer/MareSynchronosServer/MareSynchronosServer.csproj b/MareSynchronosServer/MareSynchronosServer/MareSynchronosServer.csproj index 78e5a49..38e2081 100644 --- a/MareSynchronosServer/MareSynchronosServer/MareSynchronosServer.csproj +++ b/MareSynchronosServer/MareSynchronosServer/MareSynchronosServer.csproj @@ -11,7 +11,7 @@ - + @@ -22,6 +22,7 @@ + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/MareSynchronosServer/MareSynchronosServer/Startup.cs b/MareSynchronosServer/MareSynchronosServer/Startup.cs index 32ec88b..57fca87 100644 --- a/MareSynchronosServer/MareSynchronosServer/Startup.cs +++ b/MareSynchronosServer/MareSynchronosServer/Startup.cs @@ -59,6 +59,7 @@ namespace MareSynchronosServer options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"), builder => { builder.MigrationsHistoryTable("_efmigrationshistory", "public"); + builder.MigrationsAssembly("MareSynchronosShared"); }).UseSnakeCaseNamingConvention(); options.EnableThreadSafetyChecks(false); }, Configuration.GetValue("DbContextPoolSize", 1024)); diff --git a/MareSynchronosServer/MareSynchronosServer/appsettings.json b/MareSynchronosServer/MareSynchronosServer/appsettings.json index 9831f47..20bad5c 100644 --- a/MareSynchronosServer/MareSynchronosServer/appsettings.json +++ b/MareSynchronosServer/MareSynchronosServer/appsettings.json @@ -26,7 +26,7 @@ "DbContextPoolSize": 2000, "CdnFullUrl": "https:///cache/", "CacheDirectory": "G:\\ServerTest", // do not delete this key and set it to the path where the files will be stored - "ServicesUrl": "http://localhost:5002", + "ServiceAddress": "http://localhost:5002", "AllowedHosts": "*", "Kestrel": { diff --git a/MareSynchronosServer/MareSynchronosServices/.config/dotnet-tools.json b/MareSynchronosServer/MareSynchronosServices/.config/dotnet-tools.json new file mode 100644 index 0000000..98091c9 --- /dev/null +++ b/MareSynchronosServer/MareSynchronosServices/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "6.0.8", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/MareSynchronosServer/MareSynchronosServices/CleanupService.cs b/MareSynchronosServer/MareSynchronosServices/CleanupService.cs index c64c97b..efc8a03 100644 --- a/MareSynchronosServer/MareSynchronosServices/CleanupService.cs +++ b/MareSynchronosServer/MareSynchronosServices/CleanupService.cs @@ -1,4 +1,5 @@ using MareSynchronosServices.Authentication; +using MareSynchronosServices.Metrics; using MareSynchronosShared.Data; using MareSynchronosShared.Metrics; using MareSynchronosShared.Models; @@ -10,16 +11,16 @@ namespace MareSynchronosServices { public class CleanupService : IHostedService, IDisposable { - private readonly MetricsService.MetricsServiceClient _metricsClient; + private readonly MareMetrics metrics; private readonly SecretKeyAuthenticationHandler _authService; private readonly ILogger _logger; private readonly IServiceProvider _services; private readonly IConfiguration _configuration; private Timer _timer; - public CleanupService(MetricsService.MetricsServiceClient metricsClient, SecretKeyAuthenticationHandler authService, ILogger logger, IServiceProvider services, IConfiguration configuration) + public CleanupService(MareMetrics metrics, SecretKeyAuthenticationHandler authService, ILogger logger, IServiceProvider services, IConfiguration configuration) { - _metricsClient = metricsClient; + this.metrics = metrics; _authService = authService; _logger = logger; _services = services; @@ -64,8 +65,8 @@ namespace MareSynchronosServices } else if (fi.LastAccessTime < prevTime) { - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotalSize, Value = fi.Length }); - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotal, Value = 1 }); + metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotalSize, fi.Length); + metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotal, 1); _logger.LogInformation("File outdated: {fileName}", fileName); dbContext.Files.Remove(file); fi.Delete(); @@ -94,8 +95,8 @@ namespace MareSynchronosServices removedHashes.Add(oldestFile.Name.ToLower()); allLocalFiles.Remove(oldestFile); totalCacheSizeInBytes -= oldestFile.Length; - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotalSize, Value = oldestFile.Length }); - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotal, Value = 1 }); + metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotalSize, oldestFile.Length); + metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotal, 1); oldestFile.Delete(); } @@ -194,8 +195,8 @@ namespace MareSynchronosServices var fi = new FileInfo(Path.Combine(_configuration["CacheDirectory"], file.Hash)); if (fi.Exists) { - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotalSize, Value = fi.Length }); - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeFilesTotal, Value = 1 }); + metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotalSize, fi.Length); + metrics.DecGaugeBy(MetricsAPI.GaugeFilesTotal, 1); fi.Delete(); } } @@ -208,10 +209,11 @@ namespace MareSynchronosServices var otherPairData = dbContext.ClientPairs.Include(u => u.User) .Where(u => u.OtherUser.UID == user.UID).ToList(); - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugePairs, Value = ownPairData.Count + otherPairData.Count }); - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugePairsPaused, Value = ownPairData.Count(c => c.IsPaused) }); - _metricsClient.DecGauge(new GaugeRequest() { GaugeName = MetricsAPI.GaugeUsersRegistered, Value = 1 }); - + + metrics.DecGaugeBy(MetricsAPI.GaugePairs, ownPairData.Count + otherPairData.Count); + metrics.DecGaugeBy(MetricsAPI.GaugePairsPaused, ownPairData.Count + ownPairData.Count(c => c.IsPaused)); + metrics.DecGaugeBy(MetricsAPI.GaugeUsersRegistered, ownPairData.Count + 1); + dbContext.RemoveRange(otherPairData); dbContext.Remove(auth); dbContext.Remove(user); diff --git a/MareSynchronosServer/MareSynchronosServices/MareSynchronosServices.csproj b/MareSynchronosServer/MareSynchronosServices/MareSynchronosServices.csproj index 7cddfee..0ed1bf3 100644 --- a/MareSynchronosServer/MareSynchronosServices/MareSynchronosServices.csproj +++ b/MareSynchronosServer/MareSynchronosServices/MareSynchronosServices.csproj @@ -9,7 +9,12 @@ - + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/MareSynchronosServer/MareSynchronosShared/MareSynchronosShared.csproj b/MareSynchronosServer/MareSynchronosShared/MareSynchronosShared.csproj index afba71f..dd32764 100644 --- a/MareSynchronosServer/MareSynchronosShared/MareSynchronosShared.csproj +++ b/MareSynchronosServer/MareSynchronosShared/MareSynchronosShared.csproj @@ -3,7 +3,6 @@ net6.0 enable - enable @@ -16,7 +15,7 @@ - + diff --git a/MareSynchronosServer/MareSynchronosShared/Migrations/MareDbContextModelSnapshot.cs b/MareSynchronosServer/MareSynchronosShared/Migrations/MareDbContextModelSnapshot.cs index b01ed50..5d3bb74 100644 --- a/MareSynchronosServer/MareSynchronosShared/Migrations/MareDbContextModelSnapshot.cs +++ b/MareSynchronosServer/MareSynchronosShared/Migrations/MareDbContextModelSnapshot.cs @@ -22,7 +22,7 @@ namespace MareSynchronosServer.Migrations NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - modelBuilder.Entity("MareSynchronosServer.Models.Auth", b => + modelBuilder.Entity("MareSynchronosShared.Models.Auth", b => { b.Property("HashedKey") .HasMaxLength(64) @@ -42,7 +42,7 @@ namespace MareSynchronosServer.Migrations b.ToTable("auth", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.Banned", b => + modelBuilder.Entity("MareSynchronosShared.Models.Banned", b => { b.Property("CharacterIdentification") .HasMaxLength(100) @@ -65,7 +65,7 @@ namespace MareSynchronosServer.Migrations b.ToTable("banned_users", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.BannedRegistrations", b => + modelBuilder.Entity("MareSynchronosShared.Models.BannedRegistrations", b => { b.Property("DiscordIdOrLodestoneAuth") .HasMaxLength(100) @@ -78,7 +78,7 @@ namespace MareSynchronosServer.Migrations b.ToTable("banned_registrations", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.ClientPair", b => + modelBuilder.Entity("MareSynchronosShared.Models.ClientPair", b => { b.Property("UserUID") .HasMaxLength(10) @@ -116,7 +116,7 @@ namespace MareSynchronosServer.Migrations b.ToTable("client_pairs", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.FileCache", b => + modelBuilder.Entity("MareSynchronosShared.Models.FileCache", b => { b.Property("Hash") .HasMaxLength(40) @@ -147,7 +147,7 @@ namespace MareSynchronosServer.Migrations b.ToTable("file_caches", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.ForbiddenUploadEntry", b => + modelBuilder.Entity("MareSynchronosShared.Models.ForbiddenUploadEntry", b => { b.Property("Hash") .HasMaxLength(40) @@ -171,7 +171,7 @@ namespace MareSynchronosServer.Migrations b.ToTable("forbidden_upload_entries", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.LodeStoneAuth", b => + modelBuilder.Entity("MareSynchronosShared.Models.LodeStoneAuth", b => { b.Property("DiscordId") .ValueGeneratedOnAdd() @@ -205,7 +205,7 @@ namespace MareSynchronosServer.Migrations b.ToTable("lodestone_auth", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.User", b => + modelBuilder.Entity("MareSynchronosShared.Models.User", b => { b.Property("UID") .HasMaxLength(10) @@ -244,9 +244,9 @@ namespace MareSynchronosServer.Migrations b.ToTable("users", (string)null); }); - modelBuilder.Entity("MareSynchronosServer.Models.Auth", b => + modelBuilder.Entity("MareSynchronosShared.Models.Auth", b => { - b.HasOne("MareSynchronosServer.Models.User", "User") + b.HasOne("MareSynchronosShared.Models.User", "User") .WithMany() .HasForeignKey("UserUID") .HasConstraintName("fk_auth_users_user_temp_id"); @@ -254,16 +254,16 @@ namespace MareSynchronosServer.Migrations b.Navigation("User"); }); - modelBuilder.Entity("MareSynchronosServer.Models.ClientPair", b => + modelBuilder.Entity("MareSynchronosShared.Models.ClientPair", b => { - b.HasOne("MareSynchronosServer.Models.User", "OtherUser") + b.HasOne("MareSynchronosShared.Models.User", "OtherUser") .WithMany() .HasForeignKey("OtherUserUID") .OnDelete(DeleteBehavior.Cascade) .IsRequired() .HasConstraintName("fk_client_pairs_users_other_user_temp_id1"); - b.HasOne("MareSynchronosServer.Models.User", "User") + b.HasOne("MareSynchronosShared.Models.User", "User") .WithMany() .HasForeignKey("UserUID") .OnDelete(DeleteBehavior.Cascade) @@ -275,9 +275,9 @@ namespace MareSynchronosServer.Migrations b.Navigation("User"); }); - modelBuilder.Entity("MareSynchronosServer.Models.FileCache", b => + modelBuilder.Entity("MareSynchronosShared.Models.FileCache", b => { - b.HasOne("MareSynchronosServer.Models.User", "Uploader") + b.HasOne("MareSynchronosShared.Models.User", "Uploader") .WithMany() .HasForeignKey("UploaderUID") .HasConstraintName("fk_file_caches_users_uploader_uid"); @@ -285,9 +285,9 @@ namespace MareSynchronosServer.Migrations b.Navigation("Uploader"); }); - modelBuilder.Entity("MareSynchronosServer.Models.LodeStoneAuth", b => + modelBuilder.Entity("MareSynchronosShared.Models.LodeStoneAuth", b => { - b.HasOne("MareSynchronosServer.Models.User", "User") + b.HasOne("MareSynchronosShared.Models.User", "User") .WithMany() .HasForeignKey("UserUID") .HasConstraintName("fk_lodestone_auth_users_user_uid"); diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/.config/dotnet-tools.json b/MareSynchronosServer/MareSynchronosStaticFilesServer/.config/dotnet-tools.json new file mode 100644 index 0000000..98091c9 --- /dev/null +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/.config/dotnet-tools.json @@ -0,0 +1,12 @@ +{ + "version": 1, + "isRoot": true, + "tools": { + "dotnet-ef": { + "version": "6.0.8", + "commands": [ + "dotnet-ef" + ] + } + } +} \ No newline at end of file diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/MareSynchronosStaticFilesServer.csproj b/MareSynchronosServer/MareSynchronosStaticFilesServer/MareSynchronosStaticFilesServer.csproj index 31bc086..23a6cae 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/MareSynchronosStaticFilesServer.csproj +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/MareSynchronosStaticFilesServer.csproj @@ -7,7 +7,7 @@ - + diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/appsettings.json b/MareSynchronosServer/MareSynchronosStaticFilesServer/appsettings.json index 7eb3997..7e9426e 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/appsettings.json +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/appsettings.json @@ -1,7 +1,4 @@ { - "ConnectionStrings": { - "DefaultConnection": "Host=localhost;Port=5432;Database=mare;Username=postgres" - }, "Logging": { "LogLevel": { "Default": "Information", @@ -17,5 +14,5 @@ }, "AllowedHosts": "*", "CacheDirectory": "G:\\ServerTest", // do not delete this key and set it to the path where the files will be stored - "ServicesUrl": "http://localhost:5002" + "ServiceAddress": "http://localhost:5002" }