示例#1
0
        public JsonResult Base(WhiteListType type, string name, string value)
        {
            if (string.IsNullOrWhiteSpace(name) && string.IsNullOrWhiteSpace(value) && type == WhiteListType.Not)
            {
                return(Json(new TrueOrFalse(false)));
            }

            // База
            JsonDB jsonDB = Service.Get <JsonDB>();

            // Добавляем значение
            var md = new WhiteListModel(name, value, type);

            md.Id = int.Parse(Generate.Passwd(6, true));
            jsonDB.WhiteList.Add(md);

            // Обновляем
            jsonDB.Save();
            WhiteUserList.UpdateCache();

            //
            Trigger.OnChange((0, 0));

            // Успех
            return(Json(new TrueOrFalse(true)));
        }
示例#2
0
        public JsonResult Remove(int Id)
        {
            #region Демо режим
            if (Platform.IsDemo)
            {
                return(Json(new Text("Операция недоступна в демо-режиме")));
            }
            #endregion

            // База
            JsonDB jsonDB = Service.Get <JsonDB>();

            // Удаляем значение
            jsonDB.WhiteList.RemoveAll(i => i.Id == Id);
            jsonDB.Save();

            // Кеш настроек WhiteList
            WhiteUserList.UpdateCache();

            //
            Trigger.OnChange((0, 0));

            // Успех
            return(Json(new TrueOrFalse(true)));
        }
示例#3
0
        public JsonResult RemoveWhiteList(int Id)
        {
            #region Демо режим
            if (Platform.IsDemo)
            {
                return(Json(new Text("Операция недоступна в демо-режиме")));
            }
            #endregion

            // База
            JsonDB jsonDB = Service.Get <JsonDB>();

            // Удаляем значение
            jsonDB.WhiteList.Values.RemoveAll(i => i.Id == Id);
            jsonDB.WhiteList.LastUpdateToConf = DateTime.Now;

            // Успех
            jsonDB.Save();
            return(Json(new TrueOrFalse(true)));
        }
示例#4
0
        public static void Run(CoreDB coreDB, JsonDB jsonDB, IMemoryCache memoryCache)
        {
            if (IsRun)
            {
                return;
            }
            IsRun = true;

            if (!memoryCache.TryGetValue("Cron-ProjectInfo", out _))
            {
                memoryCache.Set("Cron-ProjectInfo", (byte)0, Startup.AbsoluteExpirationToAPI);

                #region Получаем новости проекта
                try
                {
                    HttpClient client  = new HttpClient();
                    var        newsAPI = JsonConvert.DeserializeObject <List <ProjectNews> >(client.GetStringAsync("http://api.core-system.org/isp/news").Result);
                    if (newsAPI.Count > 0)
                    {
                        jsonDB.ProjectNews = newsAPI;
                        jsonDB.Save();
                    }
                }
                catch { }
                #endregion

                #region Получаем список изменений проекта
                try
                {
                    HttpClient client        = new HttpClient();
                    var        ProjectChange = JsonConvert.DeserializeObject <List <ProjectChange> >(client.GetStringAsync("http://api.core-system.org/isp/change").Result);
                    if (ProjectChange.Count > 0)
                    {
                        jsonDB.ProjectChange = ProjectChange;
                        jsonDB.Save();
                    }
                }
                catch { }
                #endregion

                #region Сравниваем версию ISPCore
                try
                {
                    HttpClient client = new HttpClient();
                    var        result = JsonConvert.DeserializeObject <LatestVersion>(client.GetStringAsync("http://api.core-system.org/isp/LatestVersion").Result);

                    // Сверяем версии ISPCore
                    if (result.Version > 0 && (result.Version > Startup.version.Version || (result.Version == Startup.version.Version && result.Patch > Startup.version.Patch)))
                    {
                        #region Автоматическое обновление ISPCore
                        if (jsonDB.Base.AutoUpdate && (Platform.Get == PlatformOS.Docker || Platform.Get == PlatformOS.Unix))
                        {
                            // Если метод auto-update.sh еще не вызывался для этой версии ISPCore
                            if (!File.Exists($"{Folders.AutoUpdate}/{Startup.version.ToString()}.ok"))
                            {
                                // Проверяем можно ли текущею версию обновлять
                                if (client.GetStringAsync($"http://api.core-system.org/isp/UpdateSupport?Version={Startup.version.Version}&Patch={Startup.version.Patch}&os={PlatformOS.Unix.ToString()}").Result == "ok")
                                {
                                    // Записываем версию ISPCore с которой был вызван auto-update.sh
                                    File.WriteAllText($"{Folders.AutoUpdate}/{Startup.version.ToString()}.ok", string.Empty);

                                    // Обновляем
                                    Bash   bash = new Bash();
                                    string os   = Platform.Get == PlatformOS.Docker ? "docker" : "linux";
                                    bash.Run($"curl -fsSL http://cdn.core-system.org/isp/{os}/auto-update.sh | sh");
                                    return;
                                }
                            }
                        }
                        #endregion

                        // Уведомление
                        var note = new Notation()
                        {
                            Category = "Система",
                            Msg      = jsonDB.Base.AutoUpdate ? "Доступна новая версия ISPCore, требуется ручное обновление" : "Доступна новая версия ISPCore",
                            Time     = DateTime.Now,
                            More     = new List <More>()
                            {
                                new More("Текущая версия", Startup.version.ToString()),
                                new More("Доступна версия", result.ToString())
                            }
                        };

                        // HashData
                        note.HashData = Notation.CreateHashData(note);

                        // Если в базе нету HashData
                        if (coreDB.Notations.AsNoTracking().FirstOrDefault(it => it.HashData == note.HashData) == null)
                        {
                            // Добовляем в базу
                            coreDB.Notations.Add(note);

                            // Сохраняем базу
                            coreDB.SaveChanges();

                            // Обновляем CountNotification
                            jsonDB.Base.CountNotification++;
                            jsonDB.Save();
                        }
                    }
                }
                catch { }
                #endregion
            }

            IsRun = false;
        }
