Esempio n. 1
0
        private void ScanPlugins()
        {
            _logger.LogInformation($"Scanning {_fileSystemManager.BuildFilePath(_neonConfig.Plugins.Directory)} for plugins");

            var plugins =
                new DirectoryInfo(_fileSystemManager.BuildFilePath(_neonConfig.Plugins.Directory)).GetFiles("*.dll",
                                                                                                            SearchOption.AllDirectories);


            plugins.ToList().ForEach(LoadPlugin);

            _logger.LogInformation($"Update container");
        }
Esempio n. 2
0
        private void InitNuGet()
        {
            _nugetSettings = Settings.LoadDefaultSettings(root: null);
            _nugetSourceRepositoryProvider = new SourceRepositoryProvider(_nugetSettings, Repository.Provider.GetCoreV3());
            _nuGetFramework    = NuGetFramework.ParseFolder("netstandard2.0");
            _packagesDirectory = _fileSystemManager.BuildFilePath(Path.Combine(_neonConfig.Plugins.Directory, "packages"));

            _fileSystemManager.CreateDirectory(Path.Combine(_neonConfig.Plugins.Directory, "packages"));
            _packagePathResolver = new PackagePathResolver(_packagesDirectory);

            _packageExtractionContext = new PackageExtractionContext(
                PackageSaveMode.Defaultv3,
                XmlDocFileSaveMode.None,
                ClientPolicyContext.GetClientPolicy(_nugetSettings, NullLogger.Instance), NullLogger.Instance);
        }
Esempio n. 3
0
        private void CheckModulesDirectory()
        {
            var modulesDirectory = Path.Join(_config.ScriptsDirectory.DirectoryName,
                                             _config.ModulesDirectory.DirectoryName);

            var fullModulesDirectory = _fileSystemManager.BuildFilePath(modulesDirectory);

            _logger.LogInformation($"Modules directory {modulesDirectory}");

            _fileSystemManager.CreateDirectory(modulesDirectory);

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                fullModulesDirectory = fullModulesDirectory.Replace(@"\", @"\\");
            }
        }
Esempio n. 4
0
        public Task <bool> Configure(string connectionString)
        {
            lock (_databaseLock)
            {
                connectionString = _fileSystemManager.BuildFilePath(connectionString);
                CheckDatabaseDirectory(connectionString);
                _dataStore = new DataStore(connectionString, keyProperty: nameof(INeonEntity.Id));
            }

            return(Task.FromResult(true));
        }
Esempio n. 5
0
        public Task <bool> Configure(string connectionString)
        {
            lock (_databaseLock)
            {
                CheckDatabaseDirectory(connectionString);
                connectionString = _fileSystemManager.BuildFilePath(connectionString);

                _liteDatabase = new LiteDatabase(connectionString);
            }

            return(Task.FromResult(true));
        }
        /// <summary>
        /// Initialize NoSQL db
        /// </summary>
        /// <param name="connectionString"></param>
        /// <returns></returns>
        public Task <bool> Init(string connectionString)
        {
            _logger.LogInformation($"Loading {connectionString}");
            _fileSystemManager.CreateDirectory(Path.GetDirectoryName(connectionString));

            _liteDatabase = new LiteDatabase(_fileSystemManager.BuildFilePath(connectionString));

            _liteDatabase.Shrink();
            _logger.LogInformation("Database loaded");

            return(Task.FromResult(true));
        }
Esempio n. 7
0
        public void Start()
        {
            _logger.Information($"Starting Plugin manager - Plugin directory: {_pluginsDirectory}");
            _fileSystemManager.CreateDirectory(_pluginsDirectory);
            _fullPluginDirectory = _fileSystemManager.BuildFilePath(_pluginsDirectory);

            var templateConfig = new PluginConfig();

            _fileSystemManager.WriteToFile("template_plugin.yaml", templateConfig);

            ScanPlugins();
            LoadPlugins();
        }
