Liberação XMPP (Jabber) do servidor Prosody 0.11.0

Foi lançada a primeira versão do 0.11º ramo XMPP estável do servidor Prosody, com correções de mais de 2000 erros.


Principais mudanças


As melhorias mais significativas foram nos módulos MUC e pubsub.


Juntos, esses componentes implementam duas das extensões XEP mais abrangentes no padrão XMPP que o protocolo fornece atualmente. Embora as versões anteriores tenham suportado o MUC e o pubsub por algum tempo, ambas são bastante complicadas e, após a implementação inicial, ficou claro que era necessário atualizar e refatorar o código para aumentar a cobertura da funcionalidade XEP necessária, melhorar a estrutura do código e a escalabilidade das soluções.


Além disso, muitas outras alterações, melhorias, correções de bugs e trabalho de desempenho que foram incluídos nesta versão foram feitas.


Aprimoramentos de bate-papo


A maioria das alterações nesta versão foi sobre a reescrita de quase todo o código da MUC (Multi-User Conference). Este ambicioso projeto foi lançado há alguns anos pelo usuário daurnimator , que desenvolveu a maior parte do novo código.


Embora as mudanças mais significativas sejam internas, isso permitiu ao projeto adicionar mais facilmente novos recursos e melhorar a escalabilidade dos serviços MUC (esta versão do módulo MUC permite que muitos serviços trabalhem com centenas de milhares de conversas comuns, como o Jitsi Meet ).


Configuração aprimorada


O formulário de configuração do servidor foi atualizado para fornecer um layout mais limpo e nomes de parâmetros mais convenientes.
Caixa de diálogo Conversa.


Arquivamento de Mensagens


Foi adicionado suporte para arquivamento e carregamento de mensagens escritas anteriormente no MUC (Multi User Chat) usando o protocolo XEP-0313 (MAM). Isso permite que o cliente exiba mensagens, por exemplo, que foram gravadas em uma conversa geral quando o usuário estava ausente online.


Reserva de nome de usuário


Para evitar confusão, o Prosody agora pode aplicar a reserva de nome de usuário. Isso evita o uso do nome de outra pessoa quando o verdadeiro proprietário não está em uma conversa comum. Por padrão, apenas proprietários / administradores de bate-papos compartilhados podem atribuir um nome novamente (ao adicionar um usuário a uma conversa compartilhada), mas o módulo também pode ser configurado para que os usuários possam registrar seus próprios aliases e se tornarem participantes.


Protocolo Pubsub


A implementação do Pubsub foi aprimorada significativamente nesta versão. O Link Mauve adicionou um código responsável pela segurança de nós e elementos, agora os dados podem ser armazenados no disco, não na RAM, e não são perdidos quando o servidor é reiniciado.


Também foi introduzido suporte para a configuração, nós e gerenciamento de propriedade necessários para o controle de acesso avançado e, finalmente, o suporte para as infames opções de publicação, que permitem aos clientes publicar com segurança itens com controle de acesso adequado.


Pep


O código PEP antigo é uma implementação separada e limitada do pubsub que implementou tudo o que os usuários precisavam em 2009. No entanto, ao longo dos anos, mais e mais recursos de pubsub foram demandados no PEP, devido à sua grande relevância. Portanto, ficou claro que o PEP precisava adicionar todas as funções do pubsub e usar o código existente.


Florian Zeitz iniciou este trabalho criando um novo módulo "mod_pep_plus". Este módulo agora substituiu o “mod_pep” original e já é a implementação padrão do PEP.


Isso fornece suporte ao OMEMO ao se comunicar com usuários que não estão no catálogo de endereços, em conversas e outros clientes. Ele também permite que os usuários usem o PEP para armazenar favoritos e outros dados.


Novo formato vCard


Esta versão fornece suporte para a nova versão na especificação vCard descrita em XEP-0292, que inclui suporte para vários novos recursos.


O novo formato também é armazenado no PEP, fornecendo acesso total ao controle de acesso (por exemplo, você pode escolher se o seu vCard está aberto ou disponível apenas para contatos).


Atualmente, poucos (se houver) clientes suportam vCard4, mas o antigo protocolo vcard-temp ainda é suportado usando mod_vcard_legacy, que converte de forma transparente para o novo formato até que os clientes sejam atualizados.


Otimização da bateria móvel


Esta versão apresenta alguns módulos da comunidade projetados para aumentar a vida útil da bateria dos clientes de mensagens móveis. O tráfego transmitido constantemente pela rede, como alterações no status do contato e nas mensagens de bate-papo, pode impedir que o telefone mude para o modo de baixa energia. No entanto, esses dados geralmente não são importantes, principalmente quando a tela do telefone está desligada ou o aplicativo está em segundo plano.


Clientes que suportam XEP-0352, como Conversas, podem informar o servidor quando o aplicativo está em segundo plano, e o Prosody otimiza o tráfego de conexão de acordo.


Esta função é implementada no módulo mod_csi_simple.


Mudanças internas


APIs assíncronas


Muito trabalho foi feito na API assíncrona interna, aumentando sua confiabilidade graças aos testes adicionados. Por fim, essa API será usada para melhorar o desempenho de grandes servidores de bate-papo público.


Com essas alterações, a versão atual tem suporte experimental para autenticação assíncrona e módulos de armazenamento de dados. No entanto, nesta versão, a nova API não é oficialmente suportada, pois grandes mudanças estão planejadas para versões futuras.


Testes automatizados


Uma das maiores melhorias no projeto nos últimos anos foi o aumento no número de testes automáticos. Versões anteriores foram quase completamente testadas manualmente, com muito poucos testes automatizados disponíveis. Agora, há um grande conjunto de testes que são executados após cada alteração.


Suporte nativo a epoll


Esse novo servidor de rede experimental fornece uma alternativa ao libevent. As principais vantagens são o tamanho pequeno da implementação e a facilidade de uso, enquanto o recurso é seu suporte excepcional nos sistemas Linux.


Fonte

Source: https://habr.com/ru/post/pt430998/


All Articles