filyb.info

mardi 10 juillet 2007

Agenda numérique : Mozilla Calendar et PHP iCalendar

Ça fait un moment que l'on entend parler d'agendas ou de calendriers partagés, notamment avec l'apparition de Google Agenda (ou Google Calendar). Le principe est simple : vous maintenez votre agenda personnel, avec vos rendez-vous, vos disponibilités ; cet agenda permet – en utilisant plusieurs protocoles dont l'e-mail – de fixer des rendez-vous avec d'autres utilisateurs d'agendas numériques ; vous rendez public votre agenda (ce qui ne veut pas dire que tout est public : vous pouvez définir certains évènement comme confidentiels, la seule informations publique sera que vous n'êtes pas disponible à ce moment-là) ; vous vous abonnez à / consultez sur le web d'autres agendas publics, pour voir les disponibilités d'une personne donnée, où les évènements concernant un sujet.

Le fait que l'agenda soit public implique qu'il soit disponible via un serveur Internet. Deux possibilités : ou votre agenda est hébergé sur un serveur dont vous pouvez maîtriser le contenu, l'accès, le fonctionnement (ce qui est – plus ou moins – le cas avec un hébergement qui vous appartient, et en y installant des logiciels que vous contrôlez, à savoir que vous installez et configurez vous et dont le code source est ouvert), ou vous utilisez une plate-forme qui se charge de la partie technique pour vous. Cette second possibilité a l'inconvénient que vous ne contrôlez pas ce qui est fait de vos données. Mais quelle importance – me direz-vous – puisque ces données sont destinées à être publiques ? Justement, pas toutes. Je doute que vous ayez envie de publier tous les détails de votre vie sur Internet. Votre agenda, comme je l'ai dit plus haut, peut contenir des évènements confidentiels ou privés, et qui dont la teneur ne sera pas publique. Mais l'éventuel prestataire auquel vous allez confier vos données y aura accès.

C'est pourquoi, alors que l'envie subite de mettre en place une solution d'agenda m'a pris ce soir, j'ai décidé de tirer un trait sur Google Agenda et consorts. Ayant tout de même un compte Gmail, j'ai activé l'agenda, car je connais un certain nombre de personnes qui l'utilisent, et je voulais m'assurer d'une compatibilité la plus complète avec ce service.

Restait à choisir les solutions logicielles. J'ai préféré choisir d'avoir un client logiciel pour l'édition d'agenda et une application serveur qui se contente de mettre à disposition sur le web l'agenda (et éventuellement servir pour centraliser l'agenda et permettre l'édition depuis plusieurs clients). En matière d'agendas, le standard est le format ouvert iCalendar. J'ai donc choisi des solutions implémentant ce format. Voici les logiciels sur lesquels mon choix s'est porté :

Mozilla Calendar ‑ Lightning

Le projet Mozilla Calendar vis à créer un logiciel de gestion d'agendas libre et multi-plateforme. Ce logiciel est disponible sous deux formes, Mozilla Sunbird, une application unique, et Mozilla Lightning, une extension pour Mozilla Thunderbird. Utilisant ce dernier logiciel, j'ai choisi Lightning.

Attention : ces logiciels, en version 0.5 au moment où j'écris ces lignes, ne sont pas considérés comme stables.

Lightning propose une interface classique d'agenda, ni trop surchargée, ni trop légère. La création d'évènements s'effectue par simple cliqué-glissé, les possibilités de détailler, classer et organiser les évènements sont assez nombreuses. De plus, on peut ajouter les adresses e-mail des participants à un évènement et leur envoyer une invitation. À ce titre, l'intégration dans Mozilla Thunderbird est très bonne, puisque les mails contenant des invitations sont automatiquement détectés – tels les mails chiffrés ou signés avec Enigmail – et un bandeau propose d'ajouter l'évènement en question dans son propre agenda (ce que ne propose pas Gmail, pourtant associé à Google Agenda).

Capture d'écran du bandeau d'invitation.

Cependant, cette version est encore en développement, et elle possède encore quelques défauts de jeunesses. Il arrive que les évènements ne soient plus affichés, et qu'un redémarrage du logiciel soit nécessaire. Je regrette aussi que lors de la modification d'un évènement, les participants dont les adresses mail ont été entrées n'en soit pas automatiquement averti – ce qui est le cas dans Google Agenda, par exemple. Mais le plus génant – à mon avis – est que les agendas distants ne soient pas accessibles hors-ligne (du moins Lightning est complètement bugué sur ce point). Un cache comme Thunderbird le fait pour l'IMAP serait formidable !

À noter, pour ceux qui désirent utiliser Lightning avec Google Agenda, qu'il existe une extension pour cela : Provider for Google Calendar.

PHP iCalendar

PHP iCalendar est un logiciel libre qui permet de gérer et d'afficher un agenda iCalendar sur votre espace web. Il ne permet pas d'éditer les agendas, ne possède pas d'AJAX et n'est donc pas un équivalent à Google Agenda. Il doit s'utiliser en complément d'un client logiciel, tel que Mozilla Calendar.

Cependant, PHP iCalendar permet d'afficher un ou plusieurs agendas de façon agréable, d'effectuer des recherches, d'obtenir un résumé prêt à imprimer, de s'abonner à des fils de syndication, de restreindre l'accès à certains agenda à des utilisateurs authentifier, et bien sûr d'héberger votre agenda.

J'ai installé PHP iCalendar sur mon serveur web. Vous pouvez dors et déjà consulter mon agenda partagé. Cependant l'installation n'a pas été aussi facile que la documentation le décrit, aussi vais-je détailler les étapes que j'ai parcouru.

Faire fonctionner Mozilla Lightning et PHP iCalendar ensemble

Après avoir installé Mozilla Lightning et PHP iCalendar (en suivant la documentation, et notamment la page sur la configuration), si l'on suit les instructions de la méthode publish.php avec les compléments disponibles sur la page consacré à MacOS X (et qui sont indépendants du système d'exploitation, on se retrouve avec un problème d'authentification. Pour indication, la méthode publish.php permet d'éviter de passer par WebDAV ou par un accès FTP pour synchroniser votre agenda.

Voici donc la méthode pour faire fonctionner PHP iCalendar en passant par le fichier publish.php pour la synchronisation de l'agenda :

  1. Le fichier publish.php doit se trouver dans le dossier où seront stockés vos agendas (fichiers *.ics). J'ai choisi de garder le dossier par défaut, calendars.
  2. Vérifiez (via votre client FTP/SSH) que ce dossier est bien accessible en écriture pour les scripts PHP.
  3. Activez l'option publication du style WebDAV (par opposition au vrai WebDAV) dans votre fichier config.inc.php :

    $phpicalendar_publishing = '1';

    (Les étapes suivantes sont adaptées du post de dyfrin sur le forum de PHP iCalendar.)

  4. Créez dans le dossier des agendas un fichier .htpasswd.
  5. Utilisez un des nombreux générateurs de fichiers .htpasswd. Entrez-y un nom d'utilisateur et un mot de passe, et copiez la ligne fournie dans le fichier .htpasswd que vous venez de créer.
  6. Créez un fichier .htaccess toujours dans le même dossier. Placez-y le contenu suivant :
    <Files publish.php>
    
    AuthUserFile /chemin/absolu/du/fichier/.htpasswd
    AuthGroupFile /dev/null
    AuthName CalendarPublish
    AuthType Basic
    
    <limit PUT>
    require valid-user
    </Limit>
    
    <limit GET>
    require valid-user
    </Limit>
    
    </Files>
    

    Cela va restreindre l'accès au fichier publish.php aux utilisateurs définis dans .htaccess. (Attention, je ne suis pas un guru des .htaccess, d'aucuns me corrigeront peut-être.)

  7. Ouvrez Lightning. Ouvrez Fichier > Nouveau > Agenda. Choisissez un agenda disponible sur le réseau, au format iCalendar.
  8. Entrez une adresse de la forme : http://example.com/phpicalendar/calendars/publish.php/mon_agenda.ics

    mon_agenda.ics est le nom de votre futur agenda public.

  9. Validez, entrez quelques évènements, et admirez le résultat.

