Projets personnels

La version v2.3.2 de Custom Menu a été publiée il y a quelques jours. Cette version contient des mises à jours importantes qui rendent l'application à présent très complète.

Pour rappel, Custom Menu est une application qu'on installe dans Nextcloud. Elle permet de corriger un manque cruel de mise en page dans le menu de navigation de Nextcloud. L'application permet de paramétrer 4 modes d'affichage du menu avec, à ce jour, une 40ène de paramètres.

Parmis les dernières mises à jour, on retrouve la capacité de l'application à s'adapter aux couleurs de Nextcloud dès son installation. Mais le plus gros du travail s'est concentré autour la gestion des catégories. En effet, les applications sont organisées dans des catégories gérées par les développeurs Nextcloud. Custom Menu permet maintenant de créer de nouvelles catégories (dans toutes les langues utilisées dans votre Nextcloud) et de les affecter aux applications qui sont installées.


Mon blog a été mon premier vrai projet quand j'ai commencé de faire du développement web et il me suit toujours aujourd'hui.

Beaucoup de versions ont été réalisées car elles suivent mon évolution et les technologies que j'utilise. La précédente mouture était basée sur Trinity, un CMF basé sur Symfony 2, développé par web&design et sur lequel j'ai beaucoup travaillé. Trinity est puissant mais la conception n'est plus d'actualité et la migration vers une version récente de Symfony est impossible.
Je travaille sur la refonte du site web de l'association Tinternet & cie et s'est rapidement posée la question du CMS. Cela m'a permis d'entreprendre l'écriture de Murph, un CMF qui repose sur Symfony 5 et qui reprend les bonnes idées de Trinity avec une conception qui tient plus la route.

Tandis que Trinity était un hommage à Matrix, Murph est tout droit tiré d'Interstellar, un film pour lequel j'ai une affection très particulière. Voici quelques images du backoffice.

Si le projet vous intéresse, le code source du blog est disponible ici et celui du squelette de Murph se trouve là.


Cela fait des années que j'utilise ZSH comme interpréteur de commande. En complément, j'utilise également des plugins disponibles via l'excellent projet oh-my-zsh.

J'ai harmonisé l'ensemble des configurations sur mes différents accès. Pour ce faire, j'ai principalement travaillé sur le prompt et je publie aujourd'hui le code de mon thème.

Voici une capture d'écran qui décrit l'ensemble des fonctionnalités de mon thème :

  • Une gestion des codes de sortie avec différentes couleurs et éventuellement le code
  • L'affichage de l'heure
  • L'affichage de l'utilisateur et de la machine
  • Changement de couleur si l'utilisateur⋅trice est privilégié⋅e
  • Le chemin courant avec un retour à la ligne s'il dépasse une certaine longueur
  • Intégration de GIT (nécessite olivierverdier/zsh-git-prompt)

Mon thème pour ZSH

Le code source est disponible sur cette page et il est totalement libre.


Cette année très particulière m'a quand même permis de consacrer plus de temps pour le logiciel libre que l'an passé.

Mes efforts se sont naturellement dirigés vers les outils que j'utilise et c'est Nextcloud et son écosystème sur lesquels je me suis concentré.

Mon plus gros projet de 2020 est Custom menu, une application pour Nextcloud qui permet de modifier le menu par défaut en proposant d'autres affichages. Je suis très content du résultat et beaucoup d'administrateurs ont décidé de l'installer sur leur instance. En effet, toutes versions confondues, Custom menu a été téléchargé plus de 102 mille fois et les dernières versions sont installées sur environ 9000 instances.

J'ai réalisé du code pour faire évoluer l'application Forms on y ajoutant de nouveaux types de champ. Cela n'a pas du tout été évident d'échanger avec l'équipe de développement mais j'espère voir arriver ces évolutions dans une prochaine version.

Ensuite, j'ai traduis Analytics en français même si je ne suis pas satisfait. Je vais faire de nouvelles traductions l'année prochaine ! Cette application permet de mettre en graphique des données stockées sur Nextcloud ou accessibles depuis une API. C'est encore relativement basique mais c'est tout de même très pratique.

Même si le développement n'est pas très actif, j'utilise l'application Printer et j'ai proposé du code pour gérer les permissions et réduire les risques d'injection de code.

Dans un contexte très différent de Nextcloud, j'ai apporté un correctif au projet PDNS Manager, une interface web qui permet de gérer les enregistrements d'un serveur Powerdns.

J'ai récemment publié Mail RSS, une application pour transformer des emails en flux RSS. Enfin, un peu plus tôt cette année, j'ai mis en ligne les sources du site web qui permet de monitorer le terrarium de la maison.

Je crois avoir fait le tour de mon activité en espérant poursuivre en 2021 !


J'essaye de plus en plus de réduire le volume de mails que je reçois. Du coup, quand une newsletter m'intéresse et que les auteurs ne fournissent pas de flux RSS, cela me donne un prétexte pour écrire un nouveau projet : Mail RSS.

Comment ça marche ?

L'idée est assez simple : en utilisant les alias de mail dans Postfix, on peut faire en sorte qu'un mail qui arrive sur le serveur soit traité par une commande. J'ai décidé de rediriger les mails dans un répertoire précis du serveur et je demande à Mail RSS de les lire et de les importer.

Prenons la newsletter de TechTrash comme exemple.

Configuration du serveur de mail

Il faut ajouter un alias qui va générer des fichiers.

techtrash: "| cat > /var/lib/mailrss/techtrash-$(date +%s) && chmod o+rw /var/lib/mailrss/techtrash-$(date +%s)"

Au préalable, j'ai créé le répertoire /var/lib/mailrss et je me suis assuré que mon application pouvait lire et écrire dedans, de même que Postfix (nobody:nogroup).

Configuration de l'application

On doit générer un mailing pour TechTrash. Quand on va importer les mails de TechTrash, on pourra les associer au mailing via son identifiant (ID). On pourra ensuite accéder au flux RSS via le lien généré à sa création. Évidement, on peut créer autant de mailing que l'on veut, les modifier et les supprimer.

$ php bin/console mailing:new "TechTrash"
$ php bin/console mailing:list
 ------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- --------------------- 
  Label        ID                                     Feed                                                                     Created at            Updated at           
 ------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- --------------------- 
  Tech Trash   xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   https://exemple.fr/mailing/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/rss      2020-11-12 13:37:00   2020-11-12 13:37:00  
 ------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- --------------------- 

Enfin, il faut un script qui va traiter les fichiers de /var/lib/mailrss en les important dans le mailing correspondant et qui les supprime du serveur.

#!/bin/sh

cd "/path/to/exemple.fr"

import_mails() {
    LABEL="$1"
    MAILING_ID="$2"

    find /var/lib/mailrss -name "${LABEL}-*" | while read MAIL; do
        php bin/console mail:import "${MAILING_ID}" -f "$MAIL" && rm "$MAIL"
    done
}

import_mails "techtrash" "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

Quand un mail est importé, les données récupérées sont :

  • Le sujet du mail
  • La date du mail
  • Le contenu HTML
  • Le contenu texte
  • Les pièces jointes

Toutes ces données seront accessibles à la consultation.

L'application s'appuie sur Symfony (en version de développement) et le code est totalement libre 😄