Esempio n. 8
0
        public Task <bool> Start()
        {
            _logger.LogInformation("Initializing Events Database");
            _fileSystemManager.CreateDirectory(_config.EventsDatabase.DatabaseDirectory);

            _liteDatabase =
                new LiteDatabase(_fileSystemManager.BuildFilePath(_config.EventsDatabase.DatabaseDirectory) + Path.DirectorySeparatorChar +
                                 _dbFilename);

            _liteDatabase.Shrink();
            ScanEntities();
            return(Task.FromResult(true));
        }
Esempio n. 9
0
        public Task <bool> Start()
        {
            _bootstrapFile = _fileSystemManager.BuildFilePath(_neonConfig.Scripts.Directory + Path.DirectorySeparatorChar + "bootstrap.lua");
            _fileSystemManager.CreateDirectory(_neonConfig.Scripts.Directory);
            CheckBootstrapFile();
            //StartMonitorDirectory();

            _logger.LogInformation("Initializing LUA script manager");
            _luaEngine.LoadCLRPackage();
            ScanForScriptClasses();

            _logger.LogInformation($"Loading bootstrap file");
            LoadLuaFile(_bootstrapFile, true);

            _logger.LogInformation($"Scanning files in directory {_neonConfig.Scripts.Directory}");
            LoadLuaFiles();

            _functions.ForEach(f => { _logger.LogInformation($"{f.Call()}"); });

            _logger.LogInformation("LUA Script manager initialized");
            return(Task.FromResult(true));
        }
Esempio n. 10
0
        public Task <bool> Start()
        {
            _logger.LogInformation("Initializing IoT Database");
            _fileSystemManager.CreateDirectory(_config.IoT.DatabaseDirectory);

            lock (_liteDbObjectLock)
            {
                _liteDatabase =
                    new LiteDatabase(_fileSystemManager.BuildFilePath(_config.IoT.DatabaseDirectory) + Path.DirectorySeparatorChar + _dbFilename);
                _liteDatabase.Shrink();
            }

            return(Task.FromResult(true));
        }
Esempio n. 11
0
        public void Include(string filename)
        {
            var scriptFullFilename =
                _fileSystemManager.BuildFilePath(Path.Combine(_scriptEngineConfig.ScriptsDirectory.DirectoryName, filename));

            if (File.Exists(scriptFullFilename))
            {
                _logger.LogDebug($"Including file {filename}");
                _scriptEngineService.ExecuteCode(File.ReadAllText(scriptFullFilename));
            }
            else
            {
                throw new FileNotFoundException($"File {filename} not found!", filename);
            }
        }
Esempio n. 12
0
        public async Task <bool> Start()
        {
            if (_scriptsEngines.ContainsKey(_neonConfig.Scripts.EngineName))
            {
                _scriptEngine          = (IScriptEngine)_servicesManager.Resolve(_scriptsEngines[_neonConfig.Scripts.EngineName]);
                _scriptEngineAttribute = _scriptEngine.GetType().GetCustomAttribute <ScriptEngineAttribute>();

                _logger.LogInformation($"Initializing script engine {_scriptEngineAttribute.Name} {_scriptEngineAttribute.Version}");

                _bootstrapFile = _fileSystemManager.BuildFilePath(_neonConfig.Scripts.Directory + Path.DirectorySeparatorChar + $"bootstrap{_scriptEngineAttribute.FileExtension}");
                _fileSystemManager.CreateDirectory(_neonConfig.Scripts.Directory);
                CheckBootstrapFile();
                //StartMonitorDirectory();

                _logger.LogInformation("Initializing Script manager");
                ScanForScriptClasses();

                _logger.LogInformation($"Loading bootstrap file");
                _scriptEngine.LoadFile(_bootstrapFile, true);

                _logger.LogInformation($"Scanning files in directory {_neonConfig.Scripts.Directory}");
                LoadScriptsFiles();

                await _scriptEngine.Build();

                _logger.LogInformation("Script manager initialized");
            }
            else
            {
                throw new Exception("No script engine found");
            }



            return(true);
        }
