Skip to content

risedphantom/ServiceConfigurator

Repository files navigation

ServiceConfigurator

ServiceConfigurator - это self-hosted OWIN-based веб-служба для простого конфигурирования внутренних сервисов предприятия. Текущая альфа версия проекта содержит в себе всего лишь 1 модуль для конфигурирования веб-серверов IIS. В проекте есть полноценный веб-интерфейс при отсутствии тяжеловесных ASP и MVC.

Основные возможности

  • Настройка разрешения доступа по IP, URL и QueryString для группы сайтов.
  • Полноценный REST API дающий доступ ко всем настройкам.
  • Применение правил IIS по графику.
  • Отправка основных показателей жизнедеятельности в Zabbix (количество активных правил).
  • Полноценный веб-интерфейс основанный на twitter bootstrap.
  • 2 режима работы: служба или консольное приложение.
  • Движок представлений реализован на клиентской стороне.

Структура

Система конфигурирования состоит из 3-х основных частей:

  • БД для хранения правил IIS и сайтов, к которым они применяются совместно с DB API в виде набора хранимых процедур,
  • сервисной части, реализующей REST API, применение правил по графику и self-hosted веб-сервис,
  • пользовательского веб-интерфейса.

База данных

БД имеет предельно простую структуру и содержит всего 2 таблицы: IISSite - для хранения конфигурационных единиц и IISRestriction - для хранения правил и их истории. Правила хранятся в формате XML в поле Rule и являются сериализацией внутренних классов IpRestriction, UrlRestriction и QueryStringRestriction. Тип правила может принимать одно из строковых значений "url", "ip", "query". DB API, в виде набора хранимых процедур, позволяет:

  • добавлять, удалять, отменять правила,
  • добавлять конфигурационные единицы,
  • получать количественную статистику и списки правил для обновления.

Служба

Служба выполнена по классической MVC модели, однако без использования MVC библиотек .NET. Контроллеры, реализующие WebAPI и пользовательский API разделены. Вспомогательные функции записи логов, чтения конфигурации и отправки данных в систему мониторинга Zabbix выполнены в виде глобальных singleton классов. Также в отдельный блок выделены классы ядра, взаимодействующие с БД, удаленными серверами IIS и выполняющие прочие внутренние функции. В качестве движка представлений используется открытый RazorEngine, однако в данной реализации он может быть спокойно исключен, так как подобие движка представлений реализовано на клиентской стороне. Конвейер обработки HTTP запросов реализован на фрэймворке katana и в данной версии не содержит middleware аутентификации и авторизации.

Пользовательский интерфейс

Основная особенность пользовательского интерфейса - динамическая загрузка контента при необходимости. Таким образом любые вложенные элементы на HTML странице подгружаются в виде независимых HTML блоков тем самым увеличивая отзывчивость интерфейса и скорость загрузки.

Разумеется такой подход хорошо применим лишь к single-page веб приложениям так как имеет один существенный недостаток - отсутствие обратной связи через URL и отсутствие историчности. Однако данный вопрос может быть легко решен через клиентские JS фрэймвоки.

About

C# self-hosted configuration manager

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published