> For the complete documentation index, see [llms.txt](https://docs.mikopbx.com/mikopbx/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mikopbx.com/mikopbx/other/changelog/mikopbx-2026.2.118.md).

# MikoPBX 2026.2.118

Выпуск MikoPBX 2026.2.118 включает крупный набор исправлений безопасности, улучшения SIP-регистрации, Fail2Ban и Firewall, обновления работы со звуковыми файлами, S3-хранилищем, CDR, модулями и консольным меню. Также повышена стабильность фоновых процессов, REST API и веб-интерфейса.

### Усиление безопасности

Закрыт ряд уязвимостей в PBXCoreREST и веб-интерфейсе: auth bypass, XSS, RCE, path traversal, arbitrary file write и command injection. Усилен Lua WAF: теперь проверяются исходный путь запроса до rewrite, query string, POST body и double-encoded payloads.

Добавлены CSP и `X-Frame-Options`, убран wildcard CORS, включён HTTP/2. Исправлена защита от Zip Slip при установке модулей. Ограничение HTTP-запросов теперь учитывает выбранный уровень безопасности и не блокирует служебные `HEAD`-запросы к аудиофайлам.

Исправлена валидация скачивания firmware, усилена защита upload/patch-сценариев и путей к файлам. Для неизвестных API endpoint у авторизованных пользователей теперь возвращается `404`, а не `403`.

### Важные изменения совместимости

Флаги `UseWebRTC` и `UseSipTls` удалены из настроек PBX. TLS-транспорт теперь включается автоматически при наличии сертификата. Если внешняя интеграция отправляет эти поля через REST API в `PUT`-запросах, API вернёт HTTP `422`.

Поле whitelist в старой форме настроек Fail2Ban больше не используется для редактирования доверенных адресов. Все доверенные адреса теперь управляются через отдельную вкладку **Доверенные адреса**.

Ключ языка `en_GB` больше не поддерживается. При обновлении существующие установки автоматически переключаются на `en`.

### Авторизация и сессии

Исправлены проблемы авторизации, которые могли приводить к циклическому refresh, ошибке `500` при некорректной cookie и неправильной обработке перехода на `/session/index`.

Опция **Remember me** теперь корректно сохраняет сессию между перезапусками браузера. Уведомление о входе в систему содержит IP-адрес клиента.

### Firewall Bouncer и Fail2Ban

Добавлен Firewall Bouncer API для внешних систем защиты, включая CrowdSec-LAPI endpoint. MikoPBX публикует список заблокированных адресов, а внешний агент может применять эти блокировки на уровне хоста или облачного firewall. Это особенно полезно для Docker-окружений, где встроенный firewall контейнера не всегда может защитить внешний сетевой периметр.

В разделе Fail2Ban появилась вкладка **Доверенные адреса** с массовой вставкой, живым поиском и автоматическим списком адресов из правил firewall. Whitelist теперь корректно поддерживает CIDR и IPv6, а wildcard-сети `0.0.0.0/0` и `::/0` отклоняются, чтобы случайно не открыть доступ всему интернету.

<figure><img src="/files/8aebUCxMeGyyd4TjwynH" alt=""><figcaption><p>Вкладка доверенных адресов Fail2Ban</p></figcaption></figure>

Список заблокированных адресов теперь сортируется по реальной дате блокировки, а не как текст. Время блокировки и истечения бана отображается в часовом поясе сервера, а в подсказке дополнительно показывается время браузера.

Применение ban/unban стало быстрее: вместо полной перезагрузки PJSIP используется лёгкая перезагрузка ACL-модуля.

### Улучшения SIP-провайдеров

Добавлена поддержка SRV-based SIP registration. В интерфейсе корректно отображается статус регистрации через SRV, а порт `0` теперь показывается как пустое поле.

TLS-транспорт для SIP-клиентов теперь работает как отдельный endpoint рядом с UDP/TCP и WebRTC и появляется автоматически при наличии сертификата. Исправлена ситуация, когда TLS-соединения разных SIP-провайдеров могли путаться между собой, если разные hostname резолвились в один IP-адрес.

<figure><img src="/files/QOnoiXPDtfqlvu4FmPAs" alt=""><figcaption><p>Параметры подключения SIP-клиента с UDP/TCP, TLS и WSS</p></figcaption></figure>

Hostname resolver для PJSIP identify теперь работает через Redis cache и отдельный worker, поддерживает `additionalHosts` и более строго проверяет доверенные источники. Hostname-адреса в дополнительных хостах SIP-провайдеров проходят через тот же DNS-кеш, что и основной адрес, поэтому провайдеры со сменными IP не теряют связь после изменения DNS.

Исправлена дедупликация `uniqid` для провайдеров и peers в `pjsip.conf`. Валидация SIP login теперь допускает символ `*`. Добавлена поддержка CIDR в настройках провайдеров и более понятные ошибки валидации host/subnet. Для старых провайдеров добавлена подсказка по `LEGACY_CP1251` и загрузка `res_legacy_cp1251.so`.

### Внутренние номера, очереди и маршрутизация

Для каждого сотрудника добавлен отдельный переключатель **Call Waiting**. Это позволяет включать или отключать ожидание второго вызова индивидуально для внутреннего номера.

Добавлена новая стратегия очередей `linear_progressive`, при которой сотрудники подключаются к обзвону постепенно.

<figure><img src="/files/NyPMZFv9eA654yQuf7oJ" alt=""><figcaption><p>Стратегии дозвона в очереди вызовов</p></figcaption></figure>

Исправлены ошибки dialplan: маршруты с пустым `providerid` больше не ломают генерацию конфигурации, `Q_TIMEOUT` не вызывает лишние ошибки для неочередных вызовов, а настройка записи разговоров сотрудника корректно применяется к исходящим вызовам и вызовам через очереди.

### CDR и записи разговоров

Исправлена работа CDR: добавлено получение записи по id, поддержка `linkedid`, восстановление при отсутствующих CDR-таблицах, включён WAL и оптимизирована очистка старых записей.

Очистка старых CDR-записей теперь выполняется небольшими порциями с тайм-аутом 5 секунд, а не блокирует систему на больших базах. При первом запуске записи старше 360 дней могут очищаться постепенно. На больших базах процесс может занять несколько минут, при этом новые звонки продолжают записываться.

После неудачного attended transfer теперь корректно возобновляется `MixMonitor`. Исправлена обработка DID в сгруппированных CDR-записях и защита данных CallerID при отображении в таблицах.

### Модули

Добавлен серверный механизм массового обновления модулей. В веб-интерфейсе появился сценарий обновления всех модулей с предварительным просмотром changelog и подтверждением установки. Администратор может выбрать галочками, какие модули обновлять, а какие пропустить.

<figure><img src="/files/N1Bn3aAR7Qrsrbxy7w97" alt=""><figcaption><p>Управление модулями и маркетплейс</p></figcaption></figure>

Установка модулей стала безопаснее: исправлена Zip Slip-уязвимость, улучшена обработка ошибок, добавлена поддержка необязательных полей `developer` и `support_email` в `module.json`.

### Звуковые файлы и языковые пакеты

Звуковые файлы Asterisk перенесены в writable storage через symlink, а базовые файлы теперь хранятся отдельно в `sounds-base`. Это предотвращает проблемы с read-only разделами.

Добавлена поддержка Opus, WebM preview, `.wav16` и `.wav48`. WebM используется как формат предпрослушивания в браузере, при этом сохраняется качество исходной записи. Если конвертация через ffmpeg завершилась ошибкой, загруженный файл больше не удаляется.

Система языковых пакетов стала проще: стандартные Asterisk-коды языков автоматически сопоставляются с web-кодами, а специальные случаи вроде `zh-cn → zh_Hans` обрабатываются отдельно.

### S3 и хранилище

Для S3 добавлены provider presets и explicit path-style flag. В веб-интерфейсе появились подсказки по preset-провайдерам, а тестовая инфраструктура расширена стендами MinIO и Garage.

<figure><img src="/files/bjksfv19NL5Yfl3o6cP0" alt=""><figcaption><p>Настройки облачного хранилища S3</p></figcaption></figure>

Добавлен бенчмарк дисковой производительности для проверки чтения и записи прямо на странице хранилища. Результат можно обновить кнопкой без перехода в консоль.

<figure><img src="/files/9xOywzWyQb4eaulAuM93" alt=""><figcaption><p>Информация о хранилище и бенчмарк диска</p></figcaption></figure>

Улучшены проверки свободного места, исправлено определение `sys_disk`, создание swap и ложное предупреждение о неподключённом диске в Docker. SQLite-бэкап теперь создаётся как binary snapshot, что устраняет риск смешивания данных между таблицами при резервном копировании.

### Веб-интерфейс

Обновлены интерактивные подсказки: field-info tooltip теперь строится через `TooltipBuilder`, корректно отображает апострофы и лучше позиционируется в сложных формах. Подсказки под полями ввода стабильнее работают на всех страницах и не исчезают при наведении.

Исправлены 404/error UX, несколько JS null-dereference crashes, работа Fullscreen API на iPhone WebKit, выбор языка и отображение времени с учётом timezone сервера.

В карточке внутреннего номера появилась подсказка подключения SIP-клиента под полем `Secret`.

### Консольное меню

Консольный мастер настройки сети теперь показывает единый экран сравнения изменений с текущими значениями в базе данных. Администратор видит только реально изменяемые поля и сразу подтверждает применение настроек.

Исправлено поведение, при котором review screen кратко появлялся и исчезал после очистки терминала. Добавлены более удобные DNS prompts и цифровые hotkeys. Мастер настройки сети пропускает запрос DNS-серверов, если сеть работает через DHCP и IPv6 выключен.

При обрыве SSH-сессии консольное меню теперь корректно завершается и больше не зависает с загрузкой CPU до 100%. Welcome banner теперь может показывать внешний host при работе за NAT.

### REST API и миграции

Исправлено сохранение очистки `networkfilterid` при REST `UPDATE/PATCH`. Переключение фильтра сети на **любой адрес** для менеджеров AMI, API-ключей и провайдеров теперь действительно очищает привязку к сетевому фильтру.

Настройка `ipv6_mode` теперь сохраняется корректно, даже если поле не передано в payload. Короткие пароли API-ключей теперь отклоняются с понятным сообщением об ошибке вместо молчаливого игнорирования.

Миграция статических маршрутов теперь понимает net-tools синтаксис `gateway <ip>` и интерфейс, указанный последним аргументом без `dev`. Перед миграцией базы очищается Redis metadata cache.

DHCP deconfig больше не очищает пользовательские DNS-настройки, а legacy-команды `route` заменены на `ip route`.

### Почта и уведомления

Добавлен переключатель `MailPlainText` для отправки писем в plain text формате. Исправлена синхронизация cache после изменения почтовых настроек.

<figure><img src="/files/cShPfhotGynUX2amvfUR" alt=""><figcaption><p>Настройки почты и уведомлений</p></figcaption></figure>

В уведомлениях о voicemail исправлено вложение записи. При ошибке регистрации лицензии отображается реальная причина вместо общего сообщения об отсутствии соединения.

### Стабильность системы

Улучшено управление worker-процессами: добавлена защита от нехватки памяти, размножения pool workers, restart storm при ENOSPC и зависших лишних процессов. При переполнении диска служебные процессы больше не уходят в бесконечный перезапуск.

Три monitor workers объединены в `WorkerStatusMonitor`. Обновлён Pheanstalk с 4.x до 8.x, исправлены socket-read fatal errors. Redis-подключения стали устойчивее, уменьшено количество reconnect. OPcache отключён для CLI workers, что снижает расход памяти.

REST worker теперь сбрасывает ORM state между задачами. Это повышает стабильность при большом количестве последовательных API-запросов. NATS теперь пишет stderr в лог вместо `/dev/null`.

### Тесты и инфраструктура

Добавлена BrowserStack arch matrix для проверки разных архитектур. Расширены regression tests для REST API, WAF, security, S3, CDR, sound conversion, workers, syslog и сетевых сценариев.

Добавлены тесты для `DnsResolver`, `ForwardedHeaderFilter`, bearer token parsing, WAF registry/exemptions, Redis provider, PID-файлов и signal handling.

## Известные проблемы

#### **Исправление: пропадает звук на H.323 бридже (ooh323) после обновления**

**Компонент:** `chan_ooh323` / H.323 бридж

**Симптом:** После обновления входящие H.323 звонки через `ooh323` теряют звук полностью. Приветствия в очередях и IVR-меню не слышны, хотя диалплан отрабатывает корректно и в консоли файлы как будто воспроизводятся. Отключение файрвола проблему не решает.

**Причина:** Изменение в обработке DTMF в данном релизе нарушает согласование медиапотока в драйвере канала `ooh323`.

**Обходное решение / Фикс:** В файле `ooh323.conf` установить:

```
dtmfmode=h245alphanumeric
```

Для пиров одного изменения в сниппете недостаточно — необходимо выгрузить полную конфигурацию пира через веб-интерфейс, изменить метод применения с **«добавить в конец»** на **«полная замена конфига»**, включив в него исправленное значение `dtmfmode`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mikopbx.com/mikopbx/other/changelog/mikopbx-2026.2.118.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