Esempio n. 13
0
        private void CheckModulesDirectory()
        {
            _logger.LogInformation($"Check Modules directory");

            _fileSystemManager.CreateDirectory(Path.Join(_neonConfig.Scripts.Directory, "Modules" + Path.DirectorySeparatorChar));

            _modulesPath = _fileSystemManager.BuildFilePath(Path.Join(_neonConfig.Scripts.Directory, "Modules" + Path.DirectorySeparatorChar));

            _logger.LogInformation($"LUA Modules path {_modulesPath}");

            if (Environment.OSVersion.Platform == PlatformID.Win32NT)
            {
                _modulesPath = _modulesPath.Replace(@"\", @"\\");
            }

            _luaEngine.DoString($@"
			-- Update the search path
			local module_folder = '{_modulesPath}'
			package.path = module_folder .. '?.lua;' .. package.path"            );
        }
Esempio n. 14
0
        private void ConfigureLogger(IConfigManager configManager)
        {
            if (_configManager == null)
            {
                Log.Logger = new LoggerConfiguration()
                             .Filter.ByExcluding(Matching.FromSource("Microsoft"))
                             .Filter
                             .ByExcluding(Matching.FromSource("System"))
                             .Enrich.FromLogContext()
                             .MinimumLevel.Debug()
                             .WriteTo.File(new CompactJsonFormatter(), "logs/Argon.log",
                                           rollingInterval: RollingInterval.Day)
                             .WriteTo.Console(
                    theme: AnsiConsoleTheme.Code,
                    outputTemplate:
                    "{Timestamp:HH:mm:ss} [{Level}] [{SourceContext:u3}] {Message}{NewLine}{Exception}")
                             .CreateLogger();
            }
            else
            {
                var logConfiguration = new LoggerConfiguration()
                                       .Filter.ByExcluding(Matching.FromSource("Microsoft"))
                                       .Filter
                                       .ByExcluding(Matching.FromSource("System"))
                                       .Enrich.FromLogContext();

                if (_configManager.Configuration.EngineConfig.Logger.Level == LogLevelEnum.Debug)
                {
                    logConfiguration = logConfiguration.MinimumLevel.Debug();
                }

                if (_configManager.Configuration.EngineConfig.Logger.Level == LogLevelEnum.Info)
                {
                    logConfiguration = logConfiguration.MinimumLevel.Information();
                }

                if (_configManager.Configuration.EngineConfig.Logger.Level == LogLevelEnum.Warning)
                {
                    logConfiguration = logConfiguration.MinimumLevel.Warning();
                }

                if (_configManager.Configuration.EngineConfig.Logger.Level == LogLevelEnum.Error)
                {
                    logConfiguration = logConfiguration.MinimumLevel.Error();
                }

                if (!string.IsNullOrEmpty(_configManager.Configuration.EngineConfig.Logger.LogDirectory))
                {
                    logConfiguration = logConfiguration.WriteTo.File(new CompactJsonFormatter(), _fileSystemManager.BuildFilePath(Path.Combine(_configManager.Configuration.EngineConfig.Logger.LogDirectory, "Argon.log")),
                                                                     rollingInterval: RollingInterval.Day);
                }

                logConfiguration = logConfiguration.WriteTo.Console(
                    theme: AnsiConsoleTheme.Code,
                    outputTemplate:
                    "{Timestamp:HH:mm:ss} [{Level}] [{SourceContext:u3}] {Message}{NewLine}{Exception}");

                Log.Logger = logConfiguration.CreateLogger();
            }
        }
Esempio n. 15
0
 private string GetNotifierConfigFileName(string notifierName)
 {
     return(_fileSystemManager.BuildFilePath(Path.Combine(_notifierConfigDirectory, $"{notifierName}.yaml")));
 }