Simon Vieille

Développeur français animé par la culture du libre et du hacking

Cette semaine, j'ai publié la version 3.0 de Custom Menu. Cette version devient compatible avec Nextcloud 25.
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.

Nextcloud 25 inclut un nombre important de mises à jour et intègre de grandes modifications techniques qui ont impacté le fonctionnement de Custom Menu. Par conséquent, cette version 3 ne supporte que Nextcloud 25 et casse la compatibilité avec AppOrder que je vais certainement réimplémenter. Cependant, cela m'a permis de faire du ménage et d'améliorer des choses !

Pour terminer, Custom Menu a franchit la barre des 345K téléchargements et je n'en suis pas peu fiers 😎

Nextcloud 25 avec Custom Menu


Je viens de publier le code source d'un nouveau projet : Wireguard GUI.

Pour rappel, Wireguard permet de réaliser des VPN rapidement et assez simplement. Il est multiplateforme et très robuste.

Wireguard GUI est quant à lui un logiciel écrit en Go qui pemet de gérer les connexions existantes de Wireguard depuis une application graphique. L'idée derrière cet utilitaire est de faciliter la modification des fichiers de configuration et de gérer le démarrage des interfaces. Wireguard GUI est destiné à Linux.

C'est un projet libre et il vous pouvez télécharger une version compilée depuis la page des releases. Toutes les informations techniques sont disponibles sur le dépot du projet.

Wireguard GUI


Je suis un fervent utilisateur de i3wm et ça dure depuis des années ! Grâce à i3blocks, j'ai pu développer mes propres blocs initialement écrits en PHP, mon langage de prédilection. Dans un but d'apprentissage mais aussi pour gagner de préciseuses ressources (CPU/mémoire/temps d'exécution), j'ai entrepris une refonte en Go.

Ces blocs permettent de récupérer les adresses IP des interfaces réseau, son IP publique, d'activer et désactiver des connexions VPN Wireguard, d'afficher l'usage des disques, créer des lanceurs d'applications, afficher le volume du son et ce qui est joué sur Spotify, générer une barre de tâches, des indicateurs pour RSS et Atom et des messages quand des processus sont détectés.

Toutes la documentation et les liens de téléchargement sont disponibles dans le dépot du projet. Voici un aperçu des blocs en fonctionnement :

i3-blocks-go


En septembre 2018, je publiais un article pour automatiser l'authentification sur Sharepoint Office365 depuis Linux. J'avais développé un outil qui réalisait le parcours d'authentification que propose Microsoft via des pages web. L'interêt de cette méthode d'authentification est de récupérer les cookies de connexion pour les injecter dans Davfs.

Après cette publication, j'ai eu quelques retours qui indiquaient que l'outil ne fonctionnait pas toujours. Les interfaces de connexion peuvent évoluer d'une entreprise à l'autre et je gérais uniquement celles que j'avais. Cette semaine, je me suis confronté à un changement de workflow chez Microsoft et je n'ai pas pu corriger le projet qui est alors devenu inutilisable. J'ai eu besoin de trouver une parade et je me suis tourné vers Playwright qui permet, en autres, de réaliser des tests fonctionnels sur des interfaces web.

Le principe est simple : on lance un navigateur et je simule une saisie utilisateur. À la fin, je récupère les cookies qui ont été générés. Voici la marche à suivre pour installer l'outil qui fonctionne avec NodeJS 16+.

user@host $ git clone https://gitnet.fr/deblan/office365-oauth2-authenticator-2
user@host $ cd office365-oauth2-authenticator-2
user@host $ make setup

Le principe est identique au précédent projet puisqu'il faut déclarer 3 variables d'environnement avec l'adresse du site sharepoint auquel se connecter, l'identifier et le mot de passe puis lancer le script. En retour, vous aurez un json qui contient les cookies et leur valeur.

user@host $ export MS_OFFICE365_SITE="https://foo.sharepoint.com/"
user@host $ export MS_OFFICE365_LOGIN="user@example.com"
user@host $ export MS_OFFICE365_PASSWORD="5eCrEt"
user@host $ node index.js
{"rtFa":"...","FedAuth":"..."}