Blog - Simon Vieille https://www.deblan.io/ DevOp animé par la culture du libre et du hacking fr <![CDATA[Murph v1.23 et Custom Menu v3.11]]> https://www.deblan.io/post/658/murph-v1-23-custom-menu-v3-11 Je n'ai pas écrit d'articles depuis quelques temps car mes semaines sont très chargées. Pour autant, je travaille sur de nombreux projets qui me donnent des idées de prochains articles.

Le 1er novembre dernier a été publiée la version v1.23 de Murph. Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues. Il est aussi très efficace pour développer des outils d'administration et des applications métiers. C'est par ce prisme que j'ai beaucoup exploité Murph ces derniers mois, ce qui m'a permis de le mettre à l'épreuve. Je l'ai donc agrémenter de nouvelles fonctionnalités et de correctifs.

Documentation Murph

Quant à Custom Menu, la version v3.11.0 a été publiée de 5 novembre. Elle apporte une nouvelle fonctionnalité de recherche des applications dans les différents menus. Celle permet de filtrer les applications et permettre de les accéder plus rapidement. J'y pensais depuis quelques temps et c'est un besoin qui m'a été rémonté, c'est donc maintenant disponible !

Custom Menu

Murph et Custom Menu sont des projets qui me tiennent vraiment à cœur et je suis heureux de les voir être utilisés par d'autres personnes que moi 😁

]]>
658 Mon, 06 Nov 2023 11:30:00 +0100
<![CDATA[Matrix-Synapse : migrer de SQLite à PostgreSQL]]> https://www.deblan.io/post/655/matrix-synapse-migrer-de-sqlite-a-postgresql Matrix-Synapse est un service de messagerie décentralisé et interopérable avec d'autres messageries. Je l'utilise à titre personnel et dans le cadre d'une association. Il livre un service que je considère sensible, c'est pourquoi les différentes instances sont hébergées sur des infras que je gère.

La configuration par défaut stocke les données de la messagerie dans une base de données SQLite. Cela a bien fonctionné pendant quelques années mais la base de données devient très rapidement obèse (plusieurs Go) et SQLite n'est plus adapté. C'est d'ailleurs recommandé d'utiliser PostgreSQL, naturellement plus adapté compte tenu de la grande quantité de données.

Voici la démarche pour basculer vers PostgreSQL depuis une base SQLite. J'évolue sur des machines sous Debian et j'ai installé Matrix-Synapse via les packages livrés par matrix.org.

Quelques recomandations avant d'opérer la migration :

  • Avoir l'espace disque nécessaire pour accueillir une copie de la base de données SQLite
  • Avoir l'espace disque nécessaire pour héberger les données dans PostgreSQL
  • Communiquer auprès de vos utilisateur·rice·s car la procédure prendra des heures et le service sera inaccessible

La première étape est de stopper le service et de faire une copie de la base de données. Je vous invite, si vous le pouvez, à duppliquer la copie de la base sur une autre machine.

$ sudo systemctl stop matrix-synapse.service
$ sudo cp -v /var/lib/matrix-synapse/homeserver.db{,.bk}

Ensuite, il faut installer PostgreSQL. Je reprend la procédure de la documentation officielle.

$ sudo sh -c 'echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get -y install postgresql
$ passwd postgres # Changement du mot de passe de l'utilisateur "postgres"

Éditer le fichier /etc/postgresql/15/main/pg_hba.conf puis opérer ces modifications :

-local   all             postgres                                peer
+local   all             all                                     peer
-host    all             all             127.0.0.1/32            scram-sha-256
+host    all             all             127.0.0.1/32            md5
-host    all             all             ::1/128                 scram-sha-256
+host    all             all             ::1/128                 md5

On relance ensuite PostgreSQL :

$ sudo systemctl start postgresql.service

C'est maintenant le moment de créer une base et un compte nommés matrix.

$ su - postgres
$ createuser --pwprompt matrix # Conserver le mot de passe que vous allez saisir pour plus tard
$ createdb -e -E UNICODE --template=template0  --locale=C -O matrix matrix
$ psql -d matrix
synapse=# GRANT ALL ON SCHEMA public TO matrix;

