В новой версии MikoPBX мы провели ряд улучшений интерфейса и форм, позволяющих администрировать сервер с таблетов или даже мобильных телефонов. Для этого проверили работу форм в разных разрешениях, сделали боковое меню динамическим.
Если экран небольшой, то меню прячется, также скрываются необязательные поля в таблицах.
В коде MikoPBX сделано много изменений для возможности управлять правами доступа к разделам системы и скрывать/показывать элементы формы, пункты меню и кнопки. Добавлена возможность множественной авторизации и авторизации с помощью внешних модулей. В частности, реализован вход в систему с использованием доменного логина и пароля.
Подробнее про модуль управления доступом можно почитать в его документации.
Новый модуль синхронизации с доменом позволяет выполнить двухсторонний обмен данными о сотрудниках и их мобильных и внутренних номерах с MikoPBX. Модуль в автоматическом режиме выполняет синхронизацию данных, позволяя поддерживать информацию в домене в актуальном состоянии, а при приеме на работу нового сотрудника, он автоматически загружается в телефонную систему с присвоением свободного номера.
Подробнее про модуль синхронизации с доменом можно почитать в его документации.
В новой версии MikoPBX расширено API для управления интерфейсом, реализована возможность при установке дополнительных модулей менять веб интерфейс существующих форм, добавлять вкладки, кнопки и поля ввода.
Например, для модуля группы пользователей реализована возможность управлять группой прямо из формы сотрудника.
Или управлять правами доступа и данными авторизации сотрудника прямо из его карточки.
В исходном коде MikoPBX много изменений и улучшений. Привели описания классов, методов и функций к лучшим практикам разработки на JS и PHP. Навели порядок, сложные классы разбиты от более простые, некоторые алгоритмы переписаны для асинхронной работы в фоне.
В систему добавлены фоновые задания, которые регулярно проверяют сложность паролей SIP, AMI и пароли доступа в систему.
Доработана форма общих настроек для ввода SSH и пароля системного администратора, для предотвращения возможности "подсмотреть" установленный ранее пароль.
В системных настройках появилась возможность устанавливать период хранения записей разговоров. Вы можете выбрать из нескольких стандартных значений или отключить удаление старых записей, тогда они будут удаляться только если на диске для хранения останется меньше 500 мегабайт, и будут удаляться записи, начиная с самых старых.
Установка MikoPBX внутри Docker контейнера - это один из популярных способов установки. В новом релизе проведена оптимизация веб интерфейса и консольного меню, скрыты пункты меню, которые не используются при установке в контейнер. Оптимизирована работа настроек сети.
Теперь можно указать внешний адрес системы, если используется сложная топология сети с пробросом портов в публичные адреса на систему развернутую внутри периметра и установленную внутри Docker контейнера. Ранее эта настройка не работала, при установке в контенер.
Существуют сценарии, когда нужно выполнить более сложные модификации системных файлов, чем простое добавление текста в конец конфигурационного файла. Например, нужно выполнить переопределение параметров PJSIP учетных записей, но хочется сохранить возможность настройки системы через веб интерфейс.
Реализован новый подход к кастомизации. Можно описать bash скрипт, который будет выполняться каждый раз после того, как система сформирует конфигурационный файл. В итоге интегратор сможет делать очень тонкие изменения конфигурационных файлов без разработки дополнительных модулей.
Например, мы хотим поменять занчение max_contacts у всех сотрудников, кроме одного.
Или мы хотим сделать включение внутрь диалплана в файле extensions.conf и добавить дополнительные строчки кода.
Этот инструмент добавляет гибкости в возможности кастомизации системы, но может привести к полной неработоспособности станции. Поэтому строго рекомендуем тестировать скрипты кастомизации на копии рабочей станции.
Результат работы скрипта видно на вкладке содержимое файла с изменениями после того, как система выполнит генерацию и скрипт. Для некоторых файлов это происходит в течение 1-2 минут, для некоторых требуется перезагрузка системы.
Механизм советов объединен с механизмом оповещений. При смене пароля SSH или при проблемах с дисками, администратор получит письмо на почту с указанием параметров MikoPBX, в которой произошел инцидент. Если ранее об ошибке можно было узнать только после логина в систему, то теперь оповещение отправляется автоматически.
В будущем в эту систему планируется добавить дополнительные метрики по средней загрузке процессора, использованию памяти и проблемам с регистрацией провайдеров IP-телефонии, а также критическим проблемам ядра системы.
Переписали код маркетплейса, объединили вкладки, часть модулей перенесена на backend.
Как вы уже знаете, MikoPBX — это бесплатная система без каких-либо ограничений. Мы не планируем менять эту политику, однако разработка требует ресурсов. В связи с этим, мы планируем монетизировать MikoPBX путем разработки и продажи собственных и партнерских расширений в нашем магазине приложений.
В последнем обновлении мы внесли некоторые изменения в интерфейс раздела, объединив управление модулями и регистрацию системы в виде отдельных вкладок в одном разделе. Платные и бесплатные модули теперь отмечены различными иконками в списке. Мы также оптимизировали код установки модулей и исправили все выявленные ошибки.
Под капотом MikoPBX скрывается множество изменений и улучшений, которые позволяют разрабатывать функциональные расширения. Если вы владеете языками программирования PHP и JS знаете как работает Asterisk, и у вас есть идеи по разработке новых модулей или вы уже активно разрабатываете такие модули, мы приглашаем вас присоединиться к каналу разработчиков в Telegram. Давайте развивать MikoPBX вместе!
Мы постепенно расширяем набор базовых переводов для веб интерфейса. В новом релизе добавили 2 новых языка и улучшаем остальные.
Большое спасибо нашим переводчикам за помощь:
Jochem Pluim
Secrieru Ion
Mikayil Isayev
Voutsas Theocharis
Everton Massen Goncalves
Если хотите помочь с переводом интерфейса MikoPBX и модулей, переходите по ссылке.
При настройке звонков, разработке новых приложений, анализе проблем иногда приходится анализировать системные логи, которые доступны в Web интферейсе MikoPBX, мы добавили кнопку очистки файла лога, которая позволяет быстро начать анализ с чистого листа.
В текущем релизе реализовано API для быстрого создания большого количества сотрудников, в процессе тестирования мы описали алгоритм генерации нового сотрудников в ChatGPT и провели нагрузочное тестирование по созданию 700 произвольных учетных записей на разных языках. На загрузку ушло около 1 минуты, тест прошел успешно.
Более подробно про этот кейс можно почитать по следующей ссылке.
Опубликован 16.05.2024
Обновление системных пакетов и библиотек
Ядро Linux и системные библиотеки обновлены до последних версий. В частности, ядро Linux обновлено до версии 6.6.1, Asterisk — до версии 20.7.0.
Все операции по установке и обновлению модулей перенесены в BackEnd. Добавлена детальная карточка для каждого модуля с возможностью выбора версии для установки, просмотра истории версий и описания изменений. Теперь можно не только обновлять модуль, но и выполнять откат к предыдущей версии.
Оптимизировано отображение ошибок при установке, обновлении, включении и выключении модулей. Теперь ошибки отображаются рядом с самим модулем в таблице, а не в заголовке маркетплейса.
Исправлена ошибка отображения системных сообщений на английском языке вместо выбранного в настройках интерфейса пользователя.
Добавлена возможность обновлять все модули одной кнопкой.
В предыдущем релизе был добавлен механизм, который автоматически отключает модули при возникновении серьёзных ошибок. Некоторые пользователи столкнулись с трудностями в определении причин отключения модулей. Теперь причина отключения отображается рядом с переключателем, а при нажатии на иконку можно увидеть текст ошибки.
Некоторые платные модули требовали гарантированной связи с сервером лицензий для работы. В текущем релизе реализован режим оффлайн, когда система запоминает последнее состояние лицензии и при отсутствии связи с сервером лицензирования использует закешированное состояние. Это уменьшает количество сбоев в работе с лицензируемыми модулями.
Унифицирован механизм автоматической настройки MikoPBX при установке в облаках, обновлены инструкции для следующих окружений:
Добавлен механизм автоматического определения MTU при работе в облаках.
В серийную консоль после установки и полной загрузки выводятся параметры для авторизации.
Ранее после установки система продолжала опрашивать окружение при каждой перезагрузке на наличие облака для автоматической настройки. Теперь после успешной установки и изменения любых системных настроек, облачный провижинг отключается.
Диск для хранения при установке в облаке подключается автоматически, что удобно, так как нет необходимости использовать SSH консоль при разворачивании нового образа.
При установке в облака автоматически добавляется SSH пользователь с правами root и произвольным именем, обычно устанавливаемым в настройках инстанса. При необходимости имя пользователя можно изменить в основных настройках системы.
После установки в облако для входа в веб-интерфейс используется пользователь admin и пароль, равный уникальному идентификатору инстанса. При первой авторизации система потребует сменить этот пароль.
Полностью обновлена инструкция по установке и обновлению MikoPBX в контейнер Docker.
Добавлен пример автоматического развертывания нескольких контейнеров на одном хосте, описан вариант обхода ограничений Docker на проброс большого диапазона RTP-портов. Убрано искусственное ограничение на работу с ядром 5+, если контейнер запускается и работает, значит всё хорошо. Добавлена возможность установки множества параметров MikoPBX через переменные окружения, можно установить параметры сети, имя и пароль администратора, SSH-ключи, SSL-ключи для корректной работы HTTPS и многое другое.
Ранее для защиты от подбора использовался механизм fail2ban, который автоматически блокировал IP-адрес злоумышленника. При настройках по умолчанию достаточно было ввести 3 раза неправильный пароль, чтобы система перестала отвечать на запросы из браузера. Если же активная защита была отключена, то можно было бесконечно подбирать пароли.
В новой версии используется комбинированный механизм.
При вводе неправильного пароля, система запоминает IP-адрес и считает попытки. В случае ввода неправильного пароля более 10 раз в течение 5 минут, форма ввода пароля исчезает, а вместо неё отображается информационное сообщение.
В случае если подбор продолжается автоматизированным способом, через REST запросы система блокирует IP-адрес злоумышленника для HTTP-интерфейса на 14 попытке.
Добавлено сохранение состояния, сортировки и текущей страницы в списке сотрудников. Оптимизированы механизмы работы проверки SIP-паролей на безопасность для сокращения нагрузки на систему.
Реализован механизм автоматической подстройки количества строк на странице в зависимости от размера экрана и разрешения.
Оптимизирована форма настройки, добавлена возможность разрешать действие command для учетной записи менеджера.
Теперь все необходимые настройки системы, фаервола и запуск агента выполняются автоматически вместе со стартом модуля. На форму модуля вынесен код конфигурационного файла для его удобного редактирования. При изменении номера порта в конфигурационном файле Zabbix, он автоматически передается в раздел настройки Firewall для возможности управления доступом к этому порту на уровне подсетей.
Из основной поставки исключен бинарник zabbix_agent, теперь он поставляется в составе отдельного модуля.
В MikoPBX исправлена ошибка, при которой иногда после авторизации не происходил автоматический редирект на выбранную в модуле страницу.
В модуле описаны и сгруппированы права для всех доступных на сегодняшний день модулей расширений, для удобного администрирования.
Добавлен механизм разделения списка пользователей на страницы, чтобы было удобно администрировать фильтры записей разговоров и права доступа сотрудников. Добавлена сортировка по выбранным учетным записям в фильтре.
В форме настройки добавлены вкладки, в таблице заблокированных адресов появилась возможность сквозного поиска. Заблокированные адреса и причины блокировки сгруппированы по IP-адресу в одну строку.
Сообщения модуля теперь записываются в собственные файлы логов.
Добавлена возможность создавать копию провайдера и настроек маршрутизации одним кликом по иконке в таблице.
Это новая функция, можно добавить ссылку на календарь и использовать его в качестве источника для нерабочего времени. Просто установите в вашем календаре периоды со статусом занято и все звонки в эти периоды будут отправляться по маршруту нерабочего времени.
Переработан механизм работы правил нерабочего времени. Теперь каждое правило обрабатывается в изолированном контексте. Исправлены ошибки в работе при ограничении нерабочего времени по провайдерам (входящим маршрутам).
При обновлении системы реализован механизм получения скриптов обновления из нового образа, что позволяет выполнять корректное обновление системы, даже если в предыдущих релизах были найдены ошибки в этой подсистеме.
Реализовано дублирование всех сообщений в процессе обновления в серийную консоль, что позволяет логировать процесс или следить за обновлением в реальном времени в том случае, когда установка была выполнена в систему, у которой нет доступа к привычной графической консоли. В частности в случае установки в облаках.
Добавлен таймер на загрузку с LiveCD, при установке системы, по аналогии с установщиком Windows, появляется вопрос на загрузку с диска. Часто возникали проблемы у клиентов после установки, когда диск не извлекался автоматически и система постоянно грузилась в режиме восстановления.
Оптимизирована работа с NVMe дисками, предыдущий релиз не поддерживал установку на такие диски.
При выборе пункта меню - установка с удалением всех настроек, в прошлом релизе это не срабатывало корректно и после старта, система восстанавливалась из бекапа автоматически. Теперь происходит не только форматирование системного раздела, но и диска для хранения данных.
В новой версии в настройки сетевого интерфейса добавлены отдельные параметры для внешних SIP и SIP_TLS портов, с которых осуществляется проброс портов на сетевом маршрутизаторе. Добавлена справочная информация с списком текущих портов, которые необходимо пробросить на маршрутизаторе при включении поддержки NAT.
Добавлена опция, которая позволяет обновлять значение IP-адреса маршрутизатора выполнением запроса к внешнему ресурсу при загрузке системы. Это позволяет исключить проблемы при установке в облака, когда окружение облака не передает информацию об IP-адресе виртуальной машины.
Постепенно расширяем количество доступных языков в интерфейсе, в этом релизе добавлен тайский. Большое спасибо нашим переводчикам.
Если хотите помочь с переводом интерфейса MikoPBX и модулей, переходите по ссылке.
В журнале звонков добавлен механизм автоматической подстройки размера списка под размеры экрана.
Реализована автоматическая очистка записей в журнале истории вызовов, согласно настройке удаления старых записей. Ранее удалялись только звуковые файлы.
В карточке провайдера добавлено поле для хранения важной информации, например номер аккаунта, адрес личного кабинета, номер договора провайдера, список используемых номеров телефонов и т.д.
В правилах входящей маршрутизации добавлена возможность перевода вызова на воспроизведение звукового файла.
Реализована возможность автоподъема при originate для софтфонов MicroSIP и Telephone.
В расширенных настройках провайдера теперь можно указывать параметры DIAL_COMMAND.
Добавлен лог CLI-команд Asterisk в файл на диске для хранения.
Для авторизации SSH-сессии по ключу реализована поддержка подписи по стандарту ed25519.
DHCP-клиент поддерживает получение списка кастомных Route-маршрутов в параметрах staticroutes.
В предыдущей версии некоторые клиенты сталкивались с проблемой зависающих каналов, в результате чего без перезагрузки Asterisk было невозможно дозвониться до некоторых сотрудников. Теперь канал будет сбрасываться, если в течение 30 секунд не поступает никаких RTP-пакетов.
В предыдущей версии некорректно работала переадресация на сервисные номера, такие как голосовая почта, сигнал занято, переадресация на сотрудника по DID, завершение вызова.
В некоторых случаях при авторизации появлялась ошибка Crypt() алгоритма при использовании простых паролей.
По умолчанию для очереди вызовов было установлено ограничение ожидания 300 секунд, без отображения этого параметра в интерфейсе, что приводило к неожиданному сбросу вызова, висящего в очереди более 5 минут.
Иногда запись разговора не продолжалась после успешной переадресации.
Оптимизирован механизм удаления временных файлов, иногда это приводило к зависанию системы при загрузке.
Исправлена ошибка выбора транспорта для PJSIP-протокола, которая приводила к неработоспособности канала.
Принципиально переработали подход к обновлению через img файл. Такой вариант обновления срабатывал в случае:
Обновление online
Обновление с использованием локального файла img
Ранее обновление выполнялось по следующему алгоритму:
Загрузка файла img на АТС
Завершение активных процессов
Отключение дисков (umount)
Запись файла обновления на диск (dd)
Часто проблемы возникали на 3ем этапе. Система отказывалась отключать диск, даже если уже не использовала его ресурсы. В итоге, возникали проблемы, данные могли быть потеряны.
В релизе 2022.3.15 был добавлен механизм предварительного "снэпшота" системных разделов, что позволяло восстановить систему из резервной копии.
В релизе 2023.1.223 мы изменили алгоритм:
Загрузка файла img на АТС
Перезагрузка АТС
Снэпшот системного диска
Запись файла обновления на диск (ДО подключения дисков)
Кроме того, мы реализовали механизм сохранения резервной копии базы данных настроек АТС на storage диск. При модификации настроек будет создаваться резервная копия базы данных по пути: /storage/usbdisk1/mikopbx/backup/db
в каталоге будут храниться последние 5 версий:
Это должно повысить отказоустойчивость, и расширить возможности восстановления системы при возникновении сбоев.
Повысили версию fail2ban до 1.0.2.
Переработали механизм блокирования IP адресов.
В ранних релизах, если обнаружены попытки подбора паролей, то доступ с IP адреса блокировался ко всем портам АТС.
В релизе 2023.1.223 механизм был переработан. Если подбор паролей происходит к порту 5060, то доступ будет блокироваться только к 5060+диапазон RTP. Доступ к web интерфейсу закрыт не будет.
Это может оказаться полезным, когда АТС находится в облаке. Мы исключаем вариант блокирования доступа к станции при не намеренном вводе не корректного пароля. Останется возможность зайти в web и снять блокировку.
Были переработаны правила iptables
в использованием -m multiport
, что позволило сделать более понятными выводе iptables -L -n
.
Расширены возможности кастомизации очередей. Пример dialplan очереди:
Теперь есть возможность через кастомизацию системных файлов описать контекст:
В этом контексте можно выполнить произвольные действия перед тем, как вызов будет направлен на очередь. Воспроизведите медиа файл, установите дополнительные переменные канала, отправьте email ответственному.
Исправлен ряд ошибок записи и возобновления записи разговоров.
Теперь в карточке сотрудника есть возможность запретить запись разговоров:
Все диалоги, в которых будут участвовать внутренний и мобильный номера сотрудника записаны НЕ будут. Это может быть полезно для Директора и прочих руководителей компании.
Появилась возможность отключить запись всех внутренних разговоров. Для этого следует отключить флаг в разделе "Система" - "Общие настройки" - "Запись разговоров" - "Запись внутренних разговоров"
Новый интерфейс отображения списка нерабочего времени: Он стал более информативным и компактным.
Ранее, чтобы описать нерабочее время с 18:00 по 8:00 было необходимо создать два правила 00:00 - 08:00 и 18:00 - 23:59. Теперь возможно указать одно правило 18:00 - 08:00:
Это позволит сократить количество правил и навести порядок.
Нас часто просили предоставить возможность настроить разное расписание работы для разных отделов компании. Теперь это стало возможно.
В карточке правила нерабочего времени появилась опция "Применять только к определенным входящим маршрутам". Теперь правило можно привязать к конкретным входящим маршрутам. Именно эта опция позволит создавать более гибкие правила, которые будут действовать на конкретных подразделения компании.
Пример:
В данном примере правило будет действовать только для одного номера компании.
В журнал истории звонка добавлена кнопка перехода к логу звонка:
Такой лог можно передать в техническую поддержку для анализа поведения АТС.
Расширены возможности отбора в журнале лога:
Можно ввести несколько подстрок, разделенных символом &, в итоге будет выведен лог, содержащий все перечисленные подстроки.
В сборку asterisk добавлены модули для подключения к Homer. Модули можно настроить через кастомизацию системных файлов.
Проведена большая работа над ошибками. Считаю эту версию стабильной. Проверено из под Ubuntu, Debian, тут основное требование - Linux 5 версии.
Новые инструкции
Перечислены лишь наиболее важные изменения. Полный список можно найти в описании релиза.
Мы стараемся сделать MikoPBX стабильной, простой, понятной в настройке и сопровождении. Надеемся, что она станет надежным инструментом в вашей компании.