From 1cce8a321ae8ce7b037df8b37c43a6f963060db3 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Fri, 5 Jan 2024 22:48:52 +0100 Subject: [PATCH] update --- blog/feed.xml | 997 +++++++++++++++++++++++---------------------- blog/index.gmi | 54 +-- blog/posts/592.gmi | 6 - blog/posts/593.gmi | 20 - blog/posts/594.gmi | 40 -- blog/posts/595.gmi | 29 -- blog/posts/596.gmi | 8 - blog/posts/597.gmi | 29 -- blog/posts/599.gmi | 97 ----- blog/posts/600.gmi | 6 - blog/posts/601.gmi | 8 - blog/posts/602.gmi | 19 - blog/posts/603.gmi | 8 - blog/posts/604.gmi | 24 -- blog/posts/605.gmi | 16 - blog/posts/606.gmi | 8 - blog/posts/607.gmi | 42 -- blog/posts/608.gmi | 21 - blog/posts/609.gmi | 59 --- blog/posts/610.gmi | 41 -- blog/posts/611.gmi | 12 - blog/posts/612.gmi | 23 -- blog/posts/614.gmi | 16 - blog/posts/615.gmi | 14 - blog/posts/616.gmi | 32 -- blog/posts/617.gmi | 10 - blog/posts/618.gmi | 8 - blog/posts/619.gmi | 97 ----- blog/posts/620.gmi | 59 --- blog/posts/621.gmi | 2 +- blog/posts/624.gmi | 6 +- blog/posts/625.gmi | 58 +++ blog/posts/626.gmi | 32 ++ blog/posts/627.gmi | 18 + blog/posts/628.gmi | 24 ++ blog/posts/631.gmi | 15 + blog/posts/632.gmi | 23 ++ blog/posts/633.gmi | 30 ++ blog/posts/634.gmi | 21 + blog/posts/635.gmi | 25 ++ blog/posts/636.gmi | 82 ++++ blog/posts/637.gmi | 51 +++ blog/posts/638.gmi | 37 ++ blog/posts/640.gmi | 14 + blog/posts/641.gmi | 37 ++ blog/posts/642.gmi | 21 + blog/posts/645.gmi | 5 + blog/posts/646.gmi | 16 + blog/posts/647.gmi | 25 ++ blog/posts/648.gmi | 40 ++ blog/posts/649.gmi | 8 + blog/posts/650.gmi | 8 + blog/posts/651.gmi | 29 ++ blog/posts/652.gmi | 6 + blog/posts/653.gmi | 18 + blog/posts/654.gmi | 35 ++ blog/posts/655.gmi | 99 +++++ blog/posts/658.gmi | 23 ++ 58 files changed, 1343 insertions(+), 1268 deletions(-) delete mode 100644 blog/posts/592.gmi delete mode 100644 blog/posts/593.gmi delete mode 100644 blog/posts/594.gmi delete mode 100644 blog/posts/595.gmi delete mode 100644 blog/posts/596.gmi delete mode 100644 blog/posts/597.gmi delete mode 100644 blog/posts/599.gmi delete mode 100644 blog/posts/600.gmi delete mode 100644 blog/posts/601.gmi delete mode 100644 blog/posts/602.gmi delete mode 100644 blog/posts/603.gmi delete mode 100644 blog/posts/604.gmi delete mode 100644 blog/posts/605.gmi delete mode 100644 blog/posts/606.gmi delete mode 100644 blog/posts/607.gmi delete mode 100644 blog/posts/608.gmi delete mode 100644 blog/posts/609.gmi delete mode 100644 blog/posts/610.gmi delete mode 100644 blog/posts/611.gmi delete mode 100644 blog/posts/612.gmi delete mode 100644 blog/posts/614.gmi delete mode 100644 blog/posts/615.gmi delete mode 100644 blog/posts/616.gmi delete mode 100644 blog/posts/617.gmi delete mode 100644 blog/posts/618.gmi delete mode 100644 blog/posts/619.gmi delete mode 100644 blog/posts/620.gmi create mode 100644 blog/posts/625.gmi create mode 100644 blog/posts/626.gmi create mode 100644 blog/posts/627.gmi create mode 100644 blog/posts/628.gmi create mode 100644 blog/posts/631.gmi create mode 100644 blog/posts/632.gmi create mode 100644 blog/posts/633.gmi create mode 100644 blog/posts/634.gmi create mode 100644 blog/posts/635.gmi create mode 100644 blog/posts/636.gmi create mode 100644 blog/posts/637.gmi create mode 100644 blog/posts/638.gmi create mode 100644 blog/posts/640.gmi create mode 100644 blog/posts/641.gmi create mode 100644 blog/posts/642.gmi create mode 100644 blog/posts/645.gmi create mode 100644 blog/posts/646.gmi create mode 100644 blog/posts/647.gmi create mode 100644 blog/posts/648.gmi create mode 100644 blog/posts/649.gmi create mode 100644 blog/posts/650.gmi create mode 100644 blog/posts/651.gmi create mode 100644 blog/posts/652.gmi create mode 100644 blog/posts/653.gmi create mode 100644 blog/posts/654.gmi create mode 100644 blog/posts/655.gmi create mode 100644 blog/posts/658.gmi diff --git a/blog/feed.xml b/blog/feed.xml index b7538d6..886998e 100644 --- a/blog/feed.xml +++ b/blog/feed.xml @@ -7,610 +7,637 @@ fr - <![CDATA[Gitnet héberge vos pages statiques]]> - https://www.deblan.io/post/624/gitnet-heberge-vos-pages-statiques - - Gitnet est la forge logicielle que je gère depuis quelques années et qui héberge la totalité de mes projets. Elle s'appuie sur l'excellentissime Gitea, un logiciel libre pour faire son propre Github/Gitlab sans dépenser des fortunes en ressources matérielles.

+ <![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.

-

Gitea est un logiciel très complet mais une des fonctionnalités qui peut manquer à certain⋅e⋅s est la publication pages web statiques via la forge. Codeberg a développé Codeberg/pages-server, un projet écrit en GO qui permet de réaliser cette fonctionnalité. Il lance un serveur web et sert les fichiers qui sont récupérés via l'API. Après l'avoir forké pour le personnalisé, il est à présent déployé sur Gitnet Pages.

+

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.

-

Pour commencer à publier, vous devez créer un dépot pages dans lequel vous déposerez y vos fichiers. Le contenu sera accessible via https://votre-login.gitnet.page/{fichier}.

+

Documentation Murph

-

Dans le cas où vous souhaitez intégrer des pages à un dépot existant, ajoutez une branche pages puis accédez à votre contenu via https://votre-login.gitnet.page/le-depot/{fichier} :

+

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 !

-
dev@project $ git switch --orphan pages
-# Si vous avez des fichiers ignorés par git qui existent :
-dev@project $ git rm --cached -r .
-
+

Custom Menu

-

Et si vous désirez accéder à du contenu qui se trouve sur une autre branche, il faudra la spécifier de cette façon : https://votre-login.gitnet.page/le-depot/@la-branche/{fichier}.

- -

Vous pouvez utiliser un générateur de site static mais il faudra ajouter un CI/CD. J'ai réalisé des tests avec Hugo + Woordpecker et ça marche bien ! On build la branche ou se trouve les sources, on copie le résultat dans la branche pages et on pousse le code sur Gitnet. Voici la configuration utilisée.

- -

Si toutefois le service venait à être pas mal utilisé, alors j'intégrerai des fonctionnalités plus avancées comme le nom de domaine personnalité. Tel qu'il est déployé actuellement, ce n'est pas possible.

- -

Gitnet Pages

+

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 😁

]]>
- 624 - Sun, 31 Jul 2022 21:50:00 +0200 - -
- - <![CDATA[Gitea 1.17 intègre un registre de paquets]]> - https://www.deblan.io/post/623/gitea-1-17-integre-un-registre-de-paquets - - Gitea est l'une des briques majeures de mon informatique puisque c'est le logiciel qui gère l'ensemble de mes projets de développement.

- -

Dès la version 1.17, il sera possible d'utiliser Gitea comme registre de paquets. Ce registre est compatible avec les principaux gestionnaires de paquets du marché : composer, npm, pip, gem, conan, nuget, …

- -

Cette nouvelle fonctionnalié est géniale car elle permet d'avoir un seul et unique outil qui fait office de registre, quelque soit le type de langage. Les paquets et le code source sont au même endroit donc on se disperse moins. Enfin, on contribue à décentraliser l'hébergement de paquets, ce qui peut radicalement réduire le coût énergétique et les ressources réseaux nécessaires pour tester/builder/installer/déployer un logiciel.
-Dans mon cas d'usage, j'ai des projets avec une CI/CD qui repose sur docker et des images persos. Pendant un build, les images seront téléchargées depuis mon réseau local donc ça sera bien plus vite.

- -

J'ai testé plusieurs types de paquets et ça fonctionne très bien ! La documentation est disponible ici.

- -

Package sur Gitea

- -

Bravo aux développeur⋅euses de Gitea qui font un boulot monstrueux 💚

-]]>
- 623 - Wed, 20 Jul 2022 12:50:00 +0200 - -
- - <![CDATA[Un an d'utilisation de AdGuard comme DNS]]> - https://www.deblan.io/post/621/utilisation-adguard-dns - - Au moment où j'ai commencé à utilisé Wireguard, je me suis aperçu que le principal usage que j'en ferais serait le DNS.

- -

Sur l'ensemble de mes périphériques (ordinateurs, smartphones, serveurs), j'apporte une grande attention à la protection de ma vie privée. Mon informatique n'est pas parfaite mais j'essaye de faire de mon mieux en ajustant la sécurité des services, la protection des données et le confort des outils.
-À ce titre, j'utilisais Blockada sur mon smartphone. Cette application permet (principalement) de modifier les DNS utilisés sur votre smartphone. Si on choisi un DNS qui opère du filtrage, alors on peut réduire l'affichage des publicités ou bloquer l'accès à des services malveillants. Mais je devais nécessairement passer par un DNS public que je ne peux pas configurer.

- -

Lors de la configuration d'un accès via Wireguard, on peut spécifier un DNS à attribuer au périphérique. J'ai donc mis en place un DNS redondant dans mon réseau privé, accessible aussi via mon réseau VPN Wireguard. J'ai choisi d'utiliser l'application AdGuard et j'ai ajouté quelques listes pour réaliser du filtrage. Tout mon réseau privé et mes périphériques connectés au VPN bénéficient de ces DNS privés. Que je sois chez moi ou en itinérance, mes filtres DNS sont appliqués et mon traffic mobile passe systématiquement dans mon VPN.

- -

En complément de ce DNS, j'utilise l'extension uBlock Origin et je dois dire que la combo est vraiment efficace. C'est extrèment rare de voir de la publicité et ma navigation est selon moi plus sécurisée. Si toutefois uBlock ne bloque pas une requête, alors le DNS prend le relais et fait le reste du ménage.

- -

Sur les 30 dernières jours, le DNS principal a réalisé 1,3 millions de résolutions et en a bloqué près de 43 milles. En moyenne, 3 à 5% des requêtes DNS sont filtrées, ce qui représente environ 500 domaines qui délivrent majoritairement de la publicité et de la télémétrie.

- -

Adguard

-]]>
- 621 - Mon, 13 Jun 2022 11:00:00 +0200 - -
- - <![CDATA[Générer une page dans Murph]]> - https://www.deblan.io/post/620/generer-page-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.

- -

Cet article fait partie d'une série de tutoriaux pour présenter les fonctionnalités de Murph.

- -

Contrairement à pas mal de CMS, une page permet de rassembler des contenus qui pourront être réutilisés plusieurs fois dans une arborescence, là où certains CMS lient définitivement une page à un élément du menu.

- -

Par ailleurs, une page ne contient que des données qui pourront être présentées comme on le veut. Autrement dit, la manière de rendre une page est indépendante de la façon de rédiger les contenus.

- -

On va créer une nouvelle page ExamplePage avec ces contenus :

- -
    -
  • un titre title qui sera un champ texte
  • -
  • un bloc de contenu content avec l'éditeur TinyMCE
  • -
- - - -

On va ensuite enregistrer la page dans Murph et lui donner le nom Page d'exemple.

- -
core:
-    site:
-        # ...
-        pages:
-            App\Entity\Page\ExamplePage:
-                name: "Page d'exemple"
-                templates:
-                    - {name: "Default", file: "page/example/default.html.twig"} 
-
- -

Quand une page est créée, un template par défaut l'est aussi. Une page peut avoir autant de templates qu'on souhaite.

- -

Éditons le template par défaut pour afficher simplement nos contenus :

- -
{% extends 'base.html.twig' %}
-
-{% block page %}
-    <h1>{{ _page.title.value }}</h1>
-
-    {{ _page.content.value|raw }}
-{% endblock %}
-
- -

On peut à présent créer un nouvel élément dans le menu, lui attribuer une nouvelle page et commencer à saisir le contenu.

- - - -

La documentation complète est disponible sur doc.murph-project.org.

-]]>
- 620 - Mon, 16 May 2022 10:30:00 +0200 + 658 + Mon, 06 Nov 2023 11:30:00 +0100
- <![CDATA[Générer un CRUD dans Murph]]> - https://www.deblan.io/post/619/generer-crud-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.

+ <![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.

-

Je vais entamer une série de tutoriaux pour présenter les fonctionnalités de Murph.

+

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.

-

Cet article va pour expliquer comment utiliser Murph et générer des interfaces de CRUD afin de créer, voir, mettre à jour et supprimer des entités.

+

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.

-

Dans un premier temps, il faut créer une nouvelle entité Example. Si vous avez déjà réaliser cette opération, vous pouvez passer à l'étape suivante.

- -
dev@project $ php bin/console make:entity Example
-
- -

j'ai décidé d'ajouter ces attributs :

+

Quelques recomandations avant d'opérer la migration :

    -
  • label de type string obligatoire
  • -
  • content de type text obligatoire
  • +
  • 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
-

On doit maintenant éditer App\Entity\Example et implémenter l'interface App\Core\Entity\EntityInterface :

+

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.

-
<?php
-
-namespace App\Entity;
-
-use App\Core\Entity\EntityInterface;
-use App\Repository\ExampleRepository;
-use Doctrine\ORM\Mapping as ORM;
-
-/**
- * @ORM\Entity(repositoryClass=ExampleRepository::class)
- */
-class Example implements EntityInterface
-{
+
$ sudo systemctl stop matrix-synapse.service
+$ sudo cp -v /var/lib/matrix-synapse/homeserver.db{,.bk}
 
-

Puis il faut mettre à jour la base de données :

+

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

-
dev@project $ make doctrine-migration
+
$ 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"
 
-

Ensuite on va générer :

+

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

-
    -
  • le générateur de requête App\Repository\ExampleRepositoryQuery
  • -
  • la fabrique App\Factory\ExampleFactory
  • -
  • le formulaire d'édition App\Form\ExampleType
  • -
- -
dev@project $ php bin/console make:repository-query ExampleRepository
-dev@project $ php bin/console make:factory ExampleFactory Example
-dev@project $ php bin/console make:form ExampleType Example
+
-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
 
-

Générons à présent le CRUD :

+

On relance ensuite PostgreSQL :

-
dev@project $ php bin/console make:crud-controller \
-  ExampleAdminController \
-  Example \
-  ExampleRepositoryQuery \
-  ExampleFactory \
-  ExampleType
+
$ sudo systemctl start postgresql.service
 
-

Enfin, ajoutons le lien dans le menu du backoffice :

+

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

-
{{ include('@Core/admin/module/_menu_section.html.twig', {label: 'My section'}) }}
-
-<ul class="nav flex-column">
-    {{ include('@Core/admin/module/_menu_item.html.twig', {
-        id: 'example',
-        label: 'Examples',
-        route: path('admin_example_index'),
-        icon: 'fa fa-pen'
-    }) }}
-</ul>
+
$ 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;
 
-

…et c'est terminé !

+

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 :

-

Vous pouvez commencer à personnaliser le CRUD en modifiant ExampleAdminController et sa methode getConfiguration. La documentation est ici.

+
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.

]]> - 619 - Tue, 10 May 2022 20:00:00 +0200 - + 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[Le Conseil d'État sauve la reconnaissance faciale du fichier TAJ]]> - https://www.deblan.io/post/618/le-conseil-detat-sauve-la-reconnaissance-faciale-du-fichier-taj - - Mardi dernier, le Conseil d'État a rejeté nos arguments contre les opérations illégales de reconnaissance faciale réalisées par la police depuis 10 ans à partir du fichier TAJ.

- -

Le décret du fichier TAJ (traitement des antécédents judiciaires) autorise la police à utiliser la reconnaissance faciale (RF) pour comparer les 9 millions de visages qu'il contient aux images captées par vidéosurveillance, smartphone ou sur internet.

+ <![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…

]]>
- 618 - Tue, 03 May 2022 14:00:00 +0200 + 652 + Sat, 05 Aug 2023 11:28:00 +0200
- <![CDATA[Les projets à Tinternet & Cie]]> - https://www.deblan.io/post/617/les-projets-a-tinternet-cie - - L'énergie qui anime Tinternet & Cie est formidable et donne l'opportunité à l'équipe de faire beaucoup de projets !