Avant de lancer le script de migration, il faut duppliquer temporairement le contenu de /etc/matrix-synapse/conf.d/server_name.yaml dans /etc/matrix-synapse/homeserver.yaml. Éditer le fichier /etc/matrix-synapse/homeserver.yaml pour changer la configuration de la base de données :

database:
  name: psycopg2
  args:
    host: 127.0.0.1
    port: 5432
    user: matrix
    password: "$3cr€t" # Indiquer le mot de passe saisi lors de la création d'utilisateur
    database: matrix
    cp_min: 5
    cp_max: 10

Vous pouvez maintenant lancer la migration. Cela prendre un temps plus ou moins important selon le nombre d'enregistrements. Une base de données de 10Go a été migrée en 3 heures. Je vous invite à lancer la commande dans une session tmux ou screen.

$ sudo apt-get install tmux
$ tmux
$ synapse_port_db --curses \
    --sqlite-database /var/lib/matrix-synapse/homeserver.db \
    --postgres-config /etc/matrix-synapse/homeserver.yaml

Une fois la migration terminée, vous pourrez supprimer le contenu duppliqué de /etc/matrix-synapse/conf.d/server_name.yaml et relancer le service.

$ sudo systemctl start matrix-synapse.service

Dans le cas où il y aurait un problème, vous pouvez analyser les logs de Matrix-Synapse dans /var/log/matrix-synapse/homeserver.log. De mon coté, j'ai du faire une ou deux requêtes pour corriger des compteurs et tout était documenté dans ces logs.

Je pense avoir donné toutes les indications pour que cela se passe bien. N'hésitez pas à laisser un commentaire si vous rencontrez un problème.

]]>
655 Sun, 10 Sep 2023 18:30:00 +0200
<![CDATA[Remote i3-wm WS : ma télécommande pour bureau GNU/Linux (v2)]]> https://www.deblan.io/post/654/remote-i3-wm-ws-ma-telecommande-pour-bureau-gnu-linux-v2 En février 2018, je publiais l'article Remote i3-wm WS : ma télécommande pour bureau Debian GNU/Linux dans lequel je présentais une application pour télécommander un bureau Linux depuis une interface web.

Le projet est écrit en PHP et fonctionne à merveille. Cependant, il manque 2 fonctionnalités majeures : l'authentification de l'utilisateur et permettre de configurer l'interface sans passer par le code source. Cela permettrait de l'exploiter sur des environnements variés. Par ailleurs, le fait qu'il soit écrit en PHP peut faire rebuter son installation.

J'ai décidé de le réécrire complètement en GO en m'appuyant sur le framework Echo. Je peux à présent fournir un unique binaire et j'ai intégré un fichier de configuration en YAML pour paramétrer l'authentification et l'interface.

Remote i3-wm GO

Pour démarrer le projet, télécharger la dernière version depuis Gitnet puis générer un fichier de configuration en partant du modèle.
Il suffira ensuite de lancer le binaire en spécifiant la variable d'environnement DISPLAY et le chemin du fichier de configuration en paramètre :

$ DISPLAY=:0 ./app-linux-amd64 config.yaml

Une fois démarré, l'interface web est par défaut accessible à l'adresse http://127.0.0.1:4000.

À l'heure actuelle, je ne compile pour que pour une architecture 64 bits mais je peux en intégrer d'autres si vous le désirez. Le code source est disponible dans le dépot du projet.

La première version avait sucité un certain intérêt, j'espère que cette nouvelle version plus simple à déployer vous plaira !

]]>
654 Sun, 27 Aug 2023 14:45:00 +0200
<![CDATA[Signez la pétition pour empêcher la France d’obliger les navigateurs tels que Firefox de Mozilla à censurer des sites web]]> https://www.deblan.io/post/653/signez-la-petition-pour-empecher-la-france-d-obliger-les-navigateurs-tels-que-firefox-de-mozilla-a-censurer-des-sites-web Le gouvernement veut imposer aux éditeurs de navigateurs web de filtrer des sites selon une liste que le gouvernement gère et tiendrait secrète.

Si on peut naïvement se dire que ça permettrait de filtrer les sites nauséabonds, c'est aussi un nouvel outil terrible pour un gouvernement fasciste qui sera en mesure de censurer ce qu'il veut sans compte à rendre à personne.

