Релиз XMPP (Jabber) сервера Prosody 0.11.0

Представлен первый релиз 0.11-ой стабильной ветки XMPP сервера Prosody с исправлениями более чем 2000 ошибок.


Основные изменения


Наиболее значительные улучшения коснулись модулей MUC и pubsub.


Вместе эти компоненты реализуют два из самых обширных расширений XEP стандарта XMPP, которые в настоящее время предоставляет протокол. Хотя предыдущие версии уже довольно давно поддерживали MUC и pubsub, оба они довольно сложны, и после первоначальной реализации стало понятно, что необходимо провести обновление и рефакторинг кода, чтобы увеличить покрытие требуемой XEP функциональности, улучшить структуру кода и масштабируемость решений.


Также было осуществлено много других изменений, улучшений, исправлений ошибок, и проведено работ над производительностью, которые вошли в этот выпуск.


Улучшения в работе чата


Наибольшая часть изменений в этом выпуске коснулась переписывания практически всего кода, касающегося MUC (Multi-User Conference). Этот амбициозный проект был начат несколько лет назад пользователем daurnimator, который разработал большую часть нового кода.


Хотя наиболее значимые изменения являются внутренними, это позволило проекту более легко добавлять новые функции и улучшать масштабируемость MUC-сервисов (эта версия модуля MUC позволяет работать многим сервисам с сотнями тысяч общих бесед, как например, Jitsi Meet).


Улучшенное конфигурирование


Форма конфигурации сервера была обновлена, обеспечивая более аккуратную компоновку и более удобные наименования параметров.
Диалоговое окно конфигурации общей беседы.


Архивирование сообщений


Была добавлена поддержка архивирования и подгрузки ранее написанных сообщений в MUC (Multi User Chat) с использованием протокола XEP-0313 (MAM). Это позволяет клиенту отображать сообщения, например, которые были написаны в общей беседе, когда пользователь отсутствовал онлайн.


Резервирование имени пользователя


Чтобы предотвратить путаницу, Prosody теперь может применять резервирование имён пользователей. Это предотвращает использование чужого имени, когда настоящий владелец не находятся в общей беседе. По умолчанию только владельцы / администраторы общих чатов могут осуществлять пере/назначение имени (при внесении пользователя в общую беседу), но модуль также может быть настроен так, чтобы пользователи могли регистрировать свои собственные псевдонимы и становиться участниками.


Протокол Pubsub


Рализация pubsub значительно улучшена в этом выпуске. Link Mauve добавил код, отвечающий за сохранность узлов и элементов, теперь данные могут храниться на диске, а не в оперативной памяти, и не теряются при перезапуске сервера.


Также была внедрена поддержка конфигурирования, узлов и управления принадлежностью, необходимых для расширенного контроля доступа, и, наконец, поддержку печально известных «publish-options», что позволяет клиентам безопасно публиковать элементы с возможностью надлежащего управления доступом.


PEP


Старый код PEP представляет собой отдельную ограниченную реализацию pubsub, которая реализовала все, что было нужно пользователями в 2009-ом году. Однако за эти годы все больше и больше функций pubsub были востребованы в PEP, благодаря своей большой востребованности. Поэтому стало очевидно, что в PEP необходимо добавить все функции pubsub и использовать уже имеющийся код.


Florian Zeitz начал эту работу, создав новый модуль «mod_pep_plus». Этот модуль теперь заменил исходный «mod_pep» и уже является реализацией PEP по умолчанию.


Это обеспечивает поддержку OMEMO при общении с пользователями, не находящихся в адресной книге, в разговорах и других клиентах. Он также позволяет пользователям использовать PEP для хранения закладок и других данных.


Новый формат vCard


Этот выпуск обеспечивает поддержку новой версии в спецификации vCard, описанной в XEP-0292, которая включает поддержку различных новых функций.


Новый формат также хранится в PEP, обеспечивая полный доступ к управлению доступом (например, можно выбирать, открыт ли ваш vCard или доступен только для контактов).


Немногие (если есть) клиенты в настоящее время поддерживают vCard4, но старый протокол vcard-temp по-прежнему поддерживается с помощью mod_vcard_legacy, который прозрачно преобразуется в новый формат, пока клиенты не обновятся.


Оптимизация работы мобильного аккумулятора


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


Клиенты, поддерживающие XEP-0352, такие как «Conversations», могут информировать сервер, когда приложение находится в фоновом режиме, и Prosody оптимизирует трафик соединения соответствующим образом.


Данная функция реализованп в модуле mod_csi_simple.


Внутренние изменения


Асинхронные API


Много работы было проделано над внутренним асинхронный API, повышая его надежность благодаря добавленным тестам. В конечном итоге этот API будет использоваться для повышения производительности крупных публичных чат-серверов.


