Project

General

Profile

Actions

Bug #11139

closed

[IM] Un fichier envoyé en conversation 1<->1 n'est pas reçu par le destinataire

Added by David Lesimple about 2 years ago. Updated almost 2 years ago.

Status:
Closed
Priority:
Normal
Category:
Messagerie instantanée
Start date:
11/20/2019
Due date:
% Done:

100%

Estimated time:
Navigateur:
Tous
Votre version de Silverpeas:
6.1-x
Système d'exploitation:
Votre base de données:
Toutes
Livraison en TEST:
Livraison en PROD:

Description

Reproduit avec ejabberd 16.04 et 18.09

Actions #1

Updated by David Lesimple about 2 years ago

  • Subject changed from [IM] Un fichier envoyé en conversation 1<->1 n'est pas reçu par le destintaire to [IM] Un fichier envoyé en conversation 1<->1 n'est pas reçu par le destinataire
Actions #2

Updated by Miguel Moquillon about 2 years ago

  • Status changed from New to In progress...

JSXC supporte le transfert de fichier par deux méthodes : par webrtc et par XMPP via la XEP-0363.

Jusqu'à présent, le transfert se faisait par WebRTC et on ne se posait pas plus de questions parce que cette méthode fonctionnait la majeur partie du temps. Or, selon le sous-réseau et des caractéristiques de sécurité activées (par défaut ou non) dans les navigateurs, cette méthode peut ne pas fonctionner.

Afin de ne pas dépendre des caractéristiques des navigateurs Web vis à vis du transfert de fichiers par WebRTC, il est désormais recommander de passer par le serveur XMPP avec la XEP-0363. Je regarde et valide ce point avec Ejabberd.

Actions #3

Updated by Miguel Moquillon almost 2 years ago

  • Status changed from In progress... to Resolved
  • % Done changed from 0 to 100

Afin de pouvoir profiter de la XEP-0363 avec les sécurités activés dans Silverpeas, il est nécessaire de renseigner au Content Security Policy (CSP) et au CORS différentes URL auxquelles des services du serveur XMPP (ici Ejabberd) sont à l'écoute, et en particulier le service qui implémente la XEP. Afin d'éviter que l'admin le fasse de lui même, le code a été modifiée pour valoriser les différents paramètres de protection avec les URL fournis dans le fichier de configuration du chat dans properties/org/silverpeas/chat/settings/chat.properties . Pour ce faire, des propriétés ont été modifiées et ajoutées. Voici le contenu du fichier maintenant :

#
# Settings for the Silverpeas chat service.
#

# Enable the chat service? By default, it isn't enabled. You have to set correctly all the
# chat properties before enabling it.
chat.enable = false

# The hostname (or IP address) and the port of an ICE server to use with video/audio chat.
# If empty, then the video/audio chat is disabled.
chat.servers.ice =

# The URL (schema + hostname or IP address + port) of the XMPP server which which the Silverpeas
# Chat client can communicate through the Web. It must be set for the chat to be enabled.
# All others XMPP services' URL is computed from this property.
# The value of this property will be use also used to set correctly the security settings of
# Silverpeas in order to authorize the connexions with the remote XMPP service from the web browser.
chat.servers.xmpp =

# The URL at which the XMPP server is listening for HTTP file transfers between users. Usually, this
# property doesn't need to be set as it is discovered by the chat client when negotiating with the
# XMPP server. Nevertheless, it has to be explicitly set if the XMPP server is behind a proxy or the
# HTTP file transfer service is listening at a port different that the XMPP server one. This
# property is mainly used to set correctly the security settings of Silverpeas in order to let the
# user's web browser to upload files to the XMPP server.
chat.xmpp.httpUpload =

# The relative URL's path of the BOSH service through which the chat client communicates with the
# XMPP server. The URL will be computed from the chat.servers.xmpp property and this property below.
chat.xmpp.httpBind =

# The relative URL's path of the REST service through which Silverpeas creates users and their
# relationships in the XMPP server. The URL will be computed from the chat.servers.xmpp property
# and this property below.
chat.xmpp.rest =

# The authentication token used to access the REST service of the XMPP server.
chat.xmpp.restKey =

# XMPP domain definitions.
# They define a matching between a Silverpeas domain (through its unique identifier) and an XMPP
# domain. For example:
# chat.xmpp.domain.0 = im.silverpeas.net defines a matching between the Silverpeas domain with
# 0 as identifier and the XMPP domain im.silverpeas.net
chat.xmpp.domain.0 =

Une explication au sujet de la propriété chat.xmpp.httpUpload. Il faut savoir que le service HTTP File Upload (XEP-0363) est, à l'instar des services XMPP, découverte automatiquement par le client au moment de la négociation avec le serveur XMPP. Ce dernier lui retourne alors l'URL à laquelle les fichiers peuvent être téléversés en vue de les partager avec d'autres utilisateurs. Si Ejabberd tourne de façon transparente derrière un proxy, l'URL du service HTTP File Upload retournée risque fort d'être différente de celle du serveur XMPP (le port sera différent). Par conséquent, afin que les téléversements ne soient pas bloqués par le navigateur Web il n'est nécessaire d'indiquer au système de sécurité de Silverpeas l'URL qui sera susceptible d'être retournée par le serveur XMPP dans la négociation. Cette URL doit donc être indiquée avec la propriété chat.xmpp.httpUpload.

Cf. https://github.com/Silverpeas/Silverpeas-Core/pull/1032

Actions #4

Updated by Yohann Chastagnier almost 2 years ago

  • Status changed from Resolved to Integration in progress...
  • Target version set to Version 6.1
Actions #5

Updated by David Lesimple almost 2 years ago

  • Status changed from Integration in progress... to Closed

Maintenant, l'envoi de fichier est également possible dans un groupe de discussion.

Actions

Also available in: Atom PDF