Ce projet est une première car il s'inscrit directement dans les navigateurs (Firefox, Google Chrome, Microsoft Edge, Safari et les autres).

Les pays qui utilisent des moyens similaires à l'échelle d'un état sont tous des dictatures ou fascistes.

Je n'accepte pas que la France soit une locomotive pour ces régimes vers lesquels nous nous dirigeons chaque jour qui passe.

Le gouvernement a présenté le projet de loi devant le Parlement peu avant les vacances d’été et espère l’adopter aussi rapidement et discrètement que possible ; le gouvernement a même engagé la procédure accélérée, le vote devant avoir lieu à l’automne.

Un des moyens de réagir et de faire porter votre voix et c'est pourquoi je partage cette pétition de la fondation Mozilla.

Pour compléter le lien vers pétition, je vous invite à lire l'article de blog de Mozilla publié en juin dernier.

]]>
653 Thu, 17 Aug 2023 13:00:00 +0200
<![CDATA[Internet devient-il un Minitel 2.0 ou un bien commun ? - Benjamin Bayart - RTS – Libre à lire !]]> https://www.deblan.io/post/652/internet-devient-il-un-minitel-2-0-ou-un-bien-commun-benjamin-bayart-rts-libre-a-lire Nous fêtons cette année [2019] les 50 ans dʹInternet et les 30 ans du WEB conçu au CERN par Tim Berners Lee. Que reste-t-il de ce réseau décentralisé et libre des origines ? Quelles sont les…

]]>
652 Sat, 05 Aug 2023 11:28:00 +0200
<![CDATA[Murph v1.20 is out! 📣]]> https://www.deblan.io/post/651/murph-v1-20-is-out Une nouvelle version de Murph a été publiée le 27 juillet 2023 🥳

Murph est un framework open-source pour construire des CMS. Il est développé à l'aide de Symfony et permet de gérer des sites web avec plusieurs noms de domaines et en plusieurs langues.

Voici une liste des changements importants :

  • Le contrôleur pour gérer les utilisateurs est maintenant intégré au squelette pour faciliter la surcharge dans les projets spécifiques
  • Le générateur de CRUD va automatiquement créer des templates pour l'affichage d'une entité et celui du formulaire d'édition
  • Il est maintenant possible d'injecter des paramètres dans le formulaire des filtres dans le CRUD
  • Un nouveau champ BooleanField a été ajouté pour afficher une données booléenne dans la liste du CRUD
  • De nouveaux blocs Twig font leur apparition dans le template index.html.twig du CRUD
  • Le générateur de page permet de définir le bloc ChoiceBlock
  • L'affichage des détails d'un fichier dans le gestionnaire de fichier est améliorée
  • On peut définir une fonction personnalisée pour générer les noms de fichier dans le service FileUploadHandler
  • La fonction Twig entity_to_array possède deux nouveaux paramètres pour filtrer les données
  • Les paramètres core.site.name et core.site.logo ne sont plus obligatoires

Des corrections divers ont été apportées comme la correction d'un bug avec PostgreSQL.

Les journaux complets sont disponibles sur la 📘 documentation.

Murph est exploité dans de nombreux projets personnels et professionnels avec des besoins spécifiques. L'architecture du CMS et les outils intégrés ont permis de gérér la quasi totalité des besoins. Je vous recommande chaudement de prendre le temps de tester Murph, vous pourriez être supri⋅e⋅s ! 😀

]]>
651 Fri, 28 Jul 2023 10:30:00 +0200
<![CDATA[Je n'ai rien à cacher.]]> https://www.deblan.io/post/650/je-nai-rien-a-cacher Puis-je vous demander une copie de tous vos emails, de vos messages et photos sur Facebook, et de tous les fichiers sur votre ordinateur ? J’aimerais tout savoir sur votre vie privée.

Comment oseriez-vous répondre non ? Lorsque vous n’avez rien à cacher, vous ne pouvez pas faire de distinction entre ce que vous admettez rendre public et ce qui vous dérange un peu plus.

]]>
650 Wed, 05 Jul 2023 13:19:00 +0200
<![CDATA[Capture, un reverse proxy pour analyser les requêtes de vos applications]]> https://www.deblan.io/post/648/capture-un-proxy-pour-analyser-les-requetes-de-vos-applications Capture est un reverse proxy HTTP qui se place entre votre application cliente et une API. Capture génère un tableau de bord en temps réel des requêtes HTTP de votre application et des réponses de l'API (ou de n'importe quel service HTTP). À la manière des debuggeurs réseaux présents dans les navigateurs, vous pouvez analyser les entêtes, les contenus générés, les temps de réponse, etc.