С этими изменениями текущий выпуск имеет экспериментальную поддержку асинхронных модулей аутентификации и хранения данных. Однако в этом выпуске новый API официально не поддерживается, так как на будущие версии еще запланированы большие изменения.


Автоматизированные тесты


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


Встроенная поддержка epoll


Этот новый экспериментальный сетевой сервер предоставляет альтернативу libevent. Основные преимущества заключаются в малых размерах реализации и простоте использования, при этом особенностью является его исключительная поддержка в Linux системах.


Источник

Поделиться публикацией

Похожие публикации

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

    В прошлых версиях XEP-0352 тоже подерживался, с помощью модуля mod_csi. Чем mod_csi_simple отличается от него?
      0

      Это не замена, а дополнение для mod_csi.


      The module works by buffering unimportant traffic to inactive devices, such as contact status changes. The data is released when any important data comes in (such as a message from a contact), or when the queue size is reached.
        0
        Плюс, он теперь по сути не является модулем, так как включён в ядро сервера, «работая из коробки»
        0
        Когда-то давно устанавливал и настраивал eJabberd. Понравилась в нем все, кроме достаточно сложной (на мой взгляд) настройки через конфиг-файл. Prosody тогда многое не умел и по отзывам проигрывал, а OpenFire не устроил из-за прожорливости. Интересно как сейчас обстоят дела? Хотелось бы увидеть актуальное сравнение XMPP (Jabber) серверов.
          0
          Сейчас Prosody поддерживает все требуемые XEP'ы Conversations, которые суммарно, как мне кажется, покрывают весь функционал современного мессенджера, например того же Telrgram или WhatsApp. Разве что пока нет видео-, аудио-звонков.
          Давно подумываю написать сравнение по серверам, но пока активно использовал только два: Prosody и Openfire. Думаю, вскоре получится внимательно посмотреть на eJabberd и написать обзор
            0
            Когда-то давно устанавливал и настраивал eJabberd
            Начну с того, что сам пока так и не попробовал ни один из серверов, но судя по тому, что я читал, eJabberd считается самым «крутым и навороченным», но одновременно с этим сложным в настройке и поддержке.

            Prosody представляется альтернативой, возможно, даже до какой-то степени, противоположностью ему и, опять же по внешней информации, полностью достаточен для персонального или small-business использования.
              0
              Prosody представляется альтернативой, возможно, даже до какой-то степени, противоположностью ему и, опять же по внешней информации, полностью достаточен для персонального или small-business использования.

              Да, это так. Хватит что разместить персональный сервер, сервер школы, небольшого института или даже маленького завода. Про офисы где 100-200 человек, даже вопросов нет. Существует Prosody сервера с посещаемостью более 2000 в онлайне
              0
              • Prosody и Ejabberd уже не отличаются, по поддержке новых XMPP расширений. Различия в удобстве для администратора и в отказоустойчивости на больших нагрузках.
              • Prosody легче в настройке и обслуживании чем Ejabberd, но он предназначен для маленьких серверов (до 5 000 пользователей в онлайне). Разработчик Prosody говорит о поддержке до 20 000 онлайн пользователей. Может быть кому то это не покажется маленьким количеством, но существует много публичных серверов выщедших за этот предел
              • Ejabberd стабильно работает (или работал) на больших серверах таких как WhatsApp, Yandex,Google, VK, Одноклассники, Facebook и т.д. Разработчики Ejabberd говорят о поддержке от 2 000 000 пользователей на одной ноде и выше (если используется кластер) Ejabberd намного более сложный в настройке чем Prosody. В Ejabberd нужно вручную подключать внешнею базу данных и потом ее обновлять, если необходима поддержка архива сообщений. Почти все крупные публичные XMPP серверы работают на Ejabberd
              • OpenFire можно установить на Windows, но Java сильно расходует ресурсы сервера
              +1
              Не могу пройти мимо и не дополнить эту отличную новость информацией о клиенте, особенно с учётом новостей о возможном увеличении штрафов для технологических компаний:

              Для смартфонов есть проект Conversations, он поддерживает добавленный в этом релизе XEP-0352 и в нём активно внедряется и развивается OMEMO. Я думаю, что Conversations — хороший шанс возродиться для Jabber'а. К тому же, внешние факторы, как видим, располагают.

              Если вам нужны 100% бесплатность и OTR, есть Conversations Legacy, в т.ч. от F-Droid.

              Также отмечу, что уже сейчас для XMPP есть транспорты в следующие сервисы:

              • IRC
              • Twitter
              • Skype
              • XMPP
              • Facebook
              • MSN
              • Yahoo

              У меня есть сильное ощущение, что раньше в этом списке также был Telegram, но сейчас я почему-то его там не вижу.
                0

                Спасибо на ссылку spectrum2, интересный проект! От себя могу добавить, что на десктопный Linux есть тоже отличный с поддержкой OMEMO и OTR: Dino, который уже есть в дефолтных репах Ubuntu 18.04

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

              Самое читаемое