remove CharacterData, minor adjustments to logging
This commit is contained in:
@@ -15,7 +15,6 @@ namespace MareSynchronosServer.Data
|
||||
public DbSet<User> Users { get; set; }
|
||||
public DbSet<FileCache> Files { get; set; }
|
||||
public DbSet<ClientPair> ClientPairs { get; set; }
|
||||
public DbSet<CharacterData> CharacterData { get; set; }
|
||||
public DbSet<ForbiddenUploadEntry> ForbiddenUploadEntries { get; set; }
|
||||
public DbSet<Banned> BannedUsers { get; set; }
|
||||
|
||||
@@ -25,14 +24,6 @@ namespace MareSynchronosServer.Data
|
||||
modelBuilder.Entity<User>().ToTable("Users");
|
||||
modelBuilder.Entity<FileCache>().ToTable("FileCaches");
|
||||
modelBuilder.Entity<ClientPair>().ToTable("ClientPairs");
|
||||
modelBuilder.Entity<CharacterData>()
|
||||
.Property(b => b.CharacterCache)
|
||||
.HasConversion(
|
||||
v => JsonConvert.SerializeObject(v),
|
||||
v => JsonConvert.DeserializeObject<CharacterCacheDto>(v));
|
||||
modelBuilder.Entity<CharacterData>()
|
||||
.ToTable("CharacterData")
|
||||
.HasKey(k => new { k.UserId, k.JobId });
|
||||
modelBuilder.Entity<ForbiddenUploadEntry>().ToTable("ForbiddenUploadEntries");
|
||||
modelBuilder.Entity<Banned>().ToTable("BannedUsers");
|
||||
}
|
||||
|
||||
@@ -47,7 +47,6 @@ namespace MareSynchronosServer.Hubs
|
||||
{
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " deleted all their files");
|
||||
|
||||
DbContext.CharacterData.RemoveRange(DbContext.CharacterData.Where(c => c.UserId == AuthenticatedUserId));
|
||||
await DbContext.SaveChangesAsync();
|
||||
var ownFiles = await DbContext.Files.Where(f => f.Uploaded && f.Uploader.UID == AuthenticatedUserId).ToListAsync();
|
||||
foreach (var file in ownFiles)
|
||||
@@ -140,7 +139,7 @@ namespace MareSynchronosServer.Hubs
|
||||
[HubMethodName(FilesHubAPI.InvokeSendFiles)]
|
||||
public async Task<List<UploadFileDto>> SendFiles(List<string> fileListHashes)
|
||||
{
|
||||
fileListHashes = fileListHashes.Distinct().ToList();
|
||||
fileListHashes = fileListHashes.Where(f => !string.IsNullOrEmpty(f)).Distinct().ToList();
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " sending files");
|
||||
var forbiddenFiles = DbContext.ForbiddenUploadEntries.Where(f => fileListHashes.Contains(f.Hash));
|
||||
var filesToUpload = new List<UploadFileDto>();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
@@ -30,9 +29,6 @@ namespace MareSynchronosServer.Hubs
|
||||
|
||||
string userid = AuthenticatedUserId;
|
||||
var userEntry = await DbContext.Users.SingleAsync(u => u.UID == userid);
|
||||
var charData = DbContext.CharacterData.Where(u => u.UserId == userid);
|
||||
DbContext.RemoveRange(charData);
|
||||
await DbContext.SaveChangesAsync();
|
||||
var ownPairData = DbContext.ClientPairs.Where(u => u.User.UID == userid);
|
||||
DbContext.RemoveRange(ownPairData);
|
||||
await DbContext.SaveChangesAsync();
|
||||
@@ -50,7 +46,6 @@ namespace MareSynchronosServer.Hubs
|
||||
DbContext.RemoveRange(otherPairData);
|
||||
DbContext.Remove(userEntry);
|
||||
await DbContext.SaveChangesAsync();
|
||||
|
||||
}
|
||||
|
||||
[Authorize(AuthenticationSchemes = SecretKeyAuthenticationHandler.AuthScheme)]
|
||||
@@ -122,8 +117,6 @@ namespace MareSynchronosServer.Hubs
|
||||
.Where(u => otherUsers.Any(e => e == u.User) && u.OtherUser == user && !u.IsPaused).ToList();
|
||||
await Clients.Users(otherEntries.Select(e => e.User.UID)).SendAsync(UserHubAPI.OnRemoveOnlinePairedPlayer, user.CharacterIdentification);
|
||||
|
||||
var outdatedCharacterData = DbContext.CharacterData.Where(v => v.UserId == user.UID);
|
||||
DbContext.RemoveRange(outdatedCharacterData);
|
||||
user.CharacterIdentification = null;
|
||||
await DbContext.SaveChangesAsync();
|
||||
|
||||
@@ -198,13 +191,13 @@ namespace MareSynchronosServer.Hubs
|
||||
{
|
||||
if (uid == AuthenticatedUserId) return;
|
||||
uid = uid.Trim();
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " adding " + uid + " to whitelist");
|
||||
var user = await DbContext.Users.SingleAsync(u => u.UID == AuthenticatedUserId);
|
||||
var otherUser = await DbContext.Users.SingleOrDefaultAsync(u => u.UID == uid);
|
||||
var existingEntry =
|
||||
await DbContext.ClientPairs.SingleOrDefaultAsync(p =>
|
||||
p.User.UID == AuthenticatedUserId && p.OtherUser.UID == uid);
|
||||
if (otherUser == null || existingEntry != null) return;
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " adding " + uid + " to whitelist");
|
||||
ClientPair wl = new ClientPair()
|
||||
{
|
||||
IsPaused = false,
|
||||
@@ -248,10 +241,10 @@ namespace MareSynchronosServer.Hubs
|
||||
public async Task SendPairedClientPauseChange(string uid, bool isPaused)
|
||||
{
|
||||
if (uid == AuthenticatedUserId) return;
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " changed pause status with " + uid + " to " + isPaused);
|
||||
var user = DbContext.Users.Single(u => u.UID == AuthenticatedUserId);
|
||||
var otherUser = await DbContext.Users.SingleOrDefaultAsync(u => u.UID == uid);
|
||||
if (otherUser == null) return;
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " changed pause status with " + uid + " to " + isPaused);
|
||||
ClientPair wl =
|
||||
await DbContext.ClientPairs.SingleOrDefaultAsync(w => w.User == user && w.OtherUser == otherUser);
|
||||
wl.IsPaused = isPaused;
|
||||
@@ -285,17 +278,17 @@ namespace MareSynchronosServer.Hubs
|
||||
{
|
||||
if (uid == AuthenticatedUserId) return;
|
||||
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " removed " + uid + " from whitelist");
|
||||
var user = await DbContext.Users.SingleAsync(u => u.UID == AuthenticatedUserId);
|
||||
var sender = await DbContext.Users.SingleAsync(u => u.UID == AuthenticatedUserId);
|
||||
var otherUser = await DbContext.Users.SingleOrDefaultAsync(u => u.UID == uid);
|
||||
if (otherUser == null) return;
|
||||
Logger.LogInformation("User " + AuthenticatedUserId + " removed " + uid + " from whitelist");
|
||||
ClientPair wl =
|
||||
await DbContext.ClientPairs.SingleOrDefaultAsync(w => w.User == user && w.OtherUser == otherUser);
|
||||
await DbContext.ClientPairs.SingleOrDefaultAsync(w => w.User == sender && w.OtherUser == otherUser);
|
||||
if (wl == null) return;
|
||||
DbContext.ClientPairs.Remove(wl);
|
||||
await DbContext.SaveChangesAsync();
|
||||
var otherEntry = OppositeEntry(uid);
|
||||
await Clients.User(user.UID)
|
||||
await Clients.User(sender.UID)
|
||||
.SendAsync(UserHubAPI.OnUpdateClientPairs, new ClientPairDto()
|
||||
{
|
||||
OtherUID = otherUser.UID,
|
||||
@@ -305,18 +298,18 @@ namespace MareSynchronosServer.Hubs
|
||||
{
|
||||
if (!string.IsNullOrEmpty(otherUser.CharacterIdentification))
|
||||
{
|
||||
await Clients.User(user.UID)
|
||||
await Clients.User(sender.UID)
|
||||
.SendAsync(UserHubAPI.OnRemoveOnlinePairedPlayer, otherUser.CharacterIdentification);
|
||||
await Clients.User(otherUser.UID)
|
||||
.SendAsync(UserHubAPI.OnRemoveOnlinePairedPlayer, user.CharacterIdentification);
|
||||
}
|
||||
await Clients.User(uid).SendAsync(UserHubAPI.OnUpdateClientPairs, new ClientPairDto()
|
||||
.SendAsync(UserHubAPI.OnRemoveOnlinePairedPlayer, sender.CharacterIdentification);
|
||||
await Clients.User(otherUser.UID).SendAsync(UserHubAPI.OnUpdateClientPairs, new ClientPairDto()
|
||||
{
|
||||
OtherUID = user.UID,
|
||||
OtherUID = sender.UID,
|
||||
IsPaused = otherEntry.IsPaused,
|
||||
IsPausedFromOthers = false,
|
||||
IsSynced = false
|
||||
}, user.CharacterIdentification);
|
||||
}, sender.CharacterIdentification);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
166
MareSynchronosServer/MareSynchronosServer/Migrations/20220704113233_RemoveCharacterData.Designer.cs
generated
Normal file
166
MareSynchronosServer/MareSynchronosServer/Migrations/20220704113233_RemoveCharacterData.Designer.cs
generated
Normal file
@@ -0,0 +1,166 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using MareSynchronosServer.Data;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace MareSynchronosServer.Migrations
|
||||
{
|
||||
[DbContext(typeof(MareDbContext))]
|
||||
[Migration("20220704113233_RemoveCharacterData")]
|
||||
partial class RemoveCharacterData
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "6.0.6")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128);
|
||||
|
||||
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.Banned", b =>
|
||||
{
|
||||
b.Property<string>("CharacterIdentification")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.Property<string>("Reason")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("CharacterIdentification");
|
||||
|
||||
b.ToTable("BannedUsers", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.ClientPair", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int");
|
||||
|
||||
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"), 1L, 1);
|
||||
|
||||
b.Property<bool>("AllowReceivingMessages")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<bool>("IsPaused")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("OtherUserUID")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.Property<byte[]>("Timestamp")
|
||||
.IsConcurrencyToken()
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("rowversion");
|
||||
|
||||
b.Property<string>("UserUID")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("OtherUserUID");
|
||||
|
||||
b.HasIndex("UserUID");
|
||||
|
||||
b.ToTable("ClientPairs", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.FileCache", b =>
|
||||
{
|
||||
b.Property<string>("Hash")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.Property<DateTime>("LastAccessTime")
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<byte[]>("Timestamp")
|
||||
.IsConcurrencyToken()
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("rowversion");
|
||||
|
||||
b.Property<bool>("Uploaded")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("UploaderUID")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.HasKey("Hash");
|
||||
|
||||
b.HasIndex("UploaderUID");
|
||||
|
||||
b.ToTable("FileCaches", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.ForbiddenUploadEntry", b =>
|
||||
{
|
||||
b.Property<string>("Hash")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.Property<string>("ForbiddenBy")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("Hash");
|
||||
|
||||
b.ToTable("ForbiddenUploadEntries", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.User", b =>
|
||||
{
|
||||
b.Property<string>("UID")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.Property<string>("CharacterIdentification")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<bool>("IsAdmin")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<bool>("IsModerator")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("SecretKey")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<byte[]>("Timestamp")
|
||||
.IsConcurrencyToken()
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("rowversion");
|
||||
|
||||
b.HasKey("UID");
|
||||
|
||||
b.ToTable("Users", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.ClientPair", b =>
|
||||
{
|
||||
b.HasOne("MareSynchronosServer.Models.User", "OtherUser")
|
||||
.WithMany()
|
||||
.HasForeignKey("OtherUserUID");
|
||||
|
||||
b.HasOne("MareSynchronosServer.Models.User", "User")
|
||||
.WithMany()
|
||||
.HasForeignKey("UserUID");
|
||||
|
||||
b.Navigation("OtherUser");
|
||||
|
||||
b.Navigation("User");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.FileCache", b =>
|
||||
{
|
||||
b.HasOne("MareSynchronosServer.Models.User", "Uploader")
|
||||
.WithMany()
|
||||
.HasForeignKey("UploaderUID");
|
||||
|
||||
b.Navigation("Uploader");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace MareSynchronosServer.Migrations
|
||||
{
|
||||
public partial class RemoveCharacterData : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "CharacterData");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "CharacterData",
|
||||
columns: table => new
|
||||
{
|
||||
UserId = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
||||
JobId = table.Column<int>(type: "int", nullable: false),
|
||||
CharacterCache = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||
Hash = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_CharacterData", x => new { x.UserId, x.JobId });
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -35,25 +35,6 @@ namespace MareSynchronosServer.Migrations
|
||||
b.ToTable("BannedUsers", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.CharacterData", b =>
|
||||
{
|
||||
b.Property<string>("UserId")
|
||||
.HasColumnType("nvarchar(450)");
|
||||
|
||||
b.Property<int>("JobId")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<string>("CharacterCache")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<string>("Hash")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.HasKey("UserId", "JobId");
|
||||
|
||||
b.ToTable("CharacterData", (string)null);
|
||||
});
|
||||
|
||||
modelBuilder.Entity("MareSynchronosServer.Models.ClientPair", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using MareSynchronos.API;
|
||||
|
||||
namespace MareSynchronosServer.Models
|
||||
{
|
||||
public class CharacterData
|
||||
{
|
||||
public string UserId { get; set; }
|
||||
public int JobId { get; set; }
|
||||
public CharacterCacheDto CharacterCache { get; set; }
|
||||
public string Hash { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,6 @@ namespace MareSynchronosServer
|
||||
{
|
||||
user.CharacterIdentification = string.Empty;
|
||||
}
|
||||
context.CharacterData.RemoveRange(context.CharacterData);
|
||||
var looseFiles = context.Files.Where(f => f.Uploaded == false);
|
||||
context.RemoveRange(looseFiles);
|
||||
context.SaveChanges();
|
||||
|
||||
Reference in New Issue
Block a user