Ce projet a été initialemement développé par Fabricio et les sources sont disponibles sur Github.

Écrit en GO, il n'était malheureusement plus maintenu depuis près de 2 ans et c'est regrettable car il est simple et performant. J'ai donc entrepris un fork que j'ai commencé à enrechir avec un ou deux correctifs et des améliorations sur l'interface et sa configuration. La sources sont maintenant accessibles sur Gitnet.

Capture

Voici les méthodes basiques pour lancer capture :

$ capture -url=https://example.com/
$ docker run -p 9000:9000 -p 9001:9001 deblan/capture -url=https://example.com/

Une des nouvelles fonctionnalités est la capacité à inscrire sa configuration dans un fichier nommé par défaut .capture.ini. En effet, s'il est possible de tout passer en argument, c'est tout de même plus pratique de créer des fichiers de conf spécifiques pour chacun de vos projets.

$ cat .capture.ini
url = https://example.com/
port = 9000
dashboard = 9001
captures = 16
$ capture

Vous pouvez bien sur surcharger ses valeurs via les arguments. Il est également possible de spécifier le chemin vers le fichier de conf avec -conf.

Le projet est sous la licence MIT et si vous avez envie de contribuer, ça sera avec grand plaisir ! J'espère vraiment pouvoir faire revivre ce beau projet et qu'il sera utilise à d'autres développeur·euse·s 😄

]]>
648 Wed, 07 Jun 2023 09:00:00 +0200
<![CDATA[Affaire du 8 décembre : le chiffrement des communications assimilé à un comportement terroriste]]> https://www.deblan.io/post/649/affaire-du-8-decembre-le-chiffrement-des-communications-assimile-a-un-comportement-terroriste Si vous prêtez une attention forte à protéger votre vie privée, si vous utilisez des méthodes communications chiffrées, si vous installez des systèmes d'exploitations alternatifs, si vous documentez votre travail ou que vous partagez ces bonnes pratiques alors vous êtes dangereux⋅ses.

J'ai honte.

]]>
649 Mon, 05 Jun 2023 13:20:00 +0200
<![CDATA[Un modèle pour démarrer un script shell]]> https://www.deblan.io/post/647/modele-pour-demarrer-script-shell J'ai régulièrement le besoin d'écrire des scripts shell un peu évolués. Il y a quelques mois, j'ai commencé à travailler sur un modèle que je met régulièrement à jour. Aujourd'hui, j'ai travaillé sur la couche pour gérer les logs et c'est pourquoi j'écris cet article.

Ce modèle contient les fonctions usage et help pour décrire le fonctionnement du programme. La fonction on_interrupt permet de gérer le signal SIGINT quand le programme est interrompu.

La fonction main est la fonction qui contient le code principal du script. Elle contient la gestion des paramètres passés au script. Par défaut, plusieurs y sont déjà intégrés : -l pour définir le niveau de log désiré et -h pour afficher l'aide.

Enfin, il y a la fonction log pour afficher des messages de debug avec différents niveaux de criticité. Cela permet de générer des messages qui seront affichés ou pas selon les besoins. Les messages sont colorés selon le niveau de criticité et ils sont redirigés vers stderr. Il est également possible d'ajouter la date.

Le code source est disponible sur Gitnet et comme toujours, vous pouvez en faire ce que vous voulez !

