From 130bac056494c92363c744f4555d502b68acedb6 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Thu, 18 Aug 2022 13:36:51 +0200 Subject: [PATCH] update --- blog/feed.xml | 959 ++++++++++++++++++++------------------------- blog/index.gmi | 26 +- blog/posts/579.gmi | 11 - blog/posts/580.gmi | 33 -- blog/posts/581.gmi | 18 - blog/posts/582.gmi | 6 - blog/posts/583.gmi | 7 - blog/posts/584.gmi | 11 - blog/posts/585.gmi | 19 - blog/posts/586.gmi | 32 -- blog/posts/587.gmi | 8 - blog/posts/588.gmi | 43 -- blog/posts/589.gmi | 80 ---- blog/posts/590.gmi | 19 - blog/posts/591.gmi | 78 ---- blog/posts/592.gmi | 2 +- blog/posts/593.gmi | 2 +- blog/posts/594.gmi | 2 +- blog/posts/595.gmi | 2 +- blog/posts/596.gmi | 2 +- blog/posts/597.gmi | 2 +- blog/posts/600.gmi | 2 +- blog/posts/601.gmi | 2 +- blog/posts/602.gmi | 2 +- blog/posts/603.gmi | 2 +- blog/posts/605.gmi | 4 +- blog/posts/606.gmi | 2 +- blog/posts/607.gmi | 4 +- blog/posts/608.gmi | 2 +- blog/posts/609.gmi | 4 +- 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 | 25 ++ blog/posts/623.gmi | 21 + blog/posts/624.gmi | 45 +++ 43 files changed, 869 insertions(+), 920 deletions(-) delete mode 100644 blog/posts/579.gmi delete mode 100644 blog/posts/580.gmi delete mode 100644 blog/posts/581.gmi delete mode 100644 blog/posts/582.gmi delete mode 100644 blog/posts/583.gmi delete mode 100644 blog/posts/584.gmi delete mode 100644 blog/posts/585.gmi delete mode 100644 blog/posts/586.gmi delete mode 100644 blog/posts/587.gmi delete mode 100644 blog/posts/588.gmi delete mode 100644 blog/posts/589.gmi delete mode 100644 blog/posts/590.gmi delete mode 100644 blog/posts/591.gmi create mode 100644 blog/posts/610.gmi create mode 100644 blog/posts/611.gmi create mode 100644 blog/posts/612.gmi create mode 100644 blog/posts/614.gmi create mode 100644 blog/posts/615.gmi create mode 100644 blog/posts/616.gmi create mode 100644 blog/posts/617.gmi create mode 100644 blog/posts/618.gmi create mode 100644 blog/posts/619.gmi create mode 100644 blog/posts/620.gmi create mode 100644 blog/posts/621.gmi create mode 100644 blog/posts/623.gmi create mode 100644 blog/posts/624.gmi diff --git a/blog/feed.xml b/blog/feed.xml index 126fab8..b7538d6 100644 --- a/blog/feed.xml +++ b/blog/feed.xml @@ -7,6 +7,428 @@ 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.

+ +

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.

+ +

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

+ +

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} :

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

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

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

+ +

Je vais entamer une 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 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.

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

+ +
<?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
+{
+
+ +

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

+ +
dev@project $ make doctrine-migration
+
+ +

Ensuite on va générer :

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

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

+ +
dev@project $ php bin/console make:crud-controller \
+  ExampleAdminController \
+  Example \
+  ExampleRepositoryQuery \
+  ExampleFactory \
+  ExampleType
+
+ +

Enfin, ajoutons le lien dans le menu du backoffice :

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

…et c'est terminé !

+ +

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

+ + +]]>
+ 619 + Tue, 10 May 2022 20:00: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.

+]]>
+ 618 + Tue, 03 May 2022 14:00: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.

+ +

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.

+ +

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

+ +

GrapesJS dans Murph

+ +

Pour mettre à jour Murph, rien de plus simple :

+ +
$ composer update
+$ yarn upgrade
+$ make build
+
+]]>
+ 616 + Mon, 18 Apr 2022 23:00: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 + + + +
+ + <![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.

+ +

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 :

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

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

+ +

Murph

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

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.

+]]>
+ 611 + Tue, 22 Feb 2022 09:00: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.

+ +

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.

+ +

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.

+ +
# 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 Synapse-Admin depuis Github et de la rendre accessible derrière un serveur HTTP local ou en ligne.

+ +

Synapse-Admin UI

+ +

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.

+ +

Synapse-Admin UI

+]]>
+ 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 @@ -31,7 +453,7 @@ J'ai réussi à dénicher 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 update
 apt install golang
 go get github.com/emersion/go-smtp-proxy
 go get gopkg.in/natefinch/lumberjack.v2
@@ -42,7 +464,7 @@ cd go/src/github.com/tuck1s/go-smtpproxy
 
 

Il ne reste plus qu'à lancer le proxy :

-
./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 \
@@ -78,8 +500,8 @@ Il faut également améliorer tout ça avec un compte utilisateur dédié au pro
 ]]>
                 608
                 Tue, 01 Feb 2022 17:45:00 +0100
-                                    
-                                    
+                                    
+                                    
                             
                     
                 <![CDATA[Murph, la version v1.0 est publiée]]>
@@ -89,7 +511,7 @@ Il faut également améliorer tout ça avec un compte utilisateur dédié au pro
 
 

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

-
composer create-project murph/murph-skeleton MonProjet ^1 # Installation du projet
+
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
@@ -118,6 +540,8 @@ Tout le reste du travail s'articule dans la conception de votre CMS via du code.
                 607
                 Wed, 26 Jan 2022 08:25:00 +0100
                                     
+                                    
+                                    
                             
                     
                 <![CDATA[Les drones policiers autorisés par le Conseil constitutionnel]]>
@@ -129,7 +553,7 @@ Tout le reste du travail s'articule dans la conception de votre CMS via du code.
 ]]>
                 606
                 Fri, 21 Jan 2022 16:00:00 +0100
-                                    
+                                    
                             
                     
                 <![CDATA[Nouvelle version majeure de Custom Menu]]>
@@ -139,7 +563,7 @@ Tout le reste du travail s'articule dans la conception de votre CMS via du code.
 
 

-

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

+

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.

@@ -147,8 +571,8 @@ Tout le reste du travail s'articule dans la conception de votre CMS via du code. ]]> 605 Fri, 14 Jan 2022 20:45:00 +0100 - - + +
<![CDATA[Microsoft 365 - Problème de connexion aux serveurs SMTP]]> @@ -184,522 +608,9 @@ Tout le reste du travail s'articule dans la conception de votre CMS via du code. ]]> 603 Sat, 06 Nov 2021 14:00:00 +0100 - - - - - - <![CDATA[Supprimer les mots de passe d'un fichier Excel]]> - https://www.deblan.io/post/602/supprimer-les-mots-de-passes-dun-fichier-excel - - 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 : 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.

