Релиз XMPP/Jabber сервера Prosody 0.11.0
![Релиз XMPP/Jabber сервера Prosody 0.11.0](http://img1.newsmir.info/img/p/2/1495/1494310.jpg)
Представлен первый релиз новой стабильной ветки XMPP-сервера Prosody 0.11, в которой представлено более 2000 изменений. При разработке сервера основное внимание уделяется простоте установки и настройки, низкому потреблению ресурсов и легкости расширения функциональности. Код проекта написан на языке Lua и распространяется под лицензией MIT.
Наиболее значительные улучшения в новой ветке коснулись модулей MUC и pubsub, которые реализуют одни из самых обширных расширений (XEP) стандарта XMPP. Предыдущие версии сервера уже довольно давно поддерживали MUC и pubsub, но предлагаемая реализация была довольно сильно усложнена. Со временем, для покрытия требуемой в XEP функциональности и улучшения масштабируемости назрела необходимость обновления и рефакторинга кода.
Основные изменения в Prosody 0.11:
- Улучшена работа чата. Переписан практически весь код с реализацией расширения MUC (Multi-User Conference). Переработка позволила проекту упростить добавление новых функций и улучшить масштабируемость MUC-сервисов (новая версия модуля MUC позволила сервисам, таким как Jitsi Meet, обеспечить работу с сотнями тысяч общих бесед);
- Переработаны конфигурационные диалоги, обеспечена более аккуратная компоновка настроек и использованы более понятные имена опций;
- Добавлена поддержка архивирования и загрузки ранее написанных сообщений в MUC (Multi User Chat) с использованием протокола XEP-0313 (MAM). При помощи данной возможности клиент, например, может отображать сообщения, которые были написаны в общей беседе, когда пользователь не был в онлайн;
- Обеспечена возможность резервирования имени пользователя, что позволяет предотвратить использование чужого имени, когда настоящий владелец не находятся в общей беседе. По умолчанию только владельцы / администраторы общих чатов могут осуществлять привязку имени при внесении пользователя в общую беседу. Модуль также предоставляет опцию, позволяющую пользователям самостоятельно регистрировать свои псевдонимы и становиться участниками;
- Улучшена реализация pubsub. В частности, добавлен код, отвечающий за сохранность узлов и элементов. Данные теперь могут храниться на диске, а не в оперативной памяти, и не теряться при перезапуске сервера. Реализована поддержка конфигурирования, узлов и управления принадлежностью, необходимых для расширенного контроля доступа. Также появилась поддержка "publish-options", которые позволяют клиентам безопасно публиковать элементы с возможностью надлежащего управления доступом. Написан новый модуль mod_pep_plus, в который были добавлены возможности pubsub, появившиеся после 2009 года. Модуль обеспечивает поддержку OMEMO в разговорах при общении с пользователями, не находящимися в адресной книге. Он также позволяет пользователям использовать PEP для хранения закладок и других данных;
- Осуществлен переход на новый формат vCard, определенный в спецификации XEP-0292. Новый формат также хранится в PEP, что позволяет использовать полноценные возможности управлению доступом (например, можно выбрать, общедоступен ли vCard или доступен только для контактов). Поддержка старого протокола vcard-temp перемещена в модуль mod_vcard_legacy и оставлена для обеспечения совместимости со старыми клиентами;
- В состав включены модули от сообщества, разработанные с целью увеличения времени автономной работы клиентов на мобильных устройствах. Клиенты, поддерживающие XEP-0352, такие как "Conversations", могут информировать сервер, когда приложение находится в фоновом режиме или экран телефона выключен. При помощи нового модуля mod_csi_simple сервер Prosody теперь может оптимизировать трафик, отключая отправку неважных данных. Например, может быть прекращена отправка постоянно передающихся по сети данных, таких как изменения статуса контакта и сообщения в чате, которые могут мешать переключению телефона в режим с низким энергопотреблением;
- Проделано много работы над внутренним асинхронным API и повышением его надежности. В состав включена экспериментальная поддержка асинхронных модулей аутентификации и хранения данных. В текущем выпуске новый API пока помечен как экспериментальный, но в дальнейшем он сможет использоваться для повышения производительности крупных публичных чат-серверов;
- Увеличено число автоматизированных тестов. Если предыдущие выпуски почти полностью тестировались вручную, то теперь реализован большой набор автоматизированных тестов, запускаемых после каждого изменения;
- Добавлен экспериментальный сетевой бэкенд на базе epoll. Новый бэкенд заметно меньше и проще реализации на базе libevent, но ограничен применением только в Linux.