示例#5
0
        public static void Run(CoreDB coreDB, JsonDB jsonDB, IMemoryCache memoryCache)
        {
            if (IsRun)
            {
                return;
            }
            IsRun = true;

            if (!memoryCache.TryGetValue("Cron-UpdateAV", out _))
            {
                memoryCache.Set("Cron-UpdateAV", (byte)1, Startup.AbsoluteExpirationToAPI);

                try
                {
                    HttpClient client   = new HttpClient();
                    string     vers     = client.GetStringAsync("http://cdn.core-system.org/isp/av/vers.txt").Result;
                    string     old_vers = File.ReadAllText($"{Folders.AV}/vers.txt");
                    if (Regex.IsMatch(vers, "^[0-9]+-[0-9]+-[0-9]+([\n\r]+)?$") && vers != old_vers)
                    {
                        if (Download("ai-bolit.php", "new_ai-bolit.php") && Download("AIBOLIT-WHITELIST.db", "new_AIBOLIT-WHITELIST.db"))
                        {
                            if (File.Exists($"{Folders.AV}/ai-bolit.php"))
                            {
                                File.Delete($"{Folders.AV}/ai-bolit.php");
                            }

                            if (File.Exists($"{Folders.AV}/AIBOLIT-WHITELIST.db"))
                            {
                                File.Delete($"{Folders.AV}/AIBOLIT-WHITELIST.db");
                            }

                            File.Move($"{Folders.AV}/new_ai-bolit.php", $"{Folders.AV}/ai-bolit.php");
                            File.Move($"{Folders.AV}/new_AIBOLIT-WHITELIST.db", $"{Folders.AV}/AIBOLIT-WHITELIST.db");
                            File.WriteAllText($"{Folders.AV}/vers.txt", vers);

                            // Добовляем данные в базу
                            SqlToMode.SetMode(SqlMode.Read);
                            coreDB.Notations.Add(new Notation()
                            {
                                Category = "Обновления",
                                Msg      = "Обновлен антивирус AI-Bolit",
                                Time     = DateTime.Now,
                                More     = new List <More>()
                                {
                                    new More("Предыдущая версия", old_vers.Replace('-', '.')),
                                    new More("Текущая версия", vers.Replace('-', '.'))
                                }
                            });

                            // Сохраняем базу
                            coreDB.SaveChanges();
                            SqlToMode.SetMode(SqlMode.ReadOrWrite);

                            // Обновляем CountNotification
                            jsonDB.Base.CountNotification++;
                            jsonDB.Save();
                        }
                    }
                }
                catch { }
            }

            IsRun = false;
        }