Pour finir...

Vous pouvez désormais utiliser votre agenda tel un utilisateur de Google Agenda, mais libre. Si un utilisateur de Google Agenda souhaite ajouter votre agenda dans son interface, il lui suffit de récupérer l'adresse de votre fichier *.ics (un clique-droit sur le lien télécharger de PHP iCalendar, par exemple). Ensuite, il a la possibilité d'ajouter cette adresse en tant qu'agenda.

Et de même, vous pouvez ajouter dans Lightning des agendas de Google Agenda, via Fichier > Nouveau > Agenda. L'adresse a y coller est celle obtenue, dans Google Agenda, en allant dans les détails d'un agenda, et en copiant l'adresse disponible sur le bouton iCal. En fouillant le moteur de recherche d'agenda, on peut même trouver des agendas intéressants... à ajouter dans Lightning. Deux exemples (avec l'adresse iCal, pour ceux qui n'ont pas de compte chez Google) :

C'est tout pour aujourd'hui ! Je vais aller ajouter un évènement dormir à mon agenda...

mercredi 6 juin 2007

En vrac

lundi 12 mars 2007

FireGPG

Imaginez sa surprise lorsque votre ange gardien attitré consulta vos mails quotidiens. En lieu et place de la confirmation de votre dernier virement banquaire, remplaçant un mail professionnel sur votre nouveau projet confidentiel, ou caché derrière l'intitulé d'une missive pour votre douce et tendre, il ne peut qu'avoir accès à un charabia incompréhensible de caractères sortis tout droit d'un microfilm d'un agent soviétique des James Bond de la grande époque. Bien sûr, au fond de son sous-sol, ce pirate informatique qui passe ses nuits à vous espionner reconnaît un chiffrage de type GnuPG. Mais las, il ne parviendra pas à déjouer vos stratagèmes. Sa tentative de domination mondiale aura échouée, et ce grâce à vous.

