Версія 2.7.3 — велике оновлення: нова ліцензія, безпечне оновлення самого Asterisk без переустановки, автоматичний TLS для WebRTC і суттєве розширення REST API.
Ліцензія: перехід на GNU AGPL-3.0
PearlPBX2 більше не розповсюджується за PolyForm Shield License 1.0.0 — тепер це GNU Affero General Public License v3.0-or-later, визнана OSI відкрита ліцензія. Заборону на конкурентне використання скасовано, натомість діє мережевий copyleft: змінену версію, розгорнуту як мережевий сервіс, потрібно розкривати користувачам цього сервісу. Детальний розбір — в окремому пості про зміну ліцензії.
Оновлення Asterisk без переустановки: update-asterisk.sh
До цього релізу зміна asterisk_version в ansible/group_vars/all.yml нічого не робила на вже встановленому
хості — блок збірки в ролі asterisk запускався лише за відсутності /usr/sbin/asterisk. Новий
update-asterisk.sh (роль asterisk_update) закриває цю прогалину: робить бекап /etc/asterisk, бінарників,
модулів і /var/lib/asterisk у позначений часом каталог з журналом у state.json; компілює нову версію, поки
поточний Asterisk продовжує обслуговувати дзвінки; плавно завершує активні виклики (core stop gracefully,
таймаут налаштовується, --no-wait для миттєвої зупинки); запускає лише make install, не чіпаючи конфігурацію,
звуки, логи, спул і записи; і перезапускає Asterisk та AMI-сервіси, перевіряючи версію після старту.
update-asterisk.sh --rollback повертає попередні бінарники з бекапу, -l/--list показує історію оновлень.
Автоматичні TLS-сертифікати для WebRTC (wss)
Роль nginx тепер сама видає робочий HTTPS/wss://-сертифікат при встановленні, без ручних кроків, у трьох
варіантах: якщо задано домен (--domain) — Let’s Encrypt через HTTP-01, сертифікат на 90 днів зі стандартним
поновленням; якщо домену немає, але є публічна IPv4-адреса — короткоживучий IP-сертифікат Let’s Encrypt (6 днів,
поновлюється кожні 4 години через systemd timer); якщо недоступне жодне з двох — самопідписаний сертифікат із
коректним subjectAltName (раніше лише CN, що сучасні браузери відхиляють). install.sh і
quickstart-install.sh отримали прапорці --domain/--email.
REST API тепер покриває майже всю адмінку
Цей реліз додає CRUD для ресурсів, які раніше редагувалися лише в Django admin: dialplan-контексти, extensions і
macros (/api/v1/dialplan-*), телефонні пристрої з ендпоінтом провіжну (/api/v1/phone-devices/<id>/provision/),
черги та учасники черг, таблиці маршрутизації, групи транків, SIP-транспорти, SIP-піри і SIP-користувачі, а
також обгортку над Apply Changes (GET /api/v1/config/preview/, POST /api/v1/config/apply/ з обов’язковим
mode: "soft"|"hard", лише для суперюзера). Поля secret/md5_cred/priv_key_file тепер приховані в
списочних відповідях (GET .../ повертає null) і показуються тільки при запиті конкретного об’єкта — це
закриває витік облікових даних при масовому вивантаженні списку.
Демо WebRTC-користувачі одразу після встановлення
seed_quickstart тепер створює транспорт transport-wss і десятьох webrtcuser1–webrtcuser10 з випадковими
паролями — свіжа інсталяція одразу має робочі акаунти для дзвінків із браузера.
Дрібніші, але відчутні зміни
- Встановлення
install.sh/quickstart-install.shтепер повністю неінтерактивне: firewall-роль більше не зупиняється на підтвердженні виявленого SSH-порту (раніше це могло підвісити запуск без TTY, наприклад черезansible-pullчи в CI) — порт лише логується. - WebRTC SIP-користувачі раніше отримували контекст на основі username, якого ніколи не існувало в
extensions.ael, тож вхідні дзвінки від них нікуди не потрапляли; тепер використовується таблиця маршрутизації користувача, як і для звичайних SIP-акаунтів. - Let’s Encrypt HTTP-01 валідація ламалася власним редіректом HTTP → HTTPS: запит до
/.well-known/acme-challenge/також підпадав підreturn 301, оскільки він виконувався до перевірки location. Редірект тепер обгорнутий уlocation /. - На Debian бракувало пакета
cron, тому щоденні бекапи й звіти, встановлені іншими ролями, просто не мали чим запускатися — на Ubuntu це працювало випадково, бо тамcronзазвичай уже стоїть. - Новий
python manage.py mail_reportщодня надсилає на пошту список найдовших дзвінків минулої доби з посиланнями на записи, заMAIL_REPORT_RECIPIENTS. - Валідатор AEL dialplan тепер перевіряє цілі
goto/Goto()— ранішеgoto +0681231231,1;проходив веб-валідацію, але Asterisk відхиляв його при компіляції dialplan.