En conclusion, le développement de ce modèle de script shell a été un projet passionnant et fructueux. En l'enrichissant régulièrement, j'ai pu créer une base solide pour gérer efficacement les fonctionnalités essentielles d'un script.

]]>
647 Sun, 21 May 2023 19:00:00 +0200
<![CDATA[Quoi de neuf sur les internets ? #1]]> https://www.deblan.io/post/646/quoi-de-neuf-sur-les-internets-1 Je vous propose une nouvelle série d'articles afin de partager ce qui a marqué ma veille technologique de ces dernières semaines. Je vais donc régulièrement rassembler pour vous une sélection de sites, articles, vidéos et podcasts qui ont suscité mon intérêt et qui je l'espère, vous inspireront également. Alors, installez vous confortablement et laissez-vous guider à travers mes découvertes.




J'ai tenté de mélanger différents sujets, dans l'espoir que ce nouveau format vous aura plu.

À bientôt !

]]>
646 Tue, 09 May 2023 14:00:00 +0200
<![CDATA[Mozilla arrive (doucement) sur Mastodon avec sa propre instance]]> https://www.deblan.io/post/645/mozilla-arrive-doucement-sur-mastodon-avec-sa-propre-instance Mozilla met un pied dans les réseaux sociaux et annonce sur son blog ouvrir une instance Mastodon en version beta privée. « Au risque d'être à la fois dramatique et cliché, je dirais que les réseaux sociaux sont cassés » lance Steve Teixeira, récent responsable …

]]>
645 Sat, 06 May 2023 21:30:00 +0200
<![CDATA[100ème publication et 3ème anniversaire de Custom Menu 🎂]]> https://www.deblan.io/post/642/100eme-publication-et-3eme-anniversaire-de-custom-menu Il y a trois ans, j'ai publié la première version de mon application. Elle a été développée pendant le premier confinement dans le but de remplacer le menu de Nextcloud, qui était devenu inutilisable à cause du grand nombre d'applications que j'avais installées.

Le 27 mars dernier marquait le jour de la 100ème publication de Custom Menu et aujourd'hui je suis fiers de souffler sa 3ème bougie 🎂
C'est un outil que les gens apprécient et utilisent et c'est aussi quelque chose qui me fait réellement plaisir. Au moment où j'écris ces lignes, Custom Menu comptabilise 425 milles téléchargements !

Réalisée initialement sur Nextcloud 18, Custom Menu a franchi neufs versions majeures de Nextcloud grâce à un travail acharné et les nombreuses contributions que j'ai reçus. Les gens n'ont pas hésité à demander des fonctionnalités et à remonter des bugs. Les traducteur·rice·s ont passé pas mal de temps à traduire l'app qui est maintenant disponible dans 9 langues.

En plus du développement de l'application, j'ai aussi pris du temps lui créer un site web dédié. On y retrouve les informations essentielles comme un guide d'installation, une FAQ, le journal des modifications, etc.

Merci à toutes celles et ceux qui ont contribué à la réussite de Custom Menu et rendez-vous pour de nombreuses autres mises à jour à venir !

]]>
642 Tue, 28 Mar 2023 13:37:00 +0200
<![CDATA[Gitea et forgejo v1.19.0 sont dans les bacs 🥳]]> https://www.deblan.io/post/641/gitea-et-forgejo-v1-19-0-sont-dans-les-bacs Le 20 mars dernier a été publiée la version v1.19.0 de Gitea ! Forgejo, le soft fork de Gitea poussé par Codeberg a naturellement publié une nouvelle version dans la foulée.

Gitea est un logiciel sous licence MIT qui permet de gérer le code source de ces projets. C'est une alternative légère et autonome qu'on peut auto-héberger dans un environnement très peu couteux. Gitea offre une interface utilisateur simple, complète et conviviale pour gérer les tâches classiques d'une forge.

Voici une liste des principales nouvelles fonctionnalités proposées dans cette version :

  • Il est désormais possible de configurer une entête Authorization dans les webhooks réalisées par la forge
  • Dès lors que c'est configuré, il est maintenant possible de répondre par mail aux notifications des Pull Request et des Issues (documentation)
  • Le registre de paquets supporte à présent Cargo, Conda, Chef et la gestion des quotas
  • On peut maintenant créer des Kanbans au niveau des utilisateurs et des organisations
  • Les étiquettes peuvent être scopées en utilisant un / pour mieux contextualiserles tickets
  • Il existe enfin des flux RSS pour suivre les versions et les tags d'un projet
  • Et parmi les fonctionnalités marquantes, on a une première proposition de CI/CD intégrée avec une syntaxe proche de Github Actions. Cette fonctionnalité n'est pas encore prête pour la production mais elle est très prometteuse !

