2023-09-21 16:01:47 +02:00
|
|
|
|
using Google.Protobuf.Reflection;
|
|
|
|
|
using Microsoft.EntityFrameworkCore;
|
2023-09-09 17:36:19 +02:00
|
|
|
|
using MySql.EntityFrameworkCore.Extensions;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
2023-09-21 16:01:47 +02:00
|
|
|
|
using System.Reflection.Emit;
|
2023-09-09 17:36:19 +02:00
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
|
|
|
|
namespace server.Database.Model
|
|
|
|
|
{
|
|
|
|
|
public class ModelContext : DbContext
|
|
|
|
|
{
|
|
|
|
|
public DbSet<User> Users { get; set; }
|
|
|
|
|
public DbSet<HardwareConfiguration> HardwareConfiguration { get; set; }
|
2023-09-21 16:01:47 +02:00
|
|
|
|
public DbSet<Report> Reports { get; set; }
|
|
|
|
|
public DbSet<ReportTypeIllegalHandleOperation> ReportTypeIllegalHandleOperation { get; set; }
|
|
|
|
|
public DbSet<ReportTypeStartAddress> ReportTypeStartAddress { get; set; }
|
|
|
|
|
public DbSet<ReportTypePageProtection> ReportTypePageProtection { get; set; }
|
|
|
|
|
public DbSet<ReportTypePatternScan> ReportTypePatternScan { get; set; }
|
|
|
|
|
public DbSet<ReportTypeNmiCallback> ReportTypeNmiCallback { get; set; }
|
|
|
|
|
public DbSet<ReportTypeSystemModuleValidation> ReportTypeSystemModuleValidation { get; set; }
|
2023-09-11 19:39:00 +02:00
|
|
|
|
|
2023-09-09 17:36:19 +02:00
|
|
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
|
|
|
{
|
|
|
|
|
optionsBuilder.UseMySQL("server=localhost;userid=root;password=root;database=ac_db");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
|
|
|
|
{
|
|
|
|
|
base.OnModelCreating(modelBuilder);
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<User>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.UserId);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.UserId)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.UserId).Metadata.Name);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.Steam64Id)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.IsBanned)
|
2023-09-10 12:20:35 +02:00
|
|
|
|
.HasDefaultValue(false);
|
2023-09-09 17:36:19 +02:00
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<HardwareConfiguration>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.HardwareId);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.HardwareId)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.HardwareId).Metadata.Name);
|
|
|
|
|
|
2023-09-10 12:20:35 +02:00
|
|
|
|
entity.Property(e => e.IsBanned)
|
2023-09-09 17:36:19 +02:00
|
|
|
|
.HasDefaultValue(false);
|
|
|
|
|
|
2023-09-10 12:20:35 +02:00
|
|
|
|
entity.Property(e => e.MotherboardSerial)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.DeviceDrive0Serial)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.User)
|
|
|
|
|
.WithMany(f => f.HardwareConfigurations);
|
2023-09-09 17:36:19 +02:00
|
|
|
|
});
|
2023-09-11 19:39:00 +02:00
|
|
|
|
|
2023-09-21 16:01:47 +02:00
|
|
|
|
modelBuilder.Entity<Report>(entity =>
|
2023-09-11 19:39:00 +02:00
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.ReportId);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportId)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportId).Metadata.Name);
|
|
|
|
|
|
2023-09-21 16:01:47 +02:00
|
|
|
|
entity.HasOne(d => d.User)
|
|
|
|
|
.WithMany(e => e.Reports);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportCode)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<ReportTypeIllegalHandleOperation>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.ReportNumber);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportNumber)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name);
|
|
|
|
|
|
2023-09-11 19:39:00 +02:00
|
|
|
|
entity.Property(e => e.IsKernelHandle)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ProcessId)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ThreadId)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.DesiredAccess)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ProcessName)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
2023-09-21 16:01:47 +02:00
|
|
|
|
entity.HasOne(d => d.Report)
|
|
|
|
|
.WithMany(f => f.ReportTypeIllegalHandleOperations);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<ReportTypeStartAddress>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.ReportNumber);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportNumber)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ThreadId)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ThreadStartAddress)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Report)
|
|
|
|
|
.WithMany(f => f.ReportTypeStartAddresses);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<ReportTypePageProtection>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.ReportNumber);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportNumber)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.AllocationProtection)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.AllocationState)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.AllocationType)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Report)
|
|
|
|
|
.WithMany(f => f.ReportTypePageProtections);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<ReportTypePatternScan>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.ReportNumber);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportNumber)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.SignatureId)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.Address)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Report)
|
|
|
|
|
.WithMany(f => f.ReportTypePatternScans);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<ReportTypeNmiCallback>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.ReportNumber);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportNumber)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.WereNmisDisabled)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.KThreadAddress)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.InvalidRip)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Report)
|
|
|
|
|
.WithMany(f => f.ReportTypeNmiCallbacks);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
modelBuilder.Entity<ReportTypeSystemModuleValidation>(entity =>
|
|
|
|
|
{
|
|
|
|
|
entity.HasKey(e => e.ReportNumber);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportNumber)
|
|
|
|
|
.UseMySQLAutoIncrementColumn(entity.Property(e => e.ReportNumber).Metadata.Name);
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ReportType)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.DriverBaseAddress)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.DriverSize)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.Property(e => e.ModuleName)
|
|
|
|
|
.IsRequired();
|
|
|
|
|
|
|
|
|
|
entity.HasOne(d => d.Report)
|
|
|
|
|
.WithMany(f => f.ReportTypeSystemModuleValidations);
|
2023-09-11 19:39:00 +02:00
|
|
|
|
});
|
2023-09-09 17:36:19 +02:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|