Clochix

Aller au contenu | Aller au menu | Aller à la recherche

mercredi 23 janvier 2008

Couac : site de test

Pour celles et ceux qui ne veulent ou ne peuvent pas installer Couac, j'ai mis en place un site de démo : https://couac.clochix.net.

Ce site me sert également à tester le nouveau service d'hébergement proposé par Gandi. La durée de vie de cette démo dépendra de son usage (je vais essayer de surveiller un peu le bouzin pour ne pas qu'il soit utilisé pour envoyer des spams) et de l'évolution de tarifs de Gandi (7€/mois c'est bien, si le prix final monte à 12€ je regarderai sans doute du côté de la concurrence).

Avertissement :

  • en utilisant ce service, tous les mots de passe de vos comptes passeront sur le serveur, ils sont donc susceptibles d'être interceptés par un être malveillant, moi (je m'engage évidemment à ne pas le faire, mais vous ne me connaissez pas donc ne pouvez guère me faire confiance) ou quelqu'un qui accéderait au serveur. A utiliser donc à vos risques et périls...
  • cette démo est branchée sur la branche de développement de l'application, donc susceptible de changer de jour en jour. Ne l'utilisez pas dans un contexte de production.

Au menu des dernières évolutions de Couac:

  • grâce à Goofy j'ai commencé à traduire l'interface en anglais. Je me heurte malheureusement à certaines limitations de la plate-forme Gecko auxquelles il faudra que je consacre un billet un de ces jours. Donc pour l'instant seule l'interface est partiellement traduite en anglais et français, tous les messages restent en français.
  • j'ai intégré des icônes du projet Tango pour égayer un peu l'interface
  • le client Jabber permet de se connecter à des serveurs qui utilisent le chiffrage SSL, par exemple GTalk
  • webmail : on peut à présent enregistrer localement un message au format définit par la RFC822 (fichiers .eml que l'on peut ouvrir avec d'autres logiciels), l'imprimer, les ouvrir dans un nouvel onglet (de l'appli), naviguer entre les messages avec les touches fléchées...
  • quelques émoticônes sont reconnus dans les conversations Jabber et les mail
  • le client MySQL permet l'insertion et la mise à jour de plusieurs lignes à la fois (c'est tout neuf et sans doute encore très instable). Les résultats peuvent être filtrés localement (cette nouvelle fonctionnalité de filtrage devrait être étendue à tous les arbres... un jour). Les requêtes et leur résultat peuvent être dupliqués dans un nouvel onglet
  • ...

Et Prism ? Euh, pour l'instant Couac se comporte assez bizarrement avec Prism, et pour tout dire n'est pas utilisable. Je n'ai pas encore eu le temps de creuser pour essayer de comprendre pourquoi, toute aide sera la bienvenue (de toute façon, pour l'instant Prism ne fonctionne pas avec les certificats auto-signés, donc vous ne pourrez pas utiliser le serveur de test avec Prism).

Tout cela est susceptible de changer, car je fourmille d'idées en ce moment, manque juste comme toujours le temps de les coder. Je relance donc un appel pour trouver :

  • de gentils mécènes prêts à m'entretenir
  • de gentils testeurs pour me signaler les problèmes et m'aider à améliorer ce machin
  • de gentils rédacteurs pour rédiger des documentations, des traductions, etc

lundi 21 janvier 2008

class.jabber.php, SSL, gtalk, etc

Les communications entre un client et un serveur jabber peuvent être chiffrées au moyen de SSL ou TLS. Traditionnellement les communications en clair ou avec TLS se font sur le port 5222 et celles chiffrées par SSL sur le port 5223.

J'ai dû un peu bidouiller la classe class.jabber.php que j'utilise dans Couac pour la rendre compatible avec les serveurs utilisant SSL, en particulier pour permettre de se connecter à un compte GTalk. Ces modifications figurent je crois dans la dernière version de la librairie, mais comme le site de celle-ci est inaccessible depuis un bon moment, je les détaille ici.

Pour choisir le type de connexion (en clair ou chiffrée par SSL), il faut préfixer l'adresse du serveur par tcp ou ssl : tcp://jabber.org ou ssl://jabber.org (pour le chiffrage par TLS, si j'ai bien compris, on se connecte en TCP puis si le client et le serveur supportent ce chiffrage, on le démarre en envoyant au serveur un starttls).

Un problème classique lorsqu'on utilise des connexions chiffrées est celui des certificats auto-signés : les serveurs qui n'ont pas les moyens de se faire certifier par un tiers de confiance signent eux-même leur certificat. C'est une "faille" de sécurité qui par défaut provoque l'arrêt de la connexion. Pour passer outre, il faut autoriser SSL à utiliser des certificats auto-signés. Cela s'effectue en lui passant un paramètre. fsockopen ne permettant pas (plus ?) de passer des paramètres, je l'ai remplacé par stream_socket_client. Cette fonction peut recevoir un contexte comprenant entre autres les valeurs suivantes :

  • verify_peer : à mettre à faux pour ne pas vérifier le certificat
  • allow_self_signed : à mettre à vrai pour autoriser les certificats auto-signés

Au final, le code complet est:


        function OpenSocket($server, $port, $transport = 'tcp')
        {
                if (function_exists("dns_get_record"))
                {
                        $record = dns_get_record("_xmpp-client._tcp.$server", DNS_SRV);
                        if (!empty($record))
                        {
                                $server = $record[0]["target"];
                        }
                }
                $context = stream_context_create();
                if ($transport == 'ssl')
                {
                        stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
                        stream_context_set_option($context, 'ssl', 'verify_peer', false);
                }

                $errno = 0;
                $errstr = '';

                $socket = stream_socket_client($transport . '://'.$server.":".$port, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context));
        
        // ...
        }

Au passage, j'ai découvert la fonction dns_get_record et les enregistrements SRV dans le DNS qui permettent d'associer des IP à des services pour un nom de domaine.

Tout ça pour dire que Couac permet à présent de se connecter à GTalk. Il suffit, dans les propriétés du compte, de positionner le port à 5223 et le transport à SSL.

Références

mercredi 12 décembre 2007

Ya un Couac, ou la naissance d'une appli web

Ce blog est en sommeil depuis longtemps, par manque de temps pour m'en occuper. La faute au salariat et à ma plongée pendant quelques mois dans le codage d'une application web, Couac. Aujourd'hui, elle a atteint un niveau qui commence à la rendre utilisable, même si je butte sur une erreur de choix architectural qui risque de lui être fatale. Et comme je n'ai plus guère de temps pour m'en occuper, il est temps que je la rende publique, dans l'espoir qu'elle puisse servir et que d'autres contributions viennent l'améliorer.

Lire la suite...