Bien évidemment, cette nouvelle mouture inclue pas mal de correctifs et d'autres améliorations que vous laisse découvrir dans le journal des modifications.

Je vous invite à prendre du temps pour découvrir l'ensemble des nouvelles fonctionnalités 🤗

]]>
641 Mon, 27 Mar 2023 08:30:00 +0200
<![CDATA[Loi J.O. : refusons la surveillance biométrique]]> https://www.deblan.io/post/640/loi-jo-refusons-surveillance-biometrique Courant mars, l’Assemblée nationale va se prononcer sur le projet de loi relatif aux Jeux olympiques et paralympiques, déjà adopté par le Sénat.

En son sein, l’article 7 vise à autoriser la vidéosurveillance automatisée (VSA), cet outil de surveillance biométrique qui, à travers des algorithmes couplés aux caméras de surveillance, détecte, analyse et classe nos corps et comportements dans l’espace public. Il s’agit d’un changement d’échelle sans précédent dans les capacités de surveillance et de répression de l’État et de sa police.

Accès au site

]]>
640 Sun, 19 Feb 2023 17:25:00 +0100
<![CDATA[Générer des images pour le partage sur les réseaux]]> https://www.deblan.io/post/638/generer-images-partage-reseaux-opengraph Il existe une quantité importante d'outils pour éditer des images. Ce sont soit des logiciels à installer ou soit des services en ligne. Mais parmi ces nombreux choix, je n'en ai trouvé aucun qui soit à la fois libre et qui permettrait de s'abstraire de la mise en page.

Dès lors que je décide de publier un article sur le blog, je vais partager son lien sur quelques sites dont des réseaux sociaux. Ces réseaux vont récupérer le contenu de la page de l'article et extraire un certain nombre d'informations dont les données Open Graph. Le protocole Open Graph permet aux réseaux sociaux de comprendre comment afficher l'aperçu d'une page web partagée par un utilisateur. Les principales données qui sont récupérées sont le titre de la page, sa description et l'image qui sera affichée pour le partage.

J'avais pour habitude d'ouvrir Inkscape pour éditer cette image. Cela fonctionne très bien mais ça demande un peu de temps et si je souhaites publier ailleurs que depuis ma machine, c'est tout de suite un casse-tête.

Inkscape

J'ai parcouru le web pour trouver un outil qui répondrait à mes envies et j'ai finalement décidé d'en développer un 🤪

Cet outil permet donc de créer une image de la dimension qu'on veut. Vous pourrez saisir un titre, une description et divers informations comme l'auteur et des logos. Il y a quelques options pour changer les couleurs, ajouter une image et un overlay de couleur avec une opacité. Tout le paramétrage est enregistré dans le navigateur.

OG:IMAGE

Le projet est publié sous licence GPLv3 et son code est disponible sur Gitnet. J'ai décidé d'utiliser VueJS3 pour gérer toute la partie interaction et Tailwind CSS pour la présentation.

Si vous avez envie d'essayer, vous pouvez utiliser la version en ligne. Elle est hébergée sur Gitnet Pages, mon service d'hébergement de pages statiques similaire à Github Pages.
Vous pouvez utiliser cet outil sans vous tracasser pour vos données car rien n'est stocké sur mon serveur. Toutes les données et les traitements sont réalisés dans votre navigateur, ce qui en fait un outil simple à auto-héberger.

La version actuelle est toute neuve et j'aspire à lui ajouter des fonctionnalités. N'hésitez pas à me faire des retours !

En attendant, bon partages 🚀

]]>
638 Mon, 30 Jan 2023 22:25:00 +0100
<![CDATA[Détecter les vulnérabilités dans les dépendances de son projet]]> https://www.deblan.io/post/637/detecter-les-vulnerabilites-dans-les-dependances-de-son-projet La gestion des dépendances dans un projet est quelque chose de complexe. Il y a autant de gestionnaires qu'il y a de langages et leur politique de gestion des versions varient beaucoup. Par exemple, composer, le gestionnaire de dépendances de PHP ne fait pas apparaître le numéro de version mineure tandis que npm (NodeJS) le fait. Par ailleurs, dès lors qu'un projet est installé et qu'il n'est pas à jour alors il peut avoir un décalage entre les déclarations et la réalité. Il n'est donc pas fiable de regarder ces déclarations de versions pour analyser un projet.

