## Сервисы — это скрипты которые, зачастую, оформлены в юниты systemd. Сейчас есть такие сервисы: * [dhcp_lever](#dhcp_lever) * [dialing](#dialing) * [telebot](#telebot) * [monitoring_agent](#monitoring_agent) * [periodic](#periodic) ### dhcp_lever Этот скрипт не очень похож на сервис, т.к. выполняется при каждом запросе от DHCP сервера. Работа DHCP организована так: - Запрос приходит от абонента с опцией-82, далее с помощью dhcp-relay направляется на dhcp сервер где и находится этот скрипт - ISC-DHCP-server выполняет этот скрипт, передавая параметры в таком порядке: действие, ip адрес для абонента, мак адрес абонента, мак адрес свича через которые получен запрос, порт свича с которого пришёл запрос. - Биллинг оповещается через *http get* запрос о событии в dhcp сервере - По мак адресу свича и его порту ищется абонент. - Если он найден то проверяется установлен-ли флаг "Динамические настройки по dhcp" в блоке "Устройство" на странице абонента. - Если флаг динамических настроек есть то проверяется совпадает ли новый ip с dhcp сервера с тем что есть у абонента, и если он совпадает то ничего не происходит. В противном случае обновляем информацию об абоненте на сервере доступа к сети (NAS - Network Access Server). Беспокоится о том что не будет обновлена другая информация не нужно, об этом позаботится [periodic](#periodic). А если вам нужно немедленно обновить абонента без ожидания то просто нажмите на кномку *Сохранить* на странице абонента. ### dialing Этот сервис общается с автоматической телефонной станцией на основе [Asterisk](https://www.asterisk.org/). Слушает в ожидании событий и отправляет комманды в asterisk. Пока умеет только смс, слушает входящие и отправляет те что были созданы из web интерфейса. **Настройка** — В самом скрипте нужно указать параметры досупа к asterisk, секретное слово, и адрес web сервера биллинга. Секретное слово *API_AUTH_SECRET* должно совпадать с тем что в настройках биллинга. Но аккуратно, если кто-то узнает это секретное слово то безопасность будет под угрозой, ведь зло настроенный человек или бот сможет выполнять удалённо комманды через api. Правда это если он находится в доверенной подсети, хотя адрес отправителя, как известно, можно подменить. Так что поставьте на этот скрипт ограниченные для чтения права. ### telebot Этот сервис разговаривает с вами когда вы пишете в Telegram канал биллинга. **Настройка** — В настройках биллинга укажите *telegram bot token* в директиве *TELEGRAM_BOT_TOKEN*. Это вся настройка. Теперь запустите его с помощью юнита *djing_telebot.service*, предварительно скопировав его в папку с юнитами systemd. ### monitoring_agent Это тоже не совсем сервис, как и [dhcp_lever](#dhcp_lever) он связывает систему мониторинга с биллингом. Сейчас работает с Nagios, но изменить его для любой другой системы мониторинга совсем не сложно, достаточно подправить параметры приходящиие от этой системы. Каждый раз когда в биллинге происходит событие, Nagios дёргает этот скрипт и он даёт знать биллингу какое устройство не в сети или появилось после сбоя. Дальше биллинг на основе этого посылает оповещения ответственным за участок на котором находится оборудование и выставляет статусы на карте и в списке устройств. **Настройка** — Для работы этому скрипту так же надо передать секретное слово биллинга, так что тоже рекомендую ограничить права на чтение. Кроме этого надо указать адрес web сервера биллинга. ### periodic Периодически запускается чтоб проверить совпадает-ли информация в биллинге с тем что находится в NAS. Завершает закончившие действовать услуги, проводит периодические платежи. Просто укажите в cron или *systemd.timer* этот скрипт на периодичность, например, в пол часа.