Ce début d’année a été un véritable virage pour l’association. En -effet, nous avons décidé de renforcer notre équipe d’intervenants et d’employer une coordinatrice et nous en sommes très fiers !

Cela a été notamment possible grâce à un projet monté conjointement avec le département. Plus de 150 interventions - ont été planifiées ce premier semestre dans de nombreux collèges et -lycées. Nous abordons quatre grandes thématiques avec les élèves : la cyberdépendance, le cyberharcèlement, la désinformation et l'identité numérique.

C’est un projet fort, portant sur des sujets compliqués et nous -espérons accompagner à nouveau le département dès la rentrée prochaine, -mais aussi créer et travailler sur de nouveaux projets et partenariats -toujours plus utiles et efficaces.

En plus de cela, l'association a mis en place et continue d'animer une permanence numérique les 2ème et 4ème mercredis de chaque mois au bar Le Pixel à Besançon. C'est un moment privilégié pour échanger sur un Internet plus ouvert, éthique et respectueux de la vie privée. Un véritable laboratoire, où la pratique de l’éducation populaire est plus que jamais de mise. -À ces occasions, un travail de fond est mené et permet d’ores et déjà de - répondre à bon nombre de questions au sujet des outils qui, selon nous, - peuvent répondre aux besoins communs des Internautes, quels qu’ils -soient.

Enfin, vous le savez, le mois dernier, nous vous avions invité à suivre une conférence très particulière au sujet du Web 2.0. L'évènement était organisé à l'occasion du festival « D'Autres formes - » réalisé par La Rodia. La conférence a rencontré un réel succès. Nous -avons eu l'occasion de travailler avec des gens formidables et répondre à - de vrai challenges techniques. La conférence mêlait des séquences -vidéos enregistrées et du live sur fond vert dans le but de faire naitre - une interaction insoupçonnée avec le public. -Si vous avez loupé l'évènement, voici une courte vidéo avec les moments forts.

Bon visionnage !

Tinternet & Cie au festival « D'Autres Formes »

]]>
- 617 - Fri, 22 Apr 2022 12:30:00 +0200 - - -
- - <![CDATA[Murph v1.13 intègre l'éditeur GrapesJS]]> - https://www.deblan.io/post/616/murph-v1-13-integre-lediteur-grapesjs - - L'une des forces de Wordpress est sa ribambelle de plugins dont Elementor qui permet de créer des pages sans toucher au code.

+ <![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 🥳

-

Pour permettre d'éditer du contenu de la même façon, GrapesJS est maintenant nativement intégré dans Murph depuis la version v1.13. Les blocs permettent de créer n'importe quel contenu en s'appuyant sur les composants Bootstrap 4. La version de développement de Murph intègre d'ores et déjà d'autres outils comme les presets webpage et newsletter pour se passer de Bootstrap.

+

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.

-

Si vous voulez essayer, un site de démo a été mis en ligne 😏

+

Voici une liste des changements importants :

-

GrapesJS dans Murph

+
    +
  • 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
  • +
-

Pour mettre à jour Murph, rien de plus simple :

+

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

-
$ composer update
-$ yarn upgrade
-$ make build
-
+

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 ! 😀

]]>
- 616 - Mon, 18 Apr 2022 23:00:00 +0200 + 651 + Fri, 28 Jul 2023 10:30:00 +0200
- <![CDATA[Tinternet & Cie au festival « d'autres FORMES », le 3 mars à 14h]]> - https://www.deblan.io/post/615/tinternet-cie-au-festival-dautres-formes-organise-par-la-rodia - - L’association Tinternet & Cie participe au festival d'autres FORMES organisé par La Rodia avec une performance très particulière au sujet d'Internet.

Cette performance est ouverte au public et se tiendra le dimanche 3 avril à 14h.

-

Pour réserver, rien de plus simple puisqu'il faut juste envoyer un mail à info@larodia.com.

On compte sur vous pour venir nombreuses et nombreux !

{{fattr://806e29ca355a8ccaea39a97eaa5b16a8a3515d8405d66b7ec11c05a9133bce87ccef00c7ee1272eabe04e8aa43145055/title}}

]]>
- 615 - Tue, 29 Mar 2022 15:30:00 +0200 - -
- - <![CDATA[Nouveautés dans Murph v1.12]]> - https://www.deblan.io/post/614/nouveautes-dans-murph-v1-12 - - 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 un aperçu des changements depuis la version 1.7 pour laquelle j'avais réalisé un article.

-

Dépendances

Dans un premier temps et c'est sans doute le changement le plus important, le core du projet a été migré vers un dépôt dédié. Par conséquent, le moteur de Murph peut être installée comme une dépendance classique via composer.

Ainsi, le fichier composer.json du projet murph/murph-skeleton a été réduit au strict nécessaire et permet de mettre à jour facilement Murph.

Dans cette même démarche à faciliter le développement et surtout la mise à jour des dépendances javascript, toutes les dépendances du fichiers package.json ont été migré vers un package node dédié.

-

À la suite de ces changements, mettre à jour une instance de Murph est très simple :

-    composer update
-yarn upgrade
-make build
-

Nouvelles fonctionnalités et correctifs

Globalement, pas mal de petites corrections ont été apportées. Voici les fonctionnalités implémentées depuis la v1.7.

Le gestionnaire de fichiers permet à présent de renommer un fichier. Seule l'extension du fichier ne peut pas être modifiée pour des questions de sécurité.
Son affichage est également mieux géré dans le cas où plusieurs modales sont affichées (ajout d'un flou sur les modales du dessus).

Il est possible d'indiquer des rôles dans la configuration de Murph afin de définir des permissions sur des éléments d'un menu. Ainsi, une page pourra être restreinte à des utilisateur⋅trices spécifiques.

Afin de réaliser des liens dans un template Twig vers des éléments de la navigation, quatre nouvelles fonctions twig ont été ajoutées : code_url, code_path. Pour gérer les cas d'exceptions, vous pouvez également utiliser : safe_code_url et safe_code_path.
Ces fonctions prennent en paramètres le code du menu et le code du nœud. Le moteur va détecter la navigation courante pour générer le lien. Cette fonctionnalité est très pratique quand plusieurs navigations partagent une arborescence commune et qu'on souhaite faciliter le développement des templates. 

Un nouveau maker symfony a été créé pour générer facilement une nouvelle page. Au même titre que pour générer une entité en ligne de commande, vous pourrez créer et paramétrer une page avec php bin/console make:page.

L'éditeur EditorJS a été ajouté dans Murph et ajoute approche complémentaire à TinyMce pour rédiger du contenu. Comme cet éditeur s'appuie sur l'idée de blocs, un nouvelle fonction twig permet de rendre un contenu édité avec EditorJS : editorjs_to_html. Cette fonction peut prendre un tableau de blocs autorisés à être rendus. Par ailleurs, bien que des vues par défaut existent pour rendre chaque bloc, vous pourrez paramétrer des vues spécifiques pour vos blocs. Cet article est d'ailleurs rédigé avec EditorJS.

La gestion du menu de l'administration de Murph a été simplifiée par l'utilisation de vues pour créer des sections et des éléments de menu.

Enfin, la version de Murph a été ajoutée dans l'interface d'administration en haut à droite.

Installation de Murph

Pour installer et Murph et commencer à développer son CMS, le processus est ultra simple :

-    composer create-project murph/murph-skeleton MonProjet # Installation du projet
-cd MonProjet
-cp .env .env.local
-vim .env.local 
-make build # On génère les données du CMF (base de données, assets, etc.)
-php bin/console murph:user:create # Création d'un compte
-symfony server:start -d # On lance le serveur web de dev
-

J'espère que ça vous plaira ☺️

]]>
- 614 - Sat, 26 Mar 2022 17:50:00 +0100 - +
+
+

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[Nouveautés dans Murph v1.7]]> - https://www.deblan.io/post/612/nouveautes-dans-murph-v1-7 - - 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.

+ <![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.

-

Depuis la version v1.0 publiée fin janvier 2022, pas mal de mises à jour sont arrivées. Certains sont visibles dans l'interface d'administration, d'autres sont ancrées dans le moteur du CMS. En voici quelques-unes :

+

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 :

    -
  • Un outils d'analyse web a été ajouté et permet, sur demande, d'activer un outil pour compter les pages vues, les référants et le type de périphérique (mobile ou desktop)
  • -
  • Le gestionnaire de fichiers permet d'uploader un répertoire complet. On peut choisir chosir la manière d'afficher les fichiers selon leur nom ou la date de mise à jour
  • -
  • Un gestionnaire de redirection a été ajouté et permet de créer des règles fines
  • -
  • Le template par défaut a été réécrit et contient le nécessaire pour lancer un nouveau développement
  • -
  • node-sass est remplacé par sass et il est nécessaire d'avoir une version de NodeJS >= 16
  • -
  • Les assets de Murph ont été déplacés dans le core ce qui permet de faciliter la mise à jour du CMS
  • +
  • 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 !
-

Conjoitement à tout ça, des dépendances ont été mises à jour ou remplacées et des bugs ont été corrigés !

+

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.

-

Murph

+

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

]]>
- 612 - Thu, 03 Mar 2022 14:30:00 +0100 + 641 + Mon, 27 Mar 2023 08:30:00 +0200 -
- <![CDATA[Tinternet & Cie au sujet du contrôle parental sur France Culture]]> - https://www.deblan.io/post/611/france-culture-tinternet-cie-controle-parental - - + <![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.

-

Journal de 8h de France Culture, 22/02/2022

+

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.

-

Je suis intervenu au nom de l'association Tinternet & Cie au du projet de loi pour imposer aux fabriquant de matériels connectés l'installation d'un contrôle parental.

- -

Si le contrôle parental est un outil plébiscité par l'association, les parents doivent être conscients des usages et doivent les comprendre pour mieux agir.

+

+ Accès au site +

]]>
- 611 - Tue, 22 Feb 2022 09:00:00 +0100 - + 640 + Sun, 19 Feb 2023 17:25:00 +0100
- <![CDATA[Administrer son serveur Matrix]]> - https://www.deblan.io/post/610/administrer-serveur-matrix - - Au moment où j'écris cet article, j'administre 2 serveurs Matrix Synpase. Pour rappel, Matrix est un protocole de messagertie instantannée très interopérable. Le projet Matrix Synpase est un serveur écrit en python qui implémente ce protocole. Matrix Synpase fournit une API qui va communiquer avec nos clients de messageries favoris comme Element.

+ <![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.

-

Afin d'administrer ces serveurs, j'avais besoin d'une interface web qui peut me permettre de réguler les accès. Synapse-Admin a complétement répondu à mon besoin. Cette interface n'est composées que de fichiers statics et se greffe sur les API des serveurs.

+

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.

-

Avant d'installer Synapse-Admin, il faut s'assurer d'être administreur sur le serveur Matrix. Si vous travaillez avec SQLite, il suffira de faire comme suit mais la requête SQL sera la même si vous utilisez PostgreSQL.

+

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.

-
# su - matrix-synapse -s /bin/bash
-$ sqlite3 /var/lib/matrix-synapse/homeserver.db
-sqlite> UPDATE users SET admin = 1 WHERE name = '@identifiant:example.com';
-sqlite> .exit
-
+

Inkscape

-

Ensuite, vous avez juste à récupérer l'archive de Synapse-Admin depuis Github et de la rendre accessible derrière un serveur HTTP local ou en ligne.

+

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 🤪

-

Synapse-Admin UI

+

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.

-

Une fois identifié⋅e, vous pourrez administrer l'ensemble des comptes du serveurs, avoir une visibilité sur les salons créés et les médias. Bien sur, il n'est pas possible d'accéder aux données qui restent totalement chiffrées même pour l'administrateur.

+

OG:IMAGE

-

Synapse-Admin UI

+

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 🚀

]]>
- 610 - Mon, 07 Feb 2022 12:30:00 +0100 - -
- - <![CDATA[Installer un proxy SMTP transparent]]> - https://www.deblan.io/post/609/installer-un-proxy-smtp-transparent - - Il y a quelques temps. j'expliquais que des applications métiers qui envoient du mail n'arrivaient plus à ouvrir de connexion vers les serveurs SMTP de Microsoft : Microsoft 365 - Problème de connexion aux serveurs SMTP.
-La solution de contournement avait été de placer en liste verte la plage IP des serveurs qui hébergent ces applications.

- -

Deux mois et demi sont passés et ça ne fonctionne plus. Évidemment, toujours pas d'explication du pourquoi du comment. Je travaille avec Microsoft depuis 5 ans et je ne m'y suis toujours pas habitué 🤬

- -

Après quelques heures de tests et de bidouilles, j'ai décidé d'installer un proxy qui fera l'intermédiaire entre les applications bloquées et Microsoft. Pour ne pas avoir à gérer d'avantages d'accès, ce proxy sera totalement transparent.

- -

Il n'existe (à priori) pas beaucoup de logiciels qui font ça et s'ils le font, ils ne sont plus maintenus. On retrouve beaucoup d'articles sur Nginx et Haproxy mais ils ne conviennent pas. Nginx n'est pas un proxy SMTP transparent et mes tests avec Haproxy ont échoués.
-J'ai réussi à dénicher tuck1s/go-smtpproxy. Bien qu'il n'est pas reçu de mise à jour depuis 2 ans, il ne fait qu'utiliser une librairie qui elle a un développement actif : emersion/go-smtp.

- -

Contexte / Prérequis :

- -
    -
  • Le serveur tourne avec Debian 11
  • -
  • Nom de domaine du proxy : relais-smtp.exemple.com
  • -
  • Il y a un certificat SSL généré par Let's Encrypt
  • -
  • Le serveur va écouter sur le port 587 avec la couche STARTTLS
  • -
- -

Pour compiler le projet, il suffit d'installer Go, récupérer les sources et lancer le build. À l'issue du build, le binaire proxy sera généré dans le répertoire go/src/github.com/tuck1s/go-smtpproxy.

- -
apt update
-apt install golang
-go get github.com/emersion/go-smtp-proxy
-go get gopkg.in/natefinch/lumberjack.v2
-go get github.com/tuck1s/go-smtpproxy
-cd go/src/github.com/tuck1s/go-smtpproxy
-./build.sh
-
- -

Il ne reste plus qu'à lancer le proxy :

- -
./proxy
-  -certfile /etc/letsencrypt/live/relais-smtp.exemple.com/fullchain.pem \
-  -privkeyfile /etc/letsencrypt/live/relais-smtp.exemple.com/privkey.pem \
-  -in_hostport 0.0.0.0:587 \
-  -insecure_skip_verify \
-  -out_hostport smtp.office365.com:587 \
-  -verbose
-
- -

Coté application, le serveur SMTP change de smtp.office365.com à relais-smtp.exemple.com. Si on envoie un mail, le proxy va afficher du log et on pourra s'assurer que ça fonctionne. -Il faut également améliorer tout ça avec un compte utilisateur dédié au proxy, gérer son démarrage avec un service Systemd/SysvInit/OpenRC/Whatever, etc.

- -

On verra combien de temps ça dure 🧐

