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 -