Ejemplo n.º 1
0
        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("Настройки успешно сохранены")));
        }
Ejemplo n.º 2
0
 public JsonResult AntiDdos(AntiDdos antiDdos)
 {
     CommonModels.Update(antiDdos, jsonDB.AntiDdos, HttpContext, updateType: UpdateType.skip);
     return(new SecurityToAntiDdosController().Save(antiDdos, null, UpdateIgnoreToIP: false, IsAPI: true));
 }