diff --git a/.gitmodules b/.gitmodules
index 0eaa416..adfa5c0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,6 +1,6 @@
[submodule "External/libremetaverse"]
path = External/libremetaverse
url = https://github.com/cinderblocks/libremetaverse
-[submodule "External/LibZNI"]
- path = External/LibZNI
+[submodule "External/LibAC"]
+ path = External/LibAC
url = ssh://git@git.zontreck.com:1212/zontreck/LibZNI
diff --git a/Sources/Assembly/ASMInfo.cs b/Assembly/ASMInfo.cs
similarity index 68%
rename from Sources/Assembly/ASMInfo.cs
rename to Assembly/ASMInfo.cs
index 422b5d0..2cce9b2 100644
--- a/Sources/Assembly/ASMInfo.cs
+++ b/Assembly/ASMInfo.cs
@@ -3,24 +3,17 @@ using System.Collections.Generic;
using System.Text;
using System.Reflection;
-[assembly: AssemblyCompany("ZNI")]
+[assembly: AssemblyCompany("Piccari Creations")]
[assembly: AssemblyAlgorithmId(System.Configuration.Assemblies.AssemblyHashAlgorithm.MD5)]
[assembly: AssemblyCopyright("(C) 2020 Tara Piccari")]
[assembly: AssemblyFileVersion("5.0.7.9200")]
[assembly: AssemblyDescription("ForgeCore Bot Server")]
-namespace Bot.Assemble
+namespace ForgeCore.Assemble
{
public class ASMInfo
{
public static string BotName = "ForgeCore";
public static string BotVer = "2.0.121524.1636";
- public static string GitPassword
- {
- get
- {
- return MainConfiguration.Instance.GitPassword;
- }
- }
}
}
diff --git a/External/LibAC b/External/LibAC
new file mode 160000
index 0000000..d247b84
--- /dev/null
+++ b/External/LibAC
@@ -0,0 +1 @@
+Subproject commit d247b843ee96c5081472b97e6cdf47ce6a238d57
diff --git a/External/LibZNI b/External/LibZNI
deleted file mode 160000
index 0a02263..0000000
--- a/External/LibZNI
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 0a022634c1a9e6a3ed63126cc4109c6030d054bd
diff --git a/ForgeCore.cs b/ForgeCore.cs
new file mode 100644
index 0000000..0d9ede9
--- /dev/null
+++ b/ForgeCore.cs
@@ -0,0 +1,29 @@
+using System;
+using System.Linq;
+using ForgeCoreAPI;
+using LibAC.Arguments;
+
+namespace ForgeCore;
+
+public class ForgeCore
+{
+ public static int main(string[] args)
+ {
+ PluginSystem.InitializeSystem();
+
+ Arguments arguments = ArgumentParser.Parse(args);
+ if (arguments.HasArg("help") || arguments.Count == 0)
+ {
+ // Print the help message for the default CLI Args
+
+ ArgumentBuilder builder = new ArgumentBuilder();
+ builder.withVersionArgument().withHelpArgument();
+
+
+ Arguments defaults = builder.Build();
+ Console.WriteLine(ArgumentHelpers.GenerateHelpMessage(defaults.GetAllArguments().ToList(), "ForgeCore"));
+ }
+
+ return 0;
+ }
+}
\ No newline at end of file
diff --git a/ForgeCore.csproj b/ForgeCore.csproj
index d028b03..7e307c0 100644
--- a/ForgeCore.csproj
+++ b/ForgeCore.csproj
@@ -8,7 +8,7 @@
false
Debug;Release
true
- Bot.Program
+ ForgeCore.ForgeCore
@@ -23,12 +23,22 @@
+
+
+
+
+
+
+
+
+
+
+
-
-
+
diff --git a/ForgeCore.sln b/ForgeCore.sln
index f727624..d057d90 100644
--- a/ForgeCore.sln
+++ b/ForgeCore.sln
@@ -17,7 +17,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibreMetaverse.Utilities",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForgeCore", "ForgeCore.csproj", "{5936E1A6-1891-4EA4-B595-442750FAEF80}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibZNI", "External\LibZNI\LibZNI.csproj", "{7758FB70-E6A3-4159-A20B-9F64105A0840}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibAC", "External\LibAC\LibAC.csproj", "{7758FB70-E6A3-4159-A20B-9F64105A0840}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ForgeCoreAPI", "ForgeCoreAPI\ForgeCoreAPI.csproj", "{F3DA818D-F6AA-4286-ADDE-238B52F89838}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -52,6 +54,10 @@ Global
{7758FB70-E6A3-4159-A20B-9F64105A0840}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7758FB70-E6A3-4159-A20B-9F64105A0840}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7758FB70-E6A3-4159-A20B-9F64105A0840}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F3DA818D-F6AA-4286-ADDE-238B52F89838}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F3DA818D-F6AA-4286-ADDE-238B52F89838}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F3DA818D-F6AA-4286-ADDE-238B52F89838}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F3DA818D-F6AA-4286-ADDE-238B52F89838}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{E5E8957B-7015-4DF0-AE67-0BEDBF9BA302} = {EC162775-3331-430A-AA32-9700375DECCA}
diff --git a/ForgeCoreAPI/ACS/AccessToken.cs b/ForgeCoreAPI/ACS/AccessToken.cs
new file mode 100644
index 0000000..d2887b2
--- /dev/null
+++ b/ForgeCoreAPI/ACS/AccessToken.cs
@@ -0,0 +1,67 @@
+using System;
+using System.Security.Cryptography;
+using System.Text;
+using ForgeCoreAPI.Utilities;
+using LibAC.NBT;
+using LibAC.NBT.API;
+
+namespace ForgeCoreAPI.ACS;
+
+///
+/// This represents the access token which would be utilized to authenticate commands
+///
+public class AccessToken
+{
+ public string TokenName { get; set; } = "";
+ public AccessTokenType TokenType { get; set; } = AccessTokenType.READ;
+ private string AccessTokenSeed { get; set; } = "";
+ public DateTime Expiration { get; set; } = DateTime.Now.AddDays(30);
+
+ public static AccessToken Create(string tokenName, AccessTokenType tokenType, bool expires = true)
+ {
+ AccessToken AT = new AccessToken();
+ AT.TokenName = tokenName;
+ AT.TokenType = tokenType;
+ if (!expires)
+ AT.Expiration = DateTime.MinValue;
+
+ var bytes = HashHelpers.EncodeMD5(HashHelpers.MakeRandomBytes(255));
+
+ AT.AccessTokenSeed = Convert.ToHexString(bytes);
+ return AT;
+ }
+
+ public override string ToString()
+ {
+ return Convert.ToHexString(HashHelpers.EncodeMD5(Encoding.UTF8.GetBytes($"{TokenName}:${AccessTokenSeed}")));
+ }
+
+ public CompoundTag Save()
+ {
+ CompoundTag tag = new CompoundTag();
+ tag.Put("name", StringTag.ValueOf(TokenName));
+ tag.Put("type", ByteTag.ValueOf((byte)TokenType));
+ tag.Put("seed", StringTag.ValueOf(AccessTokenSeed));
+ NbtUtils.WriteBoolean(tag, "expires", Expiration == DateTime.MinValue);
+ tag.Put("expiration", StringTag.ValueOf(Expiration.ToString()));
+
+ return tag;
+ }
+
+ public static AccessToken Load(CompoundTag tag)
+ {
+ AccessToken AT = new AccessToken();
+ AT.TokenName = tag["name"].AsString();
+ AT.TokenType = (AccessTokenType)tag["type"].AsByte();
+ AT.AccessTokenSeed = tag["seed"].AsString();
+ AT.Expiration = DateTime.Parse(tag["expiration"].AsString());
+
+ return AT;
+ }
+}
+
+public enum AccessTokenType : byte
+{
+ FULL = 0,
+ READ = 1
+}
\ No newline at end of file
diff --git a/ForgeCoreAPI/Commands.cs b/ForgeCoreAPI/Commands.cs
new file mode 100644
index 0000000..255e5e7
--- /dev/null
+++ b/ForgeCoreAPI/Commands.cs
@@ -0,0 +1 @@
+namespace ForgeCoreAPI;
diff --git a/ForgeCoreAPI/ForgeCoreAPI.csproj b/ForgeCoreAPI/ForgeCoreAPI.csproj
new file mode 100644
index 0000000..9fe8882
--- /dev/null
+++ b/ForgeCoreAPI/ForgeCoreAPI.csproj
@@ -0,0 +1,15 @@
+
+
+
+ net8.0
+ enable
+ enable
+ false
+
+
+
+
+
+
+
+
diff --git a/ForgeCoreAPI/IMessage.cs b/ForgeCoreAPI/IMessage.cs
new file mode 100644
index 0000000..83ab899
--- /dev/null
+++ b/ForgeCoreAPI/IMessage.cs
@@ -0,0 +1,23 @@
+using LibAC.Arguments;
+
+namespace ForgeCoreAPI;
+
+///
+/// A simple interface representing a message passed into the bot server
+///
+public interface IMessage
+{
+ ///
+ /// Get the stored message
+ ///
+ /// Raw message
+ public string GetMessage();
+
+ ///
+ /// Set the stored raw message
+ ///
+ /// Raw string message
+ public void SetMessage(string Message);
+
+ public Arguments ParseCommand();
+}
\ No newline at end of file
diff --git a/ForgeCoreAPI/IPlugin.cs b/ForgeCoreAPI/IPlugin.cs
new file mode 100644
index 0000000..0b6f53b
--- /dev/null
+++ b/ForgeCoreAPI/IPlugin.cs
@@ -0,0 +1,59 @@
+using LibAC.NBT;
+
+namespace ForgeCoreAPI;
+
+public interface IPlugin
+{
+ ///
+ /// Called on plugin load.
+ ///
+ /// DOES NOT INDICATE PLUGIN ENABLE / START
+ ///
+ void Initialize();
+
+ ///
+ /// Called when the plugin is enabled by the server
+ ///
+ void Enable();
+
+ ///
+ /// Called when the plugin is disabled by the server.
+ ///
+ /// NOTE: This action also indicates the plugin will no longer receive calls to the tick method.
+ ///
+ void Disable();
+
+ ///
+ /// Called every 5 seconds by the master server
+ ///
+ void tick();
+
+ ///
+ /// Provides the plugin with a copy of its saved configuration data
+ ///
+ /// A final readonly configuration object
+ void LoadConfig(CompoundTag config);
+
+ ///
+ /// Requested by the master server when the state is being saved. This does not indicate shutdown of the server.
+ ///
+ /// A serialized copy of the plugin configuration data. This should include all settings and data.
+ CompoundTag SaveConfig();
+
+ ///
+ /// This is called when no plugin memory exists, or when a reset has been called for this plugin.
+ ///
+ void ResetMemory();
+}
+
+///
+/// Marks a class as a valid plugin. Plugin Class must also implement IPlugin
+///
+public class ForgeCorePluginAttribute : Attribute
+{
+ public string pluginName;
+ public ForgeCorePluginAttribute(string PluginName)
+ {
+ this.pluginName = PluginName;
+ }
+}
\ No newline at end of file
diff --git a/ForgeCoreAPI/PluginSystem.cs b/ForgeCoreAPI/PluginSystem.cs
new file mode 100644
index 0000000..7b9dbe0
--- /dev/null
+++ b/ForgeCoreAPI/PluginSystem.cs
@@ -0,0 +1,52 @@
+using System.Reflection;
+using LibAC.NBT;
+using LibAC.NBT.API;
+
+namespace ForgeCoreAPI;
+
+public class PluginSystem
+{
+ public static List Plugins = new List();
+
+ public static void InitializeSystem()
+ {
+ CompoundTag pluginsData = NbtIo.Read("PluginStorage.dat");
+ // Search the Plugins directory for DLL files
+ string[] files = Directory.GetFiles("Plugins", "*.dll");
+
+ // Begin loading assemblies
+ foreach (var file in files)
+ {
+ Assembly asm = Assembly.LoadFile(file);
+ // Scan types for ForgeCorePlugin attribute
+
+ foreach (var types in asm.GetTypes())
+ {
+ if (types.GetCustomAttribute() != null)
+ {
+ IPlugin plugin = Activator.CreateInstance(types) as IPlugin;
+ plugin.Initialize();
+
+ ForgeCorePluginAttribute attrib = types.GetCustomAttribute();
+
+ Tag? pluginStore = pluginsData.Get(attrib.pluginName);
+ if (pluginStore == null)
+ {
+ plugin.ResetMemory();
+ }
+ else
+ {
+ CompoundTag tag = (CompoundTag) pluginStore;
+ CompoundTag dataTag = tag["data"] as CompoundTag;
+
+ plugin.LoadConfig(dataTag);
+ if(tag.Get("enabled").AsByte() == 1) plugin.Enable();
+ else plugin.Disable();
+ }
+
+ Plugins.Add(plugin);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/ForgeCoreAPI/Utilities/HashHelpers.cs b/ForgeCoreAPI/Utilities/HashHelpers.cs
new file mode 100644
index 0000000..fecfb70
--- /dev/null
+++ b/ForgeCoreAPI/Utilities/HashHelpers.cs
@@ -0,0 +1,19 @@
+using System.Security.Cryptography;
+
+namespace ForgeCoreAPI.Utilities;
+
+public class HashHelpers
+{
+ public static byte[] EncodeMD5(byte[] input)
+ {
+ MD5 md5 = MD5.Create();
+ return md5.ComputeHash(input);
+ }
+
+ public static byte[] MakeRandomBytes(int length)
+ {
+ ByteLayer A = new ByteLayer();
+ A.InsertRandomBytes(length);
+ return A.Bytes;
+ }
+}
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
new file mode 100644
index 0000000..7072c16
--- /dev/null
+++ b/Jenkinsfile
@@ -0,0 +1,56 @@
+pipeline {
+ agent any
+ options {
+ buildDiscarder (
+ logRotator(
+ numToKeepStr: '5'
+ )
+ )
+ }
+
+ stages {
+ stage("Build on Linux") {
+ agent {
+ label 'linux'
+ }
+
+ steps {
+ script {
+ sh '''
+ dotnet restore
+
+ dotnet publish ForgeCore.csproj --nologo -c Release --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true
+ '''
+ }
+ }
+
+ post {
+ always {
+ archiveArtifacts artifacts: "bin/Release/net8.0/publish/ForgeCore"
+ }
+ }
+ }
+
+ stage("Build on Windows") {
+ agent {
+ label 'windows'
+ }
+
+ steps {
+ script {
+ bat '''
+ dotnet restore
+
+ dotnet publish ForgeCore.csproj --nologo -c Release --self-contained true /p:PublishSingleFile=true /p:PublishTrimmed=true
+ '''
+ }
+ }
+
+ post {
+ always {
+ archiveArtifacts artifacts:"bin\\Release\\net8.0\\publish\\ForgeCore.exe"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Sources/BotSession.cs b/OldSystem/BotSession.cs
similarity index 98%
rename from Sources/BotSession.cs
rename to OldSystem/BotSession.cs
index 5908afb..09fe06d 100644
--- a/Sources/BotSession.cs
+++ b/OldSystem/BotSession.cs
@@ -5,7 +5,7 @@ using System.Text;
using OpenMetaverse;
using System.Threading.Tasks;
-namespace Bot
+namespace ForgeCore
{
public sealed class BotSession
{
diff --git a/Sources/Charts/ChartCommands.cs b/OldSystem/Charts/ChartCommands.cs
similarity index 100%
rename from Sources/Charts/ChartCommands.cs
rename to OldSystem/Charts/ChartCommands.cs
diff --git a/Sources/Charts/ChartMemory.cs b/OldSystem/Charts/ChartMemory.cs
similarity index 100%
rename from Sources/Charts/ChartMemory.cs
rename to OldSystem/Charts/ChartMemory.cs
diff --git a/Sources/Charts/ChartRenderer.cs b/OldSystem/Charts/ChartRenderer.cs
similarity index 100%
rename from Sources/Charts/ChartRenderer.cs
rename to OldSystem/Charts/ChartRenderer.cs
diff --git a/Sources/ChatLogger.cs b/OldSystem/ChatLogger.cs
similarity index 100%
rename from Sources/ChatLogger.cs
rename to OldSystem/ChatLogger.cs
diff --git a/Sources/CommandSystem/BaseCommands.cs b/OldSystem/CommandSystem/BaseCommands.cs
similarity index 100%
rename from Sources/CommandSystem/BaseCommands.cs
rename to OldSystem/CommandSystem/BaseCommands.cs
diff --git a/Sources/CommandSystem/BaseHooks.cs b/OldSystem/CommandSystem/BaseHooks.cs
similarity index 100%
rename from Sources/CommandSystem/BaseHooks.cs
rename to OldSystem/CommandSystem/BaseHooks.cs
diff --git a/Sources/CommandSystem/CommandGroup.cs b/OldSystem/CommandSystem/CommandGroup.cs
similarity index 100%
rename from Sources/CommandSystem/CommandGroup.cs
rename to OldSystem/CommandSystem/CommandGroup.cs
diff --git a/Sources/CommandSystem/CommandHelp.cs b/OldSystem/CommandSystem/CommandHelp.cs
similarity index 100%
rename from Sources/CommandSystem/CommandHelp.cs
rename to OldSystem/CommandSystem/CommandHelp.cs
diff --git a/Sources/CommandSystem/CommandManager.cs b/OldSystem/CommandSystem/CommandManager.cs
similarity index 100%
rename from Sources/CommandSystem/CommandManager.cs
rename to OldSystem/CommandSystem/CommandManager.cs
diff --git a/Sources/CommandSystem/CommandRegistry.cs b/OldSystem/CommandSystem/CommandRegistry.cs
similarity index 100%
rename from Sources/CommandSystem/CommandRegistry.cs
rename to OldSystem/CommandSystem/CommandRegistry.cs
diff --git a/Sources/ConfigSystem/BaseConfig.cs b/OldSystem/ConfigSystem/BaseConfig.cs
similarity index 100%
rename from Sources/ConfigSystem/BaseConfig.cs
rename to OldSystem/ConfigSystem/BaseConfig.cs
diff --git a/Sources/ConfigSystem/IConfig.cs b/OldSystem/ConfigSystem/IConfig.cs
similarity index 100%
rename from Sources/ConfigSystem/IConfig.cs
rename to OldSystem/ConfigSystem/IConfig.cs
diff --git a/Sources/ConfigSystem/MainConfiguration.cs b/OldSystem/ConfigSystem/MainConfiguration.cs
similarity index 100%
rename from Sources/ConfigSystem/MainConfiguration.cs
rename to OldSystem/ConfigSystem/MainConfiguration.cs
diff --git a/Sources/GroupKeepAlive.cs b/OldSystem/GroupKeepAlive.cs
similarity index 100%
rename from Sources/GroupKeepAlive.cs
rename to OldSystem/GroupKeepAlive.cs
diff --git a/Sources/GroupLog.cs b/OldSystem/GroupLog.cs
similarity index 100%
rename from Sources/GroupLog.cs
rename to OldSystem/GroupLog.cs
diff --git a/Sources/IProgram.cs b/OldSystem/IProgram.cs
similarity index 100%
rename from Sources/IProgram.cs
rename to OldSystem/IProgram.cs
diff --git a/Sources/Level System/Auth.cs b/OldSystem/Level System/Auth.cs
similarity index 100%
rename from Sources/Level System/Auth.cs
rename to OldSystem/Level System/Auth.cs
diff --git a/Sources/Logger.cs b/OldSystem/Logger.cs
similarity index 99%
rename from Sources/Logger.cs
rename to OldSystem/Logger.cs
index b1e0af8..6f21512 100644
--- a/Sources/Logger.cs
+++ b/OldSystem/Logger.cs
@@ -1,6 +1,6 @@
using System;
-namespace Bot
+namespace ForgeCore
{
public class Logger
{
diff --git a/Sources/MessageHandler.cs b/OldSystem/MessageHandler.cs
similarity index 100%
rename from Sources/MessageHandler.cs
rename to OldSystem/MessageHandler.cs
diff --git a/Sources/NonCommands/IgnoreNonCommands.cs b/OldSystem/NonCommands/IgnoreNonCommands.cs
similarity index 100%
rename from Sources/NonCommands/IgnoreNonCommands.cs
rename to OldSystem/NonCommands/IgnoreNonCommands.cs
diff --git a/Sources/NonCommands/NotCommand.cs b/OldSystem/NonCommands/NotCommand.cs
similarity index 100%
rename from Sources/NonCommands/NotCommand.cs
rename to OldSystem/NonCommands/NotCommand.cs
diff --git a/Sources/NonCommands/nCMD.cs b/OldSystem/NonCommands/nCMD.cs
similarity index 100%
rename from Sources/NonCommands/nCMD.cs
rename to OldSystem/NonCommands/nCMD.cs
diff --git a/Sources/NonCommands/nRegistry.cs b/OldSystem/NonCommands/nRegistry.cs
similarity index 100%
rename from Sources/NonCommands/nRegistry.cs
rename to OldSystem/NonCommands/nRegistry.cs
diff --git a/Sources/PluginActivator.cs b/OldSystem/PluginActivator.cs
similarity index 100%
rename from Sources/PluginActivator.cs
rename to OldSystem/PluginActivator.cs
diff --git a/Sources/Program.cs b/OldSystem/Program.cs
similarity index 100%
rename from Sources/Program.cs
rename to OldSystem/Program.cs
diff --git a/Sources/RLV.cs b/OldSystem/RLV.cs
similarity index 100%
rename from Sources/RLV.cs
rename to OldSystem/RLV.cs
diff --git a/Sources/SerialManager.cs b/OldSystem/SerialManager.cs
similarity index 100%
rename from Sources/SerialManager.cs
rename to OldSystem/SerialManager.cs
diff --git a/Sources/Visitors/Greeter.cs b/OldSystem/Visitors/Greeter.cs
similarity index 100%
rename from Sources/Visitors/Greeter.cs
rename to OldSystem/Visitors/Greeter.cs
diff --git a/Sources/Visitors/VisitorLog.cs b/OldSystem/Visitors/VisitorLog.cs
similarity index 100%
rename from Sources/Visitors/VisitorLog.cs
rename to OldSystem/Visitors/VisitorLog.cs
diff --git a/Sources/WebHookServer/HookCmds.cs b/OldSystem/WebHookServer/HookCmds.cs
similarity index 100%
rename from Sources/WebHookServer/HookCmds.cs
rename to OldSystem/WebHookServer/HookCmds.cs
diff --git a/Sources/WebHookServer/NewVersionWatcher.cs b/OldSystem/WebHookServer/NewVersionWatcher.cs
similarity index 100%
rename from Sources/WebHookServer/NewVersionWatcher.cs
rename to OldSystem/WebHookServer/NewVersionWatcher.cs
diff --git a/Sources/WebHookServer/WebHookServer.cs b/OldSystem/WebHookServer/WebHookServer.cs
similarity index 100%
rename from Sources/WebHookServer/WebHookServer.cs
rename to OldSystem/WebHookServer/WebHookServer.cs
diff --git a/Sources/WebHookServer/WebhookAttribs.cs b/OldSystem/WebHookServer/WebhookAttribs.cs
similarity index 100%
rename from Sources/WebHookServer/WebhookAttribs.cs
rename to OldSystem/WebHookServer/WebhookAttribs.cs
diff --git a/Sources/WebHookServer/WebhookRegistry.cs b/OldSystem/WebHookServer/WebhookRegistry.cs
similarity index 100%
rename from Sources/WebHookServer/WebhookRegistry.cs
rename to OldSystem/WebHookServer/WebhookRegistry.cs
diff --git a/Sources/zGroupCaches.cs b/OldSystem/zGroupCaches.cs
similarity index 100%
rename from Sources/zGroupCaches.cs
rename to OldSystem/zGroupCaches.cs