Les gestionnaires de dépendances génèrent (presque) tous des fichiers de lock qui listent les versions installées. Open Source Vulnerability Detector aka osv-detector s'appuie sur ces fichiers pour lancer des détections de vulnérabilités. Il s'agit d'un projet écrit en Go, léger et très simple d'utilisation. Les sources sont disponibles sur Github et les binaires y sont également publiés.
Pour l'utiliser, il suffit de lui passer au moins un fichier de lock et il s'occupe du reste.

$ osv-detector Gemfile.lock package-lock.json

Si des vulnérabilités sont détectées alors elles sont listées et le programme retourne un code de sortie à 1. Les vulnérabilités sont accompagnées d'un lien pour en apprendre un peu plus comme par exemple les versions corrigées.

Loaded the following OSV databases:
  npm (2774 vulnerabilities, including withdrawn - last updated Fri, 13 Jan 2023 20:30:13 GMT)

package-lock.json: found 932 packages
  Using db npm (2774 vulnerabilities, including withdrawn - last updated Fri, 13 Jan 2023 20:30:13 GMT)

  ansi-html@0.0.7 is affected by the following vulnerabilities:
    GHSA-whgm-jr23-g3j9: Uncontrolled Resource Consumption in ansi-html (https://github.com/advisories/GHSA-whgm-jr23-g3j9)
  ansi-regex@3.0.0 is affected by the following vulnerabilities:
    GHSA-93q8-gq69-wqmw: Inefficient Regular Expression Complexity in chalk/ansi-regex (https://github.com/advisories/GHSA-93q8-gq69-wqmw)

[...]

J'ai packagé osv-detector dans une image docker pour permettre de l'utiliser dans le cadre d'une intégration continue.

$ docker run -it -v "$(pwd):/app" deblan/osv-detector Gemfile.lock package-lock.json

osv-detector est un outil très pratique pour analyser rapidement les dépendances d'un projet et identifier rapidement les vulnérabilités. Il s'intègre parfaitement dans une chaîne de production et peut ainsi aider à s'assurer que le code est sécurisé.

]]>
637 Fri, 13 Jan 2023 23:25:00 +0100
<![CDATA[Woodpecker CI, envoyer du mail dans certaines conditions]]> https://www.deblan.io/post/636/woodpecker-ci-envoyer-mail-conditions En juin dernier, j'ai migré ma plateforme d'intégration continue vers Woodpecker CI et j'en suis très satisfait.

Woodpecker CI permet de créer des conditions d'exécution des étapes avec la clause evaluate. Elle doit être définie dans la section when des étapes concernées. Voici un exemple avec une condition sur la valeur de la variable CI_BUILD_EVENT pour l'étape foo.

pipeline:
  foo:
    image: vendor/image
    when: 
      - evaluate: 'CI_BUILD_EVENT == "push"'

Je souhaite avoir est une notification par mail quand une étape du pipeline échoue ou dès lors que le précédent pipeline a échoué. L'idée est d'être notifié quand il y a eu un problème et quand il est résolu. L'image plus ou moins officielle pour envoyer du mail est drillster/drone-email, initialement destinée à Drone. En combinant cette image et evaluate, je pensais pouvoir réaliser ce que je voulais :

pipeline:
  mail:
    image: drillster/drone-email
    settings:
      host:
        from_secret: mail_host
      username:
        from_secret: mail_username
      password:
        from_secret: mail_password
      from:
        from_secret: mail_from
      subject: "[{{ repo.owner }}/{{ repo.name }}] Pipeline #{{ build.number }}: {{ build.status }}"
    when:
      - evaluate: 'CI_STEP_STATUS == "failure" || CI_PREV_PIPELINE_STATUS == "failure"'

Le problème est que l'expression est évaluée avant la génération du pipeline donc CI_STEP_STATUS n'existe pas encore et l'étape mail est ignorée sauf si le précédent pipeline a échoué.

Pour résoudre mon problème, j'ai forké drillster/drone-email pour créer deblan/woodpecker-email. Cette image est totalement orientée vers Woodpecker CI et permet de définir une evaluate au niveau de settings. J'ai fais en sorte que l'expression soit évaluée au moment de l'exécution de l'étape et si la condition n'est pas validée alors aucun mail n'est envoyé.