-]]>
- 609 - Thu, 03 Feb 2022 18:50:00 +0100 - -
- - <![CDATA[Jouer à Motus dans Matrix]]> - https://www.deblan.io/post/608/jouer-motus-matrix - - Je reconnais que ce titre peut générer un gros mind fuck mais laissez moi vous expliquer !

- -

Depuis quelques temps, je joue quotidiennement à Sutom, une copie du jeu vieux jeu télévisé Motus. Le principe du jeu est simple : nous devons découvrir un mot avec comme indices sa taille et la première lettre qui le compose. On peut faire maximum 6 propositions qui permettent de découvrir les lettres. Une lettre découverte sera affichée dans un carré rouge, une lettre découverte mais mal placée sera dans un rond jaune. Les autres lettres resteront en bleu. Seuls des mots du dictionnaire peuvent être proposés.

- -

Sutom est addictif...mais pas tant que ça car il n'y a qu'un seul mot à découvrir par jour !

- -

Cela m'a donné un bon prétexte pour monter un nouveau projet : écrire un bot avec lequel je pourrai jouer via Matrix, ma messagerie instantanée. Le bot se connecte avec un compte utilisateur créé pour l'occasion puis accepte les invitations à rejoindre une conversation. Le bot va ensuite lire les messages qu'on envoit et va réagir quand c'est nécessaire. Ainsi on peut lancer ou relancer une partie et tester des mots. À chaque proposition, on retrouve un affichage comme dans Motus 🥸

- -

Le code source du projet est dispo ici, c'est vraiment sans prétention !

- -

Motus sur Matrix

-]]>
- 608 - Tue, 01 Feb 2022 17:45:00 +0100 + 638 + Mon, 30 Jan 2023 22:25:00 +0100
- <![CDATA[Murph, la version v1.0 est publiée]]> - https://www.deblan.io/post/607/murph-la-version-v1-est-publiee - - 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 possède un gestionnaire de navigations et de menus, il met à diposition un générateur de CRUD et intègre quelques outils indispensables comme un gestionnaire de fichiers, un gestionnaire de tâches, un panneau de configuration, la double authentification, etc.

+ <![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.

-

La procédure d'installation est simple et rapide. Toutes les informations essentielles sont sur la documentation et les sources sont sur gitnet.

+

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.

-
composer create-project murph/murph-skeleton MonProjet ^1 # Installation du projet
-cp .env .env.local
-vim .env.local 
-make doctrine-migration # Configuration de la base de données
-make asset # Création des assets
-php bin/console murph:user:create # Création d'un compte
-symfony server:start -d # On lance le serveur web de dev
+
$ osv-detector Gemfile.lock package-lock.json
 
-

À partir de là, Murph est opérationnel. L'interface d'administration est accessible sur https://127.0.0.1:8080.
-Tout le reste du travail s'articule dans la conception de votre CMS via du code. Je vous invite à lire la documentation du projet.

+

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.

-

L'idée générale de Murph se résume dans ces quelques points :

+
Loaded the following OSV databases:
+  npm (2774 vulnerabilities, including withdrawn - last updated Fri, 13 Jan 2023 20:30:13 GMT)
 
-
    -
  • Une installation de Murph contient une ou plusieurs navigations représentées par des noms de domaines et des langues
  • -
  • Une navigation contient des menus dans lesquels on ajoute des nœuds
  • -
  • Un nœud peut représenter une URL et peut s'associer à une page ou un autre nœud
  • -
  • Une page contient des blocs de contenu
  • -
  • À coté de ça, on peut générer des CRUD pour éditer des données métiers (exemple : les articles d'un blog)
  • -
+package-lock.json: found 932 packages + Using db npm (2774 vulnerabilities, including withdrawn - last updated Fri, 13 Jan 2023 20:30:13 GMT) -

Beaucoup de travail a été mené et Murph peut couvrir beaucoup de cas d'usages rencontrés par les développeurs de sites web sur-mesure. J'ai par exemple réalisé mon blog, un site de recrutement, un outil pour s'inscrire à un évènement et un site qui présente les services d'un hôtel dont voici quelques images du backoffice :

+ 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) -

Murph

+[...] +
+ +

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é.

]]> - 607 - Wed, 26 Jan 2022 08:25:00 +0100 + 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[Les drones policiers autorisés par le Conseil constitutionnel]]> - https://www.deblan.io/post/606/les-drones-policiers-autorises-par-le-conseil-constitutionnel - - Le Conseil constitutionnel vient de rendre sa décision sur la loi « responsabilité pénale et sécurité intérieure ». Ce texte, adopté le 18 novembre 2021 par le Parlement, prévoyait notamment de ré-autoriser les drones policiers. Si les drones avaient été interdits à quatre reprises depuis 2020 (deux fois par le Conseil d’État, une fois par la CNIL et une fois par le Conseil constitutionnel), l’entêtement du gouvernement a porté ses fruits. Après deux années d’illégalité, les drones vont ré-occuper le ciel et restaurer la surveillance de masse.

+ <![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 !

-

Cette mauvaise nouvelle ne vient pas seule : le Conseil constitutionnel valide aussi les caméras embarquées sur les véhicules de police (hélicoptères, voitures…) ainsi que la vidéosurveillance des cellules de garde-à-vue.

+

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

]]>
- 606 - Fri, 21 Jan 2022 16:00:00 +0100 + 634 + Wed, 14 Dec 2022 22:30:00 +0100
- - <![CDATA[Nouvelle version majeure de Custom Menu]]> - https://www.deblan.io/post/605/nouvelle-version-majeure-de-custom-menu - - 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.

- -

-]]>
- 605 - Fri, 14 Jan 2022 20:45:00 +0100 - - -
- - <![CDATA[Microsoft 365 - Problème de connexion aux serveurs SMTP]]> - https://www.deblan.io/post/604/microsoft-365-probleme-connexion-smtp - - Quand Microsoft change de nom (Office 365 → Microsoft 365), les devops doivent aussi en profiter pour la changer configuration de leurs serveurs de mail…et rien de plus normal que de bloquer les connexions des applicatifs qui ne sont pas estampiller Microsoft.

- -

Depuis plusieurs semaines, j'ai en effet détecté de grandes difficultés à émettre des mails depuis des applicatifs non Microsoft. Les connexions vers les serveurs SMTP d'Office 365 (smtp.office365.com) échouaient très souvent jusqu'à être complétement bloquées sur une 40ène de bureaux à distance où se trouve une application métier.

- -

Pour contourner ce problème (intolérable selon moi), une des solutions est de placer en liste verte les IP depuis lesquelles on se connecte. C'est stupide mais rien de surprenant venant de Microsoft.

- -

Pour réaliser cette opération, je me suis dirigé vers le Centre d'administration Exchange accessible depuis le portail d'administration.

- -

Centre d'administration Exchange

- -

J'ai complété cette configuration par l'édition de la Stratégie de filtre de connexion qu'on retrouve dans les Paramètres anti-courrier indésirable.

- -

Stratégie de filtre de connexion

- -

Après un moment, les envois de mail on pu reprendre et je n'ai pas encore eu de retour qui indiqueraient de nouvelles difficultés de connexion.

-]]>
- 604 - Wed, 10 Nov 2021 10:30:00 +0100 - -
- - <![CDATA[Repars avec ton Claude]]> - https://www.deblan.io/post/603/repars-avec-ton-claude - - Les membres de l'association Tinternet & Cie te proposent une journée conviviale et créative le samedi 6 décembre 2021, au FabLab à Besançon ! Le but ? Fabriquer et repartir avec ton serveur personnel basé sur un RaspberryPi pour héberger et partager tes données. Pourquoi ? Car l'auto-hébergement de nos données et l'un des enjeux majeurs liés à notre usage des outils numériques.

- -

En plus de la création personnalisé de ton serveur, la journée sera rythmée par des conférences/discussions sur le fonctionnement de l’internet, l’auto-hébergement, logiciels et licences libres...

