Serveur jabber Prosody : envoi de fichiers impossibles

Bonjour,

Je vais commencer par me présenter. Linuxien depuis quelques années, je suis utilisateur de debian squeeze. Je l’ai utilisé un bon moment à la fois sur mon serveur et sur mon netbook. Mon netbook est maintenant passé sous archlinux, principalement parce que je trouve cette distib’ plus légère et plus facilement “bidouillable”, bref, plus ludique.
J’ai par contre laissé le serveur sous debian, qui a le mérite de sa grande stabilité, même en testing. Le côté sérieux, quoi :slightly_smiling:
J’aime aussi beaucoup le côté communautaire et démocratique du projet debian.

Comme j’apprécie le côté décentralisé d’internet, j’essayes d’y participer.
La prochaine étape c’est l’hébergement du serveur jabber. J’ai choisi Prosody pour sa légéreté et sa simplicité (mon serveur est un vieux PC qui fait déjà tourner pas mal de services).
Malheureusement, la documentation est assez pauvre sur ce logiciel. J’ai fait une configuration de base qui fonctionne, mais je bloque sur le transfert des fichiers. Il m’est pour l’instant impossible d’en envoyer ou d’en recevoir.

J’ai cru comprendre qu’on pouvait passer par un proxy, mais j’ai du mal à en saisir le but. Je suis notamment tombé sur la page de mod_proxy65.
N’y a-t-il pas moyen de se passer de proxy pour envoyer des fichiers via jabber? Les ports 5222, 5269, 5290 et 7777 de mon serveur sont ouverts…

Je vous joint les fichiers de conf (je précise que j’ai bien mis mon nom de domaine à la place de “mon_domaine.fr”) :

/etc/prosody/prosody.cfg.lua

[code]-- Prosody Example Configuration File

– Information on configuring Prosody can be found on our
– website at http://prosody.im/doc/configure

– Tip: You can check that the syntax of this file is correct
– when you have finished by running: luac -p prosody.cfg.lua
– If there are any errors, it will let you know what and where
– they are, otherwise it will keep quiet.

– The only thing left to do is rename this file to remove the .dist ending, and fill in the
– blanks. Good luck, and happy Jabbering!

---------- Server-wide settings ----------
– Settings in this section apply to the whole server and are the default settings
– for any virtual hosts

– This is a (by default, empty) list of accounts that are admins
– for the server. Note that you must create the accounts separately
– (see http://prosody.im/doc/creating_accounts for info)
– Example: admins = { "user1@example.com", "user2@example.net" }
admins = { “moi@mon_domaine.fr” }

– Enable use of libevent for better performance under high load
– For more information see: http://prosody.im/doc/libevent
–use_libevent = true;

– This is the list of modules Prosody will load on startup.
– It looks for mod_modulename.lua in the plugins folder, so make sure that exists too.
– Documentation on modules can be found at: http://prosody.im/doc/modules
modules_enabled = {

    -- Generally required
            "roster"; -- Allow users to have a roster. Recommended ;)
            "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
            "tls"; -- Add support for secure TLS on c2s/s2s connections
            "dialback"; -- s2s dialback support
            "disco"; -- Service discovery

    -- Not essential, but recommended
            "private"; -- Private XML storage (for room bookmarks, etc.)
            "vcard"; -- Allow users to set vCards
            --"privacy"; -- Support privacy lists
            --"compression"; -- Stream compression

    -- Nice to have
            "legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
            "version"; -- Replies to server version requests
            "uptime"; -- Report how long server has been running
            "time"; -- Let others know the time here on this server
            "ping"; -- Replies to XMPP pings with pongs
            "pep"; -- Enables users to publish their mood, activity, playing music and more
            "register"; -- Allow users to register on this server using a client and change passwords

    -- Other specific functionality
            --"console"; -- Opens admin telnet interface on localhost port 5582
            --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
            "httpserver"; -- Serve static files from a directory over HTTP
            "groups"; -- Shared roster support
            "announce"; -- Send announcement to all online users
            "welcome"; -- Welcome users who register accounts
            "watchregistrations"; -- Alert admins of registrations
            --"mod_proxy65";
    -- Debian: do not remove this module, or you lose syslog
    -- support
            "posix"; -- POSIX functionality, sends server to background, enables syslog, etc.

};

– These modules are auto-loaded, should you
– for (for some mad reason) want to disable
– them then uncomment them below
modules_disabled = {
– “presence”;
– “message”;
– “iq”;
};

– Disable account creation by default, for security
– For more information see http://prosody.im/doc/creating_accounts
allow_registration = false;

– Debian:
– send the server to background.

daemonize = true;

– Debian:
– Please, don’t change this option since /var/run/prosody/
– is one of the few directories Prosody is allowed to write to

pidfile = “/var/run/prosody/prosody.pid”;

– These are the SSL/TLS-related settings. If you don’t want
– to use SSL/TLS, you may comment or remove this
ssl = {
key = “/etc/prosody/certs/mon_domaine.key”;
certificate = “/etc/prosody/certs/mon_domaine.fr.crt”;
}

– Require encryption on client/server connections?
c2s_require_encryption = true
s2s_require_encryption = true

– Logging configuration
– For advanced logging see http://prosody.im/doc/logging
log = “prosody.log”;
debug = false; – Log debug messages?