pipeline:
  mail:
    image: deblan/woodpecker-email
    settings:
      host:
        from_secret: mail_host
      username:
        from_secret: mail_username
      password:
        from_secret: mail_password
      from:
        from_secret: mail_from
      subject: "[{{ repo.owner }}/{{ repo.name }}] Pipeline #{{ build.number }}: {{ build.status }}"
      evaluate: 'CI_STEP_STATUS == "failure" || CI_PREV_PIPELINE_STATUS == "failure"'
    when:
      - status: [success, failure]

Mon problème est résolu !

Le code source est disponible sur Gitnet et l'image est à la fois publiée sur Docker Hub et Gitnet.

]]>
636 Wed, 04 Jan 2023 22:40:00 +0100
<![CDATA[Bilan de l'année 2022]]> https://www.deblan.io/post/635/bilan-2022 Ces douze derniers mois ont été extrêmement riches avec une activité associative prenante, un projet de construction de maison qui démarre enfin, le démarrage d'une entreprise, un nouveau job et la maintenance de logiciels libres 🙂.

En début d’année, un véritable virage a été pris par l'association Tinternet & Cie. En effet, nous avons décidé de renforcer notre équipe d’intervenant⋅e⋅s et d’employer une coordinatrice et nous en sommes très fiers ! Le projet, mené en collaboration avec le département du Doubs, a permis de mettre en œuvre plus de 150 interventions durant le premier semestre dans de nombreux établissements scolaires, notamment des collèges et lycées 👩‍🏫. Par ailleurs, nous avons également mené de nombreuses permanences pendant lesquelles nous parlions de logiciels libres et de vie privée. Tout cela va continuer en 2023 !

Depuis fin 2021, ma moitié et moi avons démarré un des grands projets de notre vie, la construction d'une maison 🛖. Nous avons du passé de nombreux mois dans les papiers, stressé⋅e⋅s par une situation économique compliquée. Fort heureusement, nous avons eu un peu de chance et les travaux ont démarrés début décembre !

En milieu d'année, j'ai décidé de quitter le poste de responsable informatique dans lequel j'évoluais depuis quelques années. Je désirais me reconcentrer dans le développement web et l'administration système. J'ai donc rejoins Trinaps, un opérateur local avec de belles valeurs et une équipe ultra motivante ! Cela m'a permis d'apprendre Ruby, un langage que j'avais tendance à fuir jusqu'à présent 😌
À coté de ça, un ami me parlait de son projet d'entreprise intimement lié au RGPD, le Règlement Général sur la Protection des Données et pour un tas de bonnes raisons, j'ai décidé de l'accompagner.

Enfin, j'ai continué de maintenir mes projets avec une attention particulière portée sur Murph, mon CMF qui repose sur Symfony, et Custom Menu, une application destinée à Nextcloud.

Tout cela m'amène à des semaines bien remplies mais j'ai bon espoir de bientôt pouvoir respirer et profiter !

]]>
635 Sun, 25 Dec 2022 21:50:00 +0100
<![CDATA[Comprendre les enjeux de l'IoT et en fabriquer !]]> https://www.deblan.io/post/634/comprendre-les-enjeux-de-liot-les-objets-connectes-et-en-fabriquer Le FabLab des fabriques de Besançon et l’association Tinternet & cie vous invitent pour une journée de découverte et de fabrication le samedi 21 janvier 2022 !

Programme de la journée

  • 9h30 : Accueil des participants, présentation des intervenants et de la journée.
  • 10h : Présentation et discussion sur l’IoT et la vie privée à travers deux cas d’usage
    • Les jouets et les accessoires connectés
    • La maison connectée
  • 11h30 : Présentation de notre l’IoT à fabriquer
  • 13h : Repas (offert par Tinternet), moment de convivialité
  • 14h : Point et discussion sur les objets connectés dans le monde de la santé
  • 15h : Fabrication et bricolage
  • 16h30 : Présentation et discussion sur l’impact environnemental des objets connectés
  • 17h - 17h30 : Fin de la journée

Je veux m'inscire

]]>
634 Wed, 14 Dec 2022 22:30:00 +0100