Sécurisez vos échanges : utilisez FireGPG, une extension pour Mozilla Firefox qui permet d'utiliser dans ce navigateur les fonctionnalités de chiffrement et de signature de GnuPG, et surtout de les intégrer à Gmail, le célèbre service de Google.

Cette extension a été écrite par Asher256 et TheGlu, merci encore pour votre contribution aux logiciels libres !

vendredi 22 septembre 2006

Notification d'emails pour les utilisateurs de Mozilla Thunderbird, Gnome et d'un ASUS Z92J

Bon, d'accord, ce billet ne s'adresse pas à grand monde... S'il vous est utile, dites-le dans les commentaires, que j'ai l'impression de ne pas l'avoir écrit pour rien (d'un autre côté, mes stats vont très bien, merci pour elles, donc je peux me permettre d'écrire des billets plus pour ma pomme en cas de reformattage que pour the reste of the world).

Donc imaginons que vous utilisez Mozilla Thunderbird sous Linux, avec Gnome (ça marchera aussi sous un autre bureau, mais en utilisant les notification de Gnome, et non celles de, par exemple, KDE), et un ASUS Z92J (peut-être que ça marche aussi avec un autre portable ASUS, je n'en sais rien). Ce que vous voulez : à l'arrivée d'un mail, qu'un petit son vous prévienne, qu'un message affiche le sujet et l'expéditeur du mail, et qu'enfin (très important), la diode correspondante de l'ordinateur s'allume.

Le problème de cette diode est que j'ai bien trouvé des notificateurs d'arrivée des messages, mais aucun pour l'évènement plus de messages non lu pour éteindre la diode. J'ai donc décidé de laisser la diode allumée une minute, avec une temporisation.

Après la théorie, la technique :

  1. Installez l'extension pour Mozilla Thunderbird permettant les notifications : Yamb (dont j'avais déjà parlé).
  2. Installez notify-send, la commande pour lancer des notifications Gnome. Elle correspond au paquet libnotify-bin sous Ubuntu.
  3. Téléchargez le script suivant :

    #!/bin/sh
     
    #############################################################################
    # Mail notification for thunderbird and yamb, using the gnome notifier system
    #############################################################################
     
    subject="$1"
    sender="$2"
    recipients="$3"
    size="$4"
    folder="$5"
    accountType="$6" #(movemail, pop3, imap, nntp, rss)
    accountName="$7"
    body="$8"
    
    # Show notify (using notify-send)
    notify-send "Courriel de $sender" $subject
    
    # Play sound (vous pouvez utiliser un autre son)
    aplay "/usr/share/sounds/pop.wav"
    
    # Switch on the ASUS led for one minute (60 second)
    echo 1 > /proc/acpi/asus/mled
    # Vous pouvez changer la durée d'affichage de la DEL en secondes :
    sleep 60
    echo 0 > /proc/acpi/asus/mled
    

    Vous pouvez, par exemple, utiliser la commande wget http://filyb.info/prog/sh/mail-notify

  4. Copiez ce script dans votre path, par exemple sudo cp mail-notify /usr/bin
  5. Rendez-le exécutable : sudo chmod a+x /usr/bin/mail-notify
  6. Dans Mozilla Thunderbird, rendez-vous dans les préférences de Yamb, et entrez le chemin du script, ici /usr/bin/mail-notify (Vous pouvez aussi en profiter pour désactiver la seconde comme interval pour ne passurcharger votre server mail.)
  7. Appréciez.

Voilà, si vous avez des idées d'améliorations, n'hésitez pas !

dimanche 3 septembre 2006

Permettre à Amarok de gérer les balados (podcasts) Itunes dans Mozilla Firefox

Vous avez peut-être remarquez sur certains sites des balados (podcasts) utilisant le protocole itpc, pour Itunes Podcast (signalé par cette image : Icône des balados itunes). Si vous désirez que ceux-ci soient ajoutés dans Amarok à l'aide d'un clique dans Mozilla Firefox, suivez la procédure suivante :

  1. Ouvrez une fenêtre/un onglet dans Mozilla Firefox, et entrez l'adresse suivante : about:config.
  2. Faites un clique droit dans la liste, puis Nouvelle > Valeur booléenne.
  3. Entrez comme nom :

    network.protocol-handler.external.itpc

    Et comme valeur True.

  4. Faites un clique droit dans la liste, puis Nouvelle > Chaîne de caractères.
  5. Entrez comme nom :

    network.protocol-handler.app.itpc

    Et comme valeur, l'emplacement de l'exécutable d'Amarok, par exemple :

    /usr/bin/amarok

Désormais, vous pourrez cliquer sur un icône de balados, par exemple celui des émissions de Là-bas si j'y suis. Le balados sera automatiquement ajouté dans Amarok. Notez que la première fois que vous le ferez, un message vous avertira que vous utilisez un logiciel externe. Vous pouvez cocher la case pour que ce message ne s'affiche plus.

- page 1 de 9