Главная » Хабрахабр » [Из песочницы] Релиз XMPP (Jabber) сервера Prosody 0.11.0

[Из песочницы] Релиз XMPP (Jabber) сервера Prosody 0.11.0

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Протокол Pubsub

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

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

PEP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

Как сделать так, чтобы вашу англоязычную статью для Хабра прочитали десятки тысяч человек: 3 простых совета

Все больше пользователей пробуют свои силы в переводе своих русскоязычных статей и написании новых. Англоязычная версия Хабра существует уже какое-то время. Я очень много пишу на английском по работе, и вижу некоторые повторяющиеся ошибки, которые не позволяют таким статьям привлекать ...

[Из песочницы] Моя первая читалка на основе Sharp PC3000

#include <dir.h> #include <bios.h> #include <dos.h> #include <fcntl.h> #include <io.h> #include <stat.h> #include <alloc.h> #include <conio.h> #include <stdio.h> #include <stat.h> #include <stdlib.h> #include <stdarg.h> #include <graphics.h> #include <process.h> unsigned char qui,c,membl[2000],fname[20],memtxt[128],Statusin,me; unsigned int h,pos=0,ads,seg,t,t1,t2,memseg,memoffset,membuff,tx,rx,startbuff,buffoff=0,buffbeg,xcor,ycor,buttons,tb; int *memblock,xpos,ypos; long membu,memtext,lenght; unsigned long ...