Page tree
Skip to end of metadata
Go to start of metadata

HARD обрабатывает RADIUS-запросы, которые приходят на URL вида http://server/plugin/instance. plugin - соответствует одному из плагинов HARD, instance - экземпляр плагина. В системе может существовать несколько зкземпляров одного плагина, которые имеют различные настройки и соответствеено различные URL. Каждый экземпляр плагина имеет цепочку вызова (например plugins.base.main.call_stack) - список фильтров, которые будут выполнены до или после обработки запроса плагином.

Для плагина могут быть определены настройки по умолчанию - plugins.plugin.default, которые наследуются всеми экземплярами данного плагина. При необходимости настройки по умолчанию могут быть переопределены в секции plugins.plugin.instance конфигурационного файла.

Принцип обработки RADIUS-запросов :

  1. Поступает запрос на URL вида http://server/plugin/instance, по которому определяются соотвутствующие плагин и экземпляр.
  2. Выполняется поиск цепочки вызова в plugins.plugin.instance.call_stack, если такая цепочка не найдена, используется plugins.plugin.default.call_stack.
  3. Запрос последовательно обрабатывается фильтрами из цепочки вызова в прямом порядке. При этом некоторые фильтры могут завершить обработку запроса и сформировать ответ, без обращения к экземпляру плагина, например check_attr_before.
  4. Запрос обрабатывается экземпляром плагина и формируется ответ.
  5. Ответ последовательно обрабатывается фильтрами из цепочки вызова в обратном порядке.
  6. Ответ полученный после обработки последним фильтром, отправляется RADIUS-серверу.
  • No labels