Сервер для взаимодействия с условной маршрутизацией

Требования

  • Linux;

  • Python 3.8+;

  • Свободный порт 9900.

Установка

Создайте дерикторию и перейдите в неё:

mkdir -p ~/extcontrol && cd ~/extcontrol

Скачайте и положите в созданную директорию файл externalcontrolserver.py.

python3 -m venv .venv
./.venv/bin/pip install aiohttp

Примечание

venv обязателен - на Ubuntu 22.04+ pip install в системный питон блокируется (PEP 668).

Настройка

Скрипт

В скрипте замените в переменной my_ip IP-адрес на адрес сервера в Вашей локальной сети.

Примечание

Можно указать 0.0.0.0, чтобы слушать на всех интерфейсах.

Настройка Firewall

Если ufw включён (grep ENABLED /etc/ufw/ufw.conf), сделайте команду:

sudo ufw allow from 192.168.0.0/16 to any port 9900 proto tcp

Настройки на АТС

Поле

Значение

URL

ws://<ваш_ip>:9900/ws/

Токен

wsdfrthyuiohkujyhtgrfd (переменная auth в скрипте)

Примечание

Слэш (/) в конце URL обязателен.

Запуск

cd ~/extcontrol
./.venv/bin/python externalcontrolserver.py

Проверка

С хоста АТС сделайте curl-запрос:

curl -o /dev/null -w "%{http_code}\n" http://<ваш_ip>:9900/ws/

Ответ

Значение

403

всё верно, сервер отвечает (заголовка нет — так и должно быть)

404

забыт слэш (/) в конце URL

timeout

какие-то проблемы в сети