public JsonResult Save(AntiDdos antiDdos, IDictionary <string, NameAndValue> IgnoreToIP, bool UpdateIgnoreToIP = true, bool IsAPI = false) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion if (!Regex.IsMatch(antiDdos.CheckPorts, "^[0-9,]+$")) { return(Json(new Text("Список проверяемых портов имеет недопустимый формат"))); } // Зависимости if (antiDdos.IsActive) { // Проверяем iptables if (jsonDB.AntiDdos.BlockToIPtables && string.IsNullOrWhiteSpace(new Bash().Run("iptables -V 2>/dev/null"))) { return(Json(new Text("В системе отсутствует iptables"))); } // Проверяем tcpdump if (!(new Bash().Run("tcpdump --version 2>&1").Contains("OpenSSL"))) { return(Json(new Text("В системе отсутствует tcpdump"))); } // Проверяем ss if (string.IsNullOrWhiteSpace(new Bash().Run("ss -v 2>/dev/null"))) { return(Json(new Text("В системе отсутствует ss"))); } } // Убиваем tcpdump if (jsonDB.AntiDdos.IsActive && !antiDdos.IsActive) { new Bash().Run("pkill tcpdump"); } //Обновляем базу jsonDB.AntiDdos = antiDdos; // Сохраняем базу jsonDB.Save(); // Trigger.OnChange((0, 0)); // Ответ if (IsAPI) { return(Json(new TrueOrFalse(true))); } return(Json(new Text("Настройки успешно сохранены"))); }
public JsonResult AntiDdos(AntiDdos antiDdos) { CommonModels.Update(antiDdos, jsonDB.AntiDdos, HttpContext, updateType: UpdateType.skip); return(new SecurityToAntiDdosController().Save(antiDdos, null, UpdateIgnoreToIP: false, IsAPI: true)); }