– Debian:
– all to var/log
– errors to syslog also
log = {
{ levels = { “error” }; to = “syslog”; };
{ levels = { “error” }; to = “file”; filename = “/var/log/prosody/prosody.err”; };
– Change “info” to “debug” for more verbose logging
{ levels = { min = “info” }; to = “file”; filename = “/var/log/prosody/prosody.log”; };
}

– Loads all configuration files in /etc/prosody/conf.d/ –
local ztact = require "util.ztact"
local cfgdir = "/etc/prosody/conf.d/"
for f in ztact.dir(cfgdir) do Include(cfgdir…f); end

[/code]

/etc/prosody/conf.avail/mon_domaine.fr.cfg.lua

[code]-- Section for example.com

VirtualHost “mon_domaine.fr”
– enabled = false – Remove this line to enable this host

    -- Assign this host a certificate for TLS, otherwise it would use the one
    -- set in the global section (if any).
    -- Note that old-style SSL on port 5223 only supports one certificate, and will always
    -- use the global one.
    ssl = {
            key = "/etc/prosody/certs/mon_domaine.fr.key";
            certificate = "/etc/prosody/certs/mon_domaine.fr.crt";
            }

------ Components ------
– You can specify components to add hosts that provide special services,
– like multi-user conferences, and transports.
– For more information on components, see http://prosody.im/doc/components
Component “conference.jabber.org” “muc”

– Set up a SOCKS5 bytestream proxy for server-proxied file transfers:
– Component “mon_domain.fr” “proxy65”

—Set up an external component (default component port is 5347)
–Component “gateway.example.com
– component_secret = “password”

modules_enabled = {
– Generally required
"roster"; – Allow users to have a roster. Recommended :wink:
“saslauth”; – Authentication for clients and servers. Recommended if you want to log in.
“tls”; – Add support for secure TLS on c2s/s2s connections
"dialback"; – s2s dialback support
"disco"; – Service discovery

            -- Not essential, but recommended
                    "private"; -- Private XML storage (for room bookmarks, etc.)
                    "vcard"; -- Allow users to set vCards

            -- Nice to have
                    "legacyauth"; -- Legacy authentication. Only used by some old clients and bots.
                    "version"; -- Replies to server version requests
                    "uptime"; -- Report how long server has been running
                    "time"; -- Let others know the time here on this server
                    "ping"; -- Replies to XMPP pings with pongs
                    "register"; -- Allow users to register on this server using a client and change passwords
                    -- "mod_proxy65";
                    -- Other specific functionality
                    --"posix"; -- POSIX functionality, sends server to background, enables syslog, etc.
                    --"console"; -- telnet to port 5582 (needs console_enabled = true)
                    --"bosh"; -- Enable BOSH clients, aka "Jabber over HTTP"
                    --"httpserver"; -- Serve static files from a directory over HTTP
              };

[/code]

[quote=“st3rk”]J’ai cru comprendre qu’on pouvait passer par un proxy, mais j’ai du mal à en saisir le but. Je suis notamment tombé sur la page de mod_proxy65.
N’y a-t-il pas moyen de se passer de proxy pour envoyer des fichiers via jabber?[/quote]
Je ne connais pas particulièrement le protocole XMPP qui est à la base de Jabber, mais le transfert de fichier direct entre deux clients nécessite que l’un se connecte directement à l’autre (je ne sais pas dans quel sens, de l’émetteur du fichier au récepteur ou l’inverse). Cela implique une connexion entrante pour l’un des deux. En général cela ne marche pas ou difficilement lorsque le client qui doit recevoir la connexion est derrière un dispositif NAT comme le sont la plupart des box ADSL. Le proxy constitue une alternative à ce fonctionnement : les deux clients s’y connectent (donc avec une connexion sortante pour chacun, pas de problème avec le NAT) et le proxy joue le rôle de relais pour le transfert du fichier.

Le client qui envoie le fichier doit utiliser un proxy.

Pour ça il faut décommenter la ligne suivante :

Component “proxy65.tondomaine.fr” “proxy65”

Et correctement remplie (avec un sous-domain du genre proxy65.tondomaine.fr)

Il faut également ouvrir le port 5000 sur ton serveur, pour que le proxy puisse écouter dessus.

Si ton client est intelligent iltrouvera le proxy automatiquement. S’il ne l’est pas, il faudra l’entrer dans la configuration du client (y indiquer proxy65.tondomaine.fr)

D’accord, je comprends mieux le problème. Les transfers sans proxy ne sont donc possibles que sur le réseau local…

OK. Proxy65 crée bien le proxy? Ou il faut que j’en fasse un avec un logiciel tiers?
J’ai ouvert le port 5000, mais le transfert de fichiers de fonctionne toujours pas. J’ai essayé avec un nom de domaine pointant vers la même IP, et avec un sous-domaine. Dans les deux cas le transfert est impossible…

Je pose très rarement des questions, j’arrive habituellement à me dépatouiller tout seul grâce à des recherches sur internet, mais là je suis vraiment perdu.

Bon, après quelques recherches, je pense avoir compris la principe. Proxy_65 met bien en place un proxy. Par contre, le transfert de fichier n’est toujours pas possible.
J’ai aussi essayé avec openfire, qui possède un proxy dès l’installation. J’ai ouvert le port 7777, mais le transfert est toujours impossible…

Si quelqu’un a une explication, je suis intéressé :confusion-confused:

J’ai trouvé un ou deux posts intéressants malheureusement sans réponse.