public JsonResult Save(Domain domain) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion // Поиск шаблона var FindDomain = FindAndInclude(coreDB.RequestsFilter_Domains, domain.Id); if (FindDomain == null) { return(Json(new Text("Домен не найден"))); } // Обновляем настройки журнала CommonModels.Update(FindDomain.limitRequest, domain.limitRequest); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(domain.Id); // Trigger.OnChange((domain.Id, "LimitRequest")); // Отдаем сообщение return(Json(new Text("Настройки домена сохранены"))); }
public JsonResult Save(Domain domain, IDictionary <string, IgnoreToLog> IgnoreToLogs = null) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion // Поиск шаблона var FindDomain = coreDB.RequestsFilter_Domains.Where(i => i.Id == domain.Id).Include(c => c.confToLog).FirstOrDefault(); if (FindDomain == null) { return(Json(new Text("Домен не найден"))); } // Обновляем настройки журнала CommonModels.Update(FindDomain.confToLog, domain.confToLog); // Удаляем запись с игнорированием логов coreDB.RequestsFilter_Domain_IgnoreToLogs.RemoveAll(i => i.DomainId == domain.Id); // Создаем данные для игнорирования логов coreDB.RequestsFilter_Domain_IgnoreToLogs.AddRange(domain.Id, IgnoreToLogs, out _); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(domain.Id); // Отдаем сообщение return(Json(new Text("Настройки домена сохранены"))); }
public JsonResult RemoveToRuleOverride(int DomainId, int TemplateId, int Id) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion // Удаляем кеш для домена ISPCache.RemoveDomain(DomainId); ISPCache.RemoveTemplate(TemplateId); // Удаляем правило из шаблона if (TemplateId != 0 && coreDB.RequestsFilter_Template_RuleOverrides.RemoveAttach(coreDB, Id)) { Trigger.Template.OnChange((TemplateId, 0)); return(Json(new TrueOrFalse(true))); } // Удаляем правило из домена if (DomainId != 0 && coreDB.RequestsFilter_Domain_RuleOverrides.RemoveAttach(coreDB, Id)) { Trigger.Domain.OnChange((DomainId, "Rules")); return(Json(new TrueOrFalse(true))); } // Отдаем результат return(Json(new TrueOrFalse(false))); }
public JsonResult Ignore(int DomainId, int Id) { // Удаляем данные if (coreDB.RequestsFilter_Domain_IgnoreToLogs.RemoveAttach(coreDB, Id)) { // Удаляем кеш ISPCache.RemoveDomain(DomainId); // Отдаем результат return(Json(new TrueOrFalse(true))); } return(Json(new TrueOrFalse(false))); }
public JsonResult IgnoreLogs(int DomainId, IDictionary <string, IgnoreToLog> IgnoreToLogs) { // Записываем новые данные coreDB.RequestsFilter_Domain_IgnoreToLogs.AddRange(DomainId, IgnoreToLogs, out var NewIgnore); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(DomainId); // Отдаем сообщение и Id новых шаблонов return(Json(new UpdateToIds("accepted", DomainId, NewIgnore))); }
public JsonResult TemplatesId(int DomainId, IDictionary <string, TemplateId> templates) { // Записываем новые шаблоны coreDB.RequestsFilter_Domain_TemplatesId.AddRange(DomainId, templates, out var NewTemplatesId); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(DomainId); // Отдаем сообщение и Id новых шаблонов return(Json(new UpdateToIds("accepted", DomainId, NewTemplatesId))); }
public JsonResult Template(int DomainId, int Id) { // Удаляем данные if (coreDB.RequestsFilter_Domain_TemplatesId.RemoveAttach(coreDB, Id)) { // Удаляем кеш ISPCache.RemoveDomain(DomainId); // Trigger.OnChange((DomainId, "Base")); // Отдаем результат return(Json(new TrueOrFalse(true))); } return(Json(new TrueOrFalse(false))); }
public JsonResult Edit <T>(int DomainId, T oldItem, T newItem) where T : class { if (newItem == null) { return(Json(new TrueOrFalse(false))); } // Обновляем настройки CommonModels.Update(oldItem, newItem, HttpContext); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(DomainId); // Успех return(Json(new TrueOrFalse(true))); }
public JsonResult RemoveToAlias(int DomainId, int Id) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion // Удаляем правило из шаблона if (coreDB.RequestsFilter_Domain_Aliases.RemoveAttach(coreDB, Id)) { // Удаляем кеш для домена ISPCache.RemoveDomain(DomainId); return(Json(new TrueOrFalse(true))); } // Отдаем результат return(Json(new TrueOrFalse(false))); }
public JsonResult Aliases(int DomainId, IDictionary <string, Alias> aliases) { #region Проверка данных на правильность if (aliases != null) { foreach (var alias in aliases) { if (string.IsNullOrWhiteSpace(alias.Value?.host)) { continue; } if (!Regex.IsMatch(alias.Value.host, "^[a-z0-9-\\.]+$", RegexOptions.IgnoreCase)) { return(Json(new Text($"Алиас {alias.Value.host} не должен содержать тип протокола или url"))); } } } #endregion // Поиск домена if (coreDB.RequestsFilter_Domains.Where(i => i.Id == DomainId).Include(i => i.Aliases).FirstOrDefault() is Domain domain) { // Записываем новые алиасы и перезаписываем старые domain.Aliases.UpdateOrAddRange(aliases, out var NewAliases); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(DomainId); // Trigger.OnChange((DomainId, "Aliases")); // Отдаем сообщение и Id новых алиасов return(Json(new UpdateToIds("accepted", domain.Id, NewAliases))); } return(Json(new Text("Домен не найден"))); }
public JsonResult Remove(int Id) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion // Удаляем домен if (coreDB.RequestsFilter_Domains.RemoveAttach(coreDB, Id)) { // Удаляем кеш для домена ISPCache.RemoveDomain(Id); // Отдаем результат return(Json(new TrueOrFalse(true))); } return(Json(new Text("Ошибка ;("))); }
public JsonResult Save(Domain domain, IDictionary <string, Rule> rules = null, IDictionary <string, RuleReplace> RuleReplaces = null, IDictionary <string, RuleOverride> RuleOverrides = null, IDictionary <string, RuleArg> RuleArgs = null, bool IsAPI = false) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion // Поиск домена var FindDomain = FindAndInclude(coreDB.RequestsFilter_Domains, domain.Id); if (FindDomain == null) { return(Json(new Text("Домен не найден"))); } // Записываем новые правила и перезаписываем старые FindDomain.Rules.UpdateOrAddRange(rules, out var NewRules); FindDomain.RuleReplaces.UpdateOrAddRange(RuleReplaces, out var NewRuleReplace); FindDomain.RuleOverrides.UpdateOrAddRange(RuleOverrides, out var NewRuleOverrides); FindDomain.RuleArgs.UpdateOrAddRange(RuleArgs, out var NewRuleArgs); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(domain.Id); // Trigger.OnChange((domain.Id, "Rules")); // API if (IsAPI) { return(Json(new UpdateToIds("accepted", domain.Id, NewRules, NewRuleOverrides, NewRuleArgs, NewRuleReplace))); } // Отдаем сообщение и Id новых правил return(Json(new UpdateToIds("Настройки домена сохранены", 0, NewRules, NewRuleOverrides, NewRuleArgs, NewRuleReplace))); }
public JsonResult Save(Domain domain, IDictionary <string, TemplateId> templates = null) { #region Демо режим if (Platform.IsDemo) { return(Json(new Text("Операция недоступна в демо-режиме"))); } #endregion #region Проверка данных на правильность // Проверяем имя домена на null if (string.IsNullOrWhiteSpace(domain?.host)) { return(Json(new Text("Имя домена не может быть пустым"))); } // Форматируем host domain.host = Regex.Replace(domain.host.ToLower().Trim(), "^www\\.", ""); // Проверяем нету ли в имени домена лишних символов if (!Regex.IsMatch(domain.host, "^[a-z0-9-\\.]+$", RegexOptions.IgnoreCase)) { return(Json(new Text($"Домен {domain.host} не должен содержать тип протокола или url"))); } #endregion // Пароль 2FA if (!string.IsNullOrWhiteSpace(domain.Auth2faToPasswd)) { domain.Auth2faToPasswd = domain.Auth2faToPasswd.StartsWith("sha256:") ? domain.Auth2faToPasswd.Replace("sha256:", "") : SHA256.Text(domain.Auth2faToPasswd); } // Новый домен if (domain.Id == 0) { // Добовляем в базу coreDB.RequestsFilter_Domains.Add(domain); // Сохраняем базу coreDB.SaveChanges(); // Создаем шаблоны coreDB.RequestsFilter_Domain_TemplatesId.AddRange(domain.Id, templates, out _); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(domain.Id); // Отдаем ответ return(Json(new RewriteToId(domain.Id))); } // Существующий else { // Поиск домена var FindDomain = coreDB.RequestsFilter_Domains.Where(i => i.Id == domain.Id).Include(i => i.Aliases).FirstOrDefault(); if (FindDomain == null) { return(Json(new Text("Домен не найден"))); } // Обновляем параметры домена CommonModels.Update(FindDomain, domain); // Удаляем текущие шаблоны coreDB.RequestsFilter_Domain_TemplatesId.RemoveAll(i => i.DomainId == domain.Id); // Записываем новые шаблоны coreDB.RequestsFilter_Domain_TemplatesId.AddRange(domain.Id, templates, out _); // Сохраняем базу coreDB.SaveChanges(); // Удаляем кеш для домена ISPCache.RemoveDomain(domain.Id); // Отдаем сообщение и Id новых алиасов return(Json(new Text("Настройки домена сохранены"))); } }