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))); }
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))); }
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))); }
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; }
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; }