diff --git a/Application/Application/API/EventAPI.cs b/Application/API/EventAPI.cs
similarity index 100%
rename from Application/Application/API/EventAPI.cs
rename to Application/API/EventAPI.cs
diff --git a/Application/Application.csproj b/Application/Application.csproj
index 4977bdce8..a795dc8d7 100644
--- a/Application/Application.csproj
+++ b/Application/Application.csproj
@@ -18,8 +18,32 @@
-
-
+
+
+
+ PreserveNewest
+ PreserveNewest
+
+
+
+
+
+ true
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebfrontCore/BuildScripts/PostBuild.bat b/Application/BuildScripts/PostBuild.bat
similarity index 52%
rename from WebfrontCore/BuildScripts/PostBuild.bat
rename to Application/BuildScripts/PostBuild.bat
index 749859ba0..33c48a91f 100644
--- a/WebfrontCore/BuildScripts/PostBuild.bat
+++ b/Application/BuildScripts/PostBuild.bat
@@ -1,12 +1,11 @@
set SolutionDir=%1
set ProjectDir=%2
set TargetDir=%3
+set OutDir=%4
-if not exist "%TargetDir%x86" (
- echo "Copying SQLCe binaries"
- md "%TargetDir%x86"
- xcopy /y "%SolutionDir%SharedLibraryCore\LibSQLCe\x86" "%TargetDir%x86\"
-)
+echo "Copying dependency configs"
+copy "%SolutionDir%WebfrontCore\%OutDir%*.deps.json" "%TargetDir%"
+copy "%SolutionDir%SharedLibaryCore\%OutDir%*.deps.json" "%TargetDir%"
if not exist "%TargetDir%Plugins" (
echo "Making plugin dir"
diff --git a/Application/BuildScripts/PostPublish.bat b/Application/BuildScripts/PostPublish.bat
new file mode 100644
index 000000000..c171f9dde
--- /dev/null
+++ b/Application/BuildScripts/PostPublish.bat
@@ -0,0 +1,5 @@
+set SolutionDir=%1
+
+;echo "Copying files for publish"
+;xcopy /Y "%SolutionDir%WebfrontCore\Views" "%SolutionDir%Publish\Windows\Views\"
+;xcopy /Y "%SolutionDir%WebfrontCore\wwwroot" "%SolutionDir%Publish\Windows\wwwroot\"
diff --git a/WebfrontCore/BuildScripts/PreBuild.bat b/Application/BuildScripts/PreBuild.bat
similarity index 68%
rename from WebfrontCore/BuildScripts/PreBuild.bat
rename to Application/BuildScripts/PreBuild.bat
index fbde9f9b5..9c0d2d322 100644
--- a/WebfrontCore/BuildScripts/PreBuild.bat
+++ b/Application/BuildScripts/PreBuild.bat
@@ -1,3 +1,3 @@
set SolutionDir=%1
set ProjectDir=%2
-set TargetDir=%3
+set TargetDir=%3
\ No newline at end of file
diff --git a/Application/Application/ConfigurationGenerator.cs b/Application/ConfigurationGenerator.cs
similarity index 100%
rename from Application/Application/ConfigurationGenerator.cs
rename to Application/ConfigurationGenerator.cs
diff --git a/WebfrontCore/IW4MAdmin.ico b/Application/IW4MAdmin.ico
similarity index 100%
rename from WebfrontCore/IW4MAdmin.ico
rename to Application/IW4MAdmin.ico
diff --git a/WebfrontCore/IW4MAdminSettings.json b/Application/IW4MAdminSettings.json
similarity index 100%
rename from WebfrontCore/IW4MAdminSettings.json
rename to Application/IW4MAdminSettings.json
diff --git a/Application/Application/Logger.cs b/Application/Logger.cs
similarity index 100%
rename from Application/Application/Logger.cs
rename to Application/Logger.cs
diff --git a/Application/Application/Main.cs b/Application/Main.cs
similarity index 95%
rename from Application/Application/Main.cs
rename to Application/Main.cs
index 8b9d9dcab..ac2ac05cc 100644
--- a/Application/Application/Main.cs
+++ b/Application/Main.cs
@@ -19,7 +19,7 @@ namespace IW4MAdmin.Application
AppDomain.CurrentDomain.SetData("DataDirectory", OperatingDirectory);
System.Diagnostics.Process.GetCurrentProcess().PriorityClass = System.Diagnostics.ProcessPriorityClass.BelowNormal;
- Version = 1.6;
+ Version = Assembly.GetExecutingAssembly().GetName().Version.Major + Assembly.GetExecutingAssembly().GetName().Version.Minor / 10.0f;
Console.WriteLine("=====================================================");
Console.WriteLine(" IW4M ADMIN");
diff --git a/Application/Application/Manager.cs b/Application/Manager.cs
similarity index 99%
rename from Application/Application/Manager.cs
rename to Application/Manager.cs
index d4440425c..a89a8d133 100644
--- a/Application/Application/Manager.cs
+++ b/Application/Manager.cs
@@ -318,5 +318,7 @@ namespace IW4MAdmin.Application
public IDictionary GetPrivilegedClients() => PrivilegedClients;
public IEventApi GetEventApi() => Api;
+
+ public bool ShutdownRequested() => !Running;
}
}
diff --git a/Application/Application/Misc/VPNCheck.cs b/Application/Misc/VPNCheck.cs
similarity index 100%
rename from Application/Application/Misc/VPNCheck.cs
rename to Application/Misc/VPNCheck.cs
diff --git a/Application/Application/Server.cs b/Application/Server.cs
similarity index 99%
rename from Application/Application/Server.cs
rename to Application/Server.cs
index 3e274d5b4..db1917f29 100644
--- a/Application/Application/Server.cs
+++ b/Application/Server.cs
@@ -540,6 +540,7 @@ namespace IW4MAdmin
}
oldLines = lines;
l_size = LogFile.Length();
+ if (Manager.ShutdownRequested())
{
foreach (var plugin in SharedLibraryCore.Plugins.PluginImporter.ActivePlugins)
await plugin.OnUnloadAsync();
diff --git a/IW4MAdmin.sln b/IW4MAdmin.sln
index 671a56ee8..2480e6a8c 100644
--- a/IW4MAdmin.sln
+++ b/IW4MAdmin.sln
@@ -3,8 +3,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26730.16
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StatsPlugin", "Plugins\SimpleStats\StatsPlugin.csproj", "{4785AB75-66F3-4391-985D-63A5A049A0FA}"
-EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WelcomePlugin", "Plugins\Welcome\WelcomePlugin.csproj", "{AF097E6B-48D5-4452-9CCF-0A81A21F341D}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Plugins", "Plugins", "{26E8B310-269E-46D4-A612-24601F16065F}"
@@ -24,7 +22,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SharedLibraryCore", "Shared
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WebfrontCore", "WebfrontCore\WebfrontCore.csproj", "{D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Application", "Application\Application.csproj", "{B4626E78-BB22-43F8-A6AD-890B0853D61F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Application", "Application\Application.csproj", "{B4626E78-BB22-43F8-A6AD-890B0853D61F}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Stats", "Plugins\Stats\Stats.csproj", "{98BE4A81-8AFD-4957-83F7-009D353C6BCB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -36,48 +36,8 @@ Global
Release|Mixed Platforms = Release|Mixed Platforms
Release|x64 = Release|x64
Release|x86 = Release|x86
- Release-Nightly|Any CPU = Release-Nightly|Any CPU
- Release-Nightly|Mixed Platforms = Release-Nightly|Mixed Platforms
- Release-Nightly|x64 = Release-Nightly|x64
- Release-Nightly|x86 = Release-Nightly|x86
- Release-Stable|Any CPU = Release-Stable|Any CPU
- Release-Stable|Mixed Platforms = Release-Stable|Mixed Platforms
- Release-Stable|x64 = Release-Stable|x64
- Release-Stable|x86 = Release-Stable|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|Mixed Platforms.Build.0 = Debug|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|x64.ActiveCfg = Debug|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|x64.Build.0 = Debug|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|x86.ActiveCfg = Debug|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Debug|x86.Build.0 = Debug|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|Any CPU.Build.0 = Release|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|Mixed Platforms.ActiveCfg = Release-Stable|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|Mixed Platforms.Build.0 = Release-Stable|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|x64.ActiveCfg = Release|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|x64.Build.0 = Release|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|x86.ActiveCfg = Release|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release|x86.Build.0 = Release|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|Any CPU.ActiveCfg = Debug|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|Any CPU.Build.0 = Debug|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|Mixed Platforms.ActiveCfg = Release-Nightly|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|Mixed Platforms.Build.0 = Release-Nightly|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|x64.ActiveCfg = Release-Nightly|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|x64.Build.0 = Release-Nightly|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|x86.ActiveCfg = Release-Nightly|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Nightly|x86.Build.0 = Release-Nightly|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|Any CPU.ActiveCfg = Debug|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|Any CPU.Build.0 = Debug|Any CPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|Mixed Platforms.ActiveCfg = Release-Stable|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|Mixed Platforms.Build.0 = Release-Stable|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|x64.ActiveCfg = Release-Stable|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|x64.Build.0 = Release-Stable|x64
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|x86.ActiveCfg = Release-Stable|x86
- {4785AB75-66F3-4391-985D-63A5A049A0FA}.Release-Stable|x86.Build.0 = Release-Stable|x86
{AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
@@ -94,22 +54,6 @@ Global
{AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release|x64.Build.0 = Release|x64
{AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release|x86.ActiveCfg = Release|x86
{AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release|x86.Build.0 = Release|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|Any CPU.ActiveCfg = Debug|Any CPU
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|Any CPU.Build.0 = Debug|Any CPU
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|Mixed Platforms.ActiveCfg = Release-Nightly|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|Mixed Platforms.Build.0 = Release-Nightly|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|x64.ActiveCfg = Release-Nightly|x64
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|x64.Build.0 = Release-Nightly|x64
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|x86.ActiveCfg = Release-Nightly|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Nightly|x86.Build.0 = Release-Nightly|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|Any CPU.ActiveCfg = Debug|Any CPU
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|Any CPU.Build.0 = Debug|Any CPU
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|Mixed Platforms.ActiveCfg = Release-Stable|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|Mixed Platforms.Build.0 = Release-Stable|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|x64.ActiveCfg = Release-Stable|x64
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|x64.Build.0 = Release-Stable|x64
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|x86.ActiveCfg = Release-Stable|x86
- {AF097E6B-48D5-4452-9CCF-0A81A21F341D}.Release-Stable|x86.Build.0 = Release-Stable|x86
{B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -126,20 +70,6 @@ Global
{B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release|x64.Build.0 = Release-Stable|Any CPU
{B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release|x86.ActiveCfg = Release-Stable|x86
{B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release|x86.Build.0 = Release-Stable|x86
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Nightly|Any CPU.ActiveCfg = Release-Nightly|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Nightly|Mixed Platforms.ActiveCfg = Release-Nightly|x86
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Nightly|Mixed Platforms.Build.0 = Release-Nightly|x86
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Nightly|x64.ActiveCfg = Release-Nightly|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Nightly|x64.Build.0 = Release-Nightly|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Nightly|x86.ActiveCfg = Release-Nightly|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Nightly|x86.Build.0 = Release-Nightly|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Stable|Any CPU.ActiveCfg = Release-Stable|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Stable|Mixed Platforms.ActiveCfg = Release-Stable|x86
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Stable|Mixed Platforms.Build.0 = Release-Stable|x86
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Stable|x64.ActiveCfg = Release-Stable|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Stable|x64.Build.0 = Release-Stable|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Stable|x86.ActiveCfg = Release-Stable|Any CPU
- {B8C2A759-8663-4F6F-9BA4-19595F5E12C1}.Release-Stable|x86.Build.0 = Release-Stable|Any CPU
{3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -156,22 +86,6 @@ Global
{3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release|x64.Build.0 = Release|Any CPU
{3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release|x86.ActiveCfg = Release|x86
{3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release|x86.Build.0 = Release|x86
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|Any CPU.ActiveCfg = Debug|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|Any CPU.Build.0 = Debug|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|Mixed Platforms.ActiveCfg = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|Mixed Platforms.Build.0 = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|x64.ActiveCfg = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|x64.Build.0 = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|x86.ActiveCfg = Release|x86
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Nightly|x86.Build.0 = Release|x86
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|Any CPU.ActiveCfg = Debug|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|Any CPU.Build.0 = Debug|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|Mixed Platforms.ActiveCfg = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|Mixed Platforms.Build.0 = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|x64.ActiveCfg = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|x64.Build.0 = Release|Any CPU
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|x86.ActiveCfg = Release|x86
- {3EA31029-C76F-4C8E-AFD4-79F77DEA7033}.Release-Stable|x86.Build.0 = Release|x86
{AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Debug|Any CPU.Build.0 = Debug|Any CPU
{AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -188,22 +102,6 @@ Global
{AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release|x64.Build.0 = Release|Any CPU
{AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release|x86.ActiveCfg = Release|Any CPU
{AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release|x86.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|Any CPU.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|Any CPU.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|Mixed Platforms.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|Mixed Platforms.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|x64.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|x64.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|x86.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Nightly|x86.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|Any CPU.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|Any CPU.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|Mixed Platforms.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|Mixed Platforms.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|x64.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|x64.Build.0 = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|x86.ActiveCfg = Release|Any CPU
- {AA0541A2-8D51-4AD9-B0AC-3D1F5B162481}.Release-Stable|x86.Build.0 = Release|Any CPU
{D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -220,22 +118,6 @@ Global
{D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release|x64.Build.0 = Release|Any CPU
{D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release|x86.ActiveCfg = Release|Any CPU
{D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release|x86.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|Any CPU.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|Any CPU.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|Mixed Platforms.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|Mixed Platforms.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|x64.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|x64.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|x86.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Nightly|x86.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|Any CPU.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|Any CPU.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|Mixed Platforms.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|Mixed Platforms.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|x64.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|x64.Build.0 = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|x86.ActiveCfg = Release|Any CPU
- {D59AC1F1-2FB9-4BE7-813E-0CCCC4FE9067}.Release-Stable|x86.Build.0 = Release|Any CPU
{B4626E78-BB22-43F8-A6AD-890B0853D61F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B4626E78-BB22-43F8-A6AD-890B0853D61F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{B4626E78-BB22-43F8-A6AD-890B0853D61F}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
@@ -252,31 +134,31 @@ Global
{B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release|x64.Build.0 = Release|Any CPU
{B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release|x86.ActiveCfg = Release|Any CPU
{B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release|x86.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|Any CPU.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|Any CPU.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|Mixed Platforms.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|Mixed Platforms.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|x64.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|x64.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|x86.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Nightly|x86.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|Any CPU.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|Any CPU.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|Mixed Platforms.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|Mixed Platforms.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|x64.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|x64.Build.0 = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|x86.ActiveCfg = Release|Any CPU
- {B4626E78-BB22-43F8-A6AD-890B0853D61F}.Release-Stable|x86.Build.0 = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|x64.Build.0 = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Debug|x86.Build.0 = Debug|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|x64.ActiveCfg = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|x64.Build.0 = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|x86.ActiveCfg = Release|Any CPU
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {4785AB75-66F3-4391-985D-63A5A049A0FA} = {26E8B310-269E-46D4-A612-24601F16065F}
{AF097E6B-48D5-4452-9CCF-0A81A21F341D} = {26E8B310-269E-46D4-A612-24601F16065F}
{B8C2A759-8663-4F6F-9BA4-19595F5E12C1} = {26E8B310-269E-46D4-A612-24601F16065F}
{3EA31029-C76F-4C8E-AFD4-79F77DEA7033} = {26E8B310-269E-46D4-A612-24601F16065F}
+ {98BE4A81-8AFD-4957-83F7-009D353C6BCB} = {26E8B310-269E-46D4-A612-24601F16065F}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {84F8F8E0-1F73-41E0-BD8D-BB6676E2EE87}
diff --git a/Plugins/SimpleStats/Pages/ClientMessageJson.cs b/Plugins/SimpleStats/Pages/ClientMessageJson.cs
deleted file mode 100644
index ff6dcc0f4..000000000
--- a/Plugins/SimpleStats/Pages/ClientMessageJson.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using SharedLibrary;
-using SharedLibrary.Database.Models;
-using SharedLibrary.Services;
-using StatsPlugin.Models;
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StatsPlugin.Pages
-{
- public class ClientMessageJson : IPage
- {
- public string GetName() => "Client Chat JSON";
- public string GetPath() => "/_clientchat";
- public string GetContentType() => "application/json";
- public bool Visible() => false;
-
- public async Task GetPage(NameValueCollection querySet, IDictionary headers)
- {
- int clientId = Convert.ToInt32(querySet["clientid"]);
- var messageSvc = new GenericRepository();
- var clientMessages = (await messageSvc.FindAsync(m => m.ClientId == clientId));
-
- HttpResponse resp = new HttpResponse()
- {
- contentType = GetContentType(),
- content = clientMessages.Select(c => new
- {
- ClientID = c.ClientId,
- ServerID = c.ServerId,
- c.Message,
- c.TimeSent,
- ClientName = c.Client.Name,
- }),
- additionalHeaders = new Dictionary()
- };
-
- return resp;
- }
- }
-}
diff --git a/Plugins/SimpleStats/Pages/ClientMessages.cs b/Plugins/SimpleStats/Pages/ClientMessages.cs
deleted file mode 100644
index d5f441c6d..000000000
--- a/Plugins/SimpleStats/Pages/ClientMessages.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using SharedLibrary;
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StatsPlugin.Pages
-{
- public class ClientMessages : HTMLPage
- {
- public ClientMessages() : base(false) { }
-
- public override string GetContent(NameValueCollection querySet, IDictionary headers)
- {
- StringBuilder S = new StringBuilder();
- S.Append(LoadHeader());
-
- IFile chat = new IFile("webfront\\chat.html");
- S.Append(chat.GetText());
- chat.Close();
-
- S.Append(LoadFooter());
-
- return S.ToString();
- }
-
- public override string GetName() => "Word Cloud";
- public override string GetPath() => "/chat";
- }
-}
diff --git a/Plugins/SimpleStats/Pages/LiveStats.cs b/Plugins/SimpleStats/Pages/LiveStats.cs
deleted file mode 100644
index ab074e3ab..000000000
--- a/Plugins/SimpleStats/Pages/LiveStats.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using SharedLibrary;
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StatsPlugin.Pages
-{
- public class LiveStats : HTMLPage
- {
- public LiveStats() : base(false) { }
-
- public override string GetContent(NameValueCollection querySet, IDictionary headers)
- {
- StringBuilder S = new StringBuilder();
- S.Append(LoadHeader());
-
- IFile stats = new IFile("webfront\\stats.html");
- S.Append(stats.GetText());
- stats.Close();
-
- S.Append(LoadFooter());
-
- return S.ToString();
- }
-
- public override string GetName() => "Server Stats";
- public override string GetPath() => "/stats";
- }
-}
diff --git a/Plugins/SimpleStats/Pages/LiveStatsJson.cs b/Plugins/SimpleStats/Pages/LiveStatsJson.cs
deleted file mode 100644
index e791df0e3..000000000
--- a/Plugins/SimpleStats/Pages/LiveStatsJson.cs
+++ /dev/null
@@ -1,48 +0,0 @@
-using SharedLibrary;
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StatsPlugin.Pages
-{
- class LiveStatsJson : IPage
- {
- public string GetName() => "Kill Stats JSON";
- public string GetPath() => "/_killstats";
- public string GetContentType() => "application/json";
- public bool Visible() => false;
-
- public async Task GetPage(NameValueCollection querySet, IDictionary headers)
- {
- // todo: redo this
- return await Task.FromResult(new HttpResponse());
- /*int selectCount = Stats.MAX_KILLEVENTS;
-
- if (querySet.Get("count") != null)
- selectCount = Int32.Parse(querySet.Get("count"));
-
- HttpResponse resp = new HttpResponse()
- {
- contentType = GetContentType(),
- content = new
- {
- Servers = Stats.ManagerInstance.GetServers().Select(s => new
- {
- ServerName = s.Hostname,
- ServerMap = s.CurrentMap.Alias,
- ServerInfo = Stats.ServerStats[s.GetPort()],
- Minimap = MinimapConfig.Read(@"Config\minimaps.cfg").MapInfo.Where(m => m.MapName == s.CurrentMap.Name),
- MapKills = selectCount < 999 ? Stats.ServerStats[s.GetPort()].GetKillQueue().ToArray()
- .Skip(Math.Min(Stats.MAX_KILLEVENTS - selectCount, Stats.ServerStats[s.GetPort()].GetKillQueue().Count - selectCount)) :
- Stats.statLists.FirstOrDefault(x => x.Port == s.GetPort()).playerStats.GetKillsByMap(s.CurrentMap, selectCount)
- })
- },
- additionalHeaders = new Dictionary()
- };
- return resp;*/
- }
- }
-}
diff --git a/Plugins/SimpleStats/Pages/WordCloudJson.cs b/Plugins/SimpleStats/Pages/WordCloudJson.cs
deleted file mode 100644
index 614d4f7cb..000000000
--- a/Plugins/SimpleStats/Pages/WordCloudJson.cs
+++ /dev/null
@@ -1,32 +0,0 @@
-using SharedLibrary;
-using System;
-using System.Collections.Generic;
-using System.Collections.Specialized;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace StatsPlugin.Pages
-{
-
- public class WordCloudJson : IPage
- {
- public string GetName() => "Word Cloud JSON";
- public string GetPath() => "/_words";
- public string GetContentType() => "application/json";
- public bool Visible() => false;
-
- public async Task GetPage(NameValueCollection querySet, IDictionary headers)
- {
- // todo: this
- HttpResponse resp = new HttpResponse()
- {
- contentType = GetContentType(),
- content = null,
- additionalHeaders = new Dictionary()
- };
-
- return resp;
- }
- }
-}
diff --git a/Plugins/SimpleStats/Properties/AssemblyInfo.cs b/Plugins/SimpleStats/Properties/AssemblyInfo.cs
deleted file mode 100644
index 0af795a6b..000000000
--- a/Plugins/SimpleStats/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// General Information about an assembly is controlled through the following
-// set of attributes. Change these attribute values to modify the information
-// associated with an assembly.
-[assembly: AssemblyTitle("SamplePlugin")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("SamplePlugin")]
-[assembly: AssemblyCopyright("Copyright © 2015")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Setting ComVisible to false makes the types in this assembly not visible
-// to COM components. If you need to access a type in this assembly from
-// COM, set the ComVisible attribute to true on that type.
-[assembly: ComVisible(false)]
-
-// The following GUID is for the ID of the typelib if this project is exposed to COM
-[assembly: Guid("1d848d36-bf25-4bc0-acdd-67db2d014d45")]
-
-// Version information for an assembly consists of the following four values:
-//
-// Major Version
-// Minor Version
-// Build Number
-// Revision
-//
-// You can specify all the values or you can default the Build and Revision Numbers
-// by using the '*' as shown below:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Plugins/SimpleStats/StatsPlugin.csproj b/Plugins/SimpleStats/StatsPlugin.csproj
deleted file mode 100644
index 267017545..000000000
--- a/Plugins/SimpleStats/StatsPlugin.csproj
+++ /dev/null
@@ -1,168 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {4785AB75-66F3-4391-985D-63A5A049A0FA}
- Library
- Properties
- StatsPlugin
- StatsPlugin
- v4.5.2
- 512
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
- false
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
- false
-
-
- bin\Release-Stable\
- TRACE
- true
- pdbonly
- AnyCPU
- prompt
- MinimumRecommendedRules.ruleset
-
-
- x86
- bin\x86\Debug\
- DEBUG;TRACE
-
-
- x86
- bin\x86\Release\
- true
-
-
- x86
- bin\x86\Release-Stable\
- true
-
-
- true
- bin\x64\Debug\
- DEBUG;TRACE
- full
- x64
- prompt
- MinimumRecommendedRules.ruleset
-
-
- bin\x64\Release-Nightly\
- TRACE
- true
- pdbonly
- x64
- prompt
- MinimumRecommendedRules.ruleset
-
-
- bin\x64\Release-Stable\
- TRACE
- true
- pdbonly
- x64
- prompt
- MinimumRecommendedRules.ruleset
-
-
- bin\Release\
- TRACE
- true
- pdbonly
- AnyCPU
- prompt
- MinimumRecommendedRules.ruleset
-
-
- bin\x86\Release\
- true
- x86
- MinimumRecommendedRules.ruleset
-
-
- bin\x64\Release\
- TRACE
- true
- pdbonly
- x64
- prompt
- MinimumRecommendedRules.ruleset
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {d51eeceb-438a-47da-870f-7d7b41bc24d6}
- SharedLibrary
- False
-
-
-
-
- copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)BUILD\plugins\"
-
-
-
\ No newline at end of file
diff --git a/Plugins/SimpleStats/Vector3.cs b/Plugins/SimpleStats/Vector3.cs
deleted file mode 100644
index fa7c5dca4..000000000
--- a/Plugins/SimpleStats/Vector3.cs
+++ /dev/null
@@ -1,44 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Text.RegularExpressions;
-using System.Threading.Tasks;
-
-namespace StatsPlugin
-{
- public class Vector3
- {
- public float X { get; private set; }
- public float Y { get; private set; }
- public float Z { get; private set; }
-
- public Vector3(float x, float y, float z)
- {
- X = x;
- Y = y;
- Z = z;
- }
-
- public override string ToString()
- {
- return $"({X}, {Y}, {Z})";
- }
-
- public static Vector3 Parse(string s)
- {
- bool valid = Regex.Match(s, @"\(-?[0-9]+.?[0-9]*,\ -?[0-9]+.?[0-9]*,\ -?[0-9]+.?[0-9]*\)").Success;
- if (!valid)
- throw new FormatException("Vector3 is not in correct format");
-
- string removeParenthesis = s.Substring(1, s.Length - 2);
- string[] eachPoint = removeParenthesis.Split(',');
- return new Vector3(float.Parse(eachPoint[0]), float.Parse(eachPoint[1]), float.Parse(eachPoint[2]));
- }
-
- public static double Distance(Vector3 a, Vector3 b)
- {
- return Math.Round(Math.Sqrt(Math.Pow(b.X - a.X, 2) + Math.Pow(b.Y - a.Y, 2) + Math.Pow(b.Z - a.Z, 2)), 2);
- }
- }
-}
diff --git a/Plugins/SimpleStats/Cheat/Detection.cs b/Plugins/Stats/Cheat/Detection.cs
similarity index 98%
rename from Plugins/SimpleStats/Cheat/Detection.cs
rename to Plugins/Stats/Cheat/Detection.cs
index 13ec070c7..ee880ce86 100644
--- a/Plugins/SimpleStats/Cheat/Detection.cs
+++ b/Plugins/Stats/Cheat/Detection.cs
@@ -1,14 +1,14 @@
-using SharedLibrary.Helpers;
-using SharedLibrary.Interfaces;
-using SharedLibrary.Objects;
-using StatsPlugin.Helpers;
-using StatsPlugin.Models;
+using SharedLibraryCore.Helpers;
+using SharedLibraryCore.Interfaces;
+using SharedLibraryCore.Objects;
+using IW4MAdmin.Plugins.Stats.Helpers;
+using IW4MAdmin.Plugins.Stats.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
-namespace StatsPlugin.Cheat
+namespace IW4MAdmin.Plugins.Stats.Cheat
{
class Detection
{
diff --git a/Plugins/SimpleStats/Cheat/DetectionPenaltyResult.cs b/Plugins/Stats/Cheat/DetectionPenaltyResult.cs
similarity index 83%
rename from Plugins/SimpleStats/Cheat/DetectionPenaltyResult.cs
rename to Plugins/Stats/Cheat/DetectionPenaltyResult.cs
index a53e1d6c3..635af3033 100644
--- a/Plugins/SimpleStats/Cheat/DetectionPenaltyResult.cs
+++ b/Plugins/Stats/Cheat/DetectionPenaltyResult.cs
@@ -1,11 +1,11 @@
-using SharedLibrary.Objects;
+using SharedLibraryCore.Objects;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Cheat
+namespace IW4MAdmin.Plugins.Stats.Cheat
{
class DetectionPenaltyResult
{
diff --git a/Plugins/SimpleStats/Cheat/Thresholds.cs b/Plugins/Stats/Cheat/Thresholds.cs
similarity index 98%
rename from Plugins/SimpleStats/Cheat/Thresholds.cs
rename to Plugins/Stats/Cheat/Thresholds.cs
index eed74d6f5..f5a335e88 100644
--- a/Plugins/SimpleStats/Cheat/Thresholds.cs
+++ b/Plugins/Stats/Cheat/Thresholds.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Cheat
+namespace IW4MAdmin.Plugins.Stats.Cheat
{
class Thresholds
{
diff --git a/Plugins/SimpleStats/Commands/ResetStats.cs b/Plugins/Stats/Commands/ResetStats.cs
similarity index 83%
rename from Plugins/SimpleStats/Commands/ResetStats.cs
rename to Plugins/Stats/Commands/ResetStats.cs
index d6c9c1f4c..943bcd463 100644
--- a/Plugins/SimpleStats/Commands/ResetStats.cs
+++ b/Plugins/Stats/Commands/ResetStats.cs
@@ -1,13 +1,13 @@
-using SharedLibrary;
-using SharedLibrary.Objects;
-using StatsPlugin.Models;
+using SharedLibraryCore;
+using SharedLibraryCore.Objects;
+using IW4MAdmin.Plugins.Stats.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Commands
+namespace IW4MAdmin.Plugins.Stats.Commands
{
public class ResetStats : Command
{
@@ -17,7 +17,7 @@ namespace StatsPlugin.Commands
{
if (E.Origin.ClientNumber >= 0)
{
- var svc = new SharedLibrary.Services.GenericRepository();
+ var svc = new SharedLibraryCore.Services.GenericRepository();
int serverId = E.Owner.GetHashCode();
var stats = svc.Find(s => s.ClientId == E.Origin.ClientId && s.ServerId == serverId).First();
diff --git a/Plugins/SimpleStats/Commands/TopStats.cs b/Plugins/Stats/Commands/TopStats.cs
similarity index 89%
rename from Plugins/SimpleStats/Commands/TopStats.cs
rename to Plugins/Stats/Commands/TopStats.cs
index db602da62..ac0be36d5 100644
--- a/Plugins/SimpleStats/Commands/TopStats.cs
+++ b/Plugins/Stats/Commands/TopStats.cs
@@ -1,14 +1,14 @@
-using SharedLibrary;
-using SharedLibrary.Objects;
-using SharedLibrary.Services;
-using StatsPlugin.Models;
+using SharedLibraryCore;
+using SharedLibraryCore.Objects;
+using SharedLibraryCore.Services;
+using IW4MAdmin.Plugins.Stats.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Commands
+namespace IW4MAdmin.Plugins.Stats.Commands
{
class TopStats : Command
{
diff --git a/Plugins/SimpleStats/Commands/ViewStats.cs b/Plugins/Stats/Commands/ViewStats.cs
similarity index 93%
rename from Plugins/SimpleStats/Commands/ViewStats.cs
rename to Plugins/Stats/Commands/ViewStats.cs
index a0fb2e924..de45d6067 100644
--- a/Plugins/SimpleStats/Commands/ViewStats.cs
+++ b/Plugins/Stats/Commands/ViewStats.cs
@@ -1,14 +1,14 @@
-using SharedLibrary;
-using SharedLibrary.Objects;
-using SharedLibrary.Services;
-using StatsPlugin.Models;
+using SharedLibraryCore;
+using SharedLibraryCore.Objects;
+using SharedLibraryCore.Services;
+using IW4MAdmin.Plugins.Stats.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Commands
+namespace IW4MAdmin.Plugins.Stats.Commands
{
public class CViewStats : Command
{
diff --git a/Plugins/SimpleStats/Config/StatsConfiguration.cs b/Plugins/Stats/Config/StatsConfiguration.cs
similarity index 94%
rename from Plugins/SimpleStats/Config/StatsConfiguration.cs
rename to Plugins/Stats/Config/StatsConfiguration.cs
index 5346bd437..30de75da2 100644
--- a/Plugins/SimpleStats/Config/StatsConfiguration.cs
+++ b/Plugins/Stats/Config/StatsConfiguration.cs
@@ -1,12 +1,12 @@
-using SharedLibrary.Configuration;
-using SharedLibrary.Interfaces;
+using SharedLibraryCore.Configuration;
+using SharedLibraryCore.Interfaces;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Config
+namespace IW4MAdmin.Plugins.Stats.Config
{
class StatsConfiguration : IBaseConfiguration
{
diff --git a/Plugins/SimpleStats/Config/StreakMessageConfiguration.cs b/Plugins/Stats/Config/StreakMessageConfiguration.cs
similarity index 86%
rename from Plugins/SimpleStats/Config/StreakMessageConfiguration.cs
rename to Plugins/Stats/Config/StreakMessageConfiguration.cs
index 1285fb58d..345ecff96 100644
--- a/Plugins/SimpleStats/Config/StreakMessageConfiguration.cs
+++ b/Plugins/Stats/Config/StreakMessageConfiguration.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Config
+namespace IW4MAdmin.Plugins.Stats.Config
{
public class StreakMessageConfiguration
{
diff --git a/Plugins/SimpleStats/Helpers/Extensions.cs b/Plugins/Stats/Helpers/Extensions.cs
similarity index 89%
rename from Plugins/SimpleStats/Helpers/Extensions.cs
rename to Plugins/Stats/Helpers/Extensions.cs
index 227e074bb..3caea8fcf 100644
--- a/Plugins/SimpleStats/Helpers/Extensions.cs
+++ b/Plugins/Stats/Helpers/Extensions.cs
@@ -1,11 +1,11 @@
-using SharedLibrary.Helpers;
+using SharedLibraryCore.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Helpers
+namespace IW4MAdmin.Plugins.Stats.Helpers
{
static class Extensions
{
diff --git a/Plugins/SimpleStats/Helpers/ServerStats.cs b/Plugins/Stats/Helpers/ServerStats.cs
similarity index 84%
rename from Plugins/SimpleStats/Helpers/ServerStats.cs
rename to Plugins/Stats/Helpers/ServerStats.cs
index 4ac908ec0..5480d01be 100644
--- a/Plugins/SimpleStats/Helpers/ServerStats.cs
+++ b/Plugins/Stats/Helpers/ServerStats.cs
@@ -1,6 +1,6 @@
-using SharedLibrary;
-using StatsPlugin.Cheat;
-using StatsPlugin.Models;
+using SharedLibraryCore;
+using IW4MAdmin.Plugins.Stats.Cheat;
+using IW4MAdmin.Plugins.Stats.Models;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -8,7 +8,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Helpers
+namespace IW4MAdmin.Plugins.Stats.Helpers
{
class ServerStats {
public ConcurrentDictionary PlayerStats { get; set; }
diff --git a/Plugins/SimpleStats/Helpers/StatManager.cs b/Plugins/Stats/Helpers/StatManager.cs
similarity index 98%
rename from Plugins/SimpleStats/Helpers/StatManager.cs
rename to Plugins/Stats/Helpers/StatManager.cs
index 25e0ec6a6..94e3c90a1 100644
--- a/Plugins/SimpleStats/Helpers/StatManager.cs
+++ b/Plugins/Stats/Helpers/StatManager.cs
@@ -3,17 +3,17 @@ using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using SharedLibrary;
-using SharedLibrary.Helpers;
-using SharedLibrary.Interfaces;
-using SharedLibrary.Objects;
-using SharedLibrary.Services;
-using StatsPlugin.Models;
-using SharedLibrary.Commands;
-using SharedLibrary.Configuration;
-using StatsPlugin.Config;
+using SharedLibraryCore;
+using SharedLibraryCore.Helpers;
+using SharedLibraryCore.Interfaces;
+using SharedLibraryCore.Objects;
+using SharedLibraryCore.Services;
+using IW4MAdmin.Plugins.Stats.Models;
+using SharedLibraryCore.Commands;
+using SharedLibraryCore.Configuration;
+using IW4MAdmin.Plugins.Stats.Config;
-namespace StatsPlugin.Helpers
+namespace IW4MAdmin.Plugins.Stats.Helpers
{
public class StatManager
{
diff --git a/Plugins/SimpleStats/Helpers/StreakMessage.cs b/Plugins/Stats/Helpers/StreakMessage.cs
similarity index 91%
rename from Plugins/SimpleStats/Helpers/StreakMessage.cs
rename to Plugins/Stats/Helpers/StreakMessage.cs
index 330b4cb5f..e665f66b7 100644
--- a/Plugins/SimpleStats/Helpers/StreakMessage.cs
+++ b/Plugins/Stats/Helpers/StreakMessage.cs
@@ -1,12 +1,12 @@
-using SharedLibrary;
-using SharedLibrary.Helpers;
+using SharedLibraryCore;
+using SharedLibraryCore.Helpers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Helpers
+namespace IW4MAdmin.Plugins.Stats.Helpers
{
public class StreakMessage
{
diff --git a/Plugins/SimpleStats/Helpers/ThreadSafeStatsService.cs b/Plugins/Stats/Helpers/ThreadSafeStatsService.cs
similarity index 89%
rename from Plugins/SimpleStats/Helpers/ThreadSafeStatsService.cs
rename to Plugins/Stats/Helpers/ThreadSafeStatsService.cs
index 0115b9217..2c4b9f8e8 100644
--- a/Plugins/SimpleStats/Helpers/ThreadSafeStatsService.cs
+++ b/Plugins/Stats/Helpers/ThreadSafeStatsService.cs
@@ -1,12 +1,12 @@
-using SharedLibrary.Services;
-using StatsPlugin.Models;
+using SharedLibraryCore.Services;
+using IW4MAdmin.Plugins.Stats.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Helpers
+namespace IW4MAdmin.Plugins.Stats.Helpers
{
public class ThreadSafeStatsService
{
diff --git a/Plugins/SimpleStats/IW4Info.cs b/Plugins/Stats/IW4Info.cs
similarity index 99%
rename from Plugins/SimpleStats/IW4Info.cs
rename to Plugins/Stats/IW4Info.cs
index f77ff869a..c49e9c7f6 100644
--- a/Plugins/SimpleStats/IW4Info.cs
+++ b/Plugins/Stats/IW4Info.cs
@@ -4,7 +4,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin
+namespace IW4MAdmin.Plugins.Stats
{
public class IW4Info
{
diff --git a/Plugins/SimpleStats/MinimapConfig.cs b/Plugins/Stats/MinimapConfig.cs
similarity index 95%
rename from Plugins/SimpleStats/MinimapConfig.cs
rename to Plugins/Stats/MinimapConfig.cs
index e17d465e8..ddb2c8805 100644
--- a/Plugins/SimpleStats/MinimapConfig.cs
+++ b/Plugins/Stats/MinimapConfig.cs
@@ -4,10 +4,10 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using SharedLibrary.Helpers;
-using SharedLibrary.Interfaces;
+using SharedLibraryCore.Helpers;
+using SharedLibraryCore.Interfaces;
-namespace StatsPlugin
+namespace IW4MAdmin.Plugins.Stats
{
public class MinimapInfo
{
diff --git a/Plugins/SimpleStats/Models/EFClientKill.cs b/Plugins/Stats/Models/EFClientKill.cs
similarity index 92%
rename from Plugins/SimpleStats/Models/EFClientKill.cs
rename to Plugins/Stats/Models/EFClientKill.cs
index 57828aea0..c483c0c10 100644
--- a/Plugins/SimpleStats/Models/EFClientKill.cs
+++ b/Plugins/Stats/Models/EFClientKill.cs
@@ -1,11 +1,11 @@
using System;
-using SharedLibrary.Database.Models;
+using SharedLibraryCore.Database.Models;
using System.ComponentModel.DataAnnotations.Schema;
-using SharedLibrary.Helpers;
+using SharedLibraryCore.Helpers;
using System.ComponentModel.DataAnnotations;
-namespace StatsPlugin.Models
+namespace IW4MAdmin.Plugins.Stats.Models
{
public class EFClientKill : SharedEntity
{
diff --git a/Plugins/SimpleStats/Models/EFClientMessage.cs b/Plugins/Stats/Models/EFClientMessage.cs
similarity index 88%
rename from Plugins/SimpleStats/Models/EFClientMessage.cs
rename to Plugins/Stats/Models/EFClientMessage.cs
index b6e466f4b..ee078f241 100644
--- a/Plugins/SimpleStats/Models/EFClientMessage.cs
+++ b/Plugins/Stats/Models/EFClientMessage.cs
@@ -1,4 +1,4 @@
-using SharedLibrary.Database.Models;
+using SharedLibraryCore.Database.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
@@ -7,7 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-namespace StatsPlugin.Models
+namespace IW4MAdmin.Plugins.Stats.Models
{
public class EFClientMessage : SharedEntity
{
diff --git a/Plugins/SimpleStats/Models/EFClientStatistics.cs b/Plugins/Stats/Models/EFClientStatistics.cs
similarity index 92%
rename from Plugins/SimpleStats/Models/EFClientStatistics.cs
rename to Plugins/Stats/Models/EFClientStatistics.cs
index ecd15eb65..e27c826b9 100644
--- a/Plugins/SimpleStats/Models/EFClientStatistics.cs
+++ b/Plugins/Stats/Models/EFClientStatistics.cs
@@ -6,17 +6,17 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
-using SharedLibrary.Database.Models;
+using SharedLibraryCore.Database.Models;
-namespace StatsPlugin.Models
+namespace IW4MAdmin.Plugins.Stats.Models
{
public class EFClientStatistics : SharedEntity
{
- [Key, Column(Order = 0)]
+ //[Key, Column(Order = 0)]
public int ClientId { get; set; }
[ForeignKey("ClientId")]
public virtual EFClient Client { get; set; }
- [Key, Column(Order = 1)]
+ //[Key, Column(Order = 1)]
public int ServerId { get; set; }
[ForeignKey("ServerId")]
public virtual EFServer Server { get; set; }
diff --git a/Plugins/SimpleStats/Models/EFHitLocationCount.cs b/Plugins/Stats/Models/EFHitLocationCount.cs
similarity index 82%
rename from Plugins/SimpleStats/Models/EFHitLocationCount.cs
rename to Plugins/Stats/Models/EFHitLocationCount.cs
index bbbb89efe..a6cb53ded 100644
--- a/Plugins/SimpleStats/Models/EFHitLocationCount.cs
+++ b/Plugins/Stats/Models/EFHitLocationCount.cs
@@ -1,7 +1,7 @@
-using SharedLibrary.Database.Models;
+using SharedLibraryCore.Database.Models;
using System.ComponentModel.DataAnnotations;
-namespace StatsPlugin.Models
+namespace IW4MAdmin.Plugins.Stats.Models
{
public class EFHitLocationCount : SharedEntity
{
diff --git a/Plugins/SimpleStats/Models/EFServer.cs b/Plugins/Stats/Models/EFServer.cs
similarity index 80%
rename from Plugins/SimpleStats/Models/EFServer.cs
rename to Plugins/Stats/Models/EFServer.cs
index 4273b92e0..5cf670f48 100644
--- a/Plugins/SimpleStats/Models/EFServer.cs
+++ b/Plugins/Stats/Models/EFServer.cs
@@ -1,9 +1,9 @@
-using SharedLibrary.Database.Models;
+using SharedLibraryCore.Database.Models;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
-namespace StatsPlugin.Models
+namespace IW4MAdmin.Plugins.Stats.Models
{
public class EFServer : SharedEntity
{
diff --git a/Plugins/SimpleStats/Models/EFServerStatistics.cs b/Plugins/Stats/Models/EFServerStatistics.cs
similarity index 83%
rename from Plugins/SimpleStats/Models/EFServerStatistics.cs
rename to Plugins/Stats/Models/EFServerStatistics.cs
index 1dc9fc62b..10da850f8 100644
--- a/Plugins/SimpleStats/Models/EFServerStatistics.cs
+++ b/Plugins/Stats/Models/EFServerStatistics.cs
@@ -1,8 +1,8 @@
-using SharedLibrary.Database.Models;
+using SharedLibraryCore.Database.Models;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
-namespace StatsPlugin.Models
+namespace IW4MAdmin.Plugins.Stats.Models
{
public class EFServerStatistics : SharedEntity
{
diff --git a/Plugins/Stats/Models/ModelConfiguration.cs b/Plugins/Stats/Models/ModelConfiguration.cs
new file mode 100644
index 000000000..ad7e3d53b
--- /dev/null
+++ b/Plugins/Stats/Models/ModelConfiguration.cs
@@ -0,0 +1,16 @@
+using Microsoft.EntityFrameworkCore;
+
+using SharedLibraryCore.Interfaces;
+using IW4MAdmin.Plugins.Stats.Models;
+
+namespace Stats.Models
+{
+ public class ModelConfiguration : IModelConfiguration
+ {
+ public void Configure(ModelBuilder builder)
+ {
+ builder.Entity()
+ .HasKey(cs => new { cs.ClientId, cs.ServerId });
+ }
+ }
+}
diff --git a/Plugins/SimpleStats/Plugin.cs b/Plugins/Stats/Plugin.cs
similarity index 95%
rename from Plugins/SimpleStats/Plugin.cs
rename to Plugins/Stats/Plugin.cs
index 1999aea4e..f97b50d56 100644
--- a/Plugins/SimpleStats/Plugin.cs
+++ b/Plugins/Stats/Plugin.cs
@@ -2,24 +2,25 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
+using System.Reflection;
-using SharedLibrary;
-using SharedLibrary.Configuration;
-using SharedLibrary.Dtos;
-using SharedLibrary.Helpers;
-using SharedLibrary.Interfaces;
-using SharedLibrary.Services;
-using StatsPlugin.Config;
-using StatsPlugin.Helpers;
-using StatsPlugin.Models;
+using SharedLibraryCore;
+using SharedLibraryCore.Configuration;
+using SharedLibraryCore.Dtos;
+using SharedLibraryCore.Helpers;
+using SharedLibraryCore.Interfaces;
+using SharedLibraryCore.Services;
+using IW4MAdmin.Plugins.Stats.Config;
+using IW4MAdmin.Plugins.Stats.Helpers;
+using IW4MAdmin.Plugins.Stats.Models;
-namespace StatsPlugin
+namespace IW4MAdmin.Plugins.Stats
{
class Plugin : IPlugin
{
public string Name => "Simple Stats";
- public float Version => 1.0f;
+ public float Version => Assembly.GetExecutingAssembly().GetName().Version.Major + Assembly.GetExecutingAssembly().GetName().Version.Minor / 10.0f;
public string Author => "RaidMax";
diff --git a/Plugins/Stats/Stats.csproj b/Plugins/Stats/Stats.csproj
new file mode 100644
index 000000000..522cd2053
--- /dev/null
+++ b/Plugins/Stats/Stats.csproj
@@ -0,0 +1,24 @@
+
+
+
+ Library
+ netcoreapp2.0
+
+
+ RaidMax.IW4MAdmin.Plugins.Stats
+ RaidMax
+ Forever None
+ Client Statistics
+ Client Statistics Plugin for IW4MAdmin
+ 2018
+
+
+
+
+
+
+
+
+
+
+
diff --git a/SharedLibraryCore/Database/DatabaseContext.cs b/SharedLibraryCore/Database/DatabaseContext.cs
index b964e92f6..2a1a3cf36 100644
--- a/SharedLibraryCore/Database/DatabaseContext.cs
+++ b/SharedLibraryCore/Database/DatabaseContext.cs
@@ -6,6 +6,7 @@ using System.IO;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Data.Sqlite;
+using SharedLibraryCore.Interfaces;
namespace SharedLibraryCore.Database
{
@@ -83,7 +84,7 @@ namespace SharedLibraryCore.Database
Assembly library;
try
{
- library = Assembly.LoadFile(dllPath);
+ library = Assembly.LoadFrom(dllPath);
}
// not a valid assembly, ie plugin files
@@ -91,14 +92,19 @@ namespace SharedLibraryCore.Database
{
continue;
}
+
+ var configurations = library.ExportedTypes.Where(c => c.GetInterfaces().FirstOrDefault(i => typeof(IModelConfiguration).IsAssignableFrom(i)) != null)
+ .Select( c => (IModelConfiguration)Activator.CreateInstance(c));
+
+ foreach (var configurable in configurations)
+ configurable.Configure(modelBuilder);
foreach (var type in library.ExportedTypes)
{
if (type.IsClass && type.IsSubclassOf(typeof(SharedEntity)))
{
- var method = modelBuilder.GetType().GetMethod("Entity");
- method = method.MakeGenericMethod(new Type[] { type });
- method.Invoke(modelBuilder, null);
+ var method = modelBuilder.GetType().GetMethod("Entity", new[] { typeof(Type) });
+ method.Invoke(modelBuilder, new[] { type });
}
}
}
diff --git a/SharedLibraryCore/Helpers/Vector3.cs b/SharedLibraryCore/Helpers/Vector3.cs
index b0d232a38..6619ed8bf 100644
--- a/SharedLibraryCore/Helpers/Vector3.cs
+++ b/SharedLibraryCore/Helpers/Vector3.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
@@ -9,6 +10,8 @@ namespace SharedLibraryCore.Helpers
{
public class Vector3
{
+ [Key]
+ public int Vector3Id { get; set; }
public float X { get; protected set; }
public float Y { get; protected set; }
public float Z { get; protected set; }
diff --git a/SharedLibraryCore/Interfaces/IManager.cs b/SharedLibraryCore/Interfaces/IManager.cs
index bffac44a6..af032a231 100644
--- a/SharedLibraryCore/Interfaces/IManager.cs
+++ b/SharedLibraryCore/Interfaces/IManager.cs
@@ -23,5 +23,6 @@ namespace SharedLibraryCore.Interfaces
PenaltyService GetPenaltyService();
IDictionary GetPrivilegedClients();
IEventApi GetEventApi();
+ bool ShutdownRequested();
}
}
diff --git a/SharedLibraryCore/Interfaces/IModelConfiguration.cs b/SharedLibraryCore/Interfaces/IModelConfiguration.cs
new file mode 100644
index 000000000..3170826a9
--- /dev/null
+++ b/SharedLibraryCore/Interfaces/IModelConfiguration.cs
@@ -0,0 +1,12 @@
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace SharedLibraryCore.Interfaces
+{
+ public interface IModelConfiguration
+ {
+ void Configure(ModelBuilder builder);
+ }
+}
diff --git a/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest b/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest
deleted file mode 100644
index bbd12ccde..000000000
--- a/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/Microsoft.VC90.CRT.manifest
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
- +CXED+6HzJlSphyMNOn27ujadC0= MyKED+9DyS+1XcMeaC0Zlw2vFZ0= EeyDE7og6WoPd2oBhYbMEnpFHhY=
-
\ No newline at end of file
diff --git a/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/README_ENU.txt b/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/README_ENU.txt
deleted file mode 100644
index fc38b3684..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/README_ENU.txt and /dev/null differ
diff --git a/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/msvcr90.dll b/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/msvcr90.dll
deleted file mode 100644
index e2e66019c..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/Microsoft.VC90.CRT/msvcr90.dll and /dev/null differ
diff --git a/SharedLibraryCore/LibSQLCe/x86/sqlceca40.dll b/SharedLibraryCore/LibSQLCe/x86/sqlceca40.dll
deleted file mode 100644
index 92596101e..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/sqlceca40.dll and /dev/null differ
diff --git a/SharedLibraryCore/LibSQLCe/x86/sqlcecompact40.dll b/SharedLibraryCore/LibSQLCe/x86/sqlcecompact40.dll
deleted file mode 100644
index 41c69ecc5..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/sqlcecompact40.dll and /dev/null differ
diff --git a/SharedLibraryCore/LibSQLCe/x86/sqlceer40EN.dll b/SharedLibraryCore/LibSQLCe/x86/sqlceer40EN.dll
deleted file mode 100644
index a40154fd3..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/sqlceer40EN.dll and /dev/null differ
diff --git a/SharedLibraryCore/LibSQLCe/x86/sqlceme40.dll b/SharedLibraryCore/LibSQLCe/x86/sqlceme40.dll
deleted file mode 100644
index d737119fa..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/sqlceme40.dll and /dev/null differ
diff --git a/SharedLibraryCore/LibSQLCe/x86/sqlceqp40.dll b/SharedLibraryCore/LibSQLCe/x86/sqlceqp40.dll
deleted file mode 100644
index dedfc9a3c..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/sqlceqp40.dll and /dev/null differ
diff --git a/SharedLibraryCore/LibSQLCe/x86/sqlcese40.dll b/SharedLibraryCore/LibSQLCe/x86/sqlcese40.dll
deleted file mode 100644
index cc37e3b54..000000000
Binary files a/SharedLibraryCore/LibSQLCe/x86/sqlcese40.dll and /dev/null differ
diff --git a/SharedLibraryCore/Migrations/20180408213153_Initial Create.Designer.cs b/SharedLibraryCore/Migrations/20180408213153_Initial Create.Designer.cs
new file mode 100644
index 000000000..2465f20c6
--- /dev/null
+++ b/SharedLibraryCore/Migrations/20180408213153_Initial Create.Designer.cs
@@ -0,0 +1,415 @@
+//
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage;
+using Microsoft.EntityFrameworkCore.Storage.Internal;
+using SharedLibraryCore.Database;
+using SharedLibraryCore.Objects;
+using System;
+
+namespace SharedLibraryCore.Migrations
+{
+ [DbContext(typeof(DatabaseContext))]
+ [Migration("20180408213153_Initial Create")]
+ partial class InitialCreate
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.0.2-rtm-10011");
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
+ {
+ b.Property("KillId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("AttackerId");
+
+ b.Property("Damage");
+
+ b.Property("DeathOriginVector3Id");
+
+ b.Property("DeathType");
+
+ b.Property("HitLoc");
+
+ b.Property("KillOriginVector3Id");
+
+ b.Property("Map");
+
+ b.Property("ServerId");
+
+ b.Property("VictimId");
+
+ b.Property("ViewAnglesVector3Id");
+
+ b.Property("Weapon");
+
+ b.Property("When");
+
+ b.HasKey("KillId");
+
+ b.HasIndex("AttackerId");
+
+ b.HasIndex("DeathOriginVector3Id");
+
+ b.HasIndex("KillOriginVector3Id");
+
+ b.HasIndex("ServerId");
+
+ b.HasIndex("VictimId");
+
+ b.HasIndex("ViewAnglesVector3Id");
+
+ b.ToTable("EFClientKill");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientMessage", b =>
+ {
+ b.Property("MessageId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("ClientId");
+
+ b.Property("Message");
+
+ b.Property("ServerId");
+
+ b.Property("TimeSent");
+
+ b.HasKey("MessageId");
+
+ b.HasIndex("ClientId");
+
+ b.HasIndex("ServerId");
+
+ b.ToTable("EFClientMessage");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
+ {
+ b.Property("ClientId");
+
+ b.Property("ServerId");
+
+ b.Property("Active");
+
+ b.Property("Deaths");
+
+ b.Property("Kills");
+
+ b.Property("SPM");
+
+ b.Property("Skill");
+
+ b.Property("TimePlayed");
+
+ b.HasKey("ClientId", "ServerId");
+
+ b.HasIndex("ServerId");
+
+ b.ToTable("EFClientStatistics");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
+ {
+ b.Property("HitLocationCountId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("EFClientStatisticsClientId");
+
+ b.Property("EFClientStatisticsServerId");
+
+ b.Property("HitCount");
+
+ b.Property("HitOffsetAverage");
+
+ b.Property("Location");
+
+ b.HasKey("HitLocationCountId");
+
+ b.HasIndex("EFClientStatisticsClientId", "EFClientStatisticsServerId");
+
+ b.ToTable("EFHitLocationCount");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServer", b =>
+ {
+ b.Property("ServerId");
+
+ b.Property("Active");
+
+ b.Property("Port");
+
+ b.HasKey("ServerId");
+
+ b.ToTable("EFServer");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServerStatistics", b =>
+ {
+ b.Property("StatisticId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("ServerId");
+
+ b.Property("TotalKills");
+
+ b.Property("TotalPlayTime");
+
+ b.HasKey("StatisticId");
+
+ b.HasIndex("ServerId");
+
+ b.ToTable("EFServerStatistics");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
+ {
+ b.Property("AliasId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("DateAdded");
+
+ b.Property("IPAddress");
+
+ b.Property("LinkId");
+
+ b.Property("Name")
+ .IsRequired();
+
+ b.HasKey("AliasId");
+
+ b.HasIndex("LinkId");
+
+ b.ToTable("Aliases");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAliasLink", b =>
+ {
+ b.Property("AliasLinkId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.HasKey("AliasLinkId");
+
+ b.ToTable("AliasLinks");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
+ {
+ b.Property("ClientId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("AliasLinkId");
+
+ b.Property("Connections");
+
+ b.Property("CurrentAliasId");
+
+ b.Property("FirstConnection");
+
+ b.Property("LastConnection");
+
+ b.Property("Level");
+
+ b.Property("Masked");
+
+ b.Property("NetworkId");
+
+ b.Property("Password");
+
+ b.Property("PasswordSalt");
+
+ b.Property("TotalConnectionTime");
+
+ b.HasKey("ClientId");
+
+ b.HasIndex("AliasLinkId");
+
+ b.HasIndex("CurrentAliasId");
+
+ b.HasIndex("NetworkId")
+ .IsUnique();
+
+ b.ToTable("Clients");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
+ {
+ b.Property("PenaltyId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Expires");
+
+ b.Property("LinkId");
+
+ b.Property("OffenderId");
+
+ b.Property("Offense")
+ .IsRequired();
+
+ b.Property("PunisherId");
+
+ b.Property("Type");
+
+ b.Property("When");
+
+ b.HasKey("PenaltyId");
+
+ b.HasIndex("LinkId");
+
+ b.HasIndex("OffenderId");
+
+ b.HasIndex("PunisherId");
+
+ b.ToTable("Penalties");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Helpers.Vector3", b =>
+ {
+ b.Property("Vector3Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Vector3Id");
+
+ b.ToTable("Vector3");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Attacker")
+ .WithMany()
+ .HasForeignKey("AttackerId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Helpers.Vector3", "DeathOrigin")
+ .WithMany()
+ .HasForeignKey("DeathOriginVector3Id");
+
+ b.HasOne("SharedLibraryCore.Helpers.Vector3", "KillOrigin")
+ .WithMany()
+ .HasForeignKey("KillOriginVector3Id");
+
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Victim")
+ .WithMany()
+ .HasForeignKey("VictimId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Helpers.Vector3", "ViewAngles")
+ .WithMany()
+ .HasForeignKey("ViewAnglesVector3Id");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientMessage", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
+ .WithMany()
+ .HasForeignKey("ClientId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
+ .WithMany()
+ .HasForeignKey("ClientId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
+ {
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics")
+ .WithMany("HitLocations")
+ .HasForeignKey("EFClientStatisticsClientId", "EFClientStatisticsServerId");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServerStatistics", b =>
+ {
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
+ .WithMany("Children")
+ .HasForeignKey("LinkId")
+ .OnDelete(DeleteBehavior.Restrict);
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "AliasLink")
+ .WithMany()
+ .HasForeignKey("AliasLinkId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFAlias", "CurrentAlias")
+ .WithMany()
+ .HasForeignKey("CurrentAliasId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
+ .WithMany("ReceivedPenalties")
+ .HasForeignKey("LinkId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Offender")
+ .WithMany("ReceivedPenalties")
+ .HasForeignKey("OffenderId")
+ .OnDelete(DeleteBehavior.Restrict);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Punisher")
+ .WithMany("AdministeredPenalties")
+ .HasForeignKey("PunisherId")
+ .OnDelete(DeleteBehavior.Restrict);
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/SharedLibraryCore/Migrations/20180408213153_Initial Create.cs b/SharedLibraryCore/Migrations/20180408213153_Initial Create.cs
new file mode 100644
index 000000000..9454b1b50
--- /dev/null
+++ b/SharedLibraryCore/Migrations/20180408213153_Initial Create.cs
@@ -0,0 +1,443 @@
+using Microsoft.EntityFrameworkCore.Migrations;
+using System;
+using System.Collections.Generic;
+
+namespace SharedLibraryCore.Migrations
+{
+ public partial class InitialCreate : Migration
+ {
+ protected override void Up(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.CreateTable(
+ name: "AliasLinks",
+ columns: table => new
+ {
+ AliasLinkId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_AliasLinks", x => x.AliasLinkId);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "EFServer",
+ columns: table => new
+ {
+ ServerId = table.Column(nullable: false),
+ Active = table.Column(nullable: false),
+ Port = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_EFServer", x => x.ServerId);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Vector3",
+ columns: table => new
+ {
+ Vector3Id = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ X = table.Column(nullable: false),
+ Y = table.Column(nullable: false),
+ Z = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Vector3", x => x.Vector3Id);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Aliases",
+ columns: table => new
+ {
+ AliasId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false),
+ DateAdded = table.Column(nullable: false),
+ IPAddress = table.Column(nullable: false),
+ LinkId = table.Column(nullable: false),
+ Name = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Aliases", x => x.AliasId);
+ table.ForeignKey(
+ name: "FK_Aliases_AliasLinks_LinkId",
+ column: x => x.LinkId,
+ principalTable: "AliasLinks",
+ principalColumn: "AliasLinkId",
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "EFServerStatistics",
+ columns: table => new
+ {
+ StatisticId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false),
+ ServerId = table.Column(nullable: false),
+ TotalKills = table.Column(nullable: false),
+ TotalPlayTime = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_EFServerStatistics", x => x.StatisticId);
+ table.ForeignKey(
+ name: "FK_EFServerStatistics_EFServer_ServerId",
+ column: x => x.ServerId,
+ principalTable: "EFServer",
+ principalColumn: "ServerId",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Clients",
+ columns: table => new
+ {
+ ClientId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false),
+ AliasLinkId = table.Column(nullable: false),
+ Connections = table.Column(nullable: false),
+ CurrentAliasId = table.Column(nullable: false),
+ FirstConnection = table.Column(nullable: false),
+ LastConnection = table.Column(nullable: false),
+ Level = table.Column(nullable: false),
+ Masked = table.Column(nullable: false),
+ NetworkId = table.Column(nullable: false),
+ Password = table.Column(nullable: true),
+ PasswordSalt = table.Column(nullable: true),
+ TotalConnectionTime = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Clients", x => x.ClientId);
+ table.ForeignKey(
+ name: "FK_Clients_AliasLinks_AliasLinkId",
+ column: x => x.AliasLinkId,
+ principalTable: "AliasLinks",
+ principalColumn: "AliasLinkId",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Clients_Aliases_CurrentAliasId",
+ column: x => x.CurrentAliasId,
+ principalTable: "Aliases",
+ principalColumn: "AliasId",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "EFClientKill",
+ columns: table => new
+ {
+ KillId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false),
+ AttackerId = table.Column(nullable: false),
+ Damage = table.Column(nullable: false),
+ DeathOriginVector3Id = table.Column(nullable: true),
+ DeathType = table.Column(nullable: false),
+ HitLoc = table.Column(nullable: false),
+ KillOriginVector3Id = table.Column(nullable: true),
+ Map = table.Column(nullable: false),
+ ServerId = table.Column(nullable: false),
+ VictimId = table.Column(nullable: false),
+ ViewAnglesVector3Id = table.Column(nullable: true),
+ Weapon = table.Column(nullable: false),
+ When = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_EFClientKill", x => x.KillId);
+ table.ForeignKey(
+ name: "FK_EFClientKill_Clients_AttackerId",
+ column: x => x.AttackerId,
+ principalTable: "Clients",
+ principalColumn: "ClientId",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_EFClientKill_Vector3_DeathOriginVector3Id",
+ column: x => x.DeathOriginVector3Id,
+ principalTable: "Vector3",
+ principalColumn: "Vector3Id",
+ onDelete: ReferentialAction.Restrict);
+ table.ForeignKey(
+ name: "FK_EFClientKill_Vector3_KillOriginVector3Id",
+ column: x => x.KillOriginVector3Id,
+ principalTable: "Vector3",
+ principalColumn: "Vector3Id",
+ onDelete: ReferentialAction.Restrict);
+ table.ForeignKey(
+ name: "FK_EFClientKill_EFServer_ServerId",
+ column: x => x.ServerId,
+ principalTable: "EFServer",
+ principalColumn: "ServerId",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_EFClientKill_Clients_VictimId",
+ column: x => x.VictimId,
+ principalTable: "Clients",
+ principalColumn: "ClientId",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_EFClientKill_Vector3_ViewAnglesVector3Id",
+ column: x => x.ViewAnglesVector3Id,
+ principalTable: "Vector3",
+ principalColumn: "Vector3Id",
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "EFClientMessage",
+ columns: table => new
+ {
+ MessageId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false),
+ ClientId = table.Column(nullable: false),
+ Message = table.Column(nullable: true),
+ ServerId = table.Column(nullable: false),
+ TimeSent = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_EFClientMessage", x => x.MessageId);
+ table.ForeignKey(
+ name: "FK_EFClientMessage_Clients_ClientId",
+ column: x => x.ClientId,
+ principalTable: "Clients",
+ principalColumn: "ClientId",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_EFClientMessage_EFServer_ServerId",
+ column: x => x.ServerId,
+ principalTable: "EFServer",
+ principalColumn: "ServerId",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "EFClientStatistics",
+ columns: table => new
+ {
+ ClientId = table.Column(nullable: false),
+ ServerId = table.Column(nullable: false),
+ Active = table.Column(nullable: false),
+ Deaths = table.Column(nullable: false),
+ Kills = table.Column(nullable: false),
+ SPM = table.Column(nullable: false),
+ Skill = table.Column(nullable: false),
+ TimePlayed = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_EFClientStatistics", x => new { x.ClientId, x.ServerId });
+ table.ForeignKey(
+ name: "FK_EFClientStatistics_Clients_ClientId",
+ column: x => x.ClientId,
+ principalTable: "Clients",
+ principalColumn: "ClientId",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_EFClientStatistics_EFServer_ServerId",
+ column: x => x.ServerId,
+ principalTable: "EFServer",
+ principalColumn: "ServerId",
+ onDelete: ReferentialAction.Cascade);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "Penalties",
+ columns: table => new
+ {
+ PenaltyId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false),
+ Expires = table.Column(nullable: false),
+ LinkId = table.Column(nullable: false),
+ OffenderId = table.Column(nullable: false),
+ Offense = table.Column(nullable: false),
+ PunisherId = table.Column(nullable: false),
+ Type = table.Column(nullable: false),
+ When = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_Penalties", x => x.PenaltyId);
+ table.ForeignKey(
+ name: "FK_Penalties_AliasLinks_LinkId",
+ column: x => x.LinkId,
+ principalTable: "AliasLinks",
+ principalColumn: "AliasLinkId",
+ onDelete: ReferentialAction.Cascade);
+ table.ForeignKey(
+ name: "FK_Penalties_Clients_OffenderId",
+ column: x => x.OffenderId,
+ principalTable: "Clients",
+ principalColumn: "ClientId",
+ onDelete: ReferentialAction.Restrict);
+ table.ForeignKey(
+ name: "FK_Penalties_Clients_PunisherId",
+ column: x => x.PunisherId,
+ principalTable: "Clients",
+ principalColumn: "ClientId",
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateTable(
+ name: "EFHitLocationCount",
+ columns: table => new
+ {
+ HitLocationCountId = table.Column(nullable: false)
+ .Annotation("Sqlite:Autoincrement", true),
+ Active = table.Column(nullable: false),
+ EFClientStatisticsClientId = table.Column(nullable: true),
+ EFClientStatisticsServerId = table.Column(nullable: true),
+ HitCount = table.Column(nullable: false),
+ HitOffsetAverage = table.Column(nullable: false),
+ Location = table.Column(nullable: false)
+ },
+ constraints: table =>
+ {
+ table.PrimaryKey("PK_EFHitLocationCount", x => x.HitLocationCountId);
+ table.ForeignKey(
+ name: "FK_EFHitLocationCount_EFClientStatistics_EFClientStatisticsClientId_EFClientStatisticsServerId",
+ columns: x => new { x.EFClientStatisticsClientId, x.EFClientStatisticsServerId },
+ principalTable: "EFClientStatistics",
+ principalColumns: new[] { "ClientId", "ServerId" },
+ onDelete: ReferentialAction.Restrict);
+ });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Aliases_LinkId",
+ table: "Aliases",
+ column: "LinkId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Clients_AliasLinkId",
+ table: "Clients",
+ column: "AliasLinkId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Clients_CurrentAliasId",
+ table: "Clients",
+ column: "CurrentAliasId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Clients_NetworkId",
+ table: "Clients",
+ column: "NetworkId",
+ unique: true);
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientKill_AttackerId",
+ table: "EFClientKill",
+ column: "AttackerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientKill_DeathOriginVector3Id",
+ table: "EFClientKill",
+ column: "DeathOriginVector3Id");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientKill_KillOriginVector3Id",
+ table: "EFClientKill",
+ column: "KillOriginVector3Id");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientKill_ServerId",
+ table: "EFClientKill",
+ column: "ServerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientKill_VictimId",
+ table: "EFClientKill",
+ column: "VictimId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientKill_ViewAnglesVector3Id",
+ table: "EFClientKill",
+ column: "ViewAnglesVector3Id");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientMessage_ClientId",
+ table: "EFClientMessage",
+ column: "ClientId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientMessage_ServerId",
+ table: "EFClientMessage",
+ column: "ServerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFClientStatistics_ServerId",
+ table: "EFClientStatistics",
+ column: "ServerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFHitLocationCount_EFClientStatisticsClientId_EFClientStatisticsServerId",
+ table: "EFHitLocationCount",
+ columns: new[] { "EFClientStatisticsClientId", "EFClientStatisticsServerId" });
+
+ migrationBuilder.CreateIndex(
+ name: "IX_EFServerStatistics_ServerId",
+ table: "EFServerStatistics",
+ column: "ServerId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Penalties_LinkId",
+ table: "Penalties",
+ column: "LinkId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Penalties_OffenderId",
+ table: "Penalties",
+ column: "OffenderId");
+
+ migrationBuilder.CreateIndex(
+ name: "IX_Penalties_PunisherId",
+ table: "Penalties",
+ column: "PunisherId");
+ }
+
+ protected override void Down(MigrationBuilder migrationBuilder)
+ {
+ migrationBuilder.DropTable(
+ name: "EFClientKill");
+
+ migrationBuilder.DropTable(
+ name: "EFClientMessage");
+
+ migrationBuilder.DropTable(
+ name: "EFHitLocationCount");
+
+ migrationBuilder.DropTable(
+ name: "EFServerStatistics");
+
+ migrationBuilder.DropTable(
+ name: "Penalties");
+
+ migrationBuilder.DropTable(
+ name: "Vector3");
+
+ migrationBuilder.DropTable(
+ name: "EFClientStatistics");
+
+ migrationBuilder.DropTable(
+ name: "Clients");
+
+ migrationBuilder.DropTable(
+ name: "EFServer");
+
+ migrationBuilder.DropTable(
+ name: "Aliases");
+
+ migrationBuilder.DropTable(
+ name: "AliasLinks");
+ }
+ }
+}
diff --git a/SharedLibraryCore/Migrations/DatabaseContextModelSnapshot.cs b/SharedLibraryCore/Migrations/DatabaseContextModelSnapshot.cs
new file mode 100644
index 000000000..90b9994ca
--- /dev/null
+++ b/SharedLibraryCore/Migrations/DatabaseContextModelSnapshot.cs
@@ -0,0 +1,414 @@
+//
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Metadata;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage;
+using Microsoft.EntityFrameworkCore.Storage.Internal;
+using SharedLibraryCore.Database;
+using SharedLibraryCore.Objects;
+using System;
+
+namespace SharedLibraryCore.Migrations
+{
+ [DbContext(typeof(DatabaseContext))]
+ partial class DatabaseContextModelSnapshot : ModelSnapshot
+ {
+ protected override void BuildModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.0.2-rtm-10011");
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
+ {
+ b.Property("KillId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("AttackerId");
+
+ b.Property("Damage");
+
+ b.Property("DeathOriginVector3Id");
+
+ b.Property("DeathType");
+
+ b.Property("HitLoc");
+
+ b.Property("KillOriginVector3Id");
+
+ b.Property("Map");
+
+ b.Property("ServerId");
+
+ b.Property("VictimId");
+
+ b.Property("ViewAnglesVector3Id");
+
+ b.Property("Weapon");
+
+ b.Property("When");
+
+ b.HasKey("KillId");
+
+ b.HasIndex("AttackerId");
+
+ b.HasIndex("DeathOriginVector3Id");
+
+ b.HasIndex("KillOriginVector3Id");
+
+ b.HasIndex("ServerId");
+
+ b.HasIndex("VictimId");
+
+ b.HasIndex("ViewAnglesVector3Id");
+
+ b.ToTable("EFClientKill");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientMessage", b =>
+ {
+ b.Property("MessageId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("ClientId");
+
+ b.Property("Message");
+
+ b.Property("ServerId");
+
+ b.Property("TimeSent");
+
+ b.HasKey("MessageId");
+
+ b.HasIndex("ClientId");
+
+ b.HasIndex("ServerId");
+
+ b.ToTable("EFClientMessage");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
+ {
+ b.Property("ClientId");
+
+ b.Property("ServerId");
+
+ b.Property("Active");
+
+ b.Property("Deaths");
+
+ b.Property("Kills");
+
+ b.Property("SPM");
+
+ b.Property("Skill");
+
+ b.Property("TimePlayed");
+
+ b.HasKey("ClientId", "ServerId");
+
+ b.HasIndex("ServerId");
+
+ b.ToTable("EFClientStatistics");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
+ {
+ b.Property("HitLocationCountId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("EFClientStatisticsClientId");
+
+ b.Property("EFClientStatisticsServerId");
+
+ b.Property("HitCount");
+
+ b.Property("HitOffsetAverage");
+
+ b.Property("Location");
+
+ b.HasKey("HitLocationCountId");
+
+ b.HasIndex("EFClientStatisticsClientId", "EFClientStatisticsServerId");
+
+ b.ToTable("EFHitLocationCount");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServer", b =>
+ {
+ b.Property("ServerId");
+
+ b.Property("Active");
+
+ b.Property("Port");
+
+ b.HasKey("ServerId");
+
+ b.ToTable("EFServer");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServerStatistics", b =>
+ {
+ b.Property("StatisticId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("ServerId");
+
+ b.Property("TotalKills");
+
+ b.Property("TotalPlayTime");
+
+ b.HasKey("StatisticId");
+
+ b.HasIndex("ServerId");
+
+ b.ToTable("EFServerStatistics");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
+ {
+ b.Property("AliasId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("DateAdded");
+
+ b.Property("IPAddress");
+
+ b.Property("LinkId");
+
+ b.Property("Name")
+ .IsRequired();
+
+ b.HasKey("AliasId");
+
+ b.HasIndex("LinkId");
+
+ b.ToTable("Aliases");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAliasLink", b =>
+ {
+ b.Property("AliasLinkId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.HasKey("AliasLinkId");
+
+ b.ToTable("AliasLinks");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
+ {
+ b.Property("ClientId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("AliasLinkId");
+
+ b.Property("Connections");
+
+ b.Property("CurrentAliasId");
+
+ b.Property("FirstConnection");
+
+ b.Property("LastConnection");
+
+ b.Property("Level");
+
+ b.Property("Masked");
+
+ b.Property("NetworkId");
+
+ b.Property("Password");
+
+ b.Property("PasswordSalt");
+
+ b.Property("TotalConnectionTime");
+
+ b.HasKey("ClientId");
+
+ b.HasIndex("AliasLinkId");
+
+ b.HasIndex("CurrentAliasId");
+
+ b.HasIndex("NetworkId")
+ .IsUnique();
+
+ b.ToTable("Clients");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
+ {
+ b.Property("PenaltyId")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Expires");
+
+ b.Property("LinkId");
+
+ b.Property("OffenderId");
+
+ b.Property("Offense")
+ .IsRequired();
+
+ b.Property("PunisherId");
+
+ b.Property("Type");
+
+ b.Property("When");
+
+ b.HasKey("PenaltyId");
+
+ b.HasIndex("LinkId");
+
+ b.HasIndex("OffenderId");
+
+ b.HasIndex("PunisherId");
+
+ b.ToTable("Penalties");
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Helpers.Vector3", b =>
+ {
+ b.Property("Vector3Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Vector3Id");
+
+ b.ToTable("Vector3");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientKill", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Attacker")
+ .WithMany()
+ .HasForeignKey("AttackerId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Helpers.Vector3", "DeathOrigin")
+ .WithMany()
+ .HasForeignKey("DeathOriginVector3Id");
+
+ b.HasOne("SharedLibraryCore.Helpers.Vector3", "KillOrigin")
+ .WithMany()
+ .HasForeignKey("KillOriginVector3Id");
+
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Victim")
+ .WithMany()
+ .HasForeignKey("VictimId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Helpers.Vector3", "ViewAngles")
+ .WithMany()
+ .HasForeignKey("ViewAnglesVector3Id");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientMessage", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
+ .WithMany()
+ .HasForeignKey("ClientId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Client")
+ .WithMany()
+ .HasForeignKey("ClientId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFHitLocationCount", b =>
+ {
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFClientStatistics")
+ .WithMany("HitLocations")
+ .HasForeignKey("EFClientStatisticsClientId", "EFClientStatisticsServerId");
+ });
+
+ modelBuilder.Entity("IW4MAdmin.Plugins.Stats.Models.EFServerStatistics", b =>
+ {
+ b.HasOne("IW4MAdmin.Plugins.Stats.Models.EFServer", "Server")
+ .WithMany()
+ .HasForeignKey("ServerId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFAlias", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
+ .WithMany("Children")
+ .HasForeignKey("LinkId")
+ .OnDelete(DeleteBehavior.Restrict);
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFClient", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "AliasLink")
+ .WithMany()
+ .HasForeignKey("AliasLinkId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFAlias", "CurrentAlias")
+ .WithMany()
+ .HasForeignKey("CurrentAliasId")
+ .OnDelete(DeleteBehavior.Cascade);
+ });
+
+ modelBuilder.Entity("SharedLibraryCore.Database.Models.EFPenalty", b =>
+ {
+ b.HasOne("SharedLibraryCore.Database.Models.EFAliasLink", "Link")
+ .WithMany("ReceivedPenalties")
+ .HasForeignKey("LinkId")
+ .OnDelete(DeleteBehavior.Cascade);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Offender")
+ .WithMany("ReceivedPenalties")
+ .HasForeignKey("OffenderId")
+ .OnDelete(DeleteBehavior.Restrict);
+
+ b.HasOne("SharedLibraryCore.Database.Models.EFClient", "Punisher")
+ .WithMany("AdministeredPenalties")
+ .HasForeignKey("PunisherId")
+ .OnDelete(DeleteBehavior.Restrict);
+ });
+#pragma warning restore 612, 618
+ }
+ }
+}
diff --git a/SharedLibraryCore/Server.cs b/SharedLibraryCore/Server.cs
index 79f5c53ab..1ca2dfa7a 100644
--- a/SharedLibraryCore/Server.cs
+++ b/SharedLibraryCore/Server.cs
@@ -22,6 +22,7 @@ namespace SharedLibraryCore
T4,
T5,
T5M,
+ T6M,
}
public Server(Interfaces.IManager mgr, ServerConfiguration config)
diff --git a/SharedLibraryCore/SharedLibraryCore.csproj b/SharedLibraryCore/SharedLibraryCore.csproj
index b7c2c1c6e..dc28cd0d3 100644
--- a/SharedLibraryCore/SharedLibraryCore.csproj
+++ b/SharedLibraryCore/SharedLibraryCore.csproj
@@ -11,28 +11,6 @@
Forever None
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/SharedLibraryCore/Utilities.cs b/SharedLibraryCore/Utilities.cs
index 86dff080d..a4eeb73eb 100644
--- a/SharedLibraryCore/Utilities.cs
+++ b/SharedLibraryCore/Utilities.cs
@@ -294,6 +294,8 @@ namespace SharedLibraryCore
return Game.T5M;
if (gameName.Contains("IW5"))
return Game.IW5;
+ if (gameName.Contains("COD_T6_S"))
+ return Game.T6M;
return Game.UKN;
}
diff --git a/WebfrontCore/BuildScripts/PostPublish.bat b/WebfrontCore/BuildScripts/PostPublish.bat
deleted file mode 100644
index 5676cf5a9..000000000
--- a/WebfrontCore/BuildScripts/PostPublish.bat
+++ /dev/null
@@ -1,9 +0,0 @@
-set SolutionDir=%1
-set ProjectDir=%2
-set TargetDir=%3
-
-if "TargetDir" == "*Undefined*" (
- echo "Copying extra files to publish dir"
- xcopy /Y "%SolutionDir%BUILD\Plugins" "%SolutionDir%Publish\Plugins\"
- xcopy /Y "%SolutionDir%SharedLibraryCore\LibSQLCe\x86" "%SolutionDir%Publish\x86\"
-)
\ No newline at end of file
diff --git a/WebfrontCore/Program.cs b/WebfrontCore/Program.cs
index 1002a9641..9d35a4a69 100644
--- a/WebfrontCore/Program.cs
+++ b/WebfrontCore/Program.cs
@@ -16,7 +16,11 @@ namespace WebfrontCore
public static IWebHost BuildWebHost() =>
new WebHostBuilder()
+#if DEBUG
+ .UseContentRoot(Path.GetFullPath(Path.Combine(Directory.GetCurrentDirectory(), @"..\..\..\..\", "WebfrontCore")))
+#else
.UseContentRoot(Directory.GetCurrentDirectory())
+#endif
.UseKestrel()
.UseStartup()
.Build();
diff --git a/WebfrontCore/Properties/launchSettings.json b/WebfrontCore/Properties/launchSettings.json
index b347f5f88..233f0b8e2 100644
--- a/WebfrontCore/Properties/launchSettings.json
+++ b/WebfrontCore/Properties/launchSettings.json
@@ -14,14 +14,6 @@
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
- },
- "WebfrontCore2": {
- "commandName": "Project",
- "launchBrowser": true,
- "environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
- },
- "applicationUrl": "http://localhost:61370/"
}
}
}
diff --git a/WebfrontCore/WebfrontCore.csproj b/WebfrontCore/WebfrontCore.csproj
index 6ba6248e1..a0f2eedff 100644
--- a/WebfrontCore/WebfrontCore.csproj
+++ b/WebfrontCore/WebfrontCore.csproj
@@ -2,7 +2,6 @@
netcoreapp2.0
- win-x64;linux-x64
2.6
RaidMax.IW4MAdmin.WebfrontCore
2.0.0
@@ -26,10 +25,6 @@
-
-
-
-
@@ -53,9 +48,6 @@
PreserveNewest
-
- PreserveNewest
-