-]]>
- 603 - Sat, 06 Nov 2021 14:00:00 +0100 - - - -
diff --git a/blog/index.gmi b/blog/index.gmi index 81a378c..c49e620 100644 --- a/blog/index.gmi +++ b/blog/index.gmi @@ -15,36 +15,36 @@ Derniers articles | Latest posts ──────────────────────────────── +=> posts/658.gmi [FR] Murph v1.23 et Custom Menu v3.11 (2023-11-06 11:30:00) +=> posts/655.gmi [FR] Matrix-Synapse : migrer de SQLite à PostgreSQL (2023-09-10 18:30:00) +=> posts/654.gmi [FR] Remote i3-wm WS : ma télécommande pour bureau GNU/Linux (v2) (2023-08-27 14:45:00) +=> posts/653.gmi [FR] Signez la pétition pour empêcher la France d’obliger les navigateurs tels que Firefox de Mozilla à censurer des sites web (2023-08-17 13:00:00) +=> posts/652.gmi [FR] Internet devient-il un Minitel 2.0 ou un bien commun ? - Benjamin Bayart - RTS – Libre à lire ! (2023-08-05 11:28:00) +=> posts/651.gmi [FR] Murph v1.20 is out! 📣 (2023-07-28 10:30:00) +=> posts/650.gmi [FR] Je n'ai rien à cacher. (2023-07-05 13:19:00) +=> posts/648.gmi [FR] Capture, un reverse proxy pour analyser les requêtes de vos applications (2023-06-07 09:00:00) +=> posts/649.gmi [FR] Affaire du 8 décembre : le chiffrement des communications assimilé à un comportement terroriste (2023-06-05 13:20:00) +=> posts/647.gmi [FR] Un modèle pour démarrer un script shell (2023-05-21 19:00:00) +=> posts/646.gmi [FR] Quoi de neuf sur les internets ? #1 (2023-05-09 14:00:00) +=> posts/645.gmi [FR] Mozilla arrive (doucement) sur Mastodon avec sa propre instance (2023-05-06 21:30:00) +=> posts/642.gmi [FR] 100ème publication et 3ème anniversaire de Custom Menu 🎂 (2023-03-28 13:37:00) +=> posts/641.gmi [FR] Gitea et forgejo v1.19.0 sont dans les bacs 🥳 (2023-03-27 08:30:00) +=> posts/640.gmi [FR] Loi J.O. : refusons la surveillance biométrique (2023-02-19 17:25:00) +=> posts/638.gmi [FR] Générer des images pour le partage sur les réseaux (2023-01-30 22:25:00) +=> posts/637.gmi [FR] Détecter les vulnérabilités dans les dépendances de son projet (2023-01-13 23:25:00) +=> posts/636.gmi [FR] Woodpecker CI, envoyer du mail dans certaines conditions (2023-01-04 22:40:00) +=> posts/635.gmi [FR] Bilan de l'année 2022 (2022-12-25 21:50:00) +=> posts/634.gmi [FR] Comprendre les enjeux de l'IoT et en fabriquer ! (2022-12-14 22:30:00) +=> posts/633.gmi [FR] Weblate, l'outil de traduction pour Custom Menu (2022-11-05 14:40:00) +=> posts/632.gmi [FR] Nextcloud 25 arrive et Custom Menu 3.0 aussi ! (2022-10-19 23:00:00) +=> posts/631.gmi [FR] Permanence d'auto-défense numérique (2022-09-27 22:00:00) +=> posts/628.gmi [FR] Wireguard GUI - Interface graphique pour Linux (2022-09-13 16:10:00) +=> posts/627.gmi [FR] Blocs pour i3wm (2022-08-31 14:00:00) +=> posts/626.gmi [FR] Sharepoint Office365 sur Linux : automatiser l'authentification (v2) (2022-08-25 13:30:00) +=> posts/625.gmi [FR] Logiciel client/serveur pour lire et télécharger des vidéos (2022-08-23 21:00:00) => posts/624.gmi [FR] Gitnet héberge vos pages statiques (2022-07-31 21:50:00) => posts/623.gmi [FR] Gitea 1.17 intègre un registre de paquets (2022-07-20 12:50:00) => posts/621.gmi [FR] Un an d'utilisation de AdGuard comme DNS (2022-06-13 11:00:00) -=> posts/620.gmi [FR] Générer une page dans Murph (2022-05-16 10:30:00) -=> posts/619.gmi [FR] Générer un CRUD dans Murph (2022-05-10 20:00:00) -=> posts/618.gmi [FR] Le Conseil d'État sauve la reconnaissance faciale du fichier TAJ (2022-05-03 14:00:00) -=> posts/617.gmi [FR] Les projets à Tinternet & Cie (2022-04-22 12:30:00) -=> posts/616.gmi [FR] Murph v1.13 intègre l'éditeur GrapesJS (2022-04-18 23:00:00) -=> posts/615.gmi [FR] Tinternet & Cie au festival « d'autres FORMES », le 3 mars à 14h (2022-03-29 15:30:00) -=> posts/614.gmi [FR] Nouveautés dans Murph v1.12 (2022-03-26 17:50:00) -=> posts/612.gmi [FR] Nouveautés dans Murph v1.7 (2022-03-03 14:30:00) -=> posts/611.gmi [FR] Tinternet & Cie au sujet du contrôle parental sur France Culture (2022-02-22 09:00:00) -=> posts/610.gmi [FR] Administrer son serveur Matrix (2022-02-07 12:30:00) -=> posts/609.gmi [FR] Installer un proxy SMTP transparent (2022-02-03 18:50:00) -=> posts/608.gmi [FR] Jouer à Motus dans Matrix (2022-02-01 17:45:00) -=> posts/607.gmi [FR] Murph, la version v1.0 est publiée (2022-01-26 08:25:00) -=> posts/606.gmi [FR] Les drones policiers autorisés par le Conseil constitutionnel (2022-01-21 16:00:00) -=> posts/605.gmi [FR] Nouvelle version majeure de Custom Menu (2022-01-14 20:45:00) -=> posts/604.gmi [FR] Microsoft 365 - Problème de connexion aux serveurs SMTP (2021-11-10 10:30:00) -=> posts/603.gmi [FR] Repars avec ton Claude (2021-11-06 14:00:00) -=> posts/602.gmi [FR] Supprimer les mots de passe d'un fichier Excel (2021-04-27 00:00:00) -=> posts/601.gmi [FR] Le Conseil d'État valide durablement la surveillance de masse (2021-04-21 04:00:00) -=> posts/600.gmi [FR] Loi sécurité globale adoptée : résumons (2021-04-18 10:20:00) -=> posts/599.gmi [FR] Mettre en place un VPN avec Wireguard (2021-04-07 10:30:00) -=> posts/597.gmi [FR] Migration de blog vers Murph (2021-03-31 10:08:00) -=> posts/595.gmi [FR] Mon thème pour ZSH (2021-02-12 13:09:02) -=> posts/596.gmi [FR] Google démantèle son éthique (et tout le monde s'en fout...) (2021-02-12 00:11:00) -=> posts/594.gmi [FR] Bilan tech de l'année 2020 (2020-12-22 10:00:00) -=> posts/593.gmi [FR] Décrets PASP : fichage massif des militants politiques (2020-12-09 09:46:52) -=> posts/592.gmi [FR] Le PDG de FaceBook, Mark Zuckerberg, malmené lors de son audition au Sénat américain (17/11/20) (2020-11-19 10:39:00) ─────────────────────────────────────────────────── Je soutiens Tinternet & cie, les Chatons et l'April diff --git a/blog/posts/592.gmi b/blog/posts/592.gmi deleted file mode 100644 index 0030665..0000000 --- a/blog/posts/592.gmi +++ /dev/null @@ -1,6 +0,0 @@ -# Le PDG de FaceBook, Mark Zuckerberg, malmené lors de son audition au Sénat américain (17/11/20) - -* 2020-11-19 10:39:00 -* Contenu externe - -Le PDG de FaceBook, Mark Zuckerberg, malmené par le sénateur Josh Hawley lors de son audition au Sénat américain. le 17 novembre 2020. diff --git a/blog/posts/593.gmi b/blog/posts/593.gmi deleted file mode 100644 index c262ef3..0000000 --- a/blog/posts/593.gmi +++ /dev/null @@ -1,20 +0,0 @@ -# Décrets PASP : fichage massif des militants politiques - -* 2020-12-09 09:46:52 -* Contenu externe, Politique - -> Après la loi sécurité globale et la loi séparatisme, le gouvernement poursuit -> son offensive généralisée visant à museler toute opposition politique. -> Mercredi dernier, les trois fichiers de « sécurité publique » (PASP, GIPASP et EASP) -> ont été largement étendus par trois décrets (ici, ici et là). Ils - -On y est, on peut maintenant être fiché pour nos opinions politiques, nos convictions philosophiques, religieuses ou notre appartenance syndicale. - -Alors pour reprendre un vieux débat sur la protection des données où on me répondait "je n'ai rien à cacher", ma réponse était systématiquement : - -* Bien sur que si, tu as des choses à cacher car ta vie privée est par définition privée -* Dans un futur plus ou moins proche, on pourra te reprocher quelque chose encore toléré aujourd'hui. - -Ce futur est maintenant le présent. - -En dehors de toute activité, nos simples opinions seront inscrites dans un fichier d'état. C'est très grave et nous avons avançons encore vers un état totalitaire. Je pense que le point de non retour à été atteint. diff --git a/blog/posts/594.gmi b/blog/posts/594.gmi deleted file mode 100644 index 4529bfe..0000000 --- a/blog/posts/594.gmi +++ /dev/null @@ -1,40 +0,0 @@ -# Bilan tech de l'année 2020 - -* 2020-12-22 10:00:00 -* Informatique, Logiciel libre, Projets personnels - -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 -=> https://apps.nextcloud.com/apps/side_menu 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, -=> https://apps.nextcloud.com/apps/side_menu 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 -=> https://apps.nextcloud.com/apps/forms 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 -=> https://apps.nextcloud.com/apps/analytics 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 -=> https://apps.nextcloud.com/apps/printer 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 -=> https://pdnsmanager.org/ PDNS Manager -, une interface web qui permet de gérer les enregistrements d'un serveur -=> https://www.powerdns.com Powerdns -. - -J'ai récemment publié -=> https://www.deblan.io/post/591/mail-rss-transformer-des-mails-en-flux-rss 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 -=> https://www.deblan.io/post/580/monitoring-d-un-terrarium monitorer le terrarium -de la maison. - -Je crois avoir fait le tour de mon activité en espérant poursuivre en 2021 ! diff --git a/blog/posts/595.gmi b/blog/posts/595.gmi deleted file mode 100644 index d2172b4..0000000 --- a/blog/posts/595.gmi +++ /dev/null @@ -1,29 +0,0 @@ -# Mon thème pour ZSH - -* 2021-02-12 13:09:02 -* Projets personnels - -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 -=> https://ohmyz.sh/ 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 -=> https://github.com/olivierverdier/zsh-git-prompt olivierverdier/zsh-git-prompt -) - -```html -

Mon thème pour ZSH

-``` - -Le code source est disponible sur -=> https://gitnet.fr/deblan/gists/src/branch/master/zsh/themes/deblan/deblan.zsh-theme cette page -et il est totalement libre. diff --git a/blog/posts/596.gmi b/blog/posts/596.gmi deleted file mode 100644 index 2aa9fb9..0000000 --- a/blog/posts/596.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Google démantèle son éthique (et tout le monde s'en fout...) - -* 2021-02-12 00:11:00 -* Contenu externe - -En 2 mois, Google a licencié ses deux co-directrices de l'éthique des IA, Timnit Gebru et Margarett Mitchell. Pendant ce temps, Google a aussi développé, et probablement bientôt déployé, des algorithmes entraînés sur d'immenses quantités de données non-sécurisées, de manière extrêmement opaque, ce qui avait été critiqué par les deux co-directrices dans un article de recherche. - -Le déploiement précipité d'algorithmes très dangereux sans aucune audit interne ni externe, sur les téléphones de milliards d'humains, me semble absolument terrifiant. Mais le plus effrayant, c'est que cette histoire est complètement ignorée par le grand public, les médias, l'industrie de la tech et le monde académique... diff --git a/blog/posts/597.gmi b/blog/posts/597.gmi deleted file mode 100644 index ae35bc1..0000000 --- a/blog/posts/597.gmi +++ /dev/null @@ -1,29 +0,0 @@ -# Migration de blog vers Murph - -* 2021-03-31 10:08:00 -* Développement, Projets personnels - -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 -=> https://fr.wikipedia.org/wiki/Content_management_framework CMF -basé sur Symfony 2, développé par -=> https://www.webetdesign.com/ 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 -=> https://www.tinternet.net/ Tinternet & cie -et s'est rapidement posée la question du CMS. Cela m'a permis d'entreprendre l'écriture de Murph, un -=> https://fr.wikipedia.org/wiki/Content_management_framework 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. - -=> https://upload.deblan.org/u/2021-03/606429c7.png [IMG] - -=> https://upload.deblan.org/u/2021-03/606429b4.png [IMG] - -Si le projet vous intéresse, le -=> https://gitnet.fr/deblan/deblan.io-murph code source du blog est disponible ici -et celui du -=> https://gitnet.fr/deblan/murph-skeleton squelette de Murph se trouve là -. diff --git a/blog/posts/599.gmi b/blog/posts/599.gmi deleted file mode 100644 index ecb246b..0000000 --- a/blog/posts/599.gmi +++ /dev/null @@ -1,97 +0,0 @@ -# Mettre en place un VPN avec Wireguard - -* 2021-04-07 10:30:00 -* Informatique - -Les VPN ont le vent en poupe depuis quelques temps. Rares sont les vidéastes qui n'auront pas fait l'éloge de services comme NordVPN. Cependant, avant de permettre de visualiser le contenu US de Netflix, un VPN permet de créer un réseau entre plusieurs machines au travers d'autres réseaux comme Internet. Ainsi, quand des machines sont connectées au même réseau VPN, elles peuvent communiquer de la même façon que dans un réseau local. C'est donc très intéressant lorsque l'ont souhaites isoler une application d'internet en la rendant tout de même accessible dans ce réseau isolé. - -=> https://upload.deblan.org/u/2021-04/606cc06e.png VPN [IMG] - -Il existe tout un tas de solutions pour réaliser son VPN. La plus connue est certainement OpenVPN mais je lui préfère Wireguard pour sa très grande simplicité d'installation. - -Dans mon cas d'usage, j'ai un serveur Wireguard sous Debian et des clients qui tournent principalement sur Debian mais aussi Windows et Android. - -Sous Debian 10, il est nécessaire d'utiliser les dépots backports pour insaller Wireguard. - -```{.language-bash} -echo "deb http://deb.debian.org/debian buster-backports main contrib non-free" \ - | sudo tee /etc/apt/sources.list.d/buster-backports.list -``` - -Une fois le dépot ajouté, il suffit de mettre à jour la liste des paquets et d'installer Wireguard. - -```{.language-bash} -sudo apt update && sudo apt install wireguard -``` - -Sur d'autres distributions, il faudra installer `wireguard-tools` mais je vous laisse vous référer à -=> https://www.wireguard.com/install/ la page d'installation -pour plus d'informations. - -En complément de Wireguard, je vous invite à installer `iptables` et `resolvconf` sur le serveur [^1] et uniquement `resolvconf` sur vos clients [^1] linux. `iptables` va permettre de realiser le routage des paquets tandis que `resolvconf` va permettre de gérer les DNS via la connexion VPN. - -Une fois l'installation terminée, on va générer un couple de clés sur le serveur. - -```{.language-bash} -cd /etc/wireguard -umask 077 -wg genkey | tee privateKey | wg pubkey > publicKey -``` - -Suite à ces commandes, 2 nouveaux fichiers ont été générés : `privateKey` contient la clé privée et `publicKey` contient la clé publique. Il faudra conserver la clé privée secrète tandis que la clé publique va permettre d'identifier le serveur auprès des clients. Son contenu sera donc partagé sur d'autres machines. Vous pouvez réaliser la même opération sur vos machines clientes qui seront elles aussi identifiées avec leur clé publique. Les interfaces graphiques de Wireguard réaliseront la générations des clés automatiquement. Bien sur, vous pouvez créer autant de clés que vous le désirez. Je recommande de créer un couple de clé par serveur VPN. - -=> https://upload.deblan.org/u/2021-04/606cd5c8.jpg Exemples [IMG] - -Nous allons ensuite générer le fichier `/etc/wireguard/wg0.conf` où `wg0` désigne le nom de l'interface réseau qui sera créée par wireguard. Selon vos besoins, vous pourrez en ajouter autant que vous le désirez. - -```{.language-bash} -[Interface] -Address = 10.0.0.1/24 -SaveConfig = false -PostUp = sysctl -w net.ipv4.ip_forward=1; iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE -PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -s 10.0.0.1/24 -o eth0 -j MASQUERADE -ListenPort = 51820 -PrivateKey = clé_privée_du_serveur -``` - -Dans cette configuration, je définie la page IP du réseau (`10.0.0.1/24`) et l'IP du serveur (`10.0.0.1`). Veillez à modifier le nom de l'interface connectée à Internet (ici `eth0`). Insérer également le contenu de la clé privée à la dernière ligne. `SaveConfig` à `false` indique que le fichier pourra être modifié pendant que le serveur est lancé. Enfin, on indique que le serveur écoute sur le port `51820`. Vous pourrez répéter cette opération sur vos client mais vous devrez omettre les lignes avec `PostUp`, `PostDown` et `ListenPort`. Vous devrez également changer `Address` en incrémentant l'ip et en fixant la page à 32 (exemple : `10.0.0.2/32`, `10.0.0.3/32`, etc.). - -Enfin, il faudra renseigner la liste des clients du réseau VPN en utilisant leur clé publique et l'adresse IP qu'ils auront configurée. - -```{.language-bash} -[Interface] -... - -[Peer] -PublicKey = clé_publique_du_client_1 -AllowedIPs = 10.0.0.2/32 - -[Peer] -PublicKey = clé_publique_du_client_2 -AllowedIPs = 10.0.0.3/32 -``` - -Coté client, il faudra renseigner le serveur : - -```{.language-bash} -[Interface] -... - -[Peer] -PublicKey = clé_publique_du_server -AllowedIPs = 10.0.0.0/24 -Endpoint = ip.du.serveur.vpn:51820 -PersistentKeepalive = 20 -``` - -Dans cet exemple, j'ai définie que seuls les paquets à destination du réseau VPN seront routés dans le VPN : `AllowedIPs = 10.0.0.0/24`. Si vous voulez router tout votre traffic, saisissez `AllowedIPs = 0.0.0.0/0` [^2]. Pour ajouter plusieurs plages, il suffit de les séparer par des virgules. Dans le bloc `[Interface]` des clients, vous avez la possibilté d'ajouter une propriété `DNS` afin de paramétrer un ou plusieurs serveurs DNS. Les serveurs DNS devront être accessibles par le serveur VPN ou le client selon le paramétrage de `AllowedIPs`. Attention, les DNS seront paramétrés comme des DNS classiques et ils seront sollicités pour résoudre tous les noms. - -Une fois les configuration effectuée, vous pourrez démarrer ou arrêter la connexion VPN avec `sudo wg-quick up wg0` et `wg-quick down wg0` sur le serveur et sur les clients. Vous pourrez monitorer les connexions avec la commande `sudo wg`. - -[^1]: Techniquement, chaque pair (ou peer) est à la fois client et serveur. Quand je parle de "serveur", je fais référence à la machine qui va jouer le rôle de routeur pour les différents pairs du VPN. Techniquement, un pair peut s'interconnecter à autant d'autres pairs qui lui est possible de joindre (cf la -=> https://www.wireguard.com/quickstart/ doc officielle -et la -=> https://wiki.archlinux.org/index.php/WireGuard doc Archlinux -). - -[^2]: Que ce soit sur un "serveur" ou un "client", `AllowedIPs` indique pour quelle(s) plage(s) IP le pair sera emprunté pour router les paquets. Sur le serveur, on souhaite que chaque pair reçoivent exclusement les paquets qui leur sont destinés (IP du pair/32) tandis que sur le client, 2 cas d'usages classiques seront généralement retenus : soit on utilise le serveur pour router que le traffic du réseau VPN (`10.0.0.0/24`) soit on veut que le serveur serve de proxy et tout le traffic réseau passera par lui (`0.0.0.0/0`). diff --git a/blog/posts/600.gmi b/blog/posts/600.gmi deleted file mode 100644 index 5402a03..0000000 --- a/blog/posts/600.gmi +++ /dev/null @@ -1,6 +0,0 @@ -# Loi sécurité globale adoptée : résumons - -* 2021-04-18 10:20:00 -* Contenu externe - -La loi sécurité globale a été définitivement adoptée hier par l'Assemblée nationale, à 75 voix contre 33, au terme d'un débat soumis aux exigences de la police et dont nous n'attendions plus grand chose. diff --git a/blog/posts/601.gmi b/blog/posts/601.gmi deleted file mode 100644 index af37e29..0000000 --- a/blog/posts/601.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Le Conseil d'État valide durablement la surveillance de masse - -* 2021-04-21 04:00:00 -* Contenu externe - -Une fois de plus, la France signe pour le totalitarisme. Des articles des lois pour protéger la police de sa population, une surveillance de masse actée, la liberté d'expression abrogée en dehors de tout contexte terroriste. - -La France est un état policier qui braque sa législation contre son peuple et le droit Européen. diff --git a/blog/posts/602.gmi b/blog/posts/602.gmi deleted file mode 100644 index f0dc2c0..0000000 --- a/blog/posts/602.gmi +++ /dev/null @@ -1,19 +0,0 @@ -# Supprimer les mots de passe d'un fichier Excel - -* 2021-04-27 00:00:00 -* Informatique, Logiciel libre - -Dans le cadre de mon travail, je vais devoir supprimer les mots de passe définis dans plusieurs dizaines de fichiers Excel. - -Un fichier Excel, ainsi que n'importe quel type de fichier généré par la suite Office, est ni plus ni moins qu'une archive Zip contenant des répertoires et des fichiers XML. Les mots de passe ne chiffrent aucune donnée dans le cas d'une protection simple (le comportement par défaut). Par conséquant, et uniquement dans ce cas de figure, le mot de passe est un artifice pour bloquer l'accès à du contenu. Dans le cas d'un chiffrement des données, il n'est pas possible de supprimer le mot de passe comme je vais le faire. Les données sont stockées au format XML, il est donc très simple de retirer les mots de passe d'un classeur et de ses feuilles. - -Afin d'industrialiser les modifications, j'ai écris un script qui fait toutes les modifications automatiquement : -=> https://gitnet.fr/deblan/excel-password-terminator Excel password terminator -. - -Pour l'installer, il suffit simplement de clôner le projet ou de télécharger une archive de dépots. Les dépendances sont très peu nombreuses : zip, unzip, grep et sed. - -=> https://asciinema.org/a/l0ad6iPloGIlkmTCG8A0dGD3y -=> https://asciinema.org/a/l0ad6iPloGIlkmTCG8A0dGD3y.svg asciicast [IMG] - -[^1]: diff --git a/blog/posts/603.gmi b/blog/posts/603.gmi deleted file mode 100644 index b40d8d4..0000000 --- a/blog/posts/603.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Repars avec ton Claude - -* 2021-11-06 14:00:00 -* Informatique, Contenu externe, Logiciel libre - -Les membres de l'association Tinternet & Cie te proposent une journée conviviale et créative le samedi 6 décembre 2021, au FabLab à Besançon ! Le but ? Fabriquer et repartir avec ton serveur personnel basé sur un RaspberryPi pour héberger et partager tes données. Pourquoi ? Car l'auto-hébergement de nos données et l'un des enjeux majeurs liés à notre usage des outils numériques. - -En plus de la création personnalisé de ton serveur, la journée sera rythmée par des conférences/discussions sur le fonctionnement de l’internet, l’auto-hébergement, logiciels et licences libres... diff --git a/blog/posts/604.gmi b/blog/posts/604.gmi deleted file mode 100644 index a6cc2b5..0000000 --- a/blog/posts/604.gmi +++ /dev/null @@ -1,24 +0,0 @@ -# Microsoft 365 - Problème de connexion aux serveurs SMTP - -* 2021-11-10 10:30:00 -* Informatique - -Quand Microsoft change de nom (Office 365 → Microsoft 365), les devops doivent aussi en profiter pour la changer configuration de leurs serveurs de mail…et rien de plus normal que de bloquer les connexions des applicatifs qui ne sont pas estampiller Microsoft. - -Depuis plusieurs semaines, j'ai en effet détecté de grandes difficultés à émettre des mails depuis des applicatifs non Microsoft. Les connexions vers les serveurs SMTP d'Office 365 (smtp.office365.com) échouaient très souvent jusqu'à être complétement bloquées sur une 40ène de bureaux à distance où se trouve une application métier. - -Pour contourner ce problème (intolérable selon moi), une des solutions est de placer en liste verte les IP depuis lesquelles on se connecte. C'est stupide mais rien de surprenant venant de Microsoft. - -Pour réaliser cette opération, je me suis dirigé vers le *Centre d'administration Exchange* accessible depuis le -=> https://admin.microsoft.com portail d'administration -. - -=> /uploads/content/604/screenshot_20211110.jpg Centre d'administration Exchange [IMG] - -J'ai complété cette configuration par l'édition de la *Stratégie de filtre de connexion* qu'on retrouve dans les * -=> https://security.microsoft.com/antispam Paramètres anti-courrier indésirable -*. - -=> /uploads/content/604/screenshot_20211110_2.jpg Stratégie de filtre de connexion [IMG] - -Après un moment, les envois de mail on pu reprendre et je n'ai pas encore eu de retour qui indiqueraient de nouvelles difficultés de connexion. diff --git a/blog/posts/605.gmi b/blog/posts/605.gmi deleted file mode 100644 index f16efa5..0000000 --- a/blog/posts/605.gmi +++ /dev/null @@ -1,16 +0,0 @@ -# Nouvelle version majeure de Custom Menu - -* 2022-01-14 20:45:00 -* Logiciel libre, Projets personnels - -La version -=> https://gitnet.fr/deblan/side_menu/releases/tag/v2.3.2 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**. - -=> /uploads/content/605/nc2.png [IMG] - -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. - -=> /uploads/content/605/nc.png [IMG] diff --git a/blog/posts/606.gmi b/blog/posts/606.gmi deleted file mode 100644 index 40807b4..0000000 --- a/blog/posts/606.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Les drones policiers autorisés par le Conseil constitutionnel - -* 2022-01-21 16:00:00 -* Contenu externe - -Le Conseil constitutionnel vient de rendre sa décision sur la loi « responsabilité pénale et sécurité intérieure ». Ce texte, adopté le 18 novembre 2021 par le Parlement, prévoyait notamment de ré-autoriser les drones policiers. Si les drones avaient été interdits à quatre reprises depuis 2020 (deux fois par le Conseil d’État, une fois par la CNIL et une fois par le Conseil constitutionnel), l’entêtement du gouvernement a porté ses fruits. Après deux années d’illégalité, les drones vont ré-occuper le ciel et restaurer la surveillance de masse. - -Cette mauvaise nouvelle ne vient pas seule : le Conseil constitutionnel valide aussi les caméras embarquées sur les véhicules de police (hélicoptères, voitures…) ainsi que la vidéosurveillance des cellules de garde-à-vue. diff --git a/blog/posts/607.gmi b/blog/posts/607.gmi deleted file mode 100644 index f04be6a..0000000 --- a/blog/posts/607.gmi +++ /dev/null @@ -1,42 +0,0 @@ -# Murph, la version v1.0 est publiée - -* 2022-01-26 08:25:00 -* Développement, Logiciel libre, Projets personnels - -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 possède un gestionnaire de navigations et de menus, il met à diposition un générateur de CRUD et intègre quelques outils indispensables comme un gestionnaire de fichiers, un gestionnaire de tâches, un panneau de configuration, la double authentification, etc. - -La procédure d'installation est simple et rapide. Toutes les informations essentielles sont sur la -=> https://doc.murph-project.org/ documentation -et les -=> https://gitnet.fr/murph/murph-skeleton sources sont sur gitnet -. - -```{class="language-bash window"} -composer create-project murph/murph-skeleton MonProjet ^1 # Installation du projet -cp .env .env.local -vim .env.local -make doctrine-migration # Configuration de la base de données -make asset # Création des assets -php bin/console murph:user:create # Création d'un compte -symfony server:start -d # On lance le serveur web de dev -``` - -À partir de là, Murph est opérationnel. L'interface d'administration est accessible sur -=> https://127.0.0.1:8080 -=> https://127.0.0.1:8080 -. -Tout le reste du travail s'articule dans la conception de votre CMS via du code. Je vous invite à lire la -=> https://doc.murph-project.org/ documentation du projet -. - -L'idée générale de Murph se résume dans ces quelques points : - -* Une installation de Murph contient une ou plusieurs navigations représentées par des noms de domaines et des langues -* Une navigation contient des menus dans lesquels on ajoute des nœuds -* Un nœud peut représenter une URL et peut s'associer à une page ou un autre nœud -* Une page contient des blocs de contenu -* À coté de ça, on peut générer des CRUD pour éditer des données métiers (exemple : les articles d'un blog) - -Beaucoup de travail a été mené et Murph peut couvrir beaucoup de cas d'usages rencontrés par les développeurs de sites web sur-mesure. J'ai par exemple réalisé mon blog, un site de recrutement, un outil pour s'inscrire à un évènement et un site qui présente les services d'un hôtel dont voici quelques images du backoffice : - -=> /uploads/content/607/murph_bo.gif Murph [IMG] diff --git a/blog/posts/608.gmi b/blog/posts/608.gmi deleted file mode 100644 index c346dac..0000000 --- a/blog/posts/608.gmi +++ /dev/null @@ -1,21 +0,0 @@ -# Jouer à Motus dans Matrix - -* 2022-02-01 17:45:00 -* Logiciel libre, Projets personnels - -Je reconnais que ce titre peut générer un gros mind fuck mais laissez moi vous expliquer ! - -Depuis quelques temps, je joue quotidiennement à ** -=> https://sutom.nocle.fr/ Sutom -**, une copie du jeu vieux jeu télévisé **Motus**. Le principe du jeu est simple : nous devons découvrir un mot avec comme indices sa taille et la première lettre qui le compose. On peut faire maximum 6 propositions qui permettent de découvrir les lettres. Une lettre découverte sera affichée dans un carré rouge, une lettre découverte mais mal placée sera dans un rond jaune. Les autres lettres resteront en bleu. Seuls des mots du dictionnaire peuvent être proposés. - -** -=> https://sutom.nocle.fr/ Sutom -** est addictif...mais pas tant que ça car il n'y a qu'un seul mot à découvrir par jour ! - -Cela m'a donné un bon prétexte pour monter un nouveau projet : écrire un **bot** avec lequel je pourrai jouer via **Matrix**, ma messagerie instantanée. Le bot se connecte avec un compte utilisateur créé pour l'occasion puis accepte les invitations à rejoindre une conversation. Le bot va ensuite lire les messages qu'on envoit et va réagir quand c'est nécessaire. Ainsi on peut lancer ou relancer une partie et tester des mots. À chaque proposition, on retrouve un affichage comme dans Motus 🥸 - -=> https://gitnet.fr/deblan/matrix-motus-bot Le code source du projet est dispo ici -, c'est vraiment sans prétention ! - -=> /uploads/content/608/screenshot_20220201_1.png Motus sur Matrix [IMG] diff --git a/blog/posts/609.gmi b/blog/posts/609.gmi deleted file mode 100644 index 8e7a15a..0000000 --- a/blog/posts/609.gmi +++ /dev/null @@ -1,59 +0,0 @@ -# Installer un proxy SMTP transparent - -* 2022-02-03 18:50:00 -* Informatique - -Il y a quelques temps. j'expliquais que des applications métiers qui envoient du mail n'arrivaient plus à ouvrir de connexion vers les serveurs SMTP de Microsoft : ** -=> %7B%7Burl://blog_menu_post?post=604&slug=microsoft-365-probleme-connexion-smtp%7D%7D Microsoft 365 - Problème de connexion aux serveurs SMTP -**. -La solution de contournement avait été de placer en liste verte la plage IP des serveurs qui hébergent ces applications. - -Deux mois et demi sont passés et ça ne fonctionne plus. Évidemment, toujours pas d'explication du pourquoi du comment. Je travaille avec Microsoft depuis 5 ans et je ne m'y suis toujours pas habitué 🤬 - -Après quelques heures de tests et de bidouilles, j'ai décidé d'installer un proxy qui fera l'intermédiaire entre les applications bloquées et Microsoft. Pour ne pas avoir à gérer d'avantages d'accès, ce proxy sera totalement transparent. - -Il n'existe (à priori) pas beaucoup de logiciels qui font ça et s'ils le font, -=> https://github.com/jnorell/smtpprox ils ne sont plus maintenus -. On retrouve beaucoup d'articles sur Nginx et Haproxy mais ils ne conviennent pas. Nginx n'est pas un proxy SMTP transparent et mes tests avec Haproxy ont échoués. -J'ai réussi à dénicher -=> https://github.com/tuck1s/go-smtpproxy `tuck1s/go-smtpproxy` -. Bien qu'il n'est pas reçu de mise à jour depuis 2 ans, il ne fait qu'utiliser une librairie qui elle a un développement actif : -=> https://github.com/emersion/go-smtp `emersion/go-smtp` -. - -**Contexte / Prérequis :** - -* Le serveur tourne avec **Debian 11** -* Nom de domaine du proxy : **relais-smtp.exemple.com** -* Il y a un certificat SSL généré par **Let's Encrypt** -* Le serveur va écouter sur le port **587** avec la couche **STARTTLS** - -Pour compiler le projet, il suffit d'installer -=> https://go.dev/ Go -, récupérer les sources et lancer le build. À l'issue du build, le binaire `proxy` sera généré dans le répertoire `go/src/github.com/tuck1s/go-smtpproxy`. - -```{class="language-bash window"} -apt update -apt install golang -go get github.com/emersion/go-smtp-proxy -go get gopkg.in/natefinch/lumberjack.v2 -go get github.com/tuck1s/go-smtpproxy -cd go/src/github.com/tuck1s/go-smtpproxy -./build.sh -``` - -Il ne reste plus qu'à lancer le proxy : - -```{class="language-bash window"} -./proxy - -certfile /etc/letsencrypt/live/relais-smtp.exemple.com/fullchain.pem \ - -privkeyfile /etc/letsencrypt/live/relais-smtp.exemple.com/privkey.pem \ - -in_hostport 0.0.0.0:587 \ - -insecure_skip_verify \ - -out_hostport smtp.office365.com:587 \ - -verbose -``` - -Coté application, le serveur SMTP change de `smtp.office365.com` à `relais-smtp.exemple.com`. Si on envoie un mail, le proxy va afficher du log et on pourra s'assurer que ça fonctionne. Il faut également améliorer tout ça avec un compte utilisateur dédié au proxy, gérer son démarrage avec un service Systemd/SysvInit/OpenRC/Whatever, etc. - -On verra combien de temps ça dure 🧐 diff --git a/blog/posts/610.gmi b/blog/posts/610.gmi deleted file mode 100644 index eb3847a..0000000 --- a/blog/posts/610.gmi +++ /dev/null @@ -1,41 +0,0 @@ -# Administrer son serveur Matrix - -* 2022-02-07 12:30:00 -* Informatique - -Au moment où j'écris cet article, j'administre 2 serveurs -=> https://matrix.org/docs/projects/server/synapse Matrix Synpase -. Pour rappel, -=> https://matrix.org/ Matrix -est un protocole de messagertie instantannée très interopérable. Le projet -=> https://matrix.org/docs/projects/server/synapse Matrix Synpase -est un serveur écrit en python qui implémente ce protocole. Matrix Synpase fournit une API qui va communiquer avec nos clients de messageries favoris comme -=> https://element.io/ Element -. - -Afin d'administrer ces serveurs, j'avais besoin d'une interface web qui peut me permettre de réguler les accès. -=> https://github.com/Awesome-Technologies/synapse-admin Synapse-Admin -a complétement répondu à mon besoin. Cette interface n'est composées que de fichiers statics et se greffe sur les API des serveurs. - -Avant d'installer -=> https://github.com/Awesome-Technologies/synapse-admin Synapse-Admin -, il faut s'assurer d'être administreur sur le serveur Matrix. Si vous travaillez avec SQLite, il suffira de faire comme suit mais la requête SQL sera la même si vous utilisez PostgreSQL. - -```{.window} -# su - matrix-synapse -s /bin/bash -$ sqlite3 /var/lib/matrix-synapse/homeserver.db -sqlite> UPDATE users SET admin = 1 WHERE name = '@identifiant:example.com'; -sqlite> .exit -``` - -Ensuite, vous avez juste à récupérer l'archive de -=> https://github.com/Awesome-Technologies/synapse-admin Synapse-Admin -depuis -=> https://github.com/Awesome-Technologies/synapse-admin/releases Github -et de la rendre accessible derrière un serveur HTTP local ou en ligne. - -=> /uploads/content/610/Screenshot%202022-02-07%20at%2012-26-37%20Synapse-Admin.png Synapse-Admin UI [IMG] - -Une fois identifié⋅e, vous pourrez administrer l'ensemble des comptes du serveurs, avoir une visibilité sur les salons créés et les médias. Bien sur, il n'est pas possible d'accéder aux données qui restent totalement chiffrées même pour l'administrateur. - -=> /uploads/content/610/Screenshot%202022-02-07%20at%2011-56-27%20Synapse-Admin.png Synapse-Admin UI [IMG] diff --git a/blog/posts/611.gmi b/blog/posts/611.gmi deleted file mode 100644 index 172281f..0000000 --- a/blog/posts/611.gmi +++ /dev/null @@ -1,12 +0,0 @@ -# Tinternet & Cie au sujet du contrôle parental sur France Culture - -* 2022-02-22 09:00:00 -* Informatique, Contenu externe, Politique - --------------------------------------------------------------------------------- - -#### Journal de 8h de France Culture, 22/02/2022 - -Je suis intervenu au nom de l'association Tinternet & Cie au du projet de loi pour imposer aux fabriquant de matériels connectés l'installation d'un contrôle parental. - -Si le contrôle parental est un outil plébiscité par l'association, les parents doivent être conscients des usages et doivent les comprendre pour mieux agir. diff --git a/blog/posts/612.gmi b/blog/posts/612.gmi deleted file mode 100644 index aa72ec0..0000000 --- a/blog/posts/612.gmi +++ /dev/null @@ -1,23 +0,0 @@ -# Nouveautés dans Murph v1.7 - -* 2022-03-03 14:30:00 -* Développement, Logiciel libre, Projets personnels - -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**. - -Depuis la -=> https://www.deblan.io/post/607/murph-la-version-v1-est-publiee version v1.0 publiée fin janvier 2022 -, pas mal de mises à jour sont arrivées. Certains sont visibles dans l'interface d'administration, d'autres sont ancrées dans le moteur du CMS. En voici quelques-unes : - -* Un outils d'analyse web a été ajouté et permet, sur demande, d'activer un outil pour compter les pages vues, les -=> https://fr.wikipedia.org/wiki/R%C3%A9f%C3%A9rent_(informatique) référants -et le type de périphérique (mobile ou desktop) -* Le gestionnaire de fichiers permet d'uploader un répertoire complet. On peut choisir chosir la manière d'afficher les fichiers selon leur nom ou la date de mise à jour -* Un gestionnaire de redirection a été ajouté et permet de créer des règles fines -* Le template par défaut a été réécrit et contient le nécessaire pour lancer un nouveau développement -* `node-sass` est remplacé par `sass` et il est nécessaire d'avoir une version de NodeJS >= 16 -* Les assets de Murph ont été déplacés dans le core ce qui permet de faciliter la mise à jour du CMS - -Conjoitement à tout ça, des dépendances ont été mises à jour ou remplacées et des bugs ont été corrigés ! - -=> /uploads/content/612/v1.7.png Murph [IMG] diff --git a/blog/posts/614.gmi b/blog/posts/614.gmi deleted file mode 100644 index ab7f680..0000000 --- a/blog/posts/614.gmi +++ /dev/null @@ -1,16 +0,0 @@ -# Nouveautés dans Murph v1.12 - -* 2022-03-26 17:50:00 -* Développement, Logiciel libre, Projets personnels - -{"time":1656000735581,"blocks":[{"id":"JoFaUbo8qC","type":"paragraph","data":{"text":" https://gitnet.fr/murph%22,%22meta%22:%7B%22title%22:%22murph%22,%22description%22:%22Murph -is an open-source CMF built on top of Symfony that helps you to build your own CMS. \r\n🔸 Documentation ➝ -=> https://doc.murph-project.org/ -\r\n🔹 Support ➝ -=> https://matrix.to/#/#murph-project:neutralnetwork.org?via=neutralnetwork.org%22,%22image%22:%7B%22url%22:%22https://gitnet.fr/avatars/21e80a97805d9129230f13ef8d87aa3b%22%7D%7D%7D%7D,%7B%22id%22:%22OenmuyTwCb%22,%22type%22:%22header%22,%22data%22:%7B%22text%22:%22D%C3%A9pendances%22,%22level%22:3%7D%7D,%7B%22id%22:%22eTQJdrlFxg%22,%22type%22:%22paragraph%22,%22data%22:%7B%22text%22:%22Dans -un premier temps et c'est sans doute le changement le plus important, le core du projet a été migré vers un dépôt dédié. Par conséquent, le moteur de Murph peut être installée comme une dépendance classique via composer."}},{"id":"GUd89AAlQt","type":"paragraph","data":{"text":"Ainsi, le fichier composer.json du projet murph/murph-skeleton a été réduit au strict nécessaire et permet de mettre à jour facilement Murph."}},{"id":"CuzrZ39k5n","type":"paragraph","data":{"text":"Dans cette même démarche à faciliter le développement et surtout la mise à jour des dépendances javascript, toutes les dépendances du fichiers package.json ont été migré vers un package node dédié."}},{"id":"-GWIFyIJY3","type":"list","data":{"style":"unordered","items":["Projet squelette de Murph :  murph/murph-skeleton","Core de Murph :  murph/murph-core","Projet de dépendances NPM :  murph/murph-npm"]}},{"id":"gtk1INFxJa","type":"paragraph","data":{"text":"À la suite de ces changements, mettre à jour une instance de Murph est très simple :"}},{"id":"YLgSCxvnWc","type":"code","data":{"code":"composer update\nyarn upgrade\nmake build"}},{"id":"N_tqOA05Om","type":"header","data":{"text":"Nouvelles fonctionnalités et correctifs","level":3}},{"id":"Tw0odSpRG6","type":"paragraph","data":{"text":"Globalement, pas mal de petites corrections ont été apportées. Voici les fonctionnalités implémentées depuis la v1.7.
"}},{"id":"hJs1u03uKi","type":"paragraph","data":{"text":"Le gestionnaire de fichiers permet à présent de renommer un fichier. Seule l'extension du fichier ne peut pas être modifiée pour des questions de sécurité.
Son affichage est également mieux géré dans le cas où plusieurs modales sont affichées (ajout d'un flou sur les modales du dessus).
"}},{"id":"C2G0DU_XCR","type":"paragraph","data":{"text":"Il est possible d'indiquer des rôles dans la configuration de Murph afin de définir des permissions sur des éléments d'un menu. Ainsi, une page pourra être restreinte à des utilisateur⋅trices spécifiques. "}},{"id":"P8Sl1LhtVb","type":"paragraph","data":{"text":"Afin de réaliser des liens dans un template Twig vers des éléments de la navigation, quatre nouvelles fonctions twig ont été ajoutées : code_url, code_path. Pour gérer les cas d'exceptions, vous pouvez également utiliser : safe_code_url et safe_code_path.
Ces fonctions prennent en paramètres le code du menu et le code du nœud. Le moteur va détecter la navigation courante pour générer le lien. Cette fonctionnalité est très pratique quand plusieurs navigations partagent une arborescence commune et qu'on souhaite faciliter le développement des templates.  "}},{"id":"aGqbJw511O","type":"paragraph","data":{"text":"Un nouveau maker symfony a été créé pour générer facilement une nouvelle page. Au même titre que pour générer une entité en ligne de commande, vous pourrez créer et paramétrer une page avec php bin/console make:page.
"}},{"id":"M52zR4OF9M","type":"paragraph","data":{"text":"L'éditeur EditorJS a été ajouté dans Murph et ajoute approche complémentaire à TinyMce pour rédiger du contenu. Comme cet éditeur s'appuie sur l'idée de blocs, un nouvelle fonction twig permet de rendre un contenu édité avec EditorJS : editorjs_to_html. Cette fonction peut prendre un tableau de blocs autorisés à être rendus. Par ailleurs, bien que des vues par défaut existent pour rendre chaque bloc, vous pourrez paramétrer des vues spécifiques pour vos blocs. Cet article est d'ailleurs rédigé avec EditorJS."}},{"id":"K_n2foA7GY","type":"paragraph","data":{"text":"La gestion du menu de l'administration de Murph a été simplifiée par l'utilisation de vues pour créer des sections et des éléments de menu."}},{"id":"YFR7wNy0Zs","type":"paragraph","data":{"text":"Enfin, la version de Murph a été ajoutée dans l'interface d'administration en haut à droite.
"}},{"id":"myBZqg83XO","type":"header","data":{"text":"Installation de Murph","level":3}},{"id":"wxvMNlX9u6","type":"paragraph","data":{"text":"Pour installer et Murph et commencer à développer son CMS, le processus est ultra simple :"}},{"id":"nVJNg1MlcZ","type":"code","data":{"code":"composer create-project murph/murph-skeleton MonProjet # Installation du projet\ncd MonProjet\ncp .env .env.local\nvim .env.local \nmake build # On génère les données du CMF (base de données, assets, etc.)\nphp bin/console murph:user:create # Création d'un compte\nsymfony server:start -d # On lance le serveur web de dev"}},{"id":"8lT7luaofd","type":"paragraph","data":{"text":"J'espère que ça vous plaira ☺️"}}],"version":"2.24.3"} diff --git a/blog/posts/615.gmi b/blog/posts/615.gmi deleted file mode 100644 index 1e0a7ea..0000000 --- a/blog/posts/615.gmi +++ /dev/null @@ -1,14 +0,0 @@ -# Tinternet & Cie au festival « d'autres FORMES », le 3 mars à 14h - -* 2022-03-29 15:30:00 -* La toile - -{"time":1648639389005,"blocks":[{"id":"q-fGGfnsEd","type":"paragraph","data":{"text":"L’association https://larodia.com/%5C%22%3ELa -Rodia avec une performance très particulière au sujet d'Internet."}},{"id":"ob6M5-XCEp","type":"paragraph","data":{"text":"Cette performance est ouverte au public et se tiendra le dimanche 3 avril à 14h."}},{"id":"pvhUSjgU-a","type":"link","data":{"link":" -=> https://larodia.com/agenda/conference-le-web-2-0-au-service-des-usagers-par-la-cie-tinternet/%22,%22meta%22:%7B%22title%22:%22Conf%C3%A9rence -- Le Web 2.0 au service des usagers ? par la Cie Tinternet | La Rodia, concerts et pôle des musiques actuelles à Besançon","description":null,"image":{"url":" -=> https://larodia.com/wp-content/uploads/2022/02/800px-internet-explorer-1011-logosvg.png%22%7D%7D%7D%7D,%7B%22id%22:%2225SEGrG3K2%22,%22type%22:%22paragraph%22,%22data%22:%7B%22text%22:%22Pour -réserver, rien de plus simple puisqu'il faut juste envoyer un mail à info@larodia.com."}},{"id":"Xg_Uj4P7hv","type":"paragraph","data":{"text":"On compte sur vous pour venir nombreuses et nombreux !"}},{"id":"GZhsh4gclr","type":"image","data":{"source":"/uploads/content/615/screenshot_20220329.png","caption":"{{fattr://806e29ca355a8ccaea39a97eaa5b16a8a3515d8405d66b7ec11c05a9133bce87ccef00c7ee1272eabe04e8aa43145055/title}}"}}],"version":"2.23.2"} diff --git a/blog/posts/616.gmi b/blog/posts/616.gmi deleted file mode 100644 index 28954c7..0000000 --- a/blog/posts/616.gmi +++ /dev/null @@ -1,32 +0,0 @@ -# Murph v1.13 intègre l'éditeur GrapesJS - -* 2022-04-18 23:00:00 -* Développement, Logiciel libre, Projets personnels - -L'une des forces de Wordpress est sa ribambelle de plugins dont -=> https://elementor.com/ Elementor -qui permet de créer des pages sans toucher au code. - -Pour permettre d'éditer du contenu de la même façon, ** -=> https://grapesjs.com/ GrapesJS -** est maintenant nativement intégré dans ** -=> https://doc.murph-project.org/ Murph -** depuis la version v1.13. Les blocs permettent de créer n'importe quel contenu en s'appuyant sur les composants Bootstrap 4. La version de développement de Murph intègre d'ores et déjà d'autres outils comme les presets -=> https://github.com/artf/grapesjs-preset-webpage webpage -et -=> https://github.com/artf/grapesjs-preset-newsletter newsletter -pour se passer de Bootstrap. - -Si vous voulez essayer, ** -=> https://demo.murph-project.org/ un site de démo -** a été mis en ligne 😏 - -=> /uploads/content/616/grapesjs-murph.jpg GrapesJS dans Murph [IMG] - -Pour mettre à jour Murph, rien de plus simple : - -```{.language-bash} -$ composer update -$ yarn upgrade -$ make build -``` diff --git a/blog/posts/617.gmi b/blog/posts/617.gmi deleted file mode 100644 index 001998d..0000000 --- a/blog/posts/617.gmi +++ /dev/null @@ -1,10 +0,0 @@ -# Les projets à Tinternet & Cie - -* 2022-04-22 12:30:00 -* Informatique, Politique - -{"time":1650623945183,"blocks":[{"id":"UnRkOxW24c","type":"paragraph","data":{"text":"L'énergie qui anime employer une coordinatrice et nous en sommes très fiers !"}},{"id":"HBHIYZz6pd","type":"paragraph","data":{"text":"Cela a été notamment possible grâce à un projet monté conjointement avec le département. Plus de 150 interventions\n ont été planifiées ce premier semestre dans de nombreux collèges et \nlycées. Nous abordons quatre grandes thématiques avec les élèves : la cyberdépendance, le cyberharcèlement, la désinformation et l'identité numérique."}},{"id":"sJqiq-hyLH","type":"paragraph","data":{"text":"C’est un projet fort, portant sur des sujets compliqués et nous \nespérons accompagner à nouveau le département dès la rentrée prochaine, \nmais aussi créer et travailler sur de nouveaux projets et partenariats \ntoujours plus utiles et efficaces."}},{"id":"LRbm9BmxAA","type":"paragraph","data":{"text":"En plus de cela, l'association a mis en place et continue d'animer une permanence numérique les 2ème et 4ème mercredis de chaque mois au bar Le Pixel à Besançon. C'est un moment privilégié pour échanger sur un Internet plus ouvert, éthique et respectueux de la vie privée. Un véritable laboratoire, où la pratique de l’éducation populaire est plus que jamais de mise.\nÀ ces occasions, un travail de fond est mené et permet d’ores et déjà de\n répondre à bon nombre de questions au sujet des outils qui, selon nous,\n peuvent répondre aux besoins communs des Internautes, quels qu’ils \nsoient."}},{"id":"ifI3m8BckF","type":"paragraph","data":{"text":"Enfin, vous le savez, le mois dernier, nous vous avions invité à suivre une conférence très particulière au sujet du Web 2.0. L'évènement était organisé à l'occasion du festival « D'Autres formes\n » réalisé par La Rodia. La conférence a rencontré un réel succès. Nous \navons eu l'occasion de travailler avec des gens formidables et répondre à\n de vrai challenges techniques. La conférence mêlait des séquences \nvidéos enregistrées et du live sur fond vert dans le but de faire naitre\n une interaction insoupçonnée avec le public.\nSi vous avez loupé l'évènement, voici une courte vidéo avec les moments forts."}},{"id":"7Cp2AhLNpz","type":"paragraph","data":{"text":"Bon visionnage !
"}},{"id":"f1hlDaZmMn","type":"raw","data":{"html":"

"}}],"version":"2.23.2"} diff --git a/blog/posts/618.gmi b/blog/posts/618.gmi deleted file mode 100644 index d7428bf..0000000 --- a/blog/posts/618.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Le Conseil d'État sauve la reconnaissance faciale du fichier TAJ - -* 2022-05-03 14:00:00 -* Contenu externe, Politique - -Mardi dernier, le Conseil d'État a rejeté nos arguments contre les opérations illégales de reconnaissance faciale réalisées par la police depuis 10 ans à partir du fichier TAJ. - -Le décret du fichier TAJ (traitement des antécédents judiciaires) autorise la police à utiliser la reconnaissance faciale (RF) pour comparer les 9 millions de visages qu'il contient aux images captées par vidéosurveillance, smartphone ou sur internet. diff --git a/blog/posts/619.gmi b/blog/posts/619.gmi deleted file mode 100644 index 9076f95..0000000 --- a/blog/posts/619.gmi +++ /dev/null @@ -1,97 +0,0 @@ -# Générer un CRUD dans Murph - -* 2022-05-10 20:00:00 -* Développement, Logiciel libre, Projets personnels - -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**. - -Je vais entamer une -=> %7B%7Burl://blog_menu_search?page=1&tag=murph-tuto%7D%7D série de tutoriaux pour présenter les fonctionnalités de Murph -. - -Cet article va pour expliquer comment utiliser Murph et générer des -=> https://developer.mozilla.org/fr/docs/Glossary/CRUD interfaces de CRUD -afin de créer, voir, mettre à jour et supprimer des entités. - -Dans un premier temps, il faut créer une nouvelle entité `Example`. Si vous avez déjà réaliser cette opération, vous pouvez passer à l'étape suivante. - -```{class="language-shell-session window"} -dev@project $ php bin/console make:entity Example -``` - -j'ai décidé d'ajouter ces attributs : - -* `label` de type `string` obligatoire -* `content` de type `text` obligatoire - -On doit maintenant éditer `App\Entity\Example` et implémenter l'interface `App\Core\Entity\EntityInterface` : - -```{.language-php data-title="src/Entity/Example.php"} - - {{ include('@Core/admin/module/_menu_item.html.twig', { - id: 'example', - label: 'Examples', - route: path('admin_example_index'), - icon: 'fa fa-pen' - }) }} - -``` - -…et c'est terminé ! - -Vous pouvez commencer à personnaliser le CRUD en modifiant `ExampleAdminController` et sa methode `getConfiguration`. -=> https://doc.murph-project.org/crud/configuration/ La documentation est ici -. - -```html - -``` diff --git a/blog/posts/620.gmi b/blog/posts/620.gmi deleted file mode 100644 index d1dcec0..0000000 --- a/blog/posts/620.gmi +++ /dev/null @@ -1,59 +0,0 @@ -# Générer une page dans Murph - -* 2022-05-16 10:30:00 -* Développement, Logiciel libre, Projets personnels - -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**. - -Cet article fait partie d'une -=> %7B%7Burl://blog_menu_search?page=1&tag=murph-tuto%7D%7D série de tutoriaux pour présenter les fonctionnalités de Murph -. - -Contrairement à pas mal de CMS, une page permet de rassembler des contenus qui pourront être réutilisés plusieurs fois dans une arborescence, là où certains CMS lient définitivement une page à un élément du menu. - -Par ailleurs, une page ne contient que des données qui pourront être présentées comme on le veut. Autrement dit, la manière de rendre une page est indépendante de la façon de rédiger les contenus. - -On va créer une nouvelle page `ExamplePage` avec ces contenus : - -* un titre `title` qui sera un champ texte -* un bloc de contenu `content` avec l'éditeur TinyMCE - -```html - -``` - -On va ensuite enregistrer la page dans Murph et lui donner le nom `Page d'exemple`. - -```{.language-yaml data-title="config/packages/app.yaml"} -core: - site: - # ... - pages: - App\Entity\Page\ExamplePage: - name: "Page d'exemple" - templates: - - {name: "Default", file: "page/example/default.html.twig"} -``` - -Quand une page est créée, un template par défaut l'est aussi. Une page peut avoir autant de templates qu'on souhaite. - -Éditons le template par défaut pour afficher simplement nos contenus : - -```{.language-twig data-title="templates/page/example/default.html.twig"} -{% extends 'base.html.twig' %} - -{% block page %} -

{{ _page.title.value }}

- - {{ _page.content.value|raw }} -{% endblock %} -``` - -On peut à présent créer un nouvel élément dans le menu, lui attribuer une nouvelle page et commencer à saisir le contenu. - -```html - -``` - -=> https://doc.murph-project.org/ La documentation complète est disponible sur doc.murph-project.org -. diff --git a/blog/posts/621.gmi b/blog/posts/621.gmi index ae99d4a..f33883c 100644 --- a/blog/posts/621.gmi +++ b/blog/posts/621.gmi @@ -3,7 +3,7 @@ * 2022-06-13 11:00:00 * Informatique -Au moment où j'ai commencé à utilisé +Au moment où j'ai commencé à utiliser => https://www.deblan.io/post/599/mettre-en-place-un-vpn-avec-wireguard Wireguard , je me suis aperçu que le principal usage que j'en ferais serait le DNS. diff --git a/blog/posts/624.gmi b/blog/posts/624.gmi index d37b2d1..5b7649d 100644 --- a/blog/posts/624.gmi +++ b/blog/posts/624.gmi @@ -10,7 +10,7 @@ est la forge logicielle que je gère depuis quelques années et qui héberge la , un logiciel libre pour faire son propre Github/Gitlab** sans dépenser des fortunes en ressources matérielles. => https://gitea.io/ Gitea -est un logiciel très complet mais une des fonctionnalités qui peut manquer à certain⋅e⋅s est **la publication pages web statiques** via la forge. +est un logiciel très complet mais une des fonctionnalités qui peut manquer à certain⋅e⋅s est **la publication de pages web statiques** via la forge. => https://codeberg.org/ Codeberg a développé => https://codeberg.org/Codeberg/pages-server Codeberg/pages-server @@ -18,7 +18,7 @@ a développé => https://gitnet.page Gitnet Pages . -Pour commencer à publier, vous devez créer un dépot `pages` dans lequel vous déposerez y vos fichiers. Le contenu sera accessible via `https://votre-login.gitnet.page/{fichier}`. +Pour commencer à publier, vous devez créer un dépot `pages` dans lequel vous y déposerez vos fichiers. Le contenu sera accessible via `https://votre-login.gitnet.page/{fichier}`. Dans le cas où vous souhaitez intégrer des pages à un dépot existant, ajoutez une branche `pages` puis accédez à votre contenu via `https://votre-login.gitnet.page/le-depot/{fichier}` : @@ -40,6 +40,6 @@ et ça marche bien ! On build la branche ou se trouve les sources, on copie le r => https://gitnet.fr/deblan/pages-ci/src/branch/master/.woodpecker.yml configuration utilisée . -Si toutefois le service venait à être pas mal utilisé, alors j'intégrerai des fonctionnalités plus avancées comme le nom de domaine personnalité. Tel qu'il est déployé actuellement, ce n'est pas possible. +Si toutefois le service venait à être pas mal utilisé, alors j'intégrerai des fonctionnalités plus avancées comme le nom de domaine personnalisé. Tel qu'il est déployé actuellement, ce n'est pas possible. => /uploads/content/624/screenshot-20220803-161712.jpg Gitnet Pages [IMG] diff --git a/blog/posts/625.gmi b/blog/posts/625.gmi new file mode 100644 index 0000000..b6392d7 --- /dev/null +++ b/blog/posts/625.gmi @@ -0,0 +1,58 @@ +# Logiciel client/serveur pour lire et télécharger des vidéos + +* 2022-08-23 21:00:00 +* Logiciel libre, Projets personnels + +Ces dernières semaines, j'ai réalisé plusieurs Pull Requests sur des projets écrits en +=> https://go.dev/ Go +. J'ai travaillé sur une fonctionnalité qui permet d'ajouter des informations dans le +=> https://www.deblan.io/post/623/gitea-1-17-integre-un-registre-de-paquets registre de paquet de Gitea +, j'ai corrigé un bug sur l'outil d'intégration continue +=> https://woodpecker-ci.org/ Woodpecker +et j'ai proposé une fonctionnalité pour +=> https://codeberg.org/Codeberg/pages-server Codeberg/pages-server +que j'utilise pour +=> https://www.deblan.io/post/624/gitnet-heberge-vos-pages-statiques héberger des pages statiques +. Ces contributions étaient mes premiers pas avec +=> https://go.dev/ Go +et j'ai vraiment apprécié ce langage. + +Pour en apprendre un peu plus, j'ai décidé de réécrire un projet initialement en PHP. Le use case est très personnel, mais il peut sans doute plaire à d'autres personnes. Il s'agit d'un outil client/server en ligne de commande pour servir des fichiers vidéos distants. + +Le projet s'appelle +=> https://gitnet.fr/deblan/mu-go Mugo +et les sources sont libres ! Je fourni un unique binaire qui permet de lancer le serveur et le client. + +Côté serveur, il suffit de définir quel est le répertoire où se trouvent les vidéos, sur quel port écouter et l'adresse publique du serveur web qui sera démarré (API). Coté client, on définit l'adresse du serveur web (API) et éventuellement les filtres à appliquer. + +Une fois le serveur démarré, le client peut s'y connecter et afficher les vidéos disponibles. Les vidéos pourront être sélectionnées interactivement avec leur numéro ou en +=> https://gitnet.fr/deblan/mu-go#client-side spécifiant une plage. + +Pour démarrer le serveur, la commande est simple : `mugo serve`. Le répertoire courant sera servi par défaut et il écoutera sur le port `4000`. Il est possible de spécifier l'adresse publique du serveur avec l'argument `--api-url` (si reverse proxy par exemple). +Dans mon cas, l'API exposée par le serveur est accessible via un frontend Apache2. L'adresse du proxy est sous la forme `https://videos.example.com`. Mes fichiers sont stockés dans le répertoire `/srv/videos` (sous répertoires inclus). Voilà comment je lance le serveur : + +```{class="language-shell-session window"} +$ mugo serve -d /srv/videos -u https://videos.example.com +``` + +Je peux maintenant accéder à l'API via `https://videos.example.com/api/list`. + +Côté client, je peux afficher la liste des vidéos comme suit. Le résultat de chacunes de ces commandes sera une liste de vidéos avec un prompt interactif. + +```{class="language-shell-session window"} +# Lire les fichiers (mpv) +$ mugo play -u https://videos.example.com + +# Télécharger les fichiers (wget) +$ mugo download -u https://videos.example.com +$ mugo download -d "$HOME/Videos" -u https://videos.example.com + +# Afficher que les fichiers qui contiennent "batman" +$ mugo play -u https://videos.example.com -n batman +# …et les ordonner par nom +$ mugo play -u https://videos.example.com -n batman -o name +``` + +Toutes les infos sur le projet son dispos sur +=> https://gitnet.fr/deblan/mu-go Gitnet +🙂 diff --git a/blog/posts/626.gmi b/blog/posts/626.gmi new file mode 100644 index 0000000..916f58b --- /dev/null +++ b/blog/posts/626.gmi @@ -0,0 +1,32 @@ +# Sharepoint Office365 sur Linux : automatiser l'authentification (v2) + +* 2022-08-25 13:30:00 +* Développement, Informatique + +En septembre 2018, je publiais un article pour +=> https://www.deblan.io/post/545/sharepoint-office365-sur-linux-automatiser-l-authentification 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 +=> https://www.deblan.io/post/543/monter-un-partage-sharepoint-office365-sur-linux-webdav-davfs 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 +=> https://playwright.dev/ 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+. + +```{class="language-shell-session window"} +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. + +```{class="language-shell-session window"} +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":"..."} +``` diff --git a/blog/posts/627.gmi b/blog/posts/627.gmi new file mode 100644 index 0000000..8db5311 --- /dev/null +++ b/blog/posts/627.gmi @@ -0,0 +1,18 @@ +# Blocs pour i3wm + +* 2022-08-31 14:00:00 +* Logiciel libre, Projets personnels + +Je suis un fervent utilisateur de +=> https://i3wm.org/ i3wm +et ça dure depuis des années ! Grâce à +=> https://github.com/vivien/i3blocks 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 +=> https://gitnet.fr/deblan/i3-blocks-go dépot du projet +. Voici un aperçu des blocs en fonctionnement : + +=> /uploads/content/627/blocks.jpg i3-blocks-go [IMG] diff --git a/blog/posts/628.gmi b/blog/posts/628.gmi new file mode 100644 index 0000000..cbd3566 --- /dev/null +++ b/blog/posts/628.gmi @@ -0,0 +1,24 @@ +# Wireguard GUI - Interface graphique pour Linux + +* 2022-09-13 16:10:00 +* Logiciel libre, Projets personnels + +Je viens de publier le code source d'un nouveau projet : **Wireguard GUI**. + +Pour rappel, +=> https://www.deblan.io/chercher?query=wireguard 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 +=> https://gitnet.fr/deblan/wireguard-gui/releases télécharger une version compilée depuis la page des releases +. Toutes les informations techniques sont disponibles sur +=> https://gitnet.fr/deblan/wireguard-gui le dépot du projet +. + +```html +

+Wireguard GUI +

+``` diff --git a/blog/posts/631.gmi b/blog/posts/631.gmi new file mode 100644 index 0000000..09f9c3e --- /dev/null +++ b/blog/posts/631.gmi @@ -0,0 +1,15 @@ +# Permanence d'auto-défense numérique + +* 2022-09-27 22:00:00 +* Contenu externe + +Le Pixel ( +=> https://www.lepixel-besancon.fr/ un bar associatif à Besançon +) accueille l'association +=> https://www.tinternet.net/ Tinternet & Cie +chaque premier mercredi du mois dans le cadre d'une permanence numérique ! L'association réalise des formations autour de la protection de la vie privée et du logiciel libre. +Vous pouvez venir avec votre smartphone, votre ordinateur et juste des questions ! + +```html + +``` diff --git a/blog/posts/632.gmi b/blog/posts/632.gmi new file mode 100644 index 0000000..75d78ea --- /dev/null +++ b/blog/posts/632.gmi @@ -0,0 +1,23 @@ +# Nextcloud 25 arrive et Custom Menu 3.0 aussi ! + +* 2022-10-19 23:00:00 +* Logiciel libre, Projets personnels + +Cette semaine, j'ai publié la version 3.0 de ** +=> https://gitnet.fr/deblan/side_menu Custom Menu +**. Cette version devient compatible avec +=> https://nextcloud.com/blog/announcing-nextcloud-hub-3-brand-new-design-and-photos-2-0-with-editor-and-ai/ 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 ** +=> https://gitnet.fr/deblan/side_menu Custom Menu +**. Par conséquent, cette version 3 ne supporte que Nextcloud 25 et casse la compatibilité avec +=> https://apps.nextcloud.com/apps/apporder 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 😎 + +```html +
Nextcloud 25 avec Custom Menu
+``` diff --git a/blog/posts/633.gmi b/blog/posts/633.gmi new file mode 100644 index 0000000..486efb0 --- /dev/null +++ b/blog/posts/633.gmi @@ -0,0 +1,30 @@ +# Weblate, l'outil de traduction pour Custom Menu + +* 2022-11-05 14:40:00 +* Logiciel libre, Projets personnels + +=> https://apps.nextcloud.com/apps/side_menu Custom menu +est traduit dans cinq langues dont l'anglais, le français, l'allemand, le tchèque et le chinoix simplifié. Une demande m'a été faite pour la traduire également en néerlandais mais rien n'a été réalisé pour le moment. + +Pour moi, le plus important est de permettre aux contributeurs⋅trices de rejoindre facilement le projet sans se poser la question de code source, de fork ou de pull request. C'est pourquoi j'ai décidé d'utiliser +=> https://weblate.org/fr/ Weblate +, une application web dédiée à la traduction. Je remercie chaudement ** +=> https://codeberg.org/ Codeberg +** qui +=> https://translate.codeberg.org/projects/custom-menu/application/ partage son instance +et qui devient la plateforme de traduction officielle de +=> https://apps.nextcloud.com/apps/side_menu Custom menu +. + +Après s'être créé un compte, tout se déroule sur une interface web simplifiée. Les chaines à traduire et le projet sont mis à jour automatiquement et les traducteurs⋅tices peuvent visualiser et corriger les données incomplètes et/ou incohérentes. De nouvelles langues seront ajoutées dès lors qu'on en fait la demande. + +je suis très heureux d'avoir migré les traductions sur +=> https://weblate.org/fr/ Weblate +et j'ai bon espoir de voir de nouvelles langues apparaître 🙂 + +Si vous désirez contribuer, +=> https://translate.codeberg.org/projects/custom-menu/application/ tout se passe ici +! + +=> https://translate.codeberg.org/projects/custom-menu/application/ +=> https://www.deblan.io/uploads/content/633/Screenshot%202022-11-05%20at%2014-15-03%20Custom%20menu_Application.png Weblate Custom Menu [IMG] diff --git a/blog/posts/634.gmi b/blog/posts/634.gmi new file mode 100644 index 0000000..4c743e4 --- /dev/null +++ b/blog/posts/634.gmi @@ -0,0 +1,21 @@ +# Comprendre les enjeux de l'IoT et en fabriquer ! + +* 2022-12-14 22:30:00 +* Contenu externe + +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 + +```html +

Je veux m'inscire

+``` diff --git a/blog/posts/635.gmi b/blog/posts/635.gmi new file mode 100644 index 0000000..81653c5 --- /dev/null +++ b/blog/posts/635.gmi @@ -0,0 +1,25 @@ +# Bilan de l'année 2022 + +* 2022-12-25 21:50:00 +* Logiciel libre, Projets personnels + +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 +=> https://www.tinternet.net/ 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 +=> https://doc.murph-project.org/ Murph +, mon +=> https://fr.wikipedia.org/wiki/Content_management_framework CMF +qui repose sur Symfony, et +=> https://preprod.deblan.cloud/index.php/apps/side_menu/ 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 ! diff --git a/blog/posts/636.gmi b/blog/posts/636.gmi new file mode 100644 index 0000000..0aee059 --- /dev/null +++ b/blog/posts/636.gmi @@ -0,0 +1,82 @@ +# Woodpecker CI, envoyer du mail dans certaines conditions + +* 2023-01-04 22:40:00 +* Développement, Projets personnels + +En juin dernier, j'ai migré ma plateforme d'intégration continue vers +=> https://woodpecker-ci.org/ Woodpecker CI +et j'en suis très satisfait. + +=> https://woodpecker-ci.org/ 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`. + +```{.language-yaml} +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 +=> https://github.com/drillster/drone-email drillster/drone-email +, initialement destinée à +=> https://www.drone.io/ Drone +. En combinant cette image et `evaluate`, je pensais pouvoir réaliser ce que je voulais : + +```{.language-yaml} +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é +=> https://github.com/drillster/drone-email drillster/drone-email +pour créer +=> https://gitnet.fr/deblan/woodpecker-email deblan/woodpecker-email +. Cette image est totalement orientée vers +=> https://woodpecker-ci.org/ 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é. + +```{.language-yaml} +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 +=> https://gitnet.fr/deblan/woodpecker-email Gitnet +et l'image est à la fois publiée sur +=> https://hub.docker.com/r/deblan/woodpecker-email Docker Hub +et +=> https://gitnet.fr/deblan/-/packages/container/woodpecker-email/latest Gitnet +. diff --git a/blog/posts/637.gmi b/blog/posts/637.gmi new file mode 100644 index 0000000..084e9c4 --- /dev/null +++ b/blog/posts/637.gmi @@ -0,0 +1,51 @@ +# Détecter les vulnérabilités dans les dépendances de son projet + +* 2023-01-13 23:25:00 +* Développement, Informatique + +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, +=> https://getcomposer.org/ composer +, le gestionnaire de dépendances de PHP ne fait pas apparaître le numéro de version mineure tandis que npm ( +=> https://nodejs.org/en/ 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 +=> https://github.com/G-Rath/osv-detector 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 +=> https://github.com/G-Rath/osv-detector Github +et les +=> https://github.com/G-Rath/osv-detector/releases 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. + +```{.window.language-bash} +$ 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. + +```{.window.language-bash} +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é +=> https://github.com/G-Rath/osv-detector osv-detector +dans une image docker pour permettre de l'utiliser dans le cadre d'une intégration continue. + +```{.window.language-bash} +$ docker run -it -v "$(pwd):/app" deblan/osv-detector Gemfile.lock package-lock.json +``` + +=> https://github.com/G-Rath/osv-detector 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é. diff --git a/blog/posts/638.gmi b/blog/posts/638.gmi new file mode 100644 index 0000000..0c21aca --- /dev/null +++ b/blog/posts/638.gmi @@ -0,0 +1,37 @@ +# Générer des images pour le partage sur les réseaux + +* 2023-01-30 22:25:00 +* Logiciel libre, Projets personnels + +**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. + +=> /uploads/content/638/inkscape.jpg Inkscape [IMG] + +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. + +=> /uploads/content/638/63d97b58.png OG:IMAGE [IMG] + +Le projet est publié sous **licence GPLv3** et +=> https://gitnet.fr/deblan/og-image son code est disponible sur Gitnet +. J'ai décidé d'utiliser +=> https://vuejs.org/ VueJS3 +pour gérer toute la partie interaction et +=> https://tailwindcss.com/ Tailwind CSS +pour la présentation. + +Si vous avez envie d'essayer, vous pouvez utiliser +=> https://deblan.gitnet.page/og-image/ la version en ligne +. Elle est hébergée sur **Gitnet Pages**, +=> https://www.deblan.io/post/624/gitnet-heberge-vos-pages-statiques 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 🚀 diff --git a/blog/posts/640.gmi b/blog/posts/640.gmi new file mode 100644 index 0000000..ad63ab6 --- /dev/null +++ b/blog/posts/640.gmi @@ -0,0 +1,14 @@ +# Loi J.O. : refusons la surveillance biométrique + +* 2023-02-19 17:25:00 +* Contenu externe, Politique + +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**. + +```html + + Accès au site + +``` diff --git a/blog/posts/641.gmi b/blog/posts/641.gmi new file mode 100644 index 0000000..2cff1ab --- /dev/null +++ b/blog/posts/641.gmi @@ -0,0 +1,37 @@ +# Gitea et forgejo v1.19.0 sont dans les bacs 🥳 + +* 2023-03-27 08:30:00 +* Développement, Logiciel libre + +Le 20 mars dernier a été publiée +=> https://github.com/go-gitea/gitea/releases/tag/v1.19.0 la version v1.19.0 de Gitea +! +=> https://forgejo.dev/ Forgejo, le soft fork de Gitea +poussé par +=> https://codeberg.org/ 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 ( +=> https://docs.gitea.io/en-us/incoming-email/ documentation +) +* +=> https://www.deblan.io/post/623/gitea-1-17-integre-un-registre-de-paquets Le registre de paquets +supporte à présent Cargo, Conda, Chef et +=> https://docs.gitea.io/en-us/config-cheat-sheet/#packages-packages 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, +=> https://blog.gitea.io/2022/12/feature-preview-gitea-actions/ 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 +=> https://github.com/go-gitea/gitea/releases/tag/v1.19.0 journal des modifications +. + +Je vous invite à prendre du temps pour découvrir l'ensemble des nouvelles fonctionnalités 🤗 diff --git a/blog/posts/642.gmi b/blog/posts/642.gmi new file mode 100644 index 0000000..53b308c --- /dev/null +++ b/blog/posts/642.gmi @@ -0,0 +1,21 @@ +# 100ème publication et 3ème anniversaire de Custom Menu 🎂 + +* 2023-03-28 13:37:00 +* Logiciel libre, Projets personnels + +Il y a trois ans, +=> https://gitnet.fr/deblan/side_menu/releases/tag/v1.0.0 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, ** +=> https://deblan.gitnet.page/side_menu_doc 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 +=> https://deblan.gitnet.page/side_menu_doc 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 !** diff --git a/blog/posts/645.gmi b/blog/posts/645.gmi new file mode 100644 index 0000000..077320e --- /dev/null +++ b/blog/posts/645.gmi @@ -0,0 +1,5 @@ +# Mozilla arrive (doucement) sur Mastodon avec sa propre instance + +* 2023-05-06 21:30:00 + +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 … diff --git a/blog/posts/646.gmi b/blog/posts/646.gmi new file mode 100644 index 0000000..ac97dee --- /dev/null +++ b/blog/posts/646.gmi @@ -0,0 +1,16 @@ +# Quoi de neuf sur les internets ? #1 + +* 2023-05-09 14:00:00 +* Contenu externe, Quoi de neuf sur les internets ? + +{"time":1683659052756,"blocks":[{"id":"Sc8gwcQjKj","type":"paragraph","data":{"text":"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."}},{"id":"pB7hXPBAf8","type":"link","data":{"link":" +=> https://zonetuto.fr/intelligence-artificielle/jai-lance-un-mini-chatgpt-en-local-sur-mon-cpu-avec-gpt4all/%22,%22meta%22:%7B%22title%22:%22J%27ai +lancé un mini ChatGPT en local sur mon CPU avec GPT4All","description":"Oui c'est possible de faire tourner un mini ChatGPT sur votre processeur sans carte graphique et même sur un vieux ordinateur, merci GPT4All","image":{"url":" +=> https://zonetuto.fr/wp-content/uploads/2023/04/chatgpt-gpt4all-robot-ia-illustration.jpg%22%7D%7D%7D%7D,%7B%22id%22:%221XpKFolMEA%22,%22type%22:%22delimiter%22,%22data%22:%7B%7D%7D,%7B%22id%22:%22M0uFhGCr-0%22,%22type%22:%22link%22,%22data%22:%7B%22link%22:%22https://lehollandaisvolant.net/?d=2023/05/04/19/21/50-ne-confondons-pas-hierarchie-et-expertise%22,%22meta%22:%7B%22title%22:%22Ne +confondons pas hiérarchie et expertise -","description":"« Le chef a toujours raison. » On rigole de cette « règle », mais c’est essentiellement ça qui fait que beaucoup de choses ne tournent plus rond un peu partout. Que ce soit dans une entreprise, à la tête d’un pays, ou dans une association, une équ…","image":{"url":" +=> https://lehollandaisvolant.net/favicon.ico%22%7D%7D%7D%7D,%7B%22id%22:%22UHtqFd1b1s%22,%22type%22:%22delimiter%22,%22data%22:%7B%7D%7D,%7B%22id%22:%22oCZ4CbwQ4u%22,%22type%22:%22link%22,%22data%22:%7B%22link%22:%22https://github.com/mifi/editly%22,%22meta%22:%7B%22title%22:%22GitHub +- mifi/editly: Slick, declarative command line video editing & API","description":"Slick, declarative command line video editing & API - GitHub - mifi/editly: Slick, declarative command line video editing & API","image":{"url":" +=> https://opengraph.githubassets.com/a7e8c5c68095879f8165094e8804bb8ca8e6c87b84635f0fa6e8ecd36eda3068/mifi/editly%22%7D%7D%7D%7D,%7B%22id%22:%22-sdsNlut8K%22,%22type%22:%22delimiter%22,%22data%22:%7B%7D%7D,%7B%22id%22:%22KUOXcmOcQM%22,%22type%22:%22link%22,%22data%22:%7B%22link%22:%22https://www.nextinpact.com/lebrief/71614/mozilla-arrive-doucement-sur-mastodon-avec-sa-propre-instance%22,%22meta%22:%7B%22title%22:%22Mozilla +arrive (doucement) sur Mastodon avec sa propre instance","description":"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 Ste...","image":{"url":" +=> https://cdnx.nextinpact.com/data-next/images/bd/wide-linked-media/1986.jpg%22%7D%7D%7D%7D,%7B%22id%22:%22_KCq8Ww8ze%22,%22type%22:%22paragraph%22,%22data%22:%7B%22text%22:%22J%27ai +tenté de mélanger différents sujets, dans l'espoir que ce nouveau format vous aura plu. "}},{"id":"sr9GlyS3Sj","type":"paragraph","data":{"text":"À bientôt !
"}}],"version":"2.24.3"} diff --git a/blog/posts/647.gmi b/blog/posts/647.gmi new file mode 100644 index 0000000..40457e8 --- /dev/null +++ b/blog/posts/647.gmi @@ -0,0 +1,25 @@ +# Un modèle pour démarrer un script shell + +* 2023-05-21 19:00:00 +* Développement + +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. + +```html +
+ +``` + +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. + +=> /uploads/content/647/screenshot_20230521.png [IMG] + +Le code source est disponible sur +=> https://gitnet.fr/deblan/shell-base 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. diff --git a/blog/posts/648.gmi b/blog/posts/648.gmi new file mode 100644 index 0000000..b2dd476 --- /dev/null +++ b/blog/posts/648.gmi @@ -0,0 +1,40 @@ +# Capture, un reverse proxy pour analyser les requêtes de vos applications + +* 2023-06-07 09:00:00 +* Développement, Projets personnels + +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 +=> https://github.com/ofabricio Fabricio +et les sources sont disponibles sur +=> https://github.com/ofabricio/capture 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 +=> https://gitnet.fr/deblan/capture Gitnet +. + +=> https://upload.deblan.org/u/2023-05/64746afd.png Capture [IMG] + +Voici les méthodes basiques pour lancer capture : + +```{.window.language-bash} +$ 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. + +```{.window.language-bash} +$ 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 😄 diff --git a/blog/posts/649.gmi b/blog/posts/649.gmi new file mode 100644 index 0000000..8ec1f63 --- /dev/null +++ b/blog/posts/649.gmi @@ -0,0 +1,8 @@ +# Affaire du 8 décembre : le chiffrement des communications assimilé à un comportement terroriste + +* 2023-06-05 13:20:00 +* Contenu externe, Politique + +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.** diff --git a/blog/posts/650.gmi b/blog/posts/650.gmi new file mode 100644 index 0000000..a0e7f48 --- /dev/null +++ b/blog/posts/650.gmi @@ -0,0 +1,8 @@ +# Je n'ai rien à cacher. + +* 2023-07-05 13:19:00 +* Contenu externe + +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. diff --git a/blog/posts/651.gmi b/blog/posts/651.gmi new file mode 100644 index 0000000..35692c8 --- /dev/null +++ b/blog/posts/651.gmi @@ -0,0 +1,29 @@ +# Murph v1.20 is out! 📣 + +* 2023-07-28 10:30:00 +* Développement, Logiciel libre, Projets personnels + +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 +=> https://doc.murph-project.org/changelog/core/ 📘 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 ! 😀 diff --git a/blog/posts/652.gmi b/blog/posts/652.gmi new file mode 100644 index 0000000..38c481a --- /dev/null +++ b/blog/posts/652.gmi @@ -0,0 +1,6 @@ +# Internet devient-il un Minitel 2.0 ou un bien commun ? - Benjamin Bayart - RTS – Libre à lire ! + +* 2023-08-05 11:28:00 +* Contenu externe, Politique + +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… diff --git a/blog/posts/653.gmi b/blog/posts/653.gmi new file mode 100644 index 0000000..999b11b --- /dev/null +++ b/blog/posts/653.gmi @@ -0,0 +1,18 @@ +# Signez la pétition pour empêcher la France d’obliger les navigateurs tels que Firefox de Mozilla à censurer des sites web + +* 2023-08-17 13:00:00 +* Politique + +{"time":1692290167823,"blocks":[{"id":"YTwYYy_NMs","type":"paragraph","data":{"text":"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."}},{"id":"pps1e-sSF0","type":"paragraph","data":{"text":"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."}},{"id":"lXxLVlSuLP","type":"paragraph","data":{"text":"Ce projet est une première car il s'inscrit directement dans les navigateurs (Firefox, Google Chrome, Microsoft Edge, Safari et les autres). "}},{"id":"bvT6cMIKoj","type":"paragraph","data":{"text":"Les pays qui utilisent des moyens similaires à l'échelle d'un état sont tous des dictatures ou fascistes."}},{"id":"BtMz4H_RZs","type":"paragraph","data":{"text":"Je n'accepte pas que la France soit une locomotive pour ces régimes vers lesquels nous nous dirigeons chaque jour qui passe."}},{"id":"AX6lWzoFe3","type":"paragraph","data":{"text":"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."}},{"id":"knpP6YpBb8","type":"paragraph","data":{"text":"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.
"}},{"id":"UUKHghtboV","type":"raw","data":{"html":""}},{"id":"RksdCLSDIJ","type":"paragraph","data":{"text":"Pour compléter le lien vers pétition, je vous invite à lire l'article de blog de Mozilla publié en juin dernier.
"}},{"id":"4FNh8UAMPc","type":"raw","data":{"html":""}}],"version":"2.24.3"} diff --git a/blog/posts/654.gmi b/blog/posts/654.gmi new file mode 100644 index 0000000..a817cc3 --- /dev/null +++ b/blog/posts/654.gmi @@ -0,0 +1,35 @@ +# Remote i3-wm WS : ma télécommande pour bureau GNU/Linux (v2) + +* 2023-08-27 14:45:00 +* Logiciel libre, Projets personnels + +En février 2018, je publiais l'article +=> https://www.deblan.io/post/540/remote-i3-wm-ws-ma-telecommande-pour-bureau-debian-gnu-linux 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 +=> https://echo.labstack.com/ 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. + +=> /uploads/content/654/remotei32.png Remote i3-wm GO [IMG] + +Pour démarrer le projet, télécharger la dernière version depuis +=> https://gitnet.fr/deblan/remote-i3wm-go/releases Gitnet +puis générer un fichier de configuration en partant du +=> https://gitnet.fr/deblan/remote-i3wm-go/src/branch/main/config.yaml 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 : + +```{.window.language-bash} +$ 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 +=> https://gitnet.fr/deblan/remote-i3wm-go 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 ! diff --git a/blog/posts/655.gmi b/blog/posts/655.gmi new file mode 100644 index 0000000..d27bc3b --- /dev/null +++ b/blog/posts/655.gmi @@ -0,0 +1,99 @@ +# Matrix-Synapse : migrer de SQLite à PostgreSQL + +* 2023-09-10 18:30:00 +* Informatique + +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 +=> https://matrix-org.github.io/synapse/latest/setup/installation.html 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. + +```{.window.language-bash} +$ 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 +=> https://www.postgresql.org/download/linux/debian/ documentation officielle +. + +```{.window.language-bash} +$ 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 : + +```{.window.language-diff} +-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 : + +```{.window.language-bash} +$ sudo systemctl start postgresql.service +``` + +C'est maintenant le moment de créer une base et un compte nommés `matrix`. + +```{.window.language-bash} +$ 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 : + +```{.window.language-yaml} +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`. + +```{.window.language-bash} +$ 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. + +```{.window.language-bash} +$ 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. diff --git a/blog/posts/658.gmi b/blog/posts/658.gmi new file mode 100644 index 0000000..72c3e9f --- /dev/null +++ b/blog/posts/658.gmi @@ -0,0 +1,23 @@ +# Murph v1.23 et Custom Menu v3.11 + +* 2023-11-06 11:30:00 +* Développement, Logiciel libre, Projets personnels + +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 +=> https://gitnet.fr/murph/murph-core/releases/tag/v1.23.0 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. + +=> https://doc.murph-project.org/ +=> /uploads/content/658/screenshot_20231106.png Documentation Murph [IMG] + +Quant à +=> https://deblan.gitnet.page/side_menu_doc/ Custom Menu +, la version +=> https://gitnet.fr/deblan/side_menu/releases/tag/v3.11.0 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 ! + +=> /uploads/content/658/screenshot_20231106_1.png Custom Menu [IMG] + +**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 😁