diff --git a/README.md b/README.md index 6128666..e76a097 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ P.S. Возможно понадобится **Python 3.5** и выше из-з ## Содержание * [Установка](./docs/install.md) +* [Сервисы и API](.docs/services.md) * [Разработка расширений](./docs/dev.md) * [Сбор информации трафика по netflow](./docs/netflow.md) * [Работа с представлениями](./docs/views.md) diff --git a/abonapp/templates/abonapp/editAbon.html b/abonapp/templates/abonapp/editAbon.html index 7041082..1524d4c 100644 --- a/abonapp/templates/abonapp/editAbon.html +++ b/abonapp/templates/abonapp/editAbon.html @@ -112,7 +112,13 @@ {% if perms.abonapp.change_abon %}
-

{% trans 'Select the device' %}

+

+ {% if device %} + {% trans 'Device' %} + {% else %} + {% trans 'Select the device' %} + {% endif %} +

diff --git a/docs/services.md b/docs/services.md new file mode 100644 index 0000000..880958e --- /dev/null +++ b/docs/services.md @@ -0,0 +1,65 @@ +## Сервисы +— это скрипты которые, зачастую, оформлены в юниты systemd. +Сейчас есть такие сервисы: +* [dhcp_lever](#markdown-header-dhcp_lever) +* [dialing](#markdown-header-dialing) +* [telebot](#markdown-header-telebot) +* [monitoring_agent](#markdown-header-monitoring_agent) +* [periodic](#markdown-header-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* этот скрипт на периодичность, например, в пол часа. diff --git a/docs/views.md b/docs/views.md index 2c3c13e..8f4cffe 100644 --- a/docs/views.md +++ b/docs/views.md @@ -4,7 +4,7 @@ нет в поставке Django. Они связаны с особенностями реализации системы. * [Пагинатор](#markdown-header-пагинатор) -* [Сортировка по полям объектов из списка](markdown-header-сортировка-по-полям-объектов-из-списка) +* [Сортировка по полям объектов из списка](#markdown-header-сортировка-по-полям-объектов-из-списка) ### Пагинатор diff --git a/cron.py b/periodic.py similarity index 100% rename from cron.py rename to periodic.py diff --git a/systemd_units/djing.service b/systemd_units/djing.service index 15216ee..974cef8 100644 --- a/systemd_units/djing.service +++ b/systemd_units/djing.service @@ -3,7 +3,7 @@ Description=A job for djing [Service] Type=simple -ExecStart=/usr/bin/python3 cron.py +ExecStart=/usr/bin/python3 periodic.py WorkingDirectory=/srv/http/djing User=http Group=http