Browse Source

allow multiple delivered subnets

devel
bashmak 8 years ago
parent
commit
ee9ee7d5b9
  1. 15
      djing/global_base_views.py
  2. 1
      djing/local_settings.py.template
  3. 17
      docs/install.md

15
djing/global_base_views.py

@ -79,10 +79,17 @@ class AllowedSubnetMixin(object):
Return 403 denied otherwise. Return 403 denied otherwise.
""" """
ip = IPAddress(request.META.get('REMOTE_ADDR')) ip = IPAddress(request.META.get('REMOTE_ADDR'))
if ip in IPNetwork(API_AUTH_SUBNET):
return super(AllowedSubnetMixin, self).dispatch(request, *args, **kwargs)
else:
return HttpResponseForbidden('Access Denied')
if type(API_AUTH_SUBNET) is str:
if ip in IPNetwork(API_AUTH_SUBNET):
return super(AllowedSubnetMixin, self).dispatch(request, *args, **kwargs)
try:
for subnet in API_AUTH_SUBNET:
if ip in IPNetwork(subnet):
return super(AllowedSubnetMixin, self).dispatch(request, *args, **kwargs)
except TypeError:
if ip in IPNetwork(str(API_AUTH_SUBNET)):
return super(AllowedSubnetMixin, self).dispatch(request, *args, **kwargs)
return HttpResponseForbidden('Access Denied')
class OrderingMixin(object): class OrderingMixin(object):

1
djing/local_settings.py.template

@ -52,6 +52,7 @@ ASTERISK_MANAGER_AUTH = {
API_AUTH_SECRET = 'your api secret' API_AUTH_SECRET = 'your api secret'
# Allowed subnet for api # Allowed subnet for api
# Fox example: API_AUTH_SUBNET = ('127.0.0.0/8', '10.0.0.0/8', '192.168.0.0/16')
API_AUTH_SUBNET = '127.0.0.0/8' API_AUTH_SUBNET = '127.0.0.0/8'
# Company name # Company name

17
docs/install.md

@ -211,6 +211,23 @@ plugin=python3
**ASTERISK_MANAGER_AUTH** — Данные для управления АТС [Asterisk](https://www.asterisk.org/), пример заполнения есть в *djing/settings_example.py*. **ASTERISK_MANAGER_AUTH** — Данные для управления АТС [Asterisk](https://www.asterisk.org/), пример заполнения есть в *djing/settings_example.py*.
**API_AUTH_SECRET** — Секретное слово для безопасной передачи комманд от скриптов.
Содержимое данных можно увидеть, но нельзя изменить. Это нельзя применять лоя передачи паролей,
секретных номеров, но вполне подходит для защищённого управления. Безопасность гарантируется хеш суммой
__sha256__. то секретное слово должен знать биллинг в конфиге, и доверенный скрипт на примере *agent/monitoring_agent.py.py*
Позаботьтесь о том чтоб скрипт нельзя было просто так прочитать, или вынесите секретное слово куда-то. Если кто-то лишний узнает
его то ваша система будет под угрозой.
**API_AUTH_SUBNET** — Так же применяется для авторизации скриптов, но проверяет подсеть с которой была отправлена
комманда. Даже если скрипт будет знать секретное слово, но не будет находится в одной из доверенных
подсетей то в доступе будет отказано. Может быть строковым представлением подсети, например '127.0.0.1/8', или списком
подсетей в строковом представлении. Можно даже передать объект который на выходе при преобразовании в строку
даст подсеть.
**COMPANY_NAME** — Название вашей компании, будет отображаться в шапке сайта в административной части
и в личном кабинете абонента.
**TELEGRAM_BOT_TOKEN** — Когда вы включите оповещение через телеграм то вам сюда.
#### Создание БД #### Создание БД

Loading…
Cancel
Save