diff --git a/Content.Server.Database/Content.Server.Database.csproj b/Content.Server.Database/Content.Server.Database.csproj index 46105a759b..c1baa7c03b 100644 --- a/Content.Server.Database/Content.Server.Database.csproj +++ b/Content.Server.Database/Content.Server.Database.csproj @@ -24,6 +24,11 @@ - + + + + + + diff --git a/Content.Server.Database/Migrations/Postgres/20220127174744_ServerBanHit.Designer.cs b/Content.Server.Database/Migrations/Postgres/20220127174744_ServerBanHit.Designer.cs deleted file mode 100644 index 01f318b770..0000000000 --- a/Content.Server.Database/Migrations/Postgres/20220127174744_ServerBanHit.Designer.cs +++ /dev/null @@ -1,931 +0,0 @@ -// -using System; -using System.Net; -using System.Text.Json; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - [DbContext(typeof(PostgresServerDbContext))] - [Migration("20220127174744_ServerBanHit")] - partial class ServerBanHit - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("ProductVersion", "6.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 63); - - NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("text") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminId") - .HasColumnType("uuid") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("boolean") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.Property("Date") - .HasColumnType("timestamp with time zone") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("smallint") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("text") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("integer") - .HasColumnName("type"); - - b.HasKey("Id", "RoundId") - .HasName("PK_admin_log"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_log_round_id"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.Property("Uid") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("uid"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Uid")); - - b.Property("AdminLogId") - .HasColumnType("integer") - .HasColumnName("admin_log_id"); - - b.Property("AdminLogRoundId") - .HasColumnType("integer") - .HasColumnName("admin_log_round_id"); - - b.Property("Name") - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Uid") - .HasName("PK_admin_log_entity"); - - b.HasIndex("AdminLogId", "AdminLogRoundId") - .HasDatabaseName("IX_admin_log_entity_admin_log_id_admin_log_round_id"); - - b.ToTable("admin_log_entity", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("PlayerUserId") - .HasColumnType("uuid") - .HasColumnName("player_user_id"); - - b.Property("LogId") - .HasColumnType("integer") - .HasColumnName("log_id"); - - b.Property("RoundId") - .HasColumnType("integer") - .HasColumnName("round_id"); - - b.HasKey("PlayerUserId", "LogId", "RoundId") - .HasName("PK_admin_log_player"); - - b.HasIndex("LogId", "RoundId"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Name") - .IsRequired() - .HasColumnType("text") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("admin_rank_flag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminRankId") - .HasColumnType("integer") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("text") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_rank_flag_admin_rank_id"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("antag_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("assigned_user_id_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("connection_log_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Address") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("smallint") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Time") - .HasColumnType("timestamp with time zone") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", (string)null); - - b.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("job_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("JobName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("integer") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("integer") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId") - .HasDatabaseName("IX_job_profile_id"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("player_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("FirstSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("first_seen_time"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("inet") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("bytea") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", (string)null); - - b.HasCheckConstraint("LastSeenAddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= last_seen_address"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("preference_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("integer") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("profile_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("Age") - .HasColumnType("integer") - .HasColumnName("age"); - - b.Property("Backpack") - .IsRequired() - .HasColumnType("text") - .HasColumnName("backpack"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("char_name"); - - b.Property("Clothing") - .IsRequired() - .HasColumnType("text") - .HasColumnName("clothing"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("facial_hair_name"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("text") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("text") - .HasColumnName("hair_name"); - - b.Property("PreferenceId") - .HasColumnType("integer") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("integer") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("text") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("text") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("integer") - .HasColumnName("slot"); - - b.Property("Species") - .IsRequired() - .HasColumnType("text") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("round_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.HasKey("Id") - .HasName("PK_round"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property?>("Address") - .HasColumnType("inet") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("uuid") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("bytea") - .HasColumnName("hwid"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("text") - .HasColumnName("reason"); - - b.Property("UserId") - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("UserId"); - - b.ToTable("server_ban", (string)null); - - b.HasCheckConstraint("AddressNotIPv6MappedIPv4", "NOT inet '::ffff:0.0.0.0/96' >>= address"); - - b.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_hit_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("integer") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("unban_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("timestamp with time zone") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("uuid") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("uuid") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("integer") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("integer") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.HasOne("Content.Server.Database.AdminLog", null) - .WithMany("Entities") - .HasForeignKey("AdminLogId", "AdminLogRoundId") - .HasConstraintName("FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("LogId", "RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Entities"); - - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/20220127174744_ServerBanHit.cs b/Content.Server.Database/Migrations/Postgres/20220127174744_ServerBanHit.cs deleted file mode 100644 index 3017ec1895..0000000000 --- a/Content.Server.Database/Migrations/Postgres/20220127174744_ServerBanHit.cs +++ /dev/null @@ -1,25 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Postgres -{ - public partial class ServerBanHit : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "denied", - table: "connection_log", - type: "smallint", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "denied", - table: "connection_log"); - } - } -} diff --git a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs index bbf047634d..c93d7cf518 100644 --- a/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Postgres/PostgresServerDbContextModelSnapshot.cs @@ -302,10 +302,6 @@ namespace Content.Server.Database.Migrations.Postgres .HasColumnType("inet") .HasColumnName("address"); - b.Property("Denied") - .HasColumnType("smallint") - .HasColumnName("denied"); - b.Property("HWId") .HasColumnType("bytea") .HasColumnName("hwid"); @@ -617,35 +613,6 @@ namespace Content.Server.Database.Migrations.Postgres b.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL"); }); - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasColumnName("server_ban_hit_id"); - - NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property("Id")); - - b.Property("BanId") - .HasColumnType("integer") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("integer") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => { b.Property("Id") @@ -821,27 +788,6 @@ namespace Content.Server.Database.Migrations.Postgres b.Navigation("Preference"); }); - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => { b.HasOne("Content.Server.Database.ServerBan", "Ban") @@ -890,11 +836,6 @@ namespace Content.Server.Database.Migrations.Postgres b.Navigation("Flags"); }); - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - modelBuilder.Entity("Content.Server.Database.Player", b => { b.Navigation("AdminLogs"); @@ -919,8 +860,6 @@ namespace Content.Server.Database.Migrations.Postgres modelBuilder.Entity("Content.Server.Database.ServerBan", b => { - b.Navigation("BanHits"); - b.Navigation("Unban"); }); #pragma warning restore 612, 618 diff --git a/Content.Server.Database/Migrations/Sqlite/20220127174737_ServerBanHit.Designer.cs b/Content.Server.Database/Migrations/Sqlite/20220127174737_ServerBanHit.Designer.cs deleted file mode 100644 index 1b4a585874..0000000000 --- a/Content.Server.Database/Migrations/Sqlite/20220127174737_ServerBanHit.Designer.cs +++ /dev/null @@ -1,886 +0,0 @@ -// -using System; -using Content.Server.Database; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - [DbContext(typeof(SqliteServerDbContext))] - [Migration("20220127174737_ServerBanHit")] - partial class ServerBanHit - { - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder.HasAnnotation("ProductVersion", "6.0.0"); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Title") - .HasColumnType("TEXT") - .HasColumnName("title"); - - b.HasKey("UserId") - .HasName("PK_admin"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_admin_rank_id"); - - b.ToTable("admin", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_flag_id"); - - b.Property("AdminId") - .HasColumnType("TEXT") - .HasColumnName("admin_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.Property("Negative") - .HasColumnType("INTEGER") - .HasColumnName("negative"); - - b.HasKey("Id") - .HasName("PK_admin_flag"); - - b.HasIndex("AdminId") - .HasDatabaseName("IX_admin_flag_admin_id"); - - b.HasIndex("Flag", "AdminId") - .IsUnique(); - - b.ToTable("admin_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_log_id"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.Property("Date") - .HasColumnType("TEXT") - .HasColumnName("date"); - - b.Property("Impact") - .HasColumnType("INTEGER") - .HasColumnName("impact"); - - b.Property("Json") - .IsRequired() - .HasColumnType("jsonb") - .HasColumnName("json"); - - b.Property("Message") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("message"); - - b.Property("Type") - .HasColumnType("INTEGER") - .HasColumnName("type"); - - b.HasKey("Id", "RoundId") - .HasName("PK_admin_log"); - - b.HasIndex("RoundId") - .HasDatabaseName("IX_admin_log_round_id"); - - b.HasIndex("Type") - .HasDatabaseName("IX_admin_log_type"); - - b.ToTable("admin_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.Property("Uid") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("uid"); - - b.Property("AdminLogId") - .HasColumnType("INTEGER") - .HasColumnName("admin_log_id"); - - b.Property("AdminLogRoundId") - .HasColumnType("INTEGER") - .HasColumnName("admin_log_round_id"); - - b.Property("Name") - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Uid") - .HasName("PK_admin_log_entity"); - - b.HasIndex("AdminLogId", "AdminLogRoundId") - .HasDatabaseName("IX_admin_log_entity_admin_log_id_admin_log_round_id"); - - b.ToTable("admin_log_entity", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.Property("PlayerUserId") - .HasColumnType("TEXT") - .HasColumnName("player_user_id"); - - b.Property("LogId") - .HasColumnType("INTEGER") - .HasColumnName("log_id"); - - b.Property("RoundId") - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.HasKey("PlayerUserId", "LogId", "RoundId") - .HasName("PK_admin_log_player"); - - b.HasIndex("LogId", "RoundId"); - - b.ToTable("admin_log_player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Name") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("name"); - - b.HasKey("Id") - .HasName("PK_admin_rank"); - - b.ToTable("admin_rank", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_flag_id"); - - b.Property("AdminRankId") - .HasColumnType("INTEGER") - .HasColumnName("admin_rank_id"); - - b.Property("Flag") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("flag"); - - b.HasKey("Id") - .HasName("PK_admin_rank_flag"); - - b.HasIndex("AdminRankId") - .HasDatabaseName("IX_admin_rank_flag_admin_rank_id"); - - b.HasIndex("Flag", "AdminRankId") - .IsUnique(); - - b.ToTable("admin_rank_flag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("antag_id"); - - b.Property("AntagName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("antag_name"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_antag"); - - b.HasIndex("ProfileId", "AntagName") - .IsUnique(); - - b.ToTable("antag", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.AssignedUserId", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("assigned_user_id_id"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_assigned_user_id"); - - b.HasIndex("UserId") - .IsUnique(); - - b.HasIndex("UserName") - .IsUnique(); - - b.ToTable("assigned_user_id", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("connection_log_id"); - - b.Property("Address") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("Denied") - .HasColumnType("INTEGER") - .HasColumnName("denied"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Time") - .HasColumnType("TEXT") - .HasColumnName("time"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.Property("UserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("user_name"); - - b.HasKey("Id") - .HasName("PK_connection_log"); - - b.HasIndex("UserId"); - - b.ToTable("connection_log", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("job_id"); - - b.Property("JobName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("job_name"); - - b.Property("Priority") - .HasColumnType("INTEGER") - .HasColumnName("priority"); - - b.Property("ProfileId") - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.HasKey("Id") - .HasName("PK_job"); - - b.HasIndex("ProfileId") - .HasDatabaseName("IX_job_profile_id"); - - b.HasIndex("ProfileId", "JobName") - .IsUnique(); - - b.HasIndex(new[] { "ProfileId" }, "IX_job_one_high_priority") - .IsUnique() - .HasFilter("priority = 3"); - - b.ToTable("job", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("player_id"); - - b.Property("FirstSeenTime") - .HasColumnType("TEXT") - .HasColumnName("first_seen_time"); - - b.Property("LastSeenAddress") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_address"); - - b.Property("LastSeenHWId") - .HasColumnType("BLOB") - .HasColumnName("last_seen_hwid"); - - b.Property("LastSeenTime") - .HasColumnType("TEXT") - .HasColumnName("last_seen_time"); - - b.Property("LastSeenUserName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("last_seen_user_name"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_player"); - - b.HasAlternateKey("UserId") - .HasName("ak_player_user_id"); - - b.HasIndex("LastSeenUserName"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("player", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("AdminOOCColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("admin_ooc_color"); - - b.Property("SelectedCharacterSlot") - .HasColumnType("INTEGER") - .HasColumnName("selected_character_slot"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_preference"); - - b.HasIndex("UserId") - .IsUnique(); - - b.ToTable("preference", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("profile_id"); - - b.Property("Age") - .HasColumnType("INTEGER") - .HasColumnName("age"); - - b.Property("Backpack") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("backpack"); - - b.Property("CharacterName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("char_name"); - - b.Property("Clothing") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("clothing"); - - b.Property("EyeColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("eye_color"); - - b.Property("FacialHairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_color"); - - b.Property("FacialHairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("facial_hair_name"); - - b.Property("Gender") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("gender"); - - b.Property("HairColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_color"); - - b.Property("HairName") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("hair_name"); - - b.Property("PreferenceId") - .HasColumnType("INTEGER") - .HasColumnName("preference_id"); - - b.Property("PreferenceUnavailable") - .HasColumnType("INTEGER") - .HasColumnName("pref_unavailable"); - - b.Property("Sex") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("sex"); - - b.Property("SkinColor") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("skin_color"); - - b.Property("Slot") - .HasColumnType("INTEGER") - .HasColumnName("slot"); - - b.Property("Species") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("species"); - - b.HasKey("Id") - .HasName("PK_profile"); - - b.HasIndex("PreferenceId") - .HasDatabaseName("IX_profile_preference_id"); - - b.HasIndex("Slot", "PreferenceId") - .IsUnique(); - - b.ToTable("profile", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("round_id"); - - b.HasKey("Id") - .HasName("PK_round"); - - b.ToTable("round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_id"); - - b.Property("Address") - .HasColumnType("TEXT") - .HasColumnName("address"); - - b.Property("BanTime") - .HasColumnType("TEXT") - .HasColumnName("ban_time"); - - b.Property("BanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("banning_admin"); - - b.Property("ExpirationTime") - .HasColumnType("TEXT") - .HasColumnName("expiration_time"); - - b.Property("HWId") - .HasColumnType("BLOB") - .HasColumnName("hwid"); - - b.Property("Reason") - .IsRequired() - .HasColumnType("TEXT") - .HasColumnName("reason"); - - b.Property("UserId") - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("Id") - .HasName("PK_server_ban"); - - b.HasIndex("Address"); - - b.HasIndex("UserId"); - - b.ToTable("server_ban", (string)null); - - b.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_hit_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("INTEGER") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("unban_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("UnbanTime") - .HasColumnType("TEXT") - .HasColumnName("unban_time"); - - b.Property("UnbanningAdmin") - .HasColumnType("TEXT") - .HasColumnName("unbanning_admin"); - - b.HasKey("Id") - .HasName("PK_server_unban"); - - b.HasIndex("BanId") - .IsUnique(); - - b.ToTable("server_unban", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Whitelist", b => - { - b.Property("UserId") - .ValueGeneratedOnAdd() - .HasColumnType("TEXT") - .HasColumnName("user_id"); - - b.HasKey("UserId") - .HasName("PK_whitelist"); - - b.ToTable("whitelist", (string)null); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.Property("PlayersId") - .HasColumnType("INTEGER") - .HasColumnName("players_id"); - - b.Property("RoundsId") - .HasColumnType("INTEGER") - .HasColumnName("rounds_id"); - - b.HasKey("PlayersId", "RoundsId") - .HasName("PK_player_round"); - - b.HasIndex("RoundsId") - .HasDatabaseName("IX_player_round_rounds_id"); - - b.ToTable("player_round", (string)null); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.HasOne("Content.Server.Database.AdminRank", "AdminRank") - .WithMany("Admins") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.SetNull) - .HasConstraintName("FK_admin_admin_rank_admin_rank_id"); - - b.Navigation("AdminRank"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminFlag", b => - { - b.HasOne("Content.Server.Database.Admin", "Admin") - .WithMany("Flags") - .HasForeignKey("AdminId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_flag_admin_admin_id"); - - b.Navigation("Admin"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.HasOne("Content.Server.Database.Round", "Round") - .WithMany("AdminLogs") - .HasForeignKey("RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_round_round_id"); - - b.Navigation("Round"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogEntity", b => - { - b.HasOne("Content.Server.Database.AdminLog", null) - .WithMany("Entities") - .HasForeignKey("AdminLogId", "AdminLogRoundId") - .HasConstraintName("FK_admin_log_entity_admin_log_admin_log_id_admin_log_round_id"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLogPlayer", b => - { - b.HasOne("Content.Server.Database.Player", "Player") - .WithMany("AdminLogs") - .HasForeignKey("PlayerUserId") - .HasPrincipalKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_player_player_user_id"); - - b.HasOne("Content.Server.Database.AdminLog", "Log") - .WithMany("Players") - .HasForeignKey("LogId", "RoundId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_log_player_admin_log_log_id_round_id"); - - b.Navigation("Log"); - - b.Navigation("Player"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRankFlag", b => - { - b.HasOne("Content.Server.Database.AdminRank", "Rank") - .WithMany("Flags") - .HasForeignKey("AdminRankId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_admin_rank_flag_admin_rank_admin_rank_id"); - - b.Navigation("Rank"); - }); - - modelBuilder.Entity("Content.Server.Database.Antag", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Antags") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_antag_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Job", b => - { - b.HasOne("Content.Server.Database.Profile", "Profile") - .WithMany("Jobs") - .HasForeignKey("ProfileId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_job_profile_profile_id"); - - b.Navigation("Profile"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.HasOne("Content.Server.Database.Preference", "Preference") - .WithMany("Profiles") - .HasForeignKey("PreferenceId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_profile_preference_preference_id"); - - b.Navigation("Preference"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithOne("Unban") - .HasForeignKey("Content.Server.Database.ServerUnban", "BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_unban_server_ban_ban_id"); - - b.Navigation("Ban"); - }); - - modelBuilder.Entity("PlayerRound", b => - { - b.HasOne("Content.Server.Database.Player", null) - .WithMany() - .HasForeignKey("PlayersId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_player_players_id"); - - b.HasOne("Content.Server.Database.Round", null) - .WithMany() - .HasForeignKey("RoundsId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_player_round_round_rounds_id"); - }); - - modelBuilder.Entity("Content.Server.Database.Admin", b => - { - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminLog", b => - { - b.Navigation("Entities"); - - b.Navigation("Players"); - }); - - modelBuilder.Entity("Content.Server.Database.AdminRank", b => - { - b.Navigation("Admins"); - - b.Navigation("Flags"); - }); - - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - - modelBuilder.Entity("Content.Server.Database.Player", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.Preference", b => - { - b.Navigation("Profiles"); - }); - - modelBuilder.Entity("Content.Server.Database.Profile", b => - { - b.Navigation("Antags"); - - b.Navigation("Jobs"); - }); - - modelBuilder.Entity("Content.Server.Database.Round", b => - { - b.Navigation("AdminLogs"); - }); - - modelBuilder.Entity("Content.Server.Database.ServerBan", b => - { - b.Navigation("BanHits"); - - b.Navigation("Unban"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/20220127174737_ServerBanHit.cs b/Content.Server.Database/Migrations/Sqlite/20220127174737_ServerBanHit.cs deleted file mode 100644 index 3c7ad8e75c..0000000000 --- a/Content.Server.Database/Migrations/Sqlite/20220127174737_ServerBanHit.cs +++ /dev/null @@ -1,64 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace Content.Server.Database.Migrations.Sqlite -{ - public partial class ServerBanHit : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "denied", - table: "connection_log", - type: "INTEGER", - nullable: true); - - migrationBuilder.CreateTable( - name: "server_ban_hit", - columns: table => new - { - server_ban_hit_id = table.Column(type: "INTEGER", nullable: false) - .Annotation("Sqlite:Autoincrement", true), - ban_id = table.Column(type: "INTEGER", nullable: false), - connection_id = table.Column(type: "INTEGER", nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_server_ban_hit", x => x.server_ban_hit_id); - table.ForeignKey( - name: "FK_server_ban_hit_connection_log_connection_id", - column: x => x.connection_id, - principalTable: "connection_log", - principalColumn: "connection_log_id", - onDelete: ReferentialAction.Cascade); - table.ForeignKey( - name: "FK_server_ban_hit_server_ban_ban_id", - column: x => x.ban_id, - principalTable: "server_ban", - principalColumn: "server_ban_id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_server_ban_hit_ban_id", - table: "server_ban_hit", - column: "ban_id"); - - migrationBuilder.CreateIndex( - name: "IX_server_ban_hit_connection_id", - table: "server_ban_hit", - column: "connection_id"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "server_ban_hit"); - - migrationBuilder.DropColumn( - name: "denied", - table: "connection_log"); - } - } -} diff --git a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs index 89a8eebbdd..633132003f 100644 --- a/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs +++ b/Content.Server.Database/Migrations/Sqlite/SqliteServerDbContextModelSnapshot.cs @@ -279,10 +279,6 @@ namespace Content.Server.Database.Migrations.Sqlite .HasColumnType("TEXT") .HasColumnName("address"); - b.Property("Denied") - .HasColumnType("INTEGER") - .HasColumnName("denied"); - b.Property("HWId") .HasColumnType("BLOB") .HasColumnName("hwid"); @@ -576,33 +572,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.HasCheckConstraint("HaveEitherAddressOrUserIdOrHWId", "address IS NOT NULL OR user_id IS NOT NULL OR hwid IS NOT NULL"); }); - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("INTEGER") - .HasColumnName("server_ban_hit_id"); - - b.Property("BanId") - .HasColumnType("INTEGER") - .HasColumnName("ban_id"); - - b.Property("ConnectionId") - .HasColumnType("INTEGER") - .HasColumnName("connection_id"); - - b.HasKey("Id") - .HasName("PK_server_ban_hit"); - - b.HasIndex("BanId") - .HasDatabaseName("IX_server_ban_hit_ban_id"); - - b.HasIndex("ConnectionId") - .HasDatabaseName("IX_server_ban_hit_connection_id"); - - b.ToTable("server_ban_hit", (string)null); - }); - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => { b.Property("Id") @@ -776,27 +745,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Preference"); }); - modelBuilder.Entity("Content.Server.Database.ServerBanHit", b => - { - b.HasOne("Content.Server.Database.ServerBan", "Ban") - .WithMany("BanHits") - .HasForeignKey("BanId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_server_ban_ban_id"); - - b.HasOne("Content.Server.Database.ConnectionLog", "Connection") - .WithMany("BanHits") - .HasForeignKey("ConnectionId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired() - .HasConstraintName("FK_server_ban_hit_connection_log_connection_id"); - - b.Navigation("Ban"); - - b.Navigation("Connection"); - }); - modelBuilder.Entity("Content.Server.Database.ServerUnban", b => { b.HasOne("Content.Server.Database.ServerBan", "Ban") @@ -845,11 +793,6 @@ namespace Content.Server.Database.Migrations.Sqlite b.Navigation("Flags"); }); - modelBuilder.Entity("Content.Server.Database.ConnectionLog", b => - { - b.Navigation("BanHits"); - }); - modelBuilder.Entity("Content.Server.Database.Player", b => { b.Navigation("AdminLogs"); @@ -874,8 +817,6 @@ namespace Content.Server.Database.Migrations.Sqlite modelBuilder.Entity("Content.Server.Database.ServerBan", b => { - b.Navigation("BanHits"); - b.Navigation("Unban"); }); #pragma warning restore 612, 618 diff --git a/Content.Server.Database/Model.cs b/Content.Server.Database/Model.cs index 3bafd18d7a..7fa7db030a 100644 --- a/Content.Server.Database/Model.cs +++ b/Content.Server.Database/Model.cs @@ -40,7 +40,6 @@ namespace Content.Server.Database public DbSet Ban { get; set; } = default!; public DbSet Unban { get; set; } = default!; public DbSet ConnectionLog { get; set; } = default!; - public DbSet ServerBanHit { get; set; } = default!; protected override void OnModelCreating(ModelBuilder modelBuilder) { @@ -347,8 +346,6 @@ namespace Content.Server.Database public Guid? BanningAdmin { get; set; } public ServerUnban? Unban { get; set; } - - public List BanHits { get; set; } = null!; } [Table("server_unban")] @@ -376,27 +373,5 @@ namespace Content.Server.Database public IPAddress Address { get; set; } = null!; public byte[]? HWId { get; set; } - - public ConnectionDenyReason? Denied { get; set; } - - public List BanHits { get; set; } = null!; - } - - public enum ConnectionDenyReason : byte - { - Ban = 0, - Whitelist = 1, - Full = 2, - } - - public class ServerBanHit - { - public int Id { get; set; } - - public int BanId { get; set; } - public int ConnectionId { get; set; } - - public ServerBan Ban { get; set; } = null!; - public ConnectionLog Connection { get; set; } = null!; } } diff --git a/Content.Server/Connection/ConnectionManager.cs b/Content.Server/Connection/ConnectionManager.cs index 761bd5b391..6222299d9b 100644 --- a/Content.Server/Connection/ConnectionManager.cs +++ b/Content.Server/Connection/ConnectionManager.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using System.Collections.Immutable; using System.Threading.Tasks; using Content.Server.Database; @@ -64,35 +63,6 @@ The ban reason is: ""{ban.Reason}"" */ private async Task NetMgrOnConnecting(NetConnectingArgs e) - { - var deny = await ShouldDeny(e); - - var addr = e.IP.Address; - var userId = e.UserId; - - if (deny != null) - { - var (reason, msg, banHits) = deny.Value; - - var id = await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, reason); - if (banHits is { Count: > 0 }) - await _db.AddServerBanHitsAsync(id, banHits); - - e.Deny(msg); - } - else - { - await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId, null); - - if (!ServerPreferencesManager.ShouldStorePrefs(e.AuthType)) - return; - - await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, e.UserData.HWId); - } - } - - private async Task<(ConnectionDenyReason, string, List? bansHit)?> ShouldDeny( - NetConnectingArgs e) { // Check if banned. var addr = e.IP.Address; @@ -107,26 +77,34 @@ The ban reason is: ""{ban.Reason}"" var adminData = await _dbManager.GetAdminDataForAsync(e.UserId); var wasInGame = EntitySystem.TryGet(out var ticker) && ticker.PlayersInGame.Contains(userId); - if ((_plyMgr.PlayerCount >= _cfg.GetCVar(CCVars.SoftMaxPlayers) && adminData is null) && !wasInGame) + if ((_plyMgr.PlayerCount >= _cfg.GetCVar(CCVars.SoftMaxPlayers) && adminData is null) && !wasInGame ) { - return (ConnectionDenyReason.Full, Loc.GetString("soft-player-cap-full"), null); + e.Deny(Loc.GetString("soft-player-cap-full")); + return; } - var bans = await _db.GetServerBansAsync(addr, userId, hwId); - if (bans.Count > 0) + var ban = await _db.GetServerBanAsync(addr, userId, hwId); + if (ban != null) { - var firstBan = bans[0]; - return (ConnectionDenyReason.Ban, firstBan.DisconnectMessage, bans); + e.Deny(ban.DisconnectMessage); + return; } if (_cfg.GetCVar(CCVars.WhitelistEnabled) && await _db.GetWhitelistStatusAsync(userId) == false && adminData is null) { - return (ConnectionDenyReason.Whitelist, Loc.GetString("whitelist-not-whitelisted"), null); + e.Deny(Loc.GetString("whitelist-not-whitelisted")); + return; } - return null; + if (!ServerPreferencesManager.ShouldStorePrefs(e.AuthType)) + { + return; + } + + await _db.UpdatePlayerRecordAsync(userId, e.UserName, addr, e.UserData.HWId); + await _db.AddConnectionLogAsync(userId, e.UserName, addr, e.UserData.HWId); } private async Task AssignUserIdCallback(string name) diff --git a/Content.Server/Database/ServerDbBase.cs b/Content.Server/Database/ServerDbBase.cs index 9e9ae652b0..9dcfb05add 100644 --- a/Content.Server/Database/ServerDbBase.cs +++ b/Content.Server/Database/ServerDbBase.cs @@ -365,28 +365,11 @@ namespace Content.Server.Database /* * CONNECTION LOG */ - public abstract Task AddConnectionLogAsync( + public abstract Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, - ConnectionDenyReason? denied); - - public async Task AddServerBanHitsAsync(int connection, IEnumerable bans) - { - await using var db = await GetDb(); - - foreach (var ban in bans) - { - db.DbContext.ServerBanHit.Add(new ServerBanHit - { - ConnectionId = connection, BanId = ban.Id!.Value - }); - } - - await db.DbContext.SaveChangesAsync(); - } - + ImmutableArray hwId); #endregion #region Admin Ranks diff --git a/Content.Server/Database/ServerDbManager.cs b/Content.Server/Database/ServerDbManager.cs index 846022b925..72f8b3b364 100644 --- a/Content.Server/Database/ServerDbManager.cs +++ b/Content.Server/Database/ServerDbManager.cs @@ -100,16 +100,11 @@ namespace Content.Server.Database #endregion #region Connection Logs - /// ID of newly inserted connection log row. - Task AddConnectionLogAsync( + Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, - ConnectionDenyReason? denied); - - Task AddServerBanHitsAsync(int connection, IEnumerable bans); - + ImmutableArray hwId); #endregion #region Admin Ranks @@ -281,19 +276,13 @@ namespace Content.Server.Database return _db.GetPlayerRecordByUserId(userId, cancel); } - public Task AddConnectionLogAsync( + public Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, - ConnectionDenyReason? denied) + ImmutableArray hwId) { - return _db.AddConnectionLogAsync(userId, userName, address, hwId, denied); - } - - public Task AddServerBanHitsAsync(int connection, IEnumerable bans) - { - return _db.AddServerBanHitsAsync(connection, bans); + return _db.AddConnectionLogAsync(userId, userName, address, hwId); } public Task GetAdminDataForAsync(NetUserId userId, CancellationToken cancel = default) diff --git a/Content.Server/Database/ServerDbPostgres.cs b/Content.Server/Database/ServerDbPostgres.cs index 9405f90875..90a58b58e7 100644 --- a/Content.Server/Database/ServerDbPostgres.cs +++ b/Content.Server/Database/ServerDbPostgres.cs @@ -232,30 +232,24 @@ namespace Content.Server.Database record.LastSeenHWId?.ToImmutableArray()); } - public override async Task AddConnectionLogAsync( + public override async Task AddConnectionLogAsync( NetUserId userId, string userName, IPAddress address, - ImmutableArray hwId, - ConnectionDenyReason? denied) + ImmutableArray hwId) { await using var db = await GetDbImpl(); - var connectionLog = new ConnectionLog + db.PgDbContext.ConnectionLog.Add(new ConnectionLog { Address = address, Time = DateTime.UtcNow, UserId = userId.UserId, UserName = userName, - HWId = hwId.ToArray(), - Denied = denied, - }; - - db.PgDbContext.ConnectionLog.Add(connectionLog); + HWId = hwId.ToArray() + }); await db.PgDbContext.SaveChangesAsync(); - - return connectionLog.Id; } public override async Task<((Admin, string? lastUserName)[] admins, AdminRank[])> diff --git a/Content.Server/Database/ServerDbSqlite.cs b/Content.Server/Database/ServerDbSqlite.cs index 562067077a..b00a56c411 100644 --- a/Content.Server/Database/ServerDbSqlite.cs +++ b/Content.Server/Database/ServerDbSqlite.cs @@ -215,30 +215,21 @@ namespace Content.Server.Database unban.UnbanTime); } - public override async Task AddConnectionLogAsync( - NetUserId userId, - string userName, - IPAddress address, - ImmutableArray hwId, - ConnectionDenyReason? denied) + public override async Task AddConnectionLogAsync(NetUserId userId, string userName, IPAddress address, + ImmutableArray hwId) { await using var db = await GetDbImpl(); - var connectionLog = new ConnectionLog + db.SqliteDbContext.ConnectionLog.Add(new ConnectionLog { Address = address, Time = DateTime.UtcNow, UserId = userId.UserId, UserName = userName, - HWId = hwId.ToArray(), - Denied = denied - }; - - db.SqliteDbContext.ConnectionLog.Add(connectionLog); + HWId = hwId.ToArray() + }); await db.SqliteDbContext.SaveChangesAsync(); - - return connectionLog.Id; } public override async Task<((Admin, string? lastUserName)[] admins, AdminRank[])> GetAllAdminAndRanksAsync(