- -

asciicast

-]]>
- 602 - Tue, 27 Apr 2021 00:00:00 +0200 - -
- - <![CDATA[Le Conseil d'État valide durablement la surveillance de masse]]> - https://www.deblan.io/post/601/le-conseil-detat-valide-durablement-la-surveillance-de-masse - - 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.

-]]>
- 601 - Wed, 21 Apr 2021 04:00:00 +0200 - -
- - <![CDATA[Loi sécurité globale adoptée : résumons]]> - https://www.deblan.io/post/600/loi-securite-globale-adoptee-resumons - - 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.

-]]>
- 600 - Sun, 18 Apr 2021 10:20:00 +0200 - -
- - <![CDATA[Mettre en place un VPN avec Wireguard]]> - https://www.deblan.io/post/599/mettre-en-place-un-vpn-avec-wireguard - - 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é.

- -

VPN

- -

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.

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

- -
sudo apt update && sudo apt install wireguard
-
- -

Sur d'autres distributions, il faudra installer wireguard-tools mais je vous laisse vous référer à 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.

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

- -

Exemples

- -

Nous allons ensuite générer le fichier /etc/wireguard/wg0.confwg0 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.

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

- -
[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 :

- -
[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 doc officielle et la doc Archlinux). ↩︎ ↩︎

    -
  2. - -
  3. -

    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). ↩︎

    -
  4. - -
-
-]]>
- 599 - Wed, 07 Apr 2021 10:30:00 +0200 - -
- - <![CDATA[Migration de blog vers Murph]]> - https://www.deblan.io/post/597/migration-de-blog-vers-murph - - Mon blog a été mon premier vrai projet quand j'ai commencé de faire du développement web et il me suit toujours aujourd'hui.

- -

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

- -

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

- -

- -

- -

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

-]]>
- 597 - Wed, 31 Mar 2021 10:08:00 +0200 - - -
- - <![CDATA[Mon thème pour ZSH]]> - https://www.deblan.io/post/595/mon-theme-pour-zsh - - Cela fait des années que j'utilise ZSH comme interpréteur de commande. En complément, -j'utilise également des plugins disponibles via l'excellent projet oh-my-zsh.

- -

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

- -

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

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

Mon thème pour ZSH

- -

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

-]]>
- 595 - Fri, 12 Feb 2021 13:09:02 +0100 - -
- - <![CDATA[Google démantèle son éthique (et tout le monde s'en fout...)]]> - https://www.deblan.io/post/596/google-de-mante-le-son-e-thique-et-tout-le-monde-s-en-fout - - 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...

-]]>
- 596 - Fri, 12 Feb 2021 00:11:00 +0100 - -
- - <![CDATA[Bilan tech de l'année 2020]]> - https://www.deblan.io/post/594/bilan-tech-de-l-annee-2020 - - Cette année très particulière m'a quand même permis de consacrer plus de -temps pour le logiciel libre que l'an passé.

- -

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

- -

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

- -

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

- -

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

- -

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

- -

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

- -

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

- -

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

-]]>
- 594 - Tue, 22 Dec 2020 10:00:00 +0100 - -
- - <![CDATA[Décrets PASP : fichage massif des militants politiques]]> - https://www.deblan.io/post/593/decrets-pasp-fichage-massif-des-militants-politiques - - -

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.

-]]>
- 593 - Wed, 09 Dec 2020 09:46:52 +0100 - -
- - <![CDATA[Le PDG de FaceBook, Mark Zuckerberg, malmené lors de son audition au Sénat américain (17/11/20)]]> - https://www.deblan.io/post/592/le-pdg-de-facebook-mark-zuckerberg-malmene-lors-de-son-audition-au-senat-americain-17-11-20 - - 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.

-]]>
- 592 - Thu, 19 Nov 2020 10:39:00 +0100 - -
- - <![CDATA[Mail RSS : transformer des mails en flux RSS]]> - https://www.deblan.io/post/591/mail-rss-transformer-des-mails-en-flux-rss - - J'essaye de plus en plus de réduire le volume de mails que je reçois. Du coup, -quand une newsletter m'intéresse et que les auteurs ne fournissent pas de flux RSS, cela -me donne un prétexte pour écrire un nouveau projet : Mail RSS.

- -

- -

Comment ça marche ?

- -

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

- -

Prenons la newsletter de TechTrash comme exemple.

- -

Configuration du serveur de mail

- -

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

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

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

- -

Configuration de l'application

- -

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

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

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

- -
#!/bin/sh
-
-cd "/path/to/exemple.fr"
-
-import_mails() {
-    LABEL="$1"
-    MAILING_ID="$2"
-
-    find /var/lib/mailrss -name "${LABEL}-*" | while read MAIL; do
-        php bin/console mail:import "${MAILING_ID}" -f "$MAIL" && rm "$MAIL"
-    done
-}
-
-import_mails "techtrash" "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
-
- -

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

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

Toutes ces données seront accessibles à la consultation.

- -

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

-]]>
- 591 - Thu, 12 Nov 2020 18:04:42 +0100 - - -
- - <![CDATA[Cohabitation de Collabora Online et OnlyOffice sur Nextcloud]]> - https://www.deblan.io/post/589/cohabitation-de-collabora-online-et-onlyoffice-sur-nextcloud - - J'utilise énormément mon instance Nextcloud et dans certaines situations, j'ai besoin -d'éditer soit des fichiers Open Document Format (format natif de LibreOffice) -ou soit des fichiers Open XML (format natif de la suite office de Microsoft).

- -

L'an passé, j'utilisais exclusivement OnlyOffice via -son connecteur Nextcloud et une instance -installée sur un serveur dédié. Puis, lors d'un déboire au sujet de l'édition -depuis un terminal mobile, j'ai décidé -de migrer vers Collabora Online via -son connecteur Nextcloud et une instance -installée sur un serveur (presque) dédié.

- -

Le problème est que si Collabora Online sait très bien traiter les fichiers ODF, -il galère un peu plus avec les fichiers Open XML. Aussi, force est de constater que -OnlyOffice reste très performant pour jouer avec Open XML. J'ai donc -décidé de les installer ensemble. Collabora Online est donc l'éditeur ouvert pour -les documents ODF tandis que OnlyOffice le sera pour les fichiers Open XML.

- -

Collabora Online et OnlyOffice

- -

Afin de les discerner dans le menu pour créer un nouveau document, j'ai développé -un bout de javascript que vous pouvez injecter via JSLoader. -Je pense d'ailleurs que cela sera une bonne idée de forker cette application -afin d'en reprendre la maintenance.

