Browse Source

Rename cron.py to periodic.py and fill documentation

devel
ns 8 years ago
parent
commit
4c369c886d
  1. 1
      README.md
  2. 8
      abonapp/templates/abonapp/editAbon.html
  3. 65
      docs/services.md
  4. 2
      docs/views.md
  5. 0
      periodic.py
  6. 2
      systemd_units/djing.service

1
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)

8
abonapp/templates/abonapp/editAbon.html

@ -112,7 +112,13 @@
{% if perms.abonapp.change_abon %}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">{% trans 'Select the device' %}</h3>
<h3 class="panel-title">
{% if device %}
{% trans 'Device' %}
{% else %}
{% trans 'Select the device' %}
{% endif %}
</h3>
</div>
<div class="panel-body">

65
docs/services.md

@ -0,0 +1,65 @@
## Сервисы
&mdash; это скрипты которые, зачастую, оформлены в юниты 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 интерфейса.
**Настройка** &mdash; В самом скрипте нужно указать параметры досупа к asterisk, секретное слово, и адрес web сервера
биллинга. Секретное слово *API_AUTH_SECRET* должно совпадать с тем что в настройках биллинга. Но аккуратно, если
кто-то узнает это секретное слово то безопасность будет под угрозой, ведь зло настроенный человек или бот сможет
выполнять удалённо комманды через api. Правда это если он находится в доверенной подсети, хотя адрес отправителя,
как известно, можно подменить. Так что поставьте на этот скрипт ограниченные для чтения права.
### telebot
Этот сервис разговаривает с вами когда вы пишете в Telegram канал биллинга.
**Настройка** &mdash; В настройках биллинга укажите *telegram bot token* в директиве *TELEGRAM_BOT_TOKEN*.
Это вся настройка. Теперь запустите его с помощью юнита *djing_telebot.service*, предварительно скопировав
его в папку с юнитами systemd.
### monitoring_agent
Это тоже не совсем сервис, как и [dhcp_lever](#dhcp_lever) он связывает систему мониторинга с биллингом. Сейчас работает
с Nagios, но изменить его для любой другой системы мониторинга совсем не сложно, достаточно подправить параметры
приходящиие от этой системы.
Каждый раз когда в биллинге происходит событие, Nagios дёргает этот скрипт и он даёт знать биллингу какое устройство
не в сети или появилось после сбоя. Дальше биллинг на основе этого посылает оповещения ответственным за участок на
котором находится оборудование и выставляет статусы на карте и в списке устройств.
**Настройка** &mdash; Для работы этому скрипту так же надо передать секретное слово биллинга, так что тоже рекомендую
ограничить права на чтение. Кроме этого надо указать адрес web сервера биллинга.
### periodic
Периодически запускается чтоб проверить совпадает-ли информация в биллинге с тем что находится в NAS.
Завершает закончившие действовать услуги, проводит периодические платежи.
Просто укажите в cron или *systemd.timer* этот скрипт на периодичность, например, в пол часа.

2
docs/views.md

@ -4,7 +4,7 @@
нет в поставке Django. Они связаны с особенностями реализации системы.
* [Пагинатор](#markdown-header-пагинатор)
* [Сортировка по полям объектов из списка](markdown-header-сортировка-по-полям-объектов-из-списка)
* [Сортировка по полям объектов из списка](#markdown-header-сортировка-по-полям-объектов-из-списка)
### Пагинатор

0
cron.py → periodic.py

2
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

Loading…
Cancel
Save