public bool ProcessUniversalPacketCommand(UniversalPacket universalPacket, ClientWorkObject client, AsynchronousSocketListener server)
        {
            bool sentClientData = false;

            string[] commandArgs = ((string[])JsonConvert.DeserializeObject <string[]>(universalPacket.MessageData.Data));

            //Process plugins
            UniversalPlugin plugin = server.GetPlugin(commandArgs[0]);

            if (plugin != null)
            {
                sentClientData = plugin.core.Invoke(client, commandArgs);
                server.serverPluginLogger.AddToLog(ILogger.Levels.INFO, "Client [" + client.clientTracker.userID + "] has used command [" + plugin.core.Name + ".");
            }

            //Processes default commands
            if (!sentClientData)
            {
                foreach (IUniversalCommand universalCommand in UniversalCommand.GetDefaultCommands())
                {
                    if (universalCommand.GetNamespace().ToLower() == commandArgs[0].ToLower())
                    {
                        bool tmpbool = universalCommand.Invoke(commandArgs, universalPacket, client);
                        server.serverPluginLogger.AddToLog(ILogger.Levels.INFO, "Client [" + client.clientTracker.userID + "] has used command [" + universalCommand.GetNamespace() + ".");
                        if (tmpbool == true)
                        {
                            sentClientData = true; return(tmpbool);
                        }
                    }
                }
            }
            return(sentClientData);
        }
Beispiel #2
0
        public bool Initialize(string pluginDataDirectory, UniversalPlugin baseClass)
        {
            universalAPI = baseClass;

            ServerAPI.Log.AddToLog(ILogger.Levels.INFO, Yellow("Running Universaldatabase by Moonbyte Corporation, Version 1.3.6.0")); //TO-DO: Add dynamic plugin version here

            userDirectories          = Path.Combine(pluginDataDirectory, "Users");
            globalSettingDirectories = Path.Combine(pluginDataDirectory, "GlobalSettings");
            adminFileDirectory       = Path.Combine(pluginDataDirectory, "Admins.ini");

            if (!Directory.Exists(userDirectories))
            {
                Directory.CreateDirectory(userDirectories);
            }
            if (!Directory.Exists(globalSettingDirectories))
            {
                Directory.CreateDirectory(globalSettingDirectories);
            }
            if (!File.Exists(adminFileDirectory))
            {
                File.Create(adminFileDirectory).Close();
            }

            return(true);
        }
Beispiel #3
0
 public bool Initialize(string PluginDataDirectory, UniversalPlugin BaseClass)
 {
     if (!Directory.Exists(PluginDataDirectory))
     {
         Directory.CreateDirectory(PluginDataDirectory);
     }
     return(true);
 }
        public List <UniversalPlugin> LoadPlugins(string PluginDirectory)
        {
            returnPlugins = new List <UniversalPlugin>();
            string pluginDataDirectory = Path.Combine(PluginDirectory, "Data");

            ILogger.AddWhitespace();

            if (!Directory.Exists(pluginDataDirectory))
            {
                Directory.CreateDirectory(pluginDataDirectory);
            }

            if (Directory.Exists(PluginDirectory))
            {
                string[] files = Directory.GetFiles(PluginDirectory);
                foreach (string file in files)
                {
                    if (file.EndsWith(".dll"))
                    {
                        Assembly.LoadFile(Path.GetFullPath(file));
                    }
                }
            }
            else
            {
                Directory.CreateDirectory(PluginDirectory);
            }

            Type interfaceType = typeof(IUniversalPlugin);

            Type[] types = AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()).Where(p => interfaceType.IsAssignableFrom(p) && p.IsClass).ToArray();
            foreach (Type type in types)
            {
                try
                {
                    IUniversalPlugin plugin = (IUniversalPlugin)Activator.CreateInstance(type);

                    UniversalPlugin pluginInstance = new UniversalPlugin(plugin);
                    pluginInstance.core = plugin;

                    ILogger.AddToLog(ILogger.Levels.INFO, "Initializing [" + pluginInstance.core.Name + "]");
                    pluginInstance.core.SetUniversalPluginAPI(pluginInstance);
                    pluginInstance.core.Initialize(Path.Combine(pluginDataDirectory, pluginInstance.core.Name), pluginInstance);

                    returnPlugins.Add(pluginInstance);
                    ILogger.AddToLog(ILogger.Levels.INFO, "Plugin [" + pluginInstance.core.Name + "] Fully loaded!");
                }
                catch (Exception e)
                {
                    //Tried to load the assembly instance
                }
            }

            ILogger.AddWhitespace();

            return(returnPlugins);
        }
        public bool Initialize(string PluginDataDirectory, UniversalPlugin BaseClass)
        {
            if (!Directory.Exists(PluginDataDirectory))
            {
                Directory.CreateDirectory(PluginDataDirectory);
            }

            BaseClass.EventManager.OnBeforeClientRequest += (obj, args) =>
            {
                args.CancelRequest = Moonbyte.UniversalServer.Core.Model.Utility.MoonbyteCancelRequest.Cancel;
            };

            return(true);
        }
 public void SetUniversalPluginAPI(UniversalPlugin Plugin)
 {
     ServerAPI = Plugin;
 }