- -

Cohabitation de Collabora Online et OnlyOffice sur Nextcloud

- -

Alors ce n'est sans doute pas le code le plus élégant mais il fonctionne bien.

- -
try {
-    setInterval(function() {
-        var elements = {
-            'docx': 'onlyofficeDocx',
-            'xlsx': 'onlyofficeXlsx',
-            'pptx': 'onlyofficePpts',
-        };
-
-        for (var i in elements) {
-            var selector = 'a.menuitem[data-action="' + elements[i] + '"] .displayname';
-            var span = document.querySelector(selector);
-
-            if (!span) {
-                return;
-            }
-
-            if (span.innerHTML.indexOf(i) !== -1) {
-                continue;
-            }
-
-            span.innerHTML = (i !== 'docx' ? 'Nouvelle ' : 'Nouveau ') + span.innerHTML.toLowerCase() + ' (' + i + ')';
-        }
-
-        elements = {
-            'odt': 'add-odt',
-            'ods': 'add-ods',
-            'odp': 'add-odp',
-        };
-
-        for (var i in elements) {
-            var selector = 'a.menuitem[data-action="' + elements[i] + '"] .displayname';
-            var span = document.querySelector(selector);
-
-            if (!span) {
-                return;
-            }
-
-            if (span.innerHTML.indexOf(i) !== -1) {
-                continue;
-            }
-
-            span.innerHTML = span.innerHTML + ' (' + i + ')';
-        }
-    }, 100);
-} catch (e) {
-
-}
-
-]]>
- 589 - Tue, 20 Oct 2020 11:58:23 +0200 - - -
- - <![CDATA[La liberté d'expression encore menacée]]> - https://www.deblan.io/post/590/la-liberte-d-expression-encore-menacee - - -

Ou comment instrumentaliser à des fins politiques un événement tragique qui n'a aucun rapport pour relancer une loi anticonstitutionnelle : La loi AVIA

- - -

Pourquoi la loi Avia est liberticide et inutile ?

- -

L'appareil législatif contient déjà tous les outils pour lutter contre les -contenus manifestement illicites tels que les incitations à la haine, -les injures à caractère raciste ou anti-religieuses.

- -

Les contenus terroristes ou pédopornographiques doit être considérés comme tel -par un juge et non par l'appréciation de l'administration. Les -plateformes privées ne doivent pas jouer le rôle d'organe de censure et encore -moins l'automatiser.
-Le conseil constitutionnel s'est déja prononcé en indiquant que -« le législateur porte une atteinte à la liberté d'expression qui n'est ni adaptée, -ni proportionnée au but poursuivi ». Il persiste « le risque que les opérateurs -soient incités à retirer tous les contenus contestés, y compris ceux qui sont licites » [1].

- -

Si un contenu devait être supprimé, cela veut donc dire qu'il a -été nécessairement publié donc le mal est déjà fait. Mais sous couvert de la -lutte contre l'anonyma sur Internet (qui n'est qu'une idée reçue), la loi Avia -va permettre de museler les personnes qui dérangent, ceux qui ont des idées en -marge, les mouvements contestataires, ceux qui militent pour un état de droit et -non pas pour un état policier en imposant une suppression pure et dure de leurs -contenus sans l'accord d'un juge.

- -

Cette loi est la porte ouverte vers une énième derive totalitaire où l'état va nous -imposer son idéologie.

-]]>
- 590 - Sat, 17 Oct 2020 15:13:52 +0200 - + +
diff --git a/blog/index.gmi b/blog/index.gmi index 2362698..81a378c 100644 --- a/blog/index.gmi +++ b/blog/index.gmi @@ -15,6 +15,19 @@ Derniers articles | Latest posts ──────────────────────────────── +=> 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) @@ -32,19 +45,6 @@ Derniers articles | Latest posts => 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) -=> posts/591.gmi [FR] Mail RSS : transformer des mails en flux RSS (2020-11-12 18:04:42) -=> posts/589.gmi [FR] Cohabitation de Collabora Online et OnlyOffice sur Nextcloud (2020-10-20 11:58:23) -=> posts/590.gmi [FR] La liberté d'expression encore menacée (2020-10-17 15:13:52) -=> posts/588.gmi [FR] Menu personnalisé dans Nextcloud 🎨 (2020-10-14 19:14:20) -=> posts/587.gmi [FR] Tinternet & cie vous recommande le documentaire "Derrière nos écrans de fumée" (2020-10-04 11:34:46) -=> posts/586.gmi [FR] J'ai essayé de migrer de Firefox (2020-08-24 11:07:42) -=> posts/585.gmi [FR] Festival Le 1er jour d'après - Le numérique (2020-05-05 15:13:01) -=> posts/584.gmi [FR] L'association La Furieuse lance un "Festival 100% local et virtuel pour inventer Le 1er jour d'après" (2020-04-27 00:50:00) -=> posts/581.gmi [FR] Application Nextcloud : nouvel emplacement pour le menu (2020-04-07 13:53:45) -=> posts/583.gmi [FR] "On est en pleine guerre informatique" : après le coronavirus, faut-il s'attendre à une autre crise ? (2020-04-06 03:04:00) -=> posts/582.gmi [FR] Tous surveillés - 7 milliards de suspects | ARTE (2020-04-01 00:46:00) -=> posts/580.gmi [FR] Monitoring d'un terrarium (2020-03-25 02:00:56) -=> posts/579.gmi [FR] Réseaux sociaux : flux à lier - #DATAGUEULE 95 (2020-02-26 08:31:00) ─────────────────────────────────────────────────── Je soutiens Tinternet & cie, les Chatons et l'April diff --git a/blog/posts/579.gmi b/blog/posts/579.gmi deleted file mode 100644 index ee6f56d..0000000 --- a/blog/posts/579.gmi +++ /dev/null @@ -1,11 +0,0 @@ -# Réseaux sociaux : flux à lier - #DATAGUEULE 95 - -* 2020-02-26 08:31:00 -* La toile, Quick links - -> Ils sont attirants, attachants … et rapidement indispensables. Les réseaux sociaux nous appâtent à coup de likes et nous bercent dans leurs "infinite scroll". Et rapidement leurs interfaces nous poussent à la consommation jusqu’à l’overdose. Et ce n’est pas un hasard. Ils ont bâti leurs empires sur notre addiction à la dopamine. -> -> Retrouvez toutes les sources de l'épisode sur : -=> https://wiki.datagueule.tv/R%C3%A9seaux_:flux_%C3%A0_lier(EP.95) -=> https://wiki.datagueule.tv/R%C3%A9seaux_:flux_%C3%A0_lier(EP.95 -) diff --git a/blog/posts/580.gmi b/blog/posts/580.gmi deleted file mode 100644 index 26b69b5..0000000 --- a/blog/posts/580.gmi +++ /dev/null @@ -1,33 +0,0 @@ -# Monitoring d'un terrarium - -* 2020-03-25 02:00:56 -* Développement - -Il y a quelques semaines, nous avons acheté un terrarium pour le pogona de ma chère et tendre moitié. C'est un animal qui implique un environnement particulier avec des températures de jour et de nuit à ne pas dépasser, et une hygrométrie qui ne doit pas franchir le 50%. - -On a installé un thermomètre et un hygromètre analogiques mais les valeurs ne sont pas précises à la lecture. Cela a été un bon prétexte pour jouer avec un Raspberry PI et entreprendre l'installation d'une sonde pour mesurer la température et l'hygrométrie. On a en profité pour ajouter une caméra infra-rouge. Nous pouvons donc avoir des alertes quand les seuils sont dépassés et il est possible de quitter l'appartement tout en gardant un œil sur le dinosaure 🦖 - -Le Raspberry PI utilisé est le modèle 4 avec 2Go de RAM muni de Raspbian Lite. La vidéo s'appuie sur la -=> https://www.kubii.fr/cameras-accessoires/2333-raspberry-pi-camera-fisheye-grand-angle-5mp-kubii-3272496012561.html caméra fisheyes à vision nocturne -et le logiciel -=> https://motion-project.github.io/motion_config.html Motion -combiné au frontend -=> https://github.com/ccrisan/motioneye/wiki MotionEye -. Le capteur est un -=> https://www.kubii.fr/composants-raspberry-pi/2329-capteur-am2011-humidite-et-temperature-kubii-3272496012493.html AM2302 -et mesure la température et l'hygrométrie. - -=> https://upload.deblan.org/u/2020-03/5e7aa606.jpg [IMG] -=> https://upload.deblan.org/u/2020-03/5e7aa73f.jpg [IMG] - -Le Raspberry PI est dédié pour faire les mesures et gérer la caméra. Les mesures sont envoyées vers une application web développée en PHP avec Symfony pour produire de jolis graphiques 📈. Des enregistrements vidéos sont également réalisés lorsqu'un mouvement est détecté. Les captures sont récupérés périodiquement vers l'application web afin qu'on puisse les consulter quand on veut 📽 - -Le résultat est plutôt pas mal cool et on apprécie vraiment l'aide que ça apporte ! - -```html - -``` diff --git a/blog/posts/581.gmi b/blog/posts/581.gmi deleted file mode 100644 index d6a509f..0000000 --- a/blog/posts/581.gmi +++ /dev/null @@ -1,18 +0,0 @@ -# Application Nextcloud : nouvel emplacement pour le menu - -* 2020-04-07 13:53:45 -* Développement - -En ces temps de confinement, j'essaye de travailler sur les quelques idées de projet de ma todo list 📘 - -Aujourd'hui j'ai publié une application destinée à Nextcloud et qui permet de modifier l'affichage du menu principal pour en faire un panneau qui s'ouvre sur la gauche de l'interface : -=> https://apps.nextcloud.com/apps/side_menu Side menu -. Cette application est plutôt adaptée aux instances qui activent beaucoup d'outils 🔨 - -Pour l'installer, vous pouvez passer par le gestionnaire d'application de Nextcloud ou vous pouvez l'installer manuellement en suivant les instructions (en anglais) disponibles dans le -=> https://gitnet.fr/deblan/side_menu/releases dépot du projet -🧪 - -Une fois installée, la liste des applications du menu supérieur sera masquées et une bouton va apparaître à gauche du logo. C'est depuis ce bouton que vous pourrez afficher le menu. Fonctionne sur bureau, tablette et mobile 📱 - -=> https://upload.deblan.org/u/2020-03/5e81b219.jpg Application side_menu Nextcloud [IMG] diff --git a/blog/posts/582.gmi b/blog/posts/582.gmi deleted file mode 100644 index 9d0e9db..0000000 --- a/blog/posts/582.gmi +++ /dev/null @@ -1,6 +0,0 @@ -# Tous surveillés - 7 milliards de suspects | ARTE - -* 2020-04-01 00:46:00 -* Quick links - -Des caméras de Nice à la répression chinoise des Ouïghours, cette enquête dresse le panorama mondial de l'obsession sécuritaire, avec un constat glaçant : le totalitarisme numérique est pour demain. diff --git a/blog/posts/583.gmi b/blog/posts/583.gmi deleted file mode 100644 index 62963f2..0000000 --- a/blog/posts/583.gmi +++ /dev/null @@ -1,7 +0,0 @@ -# "On est en pleine guerre informatique" : après le coronavirus, faut-il s'attendre à une autre crise ? - -* 2020-04-06 03:04:00 - -> La "guerre" contre le coronavirus Covid-19 met le système de santé et les - -institutions à l'épreuve et paralyse l'économie. Mais au-delà de la crise sanitaire, doit-on également craindre une crise informatique ? Réponses et réflexions, avec des spécialistes. diff --git a/blog/posts/584.gmi b/blog/posts/584.gmi deleted file mode 100644 index 36e67cb..0000000 --- a/blog/posts/584.gmi +++ /dev/null @@ -1,11 +0,0 @@ -# L'association La Furieuse lance un "Festival 100% local et virtuel pour inventer Le 1er jour d'après" - -* 2020-04-27 00:50:00 - -> Le "Festival 100% local et virtuel pour inventer Le 1er jour d'après", -> c’est réfléchir ensemble, imaginer et inventer un autre monde ainsi -> que recenser ce qui existe déjà, à notre échelle. C’est trouver et -> valoriser des solutions collectives, adaptées, à développer et mettre en -> place sans attendre. - -J'interviendrai à 19h25 pour parler du numérique 😊 diff --git a/blog/posts/585.gmi b/blog/posts/585.gmi deleted file mode 100644 index c40192b..0000000 --- a/blog/posts/585.gmi +++ /dev/null @@ -1,19 +0,0 @@ -# Festival Le 1er jour d'après - Le numérique - -* 2020-05-05 15:13:01 - -Le "Festival 100% local et virtuel pour inventer Le 1er jour d'après", c’est réfléchir ensemble, imaginer et inventer un autre monde ainsi que recenser ce qui existe déjà, à notre échelle locale. C’est trouver et valoriser des solutions collectives, adaptées, à développer et mettre en place sans attendre. Événement organisé par -=> https://www.lepixel-besancon.fr/fr/page/lassociation-la-furieuse l'association La Furiseuse -, gérante du café-resto associatif et culturel Le Pixel à Besançon. - -Festival 100% local et virtuel pour inventer Le 1er jour d'après - Organisé par -=> https://www.lepixel-besancon.fr/fr/page/lassociation-la-furieuse La Furiseuse et Le Pixel - -Le numérique est un enjeu sociétal important. Nous réalisons plusieurs constats qui doivent mener à une prise de conscience collective et permettre de changer en profondeur notre compréhension et nos usages du numérique. -Nous proposons quelques pistes de réflexions pour créer un numérique plus éthique et plus juste. - -Participants : Alexis Gabry, Benjamin Lavigne, Fabien Normand, Simon Vieille - -L'ensemble du festival est disponible sur -=> https://www.youtube.com/watch?v=DJs5f-AOs4o Youtube -. diff --git a/blog/posts/586.gmi b/blog/posts/586.gmi deleted file mode 100644 index 12afaf5..0000000 --- a/blog/posts/586.gmi +++ /dev/null @@ -1,32 +0,0 @@ -# J'ai essayé de migrer de Firefox - -* 2020-08-24 11:07:42 -* La toile - -Mozilla Corporation, la société filiale de la fondation Mozilla ne se porte pas très bien. Il y a eu pas mal de licenciements et l’équipe de réponse aux incidents de sécurité a volé en éclats. C'est problématique car mon navigateur joue un rôle centrale dans mon informatique. J'ai alors commencé à réfléchir à une migration vers un nouveau navigateur. - -Avant tout, cela fait un moment que j'ai intégré la gestion de mes mots de passes en dehors du navigateur en m'appuyant sur -=> https://apps.nextcloud.com/apps/passwords passwords -. Mes marques pages sont duppliqués vers -=> https://apps.nextcloud.com/apps/bookmarks bookmarks -. et mes lectures différées sont gérées avec -=> https://github.com/wallabag/wallabag wallabag -. Tous ces outils possèdent des extensions compatibles avec les "autres" navigateurs. - -Passons maintenant au "choix" du potentiel remplaçant. En dehors de Firefox, tous s'appuient sur chromium, le Internet Explorer du 21ème siècle. Je n'ai pas voulu faire le mec ultra borné donc j'ai fais un choix dans la maigre liste des navigateurs qui tiennent la route. Je me suis arrêté sur Vivaldi : il est possible de synchroniser son profil avec un compte Vivaldi et les données sont chiffrées. Les extensions que j'utilise tous les jours fonctionnent avec et Vivaldi ne semble pas collecter mes données. En terme de licence, le code de l'interface n'est pas accessible mais le moteur et les modifications le sont ( -=> https://fr.vivaldi.net/vivaldi-et-open-source/ source -). - -Donc j'ai installé Vivaldi, j'ai synchronisé mes marques pages, j'ai retrouvé mes mes mots de passe et mes extensions favorites sont paramétrées. Chouette. - -=> https://upload.deblan.org/u/2020-08/5f438202.jpg Vivaldi [IMG] - -…mais en navigant à tout casser 3 minutes, je me suis posé cette question : où sont mes -=> https://support.mozilla.org/fr/kb/onglets-contextuels-avec-les-containers conteneurs comme chez Firefox -? Spoiler : ils n'existent pas et aucun navigateur ne le propose. Donc j'ai ravalé ma salive et je me suis demandé s'il y avait un -=> https://support.mozilla.org/en-US/kb/use-primary-password-protect-stored-logins-and-pas Master Password -pour sécuriser les mots de passe collectés ? Spoiler : il n'existe pas non plus… - -Du coup, je suis revenu sur Firefox et -=> https://donate.mozilla.org/fr/ j'ai fais un don à Mozilla -, en espérant que d'autres feront comme moi et que Firefox survivra encore longtemps. diff --git a/blog/posts/587.gmi b/blog/posts/587.gmi deleted file mode 100644 index 7811cb1..0000000 --- a/blog/posts/587.gmi +++ /dev/null @@ -1,8 +0,0 @@ -# Tinternet & cie vous recommande le documentaire "Derrière nos écrans de fumée" - -* 2020-10-04 11:34:46 -* Cinéma - -Entre documentaire et drame, ce film donne la parole à des experts qui nous mettent en garde contre leurs inventions et décrient l'impact dangereux des réseaux sociaux. - -Ce film réalisé par Jeff Orlowski et produit par Larissa Rhodes a pour objectif de nous faire prendre conscience que derrière un post Facebook ou Instagram, qu'autour d'un e-mail affiché sur Gmail ou pendant que vous regardez un contenu sur YouTube, des algorithmes font leur possible pour accaparer votre temps. diff --git a/blog/posts/588.gmi b/blog/posts/588.gmi deleted file mode 100644 index a2f3db5..0000000 --- a/blog/posts/588.gmi +++ /dev/null @@ -1,43 +0,0 @@ -# Menu personnalisé dans Nextcloud 🎨 - -* 2020-10-14 19:14:20 -* Développement - -Depuis avril dernier, l'application ** -=> https://apps.nextcloud.com/apps/side_menu Custom menu -** (anciennement *Side menu*) a beaucoup évoluée et pas moins de 46 versions ont déjà été publiées. -=> https://apps.nextcloud.com/apps/side_menu Custom menu -est complet et très stable. - -=> https://nextcloud.com/ Nextcloud -est une plateforme web qui se compose d'applications pour faire tout et n'importe quoi. On peut héberger et partager des documents, gérer ses calendriers et ses contacts, enregistrer ses marque-pages, lire des flux RSS, réaliser des sondages, etc. - -Selon moi, quand on active beaucoup d'applications, un des problèmes principaux est le menu qui n'est pas du tout adapté. - -=> https://upload.deblan.org/u/2020-10/5f872888.jpg Nextcloud [IMG] - -Pour résoudre ce problème, j'ai entrepris le développement d'une application dédiée à la gestion de ce menu et j'ai -=> https://www.deblan.io/post/581/application-nextcloud-nouvel-emplacement-pour-le-menu publiées les premières versions -pendant le confinement du début d'année. - -=> https://apps.nextcloud.com/apps/side_menu Custom menu -est totalement personnalisable. On peut modifier l'emplacement du menu selon trois dispositions : dans un panneau latéral, affiché en permanance comme le menu d'Ubuntu ou via un panneau qui s'ouvre sur le dessus. Vous pouvez bien sur choisir les couleurs de tous les éléments, afficher votre logo, la photo de profil de l'utilisateur ou rien du tout, choisir la taille du texte celle des icônes, etc. - -On peut aussi désigner des applications qui doivent rester affichées dans le menu original, choisir lesquelles doivent s'ouvrir dans un nouvel onglet et si l'administrateur le permet, alors chaque utilisateur pourra faire sa propre organisation. - -=> https://apps.nextcloud.com/apps/side_menu Custom menu -est compatible avec -=> https://apps.nextcloud.com/apps/apporder AppOrder -de manière à pouvoir choisir l'ordre d'affichage des applications. - -=> https://upload.deblan.org/u/2020-10/5f8adaae.png Custom menu [IMG] - -Si vous êtes curieux, n'hésitez pas à tester -=> https://apps.nextcloud.com/apps/side_menu Custom menu -et si vous avez des idées pour faire évoluer l'application ou que vous rencontrez un bug alors je vous invite à -=> https://gitnet.fr/deblan/side_menu ouvrir un ticket sur le dépot du projet -. - -Enfin, si vous désirez soutenir mon travail, vous avez la possibilité de -=> https://www.buymeacoffee.com/deblan m'offrir un café -😀 diff --git a/blog/posts/589.gmi b/blog/posts/589.gmi deleted file mode 100644 index 4d80f39..0000000 --- a/blog/posts/589.gmi +++ /dev/null @@ -1,80 +0,0 @@ -# Cohabitation de Collabora Online et OnlyOffice sur Nextcloud - -* 2020-10-20 11:58:23 -* Développement, Divers - -J'utilise énormément mon instance Nextcloud et dans certaines situations, j'ai besoin d'éditer soit des fichiers Open Document Format (format natif de LibreOffice) ou soit des fichiers Open XML (format natif de la suite office de Microsoft). - -L'an passé, j'utilisais exclusivement -=> https://www.onlyoffice.com/fr/ OnlyOffice -via son -=> https://apps.nextcloud.com/apps/onlyoffice connecteur Nextcloud -et une instance installée sur un serveur dédié. Puis, lors d' -=> https://github.com/ONLYOFFICE/DocumentServer/issues/805 un déboire au sujet de l'édition depuis un terminal mobile -, j'ai décidé de migrer vers -=> https://www.collaboraoffice.com/fr/code/ Collabora Online -via son -=> https://apps.nextcloud.com/apps/richdocuments connecteur Nextcloud -et une instance installée sur un serveur (presque) dédié. - -Le problème est que si Collabora Online sait très bien traiter les fichiers ODF, il galère un peu plus avec les fichiers Open XML. Aussi, force est de constater que OnlyOffice reste très performant pour jouer avec Open XML. J'ai donc décidé de les installer ensemble. Collabora Online est donc l'éditeur ouvert pour les documents ODF tandis que OnlyOffice le sera pour les fichiers Open XML. - -=> https://upload.deblan.org/u/2020-10/5f8eb3c9.png Collabora Online et OnlyOffice [IMG] - -Afin de les discerner dans le menu pour créer un nouveau document, j'ai développé un bout de javascript que vous pouvez injecter via -=> https://apps.nextcloud.com/apps/jsloader JSLoader -. Je pense d'ailleurs que cela sera une bonne idée de forker cette application afin d'en reprendre la maintenance. - -=> https://upload.deblan.org/u/2020-10/5f8eb3b3.png Cohabitation de Collabora Online et OnlyOffice sur Nextcloud [IMG] - -Alors ce n'est sans doute pas le code le plus élégant mais il fonctionne bien. - -```{.language-js data-title="Code à insérer dans JS Loader"} -try { - setInterval(function() { - var elements = { - 'docx': 'onlyofficeDocx', - 'xlsx': 'onlyofficeXlsx', - 'pptx': 'onlyofficePpts', - }; - - for (var i in elements) { - var selector = 'a.menuitem[data-action="' + elements[i] + '"] .displayname'; - var span = document.querySelector(selector); - - if (!span) { - return; - } - - if (span.innerHTML.indexOf(i) !== -1) { - continue; - } - - span.innerHTML = (i !== 'docx' ? 'Nouvelle ' : 'Nouveau ') + span.innerHTML.toLowerCase() + ' (' + i + ')'; - } - - elements = { - 'odt': 'add-odt', - 'ods': 'add-ods', - 'odp': 'add-odp', - }; - - for (var i in elements) { - var selector = 'a.menuitem[data-action="' + elements[i] + '"] .displayname'; - var span = document.querySelector(selector); - - if (!span) { - return; - } - - if (span.innerHTML.indexOf(i) !== -1) { - continue; - } - - span.innerHTML = span.innerHTML + ' (' + i + ')'; - } - }, 100); -} catch (e) { - -} -``` diff --git a/blog/posts/590.gmi b/blog/posts/590.gmi deleted file mode 100644 index 93e022f..0000000 --- a/blog/posts/590.gmi +++ /dev/null @@ -1,19 +0,0 @@ -# La liberté d'expression encore menacée - -* 2020-10-17 15:13:52 -* Divers - -> Ou comment instrumentaliser à des fins politiques un événement tragique qui n'a aucun rapport pour relancer une loi anticonstitutionnelle : La loi AVIA - -### Pourquoi la loi Avia est liberticide et inutile ? - -L'appareil législatif contient déjà tous les outils pour lutter contre les contenus manifestement illicites tels que les incitations à la haine, les injures à caractère raciste ou anti-religieuses. - -Les contenus terroristes ou pédopornographiques doit être considérés comme tel **par un juge** et non par l'appréciation de l'administration. Les plateformes privées ne doivent pas jouer le rôle d'organe de censure et encore moins l'automatiser. -Le conseil constitutionnel s'est déja prononcé en indiquant que « **le législateur porte une atteinte à la liberté d'expression** qui n'est ni adaptée, ni proportionnée au but poursuivi ». Il persiste « **le risque que les opérateurs soient incités à retirer tous les contenus contestés, y compris ceux qui sont licites** » [ -=> https://www.vie-publique.fr/loi/268070-loi-avia-lutte-contre-les-contenus-haineux-sur-internet 1 -]. - -Si un contenu devait être supprimé, cela veut donc dire qu'il a été nécessairement publié donc le mal est déjà fait. Mais sous couvert de la lutte contre l'anonyma sur Internet (qui n'est qu'une idée reçue), la loi Avia va permettre de museler les personnes qui dérangent, ceux qui ont des idées en marge, les mouvements contestataires, ceux qui militent pour un état de droit et non pas pour un état policier en imposant une suppression pure et dure de leurs contenus sans l'accord d'un juge. - -Cette loi est la porte ouverte vers une énième derive totalitaire où l'état va nous imposer son idéologie. diff --git a/blog/posts/591.gmi b/blog/posts/591.gmi deleted file mode 100644 index c959058..0000000 --- a/blog/posts/591.gmi +++ /dev/null @@ -1,78 +0,0 @@ -# Mail RSS : transformer des mails en flux RSS - -* 2020-11-12 18:04:42 -* Développement, Informatique - -J'essaye de plus en plus de réduire le volume de mails que je reçois. Du coup, quand une newsletter m'intéresse et que les auteurs ne fournissent pas de flux RSS, cela me donne un prétexte pour écrire un nouveau projet : -=> https://gitnet.fr/deblan/mail-rss Mail RSS -. - -=> https://upload.deblan.org/u/2020-11/5fad64ef.png [IMG] - -### Comment ça marche ? - -L'idée est assez simple : en utilisant -=> https://linux.developpez.com/formation_debian/serveur-mail2.html#AEN7717 les alias de mail dans Postfix -, on peut faire en sorte qu'un mail qui arrive sur le serveur soit traité par une commande. J'ai décidé de rediriger les mails dans un répertoire précis du serveur et je demande à **Mail RSS** de les lire et de les importer. - -Prenons la newsletter de -=> https://www.techtrash.fr/ TechTrash -comme exemple. - -#### Configuration du serveur de mail - -Il faut ajouter un alias qui va générer des fichiers. - -```{.language-bash data-title="/etc/aliases"} -techtrash: "| cat > /var/lib/mailrss/techtrash-$(date +%s) && chmod o+rw /var/lib/mailrss/techtrash-$(date +%s)" -``` - -Au préalable, j'ai créé le répertoire `/var/lib/mailrss` et je me suis assuré que mon application pouvait lire et écrire dedans, de même que Postfix (`nobody:nogroup`). - -#### Configuration de l'application - -On doit générer un mailing pour TechTrash. Quand on va importer les mails de TechTrash, on pourra les associer au mailing via son identifiant (`ID`). On pourra ensuite accéder au flux RSS via le lien généré à sa création. Évidement, on peut créer autant de mailing que l'on veut, les modifier et les supprimer. - -```{.language-bash data-title="Configuration du mailing"} -$ php bin/console mailing:new "TechTrash" -$ php bin/console mailing:list - ------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- --------------------- - Label ID Feed Created at Updated at - ------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- --------------------- - Tech Trash xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx https://exemple.fr/mailing/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/rss 2020-11-12 13:37:00 2020-11-12 13:37:00 - ------------ -------------------------------------- ------------------------------------------------------------------------ --------------------- --------------------- -``` - -Enfin, il faut un script qui va traiter les fichiers de `/var/lib/mailrss` en les important dans le mailing correspondant et qui les supprime du serveur. - -```{.language-bash .line-numbers data-title="Script lancé periodiquement"} -#!/bin/sh - -cd "/path/to/exemple.fr" - -import_mails() { - LABEL="$1" - MAILING_ID="$2" - - find /var/lib/mailrss -name "${LABEL}-*" | while read MAIL; do - php bin/console mail:import "${MAILING_ID}" -f "$MAIL" && rm "$MAIL" - done -} - -import_mails "techtrash" "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -``` - -Quand un mail est importé, les données récupérées sont : - -* Le sujet du mail -* La date du mail -* Le contenu HTML -* Le contenu texte -* Les pièces jointes - -Toutes ces données seront accessibles à la consultation. - -=> https://gitnet.fr/deblan/mail-rss L'application -s'appuie sur Symfony (en version de développement) et -=> https://gitnet.fr/deblan/mail-rss le code -est totalement libre 😄 diff --git a/blog/posts/592.gmi b/blog/posts/592.gmi index 3a3ad34..0030665 100644 --- a/blog/posts/592.gmi +++ b/blog/posts/592.gmi @@ -1,6 +1,6 @@ # 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 -* Quick links +* 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 index aef7b6e..c262ef3 100644 --- a/blog/posts/593.gmi +++ b/blog/posts/593.gmi @@ -1,7 +1,7 @@ # Décrets PASP : fichage massif des militants politiques * 2020-12-09 09:46:52 -* Divers +* 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. diff --git a/blog/posts/594.gmi b/blog/posts/594.gmi index 771fce1..4529bfe 100644 --- a/blog/posts/594.gmi +++ b/blog/posts/594.gmi @@ -1,7 +1,7 @@ # Bilan tech de l'année 2020 * 2020-12-22 10:00:00 -* Divers +* 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é. diff --git a/blog/posts/595.gmi b/blog/posts/595.gmi index b425a4b..d2172b4 100644 --- a/blog/posts/595.gmi +++ b/blog/posts/595.gmi @@ -1,7 +1,7 @@ # Mon thème pour ZSH * 2021-02-12 13:09:02 -* Développement +* 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 diff --git a/blog/posts/596.gmi b/blog/posts/596.gmi index a463875..2aa9fb9 100644 --- a/blog/posts/596.gmi +++ b/blog/posts/596.gmi @@ -1,7 +1,7 @@ # Google démantèle son éthique (et tout le monde s'en fout...) * 2021-02-12 00:11:00 -* Quick links +* 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. diff --git a/blog/posts/597.gmi b/blog/posts/597.gmi index 722d04b..ae35bc1 100644 --- a/blog/posts/597.gmi +++ b/blog/posts/597.gmi @@ -1,7 +1,7 @@ # Migration de blog vers Murph * 2021-03-31 10:08:00 -* Le blog, Développement +* 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. diff --git a/blog/posts/600.gmi b/blog/posts/600.gmi index 0097543..5402a03 100644 --- a/blog/posts/600.gmi +++ b/blog/posts/600.gmi @@ -1,6 +1,6 @@ # Loi sécurité globale adoptée : résumons * 2021-04-18 10:20:00 -* Quick links +* 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 index 3ee56d3..af37e29 100644 --- a/blog/posts/601.gmi +++ b/blog/posts/601.gmi @@ -1,7 +1,7 @@ # Le Conseil d'État valide durablement la surveillance de masse * 2021-04-21 04:00:00 -* Quick links +* 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. diff --git a/blog/posts/602.gmi b/blog/posts/602.gmi index a6f47c5..f0dc2c0 100644 --- a/blog/posts/602.gmi +++ b/blog/posts/602.gmi @@ -1,7 +1,7 @@ # Supprimer les mots de passe d'un fichier Excel * 2021-04-27 00:00:00 -* Développement +* 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. diff --git a/blog/posts/603.gmi b/blog/posts/603.gmi index 3f88b7b..b40d8d4 100644 --- a/blog/posts/603.gmi +++ b/blog/posts/603.gmi @@ -1,7 +1,7 @@ # Repars avec ton Claude * 2021-11-06 14:00:00 -* La toile, Divers, Informatique, Quick links +* 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. diff --git a/blog/posts/605.gmi b/blog/posts/605.gmi index 96d3e7a..f16efa5 100644 --- a/blog/posts/605.gmi +++ b/blog/posts/605.gmi @@ -1,7 +1,7 @@ # Nouvelle version majeure de Custom Menu * 2022-01-14 20:45:00 -* Développement, Informatique +* Logiciel libre, Projets personnels La version => https://gitnet.fr/deblan/side_menu/releases/tag/v2.3.2 v2.3.2 @@ -9,7 +9,7 @@ de **Custom Menu** a été publiée il y a quelques jours. Cette version contien => /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 la mise en page du menu de navigation de Nextcloud. L'application permet de paramétrer 4 modes d'affichage du menu avec, à ce jour, une 40ène de de paramètres. +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. diff --git a/blog/posts/606.gmi b/blog/posts/606.gmi index 31f1343..40807b4 100644 --- a/blog/posts/606.gmi +++ b/blog/posts/606.gmi @@ -1,7 +1,7 @@ # Les drones policiers autorisés par le Conseil constitutionnel * 2022-01-21 16:00:00 -* Quick links +* 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. diff --git a/blog/posts/607.gmi b/blog/posts/607.gmi index 91e9ead..f04be6a 100644 --- a/blog/posts/607.gmi +++ b/blog/posts/607.gmi @@ -1,7 +1,7 @@ # Murph, la version v1.0 est publiée * 2022-01-26 08:25:00 -* Développement +* 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. @@ -11,7 +11,7 @@ et les => https://gitnet.fr/murph/murph-skeleton sources sont sur gitnet . -```.language-bash +```{class="language-bash window"} composer create-project murph/murph-skeleton MonProjet ^1 # Installation du projet cp .env .env.local vim .env.local diff --git a/blog/posts/608.gmi b/blog/posts/608.gmi index 364ce79..c346dac 100644 --- a/blog/posts/608.gmi +++ b/blog/posts/608.gmi @@ -1,7 +1,7 @@ # Jouer à Motus dans Matrix * 2022-02-01 17:45:00 -* Développement, Futilités de Geek +* Logiciel libre, Projets personnels Je reconnais que ce titre peut générer un gros mind fuck mais laissez moi vous expliquer ! diff --git a/blog/posts/609.gmi b/blog/posts/609.gmi index 80382d3..8e7a15a 100644 --- a/blog/posts/609.gmi +++ b/blog/posts/609.gmi @@ -32,7 +32,7 @@ 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`. -```{.language-bash} +```{class="language-bash window"} apt update apt install golang go get github.com/emersion/go-smtp-proxy @@ -44,7 +44,7 @@ cd go/src/github.com/tuck1s/go-smtpproxy Il ne reste plus qu'à lancer le proxy : -```{.language-bash} +```{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 \ diff --git a/blog/posts/610.gmi b/blog/posts/610.gmi new file mode 100644 index 0000000..eb3847a --- /dev/null +++ b/blog/posts/610.gmi @@ -0,0 +1,41 @@ +# 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 new file mode 100644 index 0000000..172281f --- /dev/null +++ b/blog/posts/611.gmi @@ -0,0 +1,12 @@ +# 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 new file mode 100644 index 0000000..aa72ec0 --- /dev/null +++ b/blog/posts/612.gmi @@ -0,0 +1,23 @@ +# 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 new file mode 100644 index 0000000..ab7f680 --- /dev/null +++ b/blog/posts/614.gmi @@ -0,0 +1,16 @@ +# 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 new file mode 100644 index 0000000..1e0a7ea --- /dev/null +++ b/blog/posts/615.gmi @@ -0,0 +1,14 @@ +# 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 new file mode 100644 index 0000000..28954c7 --- /dev/null +++ b/blog/posts/616.gmi @@ -0,0 +1,32 @@ +# 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 new file mode 100644 index 0000000..001998d --- /dev/null +++ b/blog/posts/617.gmi @@ -0,0 +1,10 @@ +# 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 new file mode 100644 index 0000000..d7428bf --- /dev/null +++ b/blog/posts/618.gmi @@ -0,0 +1,8 @@ +# 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 new file mode 100644 index 0000000..9076f95 --- /dev/null +++ b/blog/posts/619.gmi @@ -0,0 +1,97 @@ +# 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 new file mode 100644 index 0000000..d1dcec0 --- /dev/null +++ b/blog/posts/620.gmi @@ -0,0 +1,59 @@ +# 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 new file mode 100644 index 0000000..ae99d4a --- /dev/null +++ b/blog/posts/621.gmi @@ -0,0 +1,25 @@ +# Un an d'utilisation de AdGuard comme DNS + +* 2022-06-13 11:00:00 +* Informatique + +Au moment où j'ai commencé à utilisé +=> 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. + +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 +=> https://blokada.org/ 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 +=> https://adguard.com/fr/welcome.html 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 +=> https://addons.mozilla.org/fr/firefox/addon/ublock-origin/ 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. + +=> /uploads/content/621/adguard-dns.jpg?v=2 Adguard [IMG] diff --git a/blog/posts/623.gmi b/blog/posts/623.gmi new file mode 100644 index 0000000..fb7ef8b --- /dev/null +++ b/blog/posts/623.gmi @@ -0,0 +1,21 @@ +# Gitea 1.17 intègre un registre de paquets + +* 2022-07-20 12:50:00 +* Développement + +**Gitea est l'une des briques majeures de mon informatique** puisque c'est le logiciel qui gère l'ensemble de mes +=> https://gitnet.fr/deblan 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 +=> https://docs.gitea.io/en-us/packages/overview/ documentation est disponible ici +. + +=> /uploads/content/623/gitea_package.png Package sur Gitea [IMG] + +Bravo aux développeur⋅euses de Gitea qui font un boulot monstrueux 💚 diff --git a/blog/posts/624.gmi b/blog/posts/624.gmi new file mode 100644 index 0000000..d37b2d1 --- /dev/null +++ b/blog/posts/624.gmi @@ -0,0 +1,45 @@ +# Gitnet héberge vos pages statiques + +* 2022-07-31 21:50:00 +* Informatique + +** +=> https://gitnet.fr 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 ** +=> https://gitea.io/ Gitea +, 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. +=> https://codeberg.org/ Codeberg +a développé +=> https://codeberg.org/Codeberg/pages-server 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 +=> 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}`. + +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}` : + +```{class="language-shell-session window"} +dev@project $ git switch --orphan pages +# Si vous avez des fichiers ignorés par git qui existent : +dev@project $ git rm --cached -r . +``` + +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 +=> https://gohugo.io/ Hugo ++ +=> https://woodpecker-ci.org/ 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 +=> https://gitnet.fr Gitnet +. Voici la +=> 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. + +=> /uploads/content/624/screenshot-20220803-161712.jpg Gitnet Pages [IMG]