dadadi blog

To content | To menu | To search

April 2010

Thursday, April 29 2010

prvcat: des catégories privées pour dotclear

Pour un blog dotclear (pas celui-là, un autre), j'avais besoin de restreindre l'accès à certains billets. Dotclear propose cette fonctionnalité: il est possible de définir un mot de passe sur un billet. Néanmoins, c'est d'une part assez contraignant de rentrer le mot de passe pour chaque billet. D'autre part, le billet n'apparaît nulle part, il faut récupérer son url dans l'interface d'administration pour y avoir accès, et fournir les urls une à une aux personnes à qui l'on souhaite donner accès aux billets privés. Il existe aussi Mode privé, un plugin qui permet de rendre le blog complètement privé. Ce n'était pas non plus ce que je cherchais.

J'ai donc fini par écrire un plugin qui correspondait à mes attentes. Je vous présente donc prvcat, un plugin dotclear qui gère les catégories privées. On peut définir une (ou plusieurs) catégorie comme privée, et lui associer un mot de passe. Les billets appartenant à cette catégorie seront automatiquement protégés par le mot de passe. Les catégories privées sont listées sur la page d'accueil du blog, mais on ne peut accèder à leur contenu qu'après avoir renseigné le bon mot de passe. On a alors accès aux billets privés, ainsi qu'au flux rss de la catégorie.

Saturday, April 17 2010

New release for Show Your Places.

Today is time for a new Show Your Places release. Version 0.4 is now available.

SYP is a CMS to manage photos or pictures and displaying them on a map. It's slightly similar to what you get when showing photos with google maps, but it suits my needs more. First, I host my photos and my application myself, so (as long as I backup), it's more durable. Then, I don't have to adhere to painful google maps terms of use. That's actually the main reason I had to write syp: I wanted to show some photos on a map, and wanted my site to be private (password protected). It's not allowed to do that will google maps, so I had to find an alternative, and eventually wrote my own CMS. And also, it uses openstreetmap to display the map.

I hadn't worked on syp for 6 months, so it was time to move this project forward again. Yesterday, I added support for postgresql as a database backend. There was also some old committed but not released modifications. So now, syp is less a pain when you have many photos in same area. You can refer to changelog for more information.

As usual, you can get syp from syp main page, you can browse git repository, or you can try the demo or admin interface demo (login: admin; password: toto). Enjoy!

Thursday, April 1 2010

CSS History Hack corrigé

Grâce au (à cause du) sélecteur css visited, il est possible d'appliquer une propriété différente à un lien html qui a été visité. Cela peut donner une indication visuelle très intéressante lorsque par exemple les liens déjà visités sont d'une couleur différente. Par contre, cela donne aux sites webs, un moyen de connaître la liste des sites que l'utilisateur a visités, ou au moins de savoir lesquels il a visité parmi une liste d'adresses.

En javascript, la méthode getComputedStyle permet de récupérer des informations sur le style réellement appliqué à un élément. Si l'auteur du site déclare que les liens visités doivent être de couleur verte ou de taille 12px qu'il affiche une liste de liens (au besoin en les cachant plus ou moins grossièrement à l'utilisateur), il lui suffit d'utiliser la méthode getComputedStyle pour connaître la couleur ou la taille des liens et ainsi savoir lesquels ont été visités. Il est ainsi possible de tester un grand nombre de sites très rapidement. (démo)

Il est également possible d'utiliser cette technique sans javascript. Par exemple, en utilisant la propriété css background-image qui va afficher telle ou telle image distante pour chaque adresse visitée. Il suffit au site attaquant d'interpréter les logs du serveur web pour savoir quelles images ont été affichées et donc en déduire quels sites ont été visités. (démo).

Ce problème est connu depuis longtemps, au moins 8 ans, et aucune solution n'avait été apportée. Or, le problème vient d'être résolu par Mozilla. Tout d'abord, le comportement de getComputedStyle a été modifié afin de ne plus  retourner le vrai résultat pour les liens visités. D'autre part, on ne peut plus maintenant modifier que  la couleur des liens, et pas les autres propriétés.

Cette correction sera disponible dans les prochaines version de Firefox et permettra d'améliorer la protection de l'historique des utilisateurs, au moins dans Gecko pour l'instant. Elle ne permettra malheureusement pas de le protéger complètement. Il sera toujours possible par exemple d'afficher des images de différents sites et de mesurer le temps de chargement pour essayer de deviner si elles étaient dans le cache. D'autres moyens sont également envisageables. Néanmoins, ce type d'attaque devrait être rendue plus difficile à mettre en place, ce qui est déjà un progrès important.

vteplugin: improve your workflows by decreasing number of opened windows

When working on my computer, my two main applications are a webbrowser and a terminal. I'm constantly switching between those two windows, and therefore loosing some valuable time during the switch.

At first, I decided to improve my workflow by browsing the web from my terminal, but browsing experience in the console is slightly limited. I had still a strong motivation after lynx had prompted me 4 times if I wanted to store cookies when using a search engine, and didn't give up when I realized cookies were not stored on hard drive, but I decided to find another way when I could not log into this blog.

As it was difficult to use a webbrowser inside my terminal, I tried to run instead my terminal inside my webbrowser. Then I made vteplugin, a plugin to run a terminal inside a webbrowser tab.

screenshot of vteplugin inside midori

It works in Gecko (firefox, seamonkey, ...) and webkit-gtk (midori, uzbl, ...). I don't known if it works in webkit-qt (arora, ...). If you try it, I'd be happy to known the result. It does not work in opera. To install, you can download it from this blog or clone it from github. Then, extract it and run ./waf configure && ./waf build and, as root, ./waf install. Restart your browser, and open vteplugin.html file.

On the technical side, it's a npapi plugin using XEmbed Extension. It uses libvte to open a terminal in plugin window

Now, like web2.0 fanboys, I can have all my applications inside my browser, but all my data are still belong to me.

Post written with vim inside vteplugin inside iceweasel