Planet Libre

antistress : Mon super abonnement Internet à 30,99€/mois

Graphique en camembert de répartition du prix de mon abonnement

J'ai évolué ces derniers temps dans ma façon de réaliser des dons aux projets en lien avec les libertés numériques (que ce soit des associations d'aide ou de lobbying, ou des projets de logiciels ou autres ressources libres).

Auparavant j'effectuais des dons ponctuels, lorsque j'y pensais. J'en ai fait parfois état sur ce blogue.

En octobre 2017, je décidais de passer à une formule de don mensuel pour Wikipédia (Wikimédia France, pour être précis). En février 2018, je passais le même cap en faveur de Framasoft. Et il y a quelques jours, je viens de faire de même pour La Quadrature du Net (dont j'adore la chaîne vidéo à laquelle je suis abonné par flux RSS : c'est d'une grande richesse intellectuelle, je vous la recommande).

Mes dons mensuels

Mes dépenses mensuelles pour mon usage d'Internet et du Web sont donc actuellement les suivantes :

  • 15,99€ pour mon FAI Bouygues Telecom qui gère mon accès à Internet en ADSL et ma ligne fixe de téléphone (je n'en suis pas fier) ;
  • 5€ pour soutenir Wikipédia (j'y contribue en temps également) ;
  • 5€ pour soutenir financièrement Framasoft (j'y ai contribué également en donnant de mon temps mais ce n'est plus le cas) ;
  • 5€ pour soutenir financièrement La Quadrature du Net (c'est ma seule contribution à l'association).

Le tout est matérialisé graphiquement dans le magnifique camembert en tête de ce billet (réalisé avec LibreOffice).

En réalité cela me coûte réellement 24,32€ par mois (et non 30,99€) car, en tant que résident fiscal français, je bénéficie d'un crédit d'impôt de 66% sur mes dons à Wikipédia et Framasoft (ainsi les 5€x12mois=60€ que je donne annuellement à chacun d'entre Wikipédia et Framasoft ne me coûtent en fait que 20€). Cela ne marche pas avec toutes les organisations toutefois.

C'est à peu près mes seules dépenses budgétisées, car je ne me suis pas encore résolu à payer pour bénéficier des services d'un fournisseur de courriels éthique (je suis chez laposte.net…), et je suis resté sur des dons ponctuels à Toile Libre, l'hébergeur à prix libre de ce blogue.

Mes dons ponctuels

Je n'ai pas abandonné la formule des dons ponctuels pour autant ; mes derniers dons ponctuels (depuis mon dernier billet en la matière) ont été pour :

  • ZeMarmot 10€ le 28/02/18 pour leur travail sur GIMP ;
  • ZeMarmot encore : 20€ le 07/01/19 ;
  • La Quadrature du Net : 20€ le 07/01/19 (je n'étais pas encore passé au don mensuel, mais des réalisations comme celle-ci m'ont donné l'envie d'un don ponctuel) ;
  • Toile-Libre, mon hébergeur à prix libre : 20€ le 10/01/19.
Actualités afférentes

Je profite de ce billet pour mettre en lumière les contributions de grandes organisations, comme l'union européenne qui donne/rend aux logiciels libres, Mozilla qui fait de même avec son projet MOSS lancé en 2015, ou encore DuckDuckGo qui finance des projets de défense de la vie privée. Même les GAFAM contribuent

Gravatar de antistress
Original post of antistress.Votez pour ce billet sur Planet Libre.

RaspbianFrance : Utiliser un lecteur RFID avec la Raspberry Pi.

Lire badge RFID

Ce tutoriel est la seconde partie d’un dossier consacré à la découverte de l’électronique avec la Raspberry Pi. Si vous ne l’avez pas lu, je vous conseils de consulter le premier tutoriel pour contrôler une LED avec la Raspberry Pi.

Que ce soit pour des systèmes d’identification, de gestion d’inventaire, de paiement, ou pour de la domotique, les puces RFID sont de plus en plus utilisées.

Dans ce tutoriel nous allons voir comment lire des cartes RFID avec la Raspberry Pi et un lecteur RFID RC522.

À la fin du tutoriel, vous serez capable de lire un badge RFID, vérifier si c’est bien celui attendu, et allumer une LED verte ou rouge, selon le résultat. Il ne vous restera plus qu’à adapter cet exemple de base pour le projet de votre choix !

Le matériel nécessaire

Pour réaliser ce tutoriel, vous aurez besoin du matériel suivant :

Assembler le lecteur RFID RC522

Quand vous recevez le module RFID RC522, vous pouvez constater qu’il est livré avec un jeu de 2 fois 8 pins. La première étape va donc être de souder 8 de ces pins sur le lecteur RFID. Pas de panique, souder c’est très facile !

Vous devez donc insérer les PINs dans les emplacements prévus sur la carte RFID et les souder avec votre fer.

Module RFID RC522 soudéVous trouverez probablement des connecteurs droits et courbés. Je vous conseil d’utiliser les courbés, plus pratiques.

Si vous n’avez jamais soudé, je vous conseil cet excellent guide pour apprendre à souder de François de chez framboise314.fr.

Connecter le lecteur RFID et les LED à la Raspberry Pi

Avant de passer à l’écriture du code qui nous permettra de lire des badges RFID et de contrôler les LEDs, nous devons en premier lieu connecter tout les composants à la Raspberry Pi.

Pour rappel, le fait de brancher et débrancher des composants doit toujours se faire Raspberry Pi éteinte.

Brancher le lecteur RFID RC522 sur la Raspberry Pi

Le premier composant que nous allons brancher est le lecteur RFID.

Pour contrôler le lecteur RFID nous allons utiliser une bibliothèque externe. Hélas, celle-ci est écrite avec les ports GPIOs directement renseignés dans le code. Cela signifie que nous ne pouvons pas les configurer différemment et que nous sommes donc contraints d’utiliser exactement les mêmes ports que ceux prévus dans la librairie.

Voici un tableau listant les ports du lecteur et le port GPIO de la raspberry pi auquel vous devrez le relier.

Correspondance ports GPIO/ports RC522Reliez les ports du RC522 aux ports correspondants sur la Raspberry Pi.

Pour rappel, vous trouverez une carte des ports GPIO de la Raspberry Pi dans le premier tutoriel de cette série.

Brancher les LEDs

Après le lecteur RFID, connectons les LEDs à la Raspberry Pi.

Nous allons faire un montage très simple. Chaque LED aura son anode (la patte allongée) reliée à un port GPIO et les deux LEDs auront leur anode reliée à la même résistance, elle même reliée à un port GPIO de type Ground de la Raspberry Pi.

Ainsi, nous utilisons une seule résistance pour deux LEDs, et on limite le nombre de câbles.

Au final, une fois la carte RFID et les LEDs reliées à la Pi, vous devriez avoir un montage ressemblant à celui-ci.

À noter, vous pouvez aussi brancher la RC522 en direct sur la Raspberry Pi sans utiliser de breadbord.

Écrire le programme pour lire un badge RFID.

Nous avons un circuit fonctionnel, il ne nous reste plus qu’à activer les ports SPI de la raspberry pi, nécessaires pour utiliser le lecteur RFID, et écrire le programme qui permettra de lire un badge RFID.

Comme dans le tutoriel précédent, le programme sera écrit en Python. Ce tutoriel n’est pas un cours de Python, et nous ne ferons qu’expliquer de façon sommaire le programme. Si vous voulez en apprendre plus sur Python, nous avons publié un cours d’introduction à la programmation avec Python.

Activer le protocole SPI de la Raspberry Pi

Avant d’écrire le programme, activons le protocole SPI sur notre Raspberry Pi afin de pouvoir utiliser le module RFID.

Pour l’activer, il vous suffit de lancer la commande sudo raspi-config, sur votre raspberry, puis de choisir Interfacing Options, SPI, Yes et enfin Finish.

Installer la librairie pi-rc522

Dernière pré-requis, nous allons installer la librairie Python3 « pi-rc522 » qui permet de contrôler le lecteur RC522.

Nous allons utiliser Pip3, un gestionnaire de librairie pour Python.

Il vous suffit de lancer la commande :

sudo pip3 install pi-rc522 Écrire le programme pour lire l’identifiant d’un badge RFID

Chaque badge RFID possède un identifiant unique. C’est en lisant cet identifiant et en le comparant à une liste d’identifiants autorisés que l’on peut savoir si un badge est autorisé.

Nous allons donc écrire un programme nous permettant de lire un l’identifiant unique d’un badge RFID.

Comme nous l’avions fait dans le tutoriel précédent, nous allons écrire le programme dans le dossier /home/pi/electronic (si vous ne l’avez pas déjà fait, créez le dossier).

Dans ce dossier, créez un fichier read_rfid_uid.py et mettez-y le code suivant :

#!/usr/bin/env python3.5 #-- coding: utf-8 -- import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs from pirc522 import RFID import time GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board) GPIO.setwarnings(False) #On désactive les messages d'alerte rc522 = RFID() #On instancie la lib print('En attente d\\'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge #On va faire une boucle infinie pour lire en boucle while True : rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos if not error : #Si on a pas d'erreur (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps if not error : #Si on a réussi à nettoyer print('Vous avez passé le badge avec l\\'id : {}'.format(uid)) #On affiche l'identifiant unique du badge RFID time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

Une fois le fichier enregistré, on en autorise l’exécution avec la commande :

sudo chmod +x /home/pi/electronic/read_rfid_uid.py

Nous pouvons maintenant démarrer le programme en l’appelant avec la commande :

/home/pi/electronic/read_rfid_uid.py

À chaque fois que vous passerez un badge RFID devant le lecteur, son identifiant unique sera affiché !

Écrire un programme qui permet d’afficher si un badge est valide ou non.

Maintenant que nous pouvons lire l’identifiant unique d’un badge, il ne nous reste plus qu’à adapter le code précédent pour comparer l’identifiant lu à un identifiant écrit dans le programme.

Nous allons donc modifier un peu le programme précédent pour qu’il compare l’uid lu à celui écris dans le programme, et allumer la led rouge ou verte selon le résultat.

Copiez donc le fichier précédent, dans un nouveau fichier verify_rfid.py et modifier le pour le code ci-dessous :

Modifiez la ligne RFID_UID pour mettre l’identifiant de votre tag RFID !

#!/usr/bin/env python3.5 #-- coding: utf-8 -- import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs from pirc522 import RFID import time GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board) GPIO.setwarnings(False) #On désactive les messages d'alerte LED_RED = 3 #Définit le numéro du port GPIO qui alimente la led rouge LED_GREEN = 5 #Définit le numéro du port GPIO qui alimente la led verte RFID_UID = [21, 35, 5, 43, 57] #Définit l'UID du badge RFID #Définit la fonction permettant d'allumer une led def turn_led_on (led) : GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO GPIO.output(led, GPIO.HIGH) #Allume la led #Définit la fonction permettant d'éteindre une led def turn_led_off (led) : GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO GPIO.output(led, GPIO.LOW) #Eteind la led #Définit la fonction permettant d'allumer la rouge et éteindre la verte def turn_red_on () : turn_led_off(LED_GREEN) #Eteind la led verte turn_led_on(LED_RED) #Allume la led rouge #Définit la fonction permettant d'allumer la verte et éteindre la rouge def turn_green_on () : turn_led_off(LED_RED) #Eteind la led rouge turn_led_on(LED_GREEN) #Allume la led verte rc522 = RFID() #On instancie la lib print('En attente d\\'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge #On va faire une boucle infinie pour lire en boucle while True : rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos if not error : #Si on a pas d'erreur (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps if not error : #Si on a réussi à nettoyer if RFID_UID == uid : print('Badge {} autorisé !'.format(uid)) turn_green_on() else : print('Badge {} interdit !'.format(uid)) turn_red_on() time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

Il ne vous reste plus qu’à lancer le programme et tester !

Vous pouvez ensuite adapter le code pour vos propres projets, comme créer un serrure connectée, ou encore un jukebox utilisant des tags RFID !

Pour info, vous pouvez récupérer l’ensemble du code de ce tutoriel sur le Github de Raspbian France.

Dans le prochain tutoriel, nous verrons comment contrôler un servo-moteur avec la Raspberry Pi !

Lire l'article complet : Utiliser un lecteur RFID avec la Raspberry Pi.

Gravatar de RaspbianFrance
Original post of RaspbianFrance.Votez pour ce billet sur Planet Libre.

Articles similaires

RaspbianFrance : Utiliser un lecteur RFID avec la Raspberry Pi.

Lire badge RFID

Ce tutoriel est la seconde partie d’un dossier consacré à la découverte de l’électronique avec la Raspberry Pi. Si vous ne l’avez pas lu, je vous conseils de consulter le premier tutoriel pour contrôler une LED avec la Raspberry Pi.

Que ce soit pour des systèmes d’identification, de gestion d’inventaire, de paiement, ou pour de la domotique, les puces RFID sont de plus en plus utilisées.

Dans ce tutoriel nous allons voir comment lire des cartes RFID avec la Raspberry Pi et un lecteur RFID RC522.

À la fin du tutoriel, vous serez capable de lire un badge RFID, vérifier si c’est bien celui attendu, et allumer une LED verte ou rouge, selon le résultat. Il ne vous restera plus qu’à adapter cet exemple de base pour le projet de votre choix !

Le matériel nécessaire

Pour réaliser ce tutoriel, vous aurez besoin du matériel suivant :

Assembler le lecteur RFID RC522

Quand vous recevez le module RFID RC522, vous pouvez constater qu’il est livré avec un jeu de 2 fois 8 pins. La première étape va donc être de souder 8 de ces pins sur le lecteur RFID. Pas de panique, souder c’est très facile !

Vous devez donc insérer les PINs dans les emplacements prévus sur la carte RFID et les souder avec votre fer.

Module RFID RC522 soudéVous trouverez probablement des connecteurs droits et courbés. Je vous conseil d’utiliser les courbés, plus pratiques.

Si vous n’avez jamais soudé, je vous conseil cet excellent guide pour apprendre à souder de François de chez framboise314.fr.

Connecter le lecteur RFID et les LED à la Raspberry Pi

Avant de passer à l’écriture du code qui nous permettra de lire des badges RFID et de contrôler les LEDs, nous devons en premier lieu connecter tout les composants à la Raspberry Pi.

Pour rappel, le fait de brancher et débrancher des composants doit toujours se faire Raspberry Pi éteinte.

Brancher le lecteur RFID RC522 sur la Raspberry Pi

Le premier composant que nous allons brancher est le lecteur RFID.

Pour contrôler le lecteur RFID nous allons utiliser une bibliothèque externe. Hélas, celle-ci est écrite avec les ports GPIOs directement renseignés dans le code. Cela signifie que nous ne pouvons pas les configurer différemment et que nous sommes donc contraints d’utiliser exactement les mêmes ports que ceux prévus dans la librairie.

Voici un tableau listant les ports du lecteur et le port GPIO de la raspberry pi auquel vous devrez le relier.

Correspondance ports GPIO/ports RC522Reliez les ports du RC522 aux ports correspondants sur la Raspberry Pi.

Pour rappel, vous trouverez une carte des ports GPIO de la Raspberry Pi dans le premier tutoriel de cette série.

Brancher les LEDs

Après le lecteur RFID, connectons les LEDs à la Raspberry Pi.

Nous allons faire un montage très simple. Chaque LED aura son anode (la patte allongée) reliée à un port GPIO et les deux LEDs auront leur anode reliée à la même résistance, elle même reliée à un port GPIO de type Ground de la Raspberry Pi.

Ainsi, nous utilisons une seule résistance pour deux LEDs, et on limite le nombre de câbles.

Au final, une fois la carte RFID et les LEDs reliées à la Pi, vous devriez avoir un montage ressemblant à celui-ci.

À noter, vous pouvez aussi brancher la RC522 en direct sur la Raspberry Pi sans utiliser de breadbord.

Écrire le programme pour lire un badge RFID.

Nous avons un circuit fonctionnel, il ne nous reste plus qu’à activer les ports SPI de la raspberry pi, nécessaires pour utiliser le lecteur RFID, et écrire le programme qui permettra de lire un badge RFID.

Comme dans le tutoriel précédent, le programme sera écrit en Python. Ce tutoriel n’est pas un cours de Python, et nous ne ferons qu’expliquer de façon sommaire le programme. Si vous voulez en apprendre plus sur Python, nous avons publié un cours d’introduction à la programmation avec Python.

Activer le protocole SPI de la Raspberry Pi

Avant d’écrire le programme, activons le protocole SPI sur notre Raspberry Pi afin de pouvoir utiliser le module RFID.

Pour l’activer, il vous suffit de lancer la commande sudo raspi-config, sur votre raspberry, puis de choisir Interfacing Options, SPI, Yes et enfin Finish.

Installer la librairie pi-rc522

Dernière pré-requis, nous allons installer la librairie Python3 « pi-rc522 » qui permet de contrôler le lecteur RC522.

Nous allons utiliser Pip3, un gestionnaire de librairie pour Python.

Il vous suffit de lancer la commande :

sudo pip3 install pi-rc522 Écrire le programme pour lire l’identifiant d’un badge RFID

Chaque badge RFID possède un identifiant unique. C’est en lisant cet identifiant et en le comparant à une liste d’identifiants autorisés que l’on peut savoir si un badge est autorisé.

Nous allons donc écrire un programme nous permettant de lire un l’identifiant unique d’un badge RFID.

Comme nous l’avions fait dans le tutoriel précédent, nous allons écrire le programme dans le dossier /home/pi/electronic (si vous ne l’avez pas déjà fait, créez le dossier).

Dans ce dossier, créez un fichier read_rfid_uid.py et mettez-y le code suivant :

#!/usr/bin/env python3.5 #-- coding: utf-8 -- import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs from pirc522 import RFID import time GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board) GPIO.setwarnings(False) #On désactive les messages d'alerte rc522 = RFID() #On instancie la lib print('En attente d\\'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge #On va faire une boucle infinie pour lire en boucle while True : rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos if not error : #Si on a pas d'erreur (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps if not error : #Si on a réussi à nettoyer print('Vous avez passé le badge avec l\\'id : {}'.format(uid)) #On affiche l'identifiant unique du badge RFID time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

Une fois le fichier enregistré, on en autorise l’exécution avec la commande :

sudo chmod +x /home/pi/electronic/read_rfid_uid.py

Nous pouvons maintenant démarrer le programme en l’appelant avec la commande :

/home/pi/electronic/read_rfid_uid.py

À chaque fois que vous passerez un badge RFID devant le lecteur, son identifiant unique sera affiché !

Écrire un programme qui permet d’afficher si un badge est valide ou non.

Maintenant que nous pouvons lire l’identifiant unique d’un badge, il ne nous reste plus qu’à adapter le code précédent pour comparer l’identifiant lu à un identifiant écrit dans le programme.

Nous allons donc modifier un peu le programme précédent pour qu’il compare l’uid lu à celui écris dans le programme, et allumer la led rouge ou verte selon le résultat.

Copiez donc le fichier précédent, dans un nouveau fichier verify_rfid.py et modifier le pour le code ci-dessous :

Modifiez la ligne RFID_UID pour mettre l’identifiant de votre tag RFID !

#!/usr/bin/env python3.5 #-- coding: utf-8 -- import RPi.GPIO as GPIO #Importe la bibliothèque pour contrôler les GPIOs from pirc522 import RFID import time GPIO.setmode(GPIO.BOARD) #Définit le mode de numérotation (Board) GPIO.setwarnings(False) #On désactive les messages d'alerte LED_RED = 3 #Définit le numéro du port GPIO qui alimente la led rouge LED_GREEN = 5 #Définit le numéro du port GPIO qui alimente la led verte RFID_UID = [21, 35, 5, 43, 57] #Définit l'UID du badge RFID #Définit la fonction permettant d'allumer une led def turn_led_on (led) : GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO GPIO.output(led, GPIO.HIGH) #Allume la led #Définit la fonction permettant d'éteindre une led def turn_led_off (led) : GPIO.setup(led, GPIO.OUT) #Active le contrôle du GPIO GPIO.output(led, GPIO.LOW) #Eteind la led #Définit la fonction permettant d'allumer la rouge et éteindre la verte def turn_red_on () : turn_led_off(LED_GREEN) #Eteind la led verte turn_led_on(LED_RED) #Allume la led rouge #Définit la fonction permettant d'allumer la verte et éteindre la rouge def turn_green_on () : turn_led_off(LED_RED) #Eteind la led rouge turn_led_on(LED_GREEN) #Allume la led verte rc522 = RFID() #On instancie la lib print('En attente d\\'un badge (pour quitter, Ctrl + c): ') #On affiche un message demandant à l'utilisateur de passer son badge #On va faire une boucle infinie pour lire en boucle while True : rc522.wait_for_tag() #On attnd qu'une puce RFID passe à portée (error, tag_type) = rc522.request() #Quand une puce a été lue, on récupère ses infos if not error : #Si on a pas d'erreur (error, uid) = rc522.anticoll() #On nettoie les possibles collisions, ça arrive si plusieurs cartes passent en même temps if not error : #Si on a réussi à nettoyer if RFID_UID == uid : print('Badge {} autorisé !'.format(uid)) turn_green_on() else : print('Badge {} interdit !'.format(uid)) turn_red_on() time.sleep(1) #On attend 1 seconde pour ne pas lire le tag des centaines de fois en quelques milli-secondes

Il ne vous reste plus qu’à lancer le programme et tester !

Vous pouvez ensuite adapter le code pour vos propres projets, comme créer un serrure connectée, ou encore un jukebox utilisant des tags RFID !

Pour info, vous pouvez récupérer l’ensemble du code de ce tutoriel sur le Github de Raspbian France.

Dans le prochain tutoriel, nous verrons comment contrôler un servo-moteur avec la Raspberry Pi !

Lire l'article complet : Utiliser un lecteur RFID avec la Raspberry Pi.

Gravatar de RaspbianFrance
Original post of RaspbianFrance.Votez pour ce billet sur Planet Libre.

Articles similaires

Bartounet : IP FAILOVER MULTIPLES - DEDIBOX - PFSENSE - ESXi

logo pfsense              logo online    


                                                                 logovmware

Depuis quelques années j'utilise une Dédibox pour héberger mes machines virtuelles sous VMWare ESXi6.5

J'ai deux types de VM

- Des VM portant directement une IP Failover Online
- Des VM portant une IP dans un réseau Privé derrière un Firewall PFSense ( aussi une VM)

Cela est assez pratiques, les VM portant des IP Failover sont des serveurs accessibles en direct
sur Internet portant des services Open.
 
L'avantage est que je peux porter des multiples services Web sur les port 80 et 443 sans faire du NAT

Sauf que le problème est que ces VM sont très peu protégées ( seulement le pare feu Linux)
A contrario des VM derrière le PFSense qui bénéficie de toutes les protections.

Actuellement

pfsense avant



J'ai donc étudié la possibilité de pouvoir passer toutes mes VM derrière le PFSENSE

Cela permettra d'avoir un filtrage Fin et de bénéficier de tous les services PFSENSE ( IPS par exemple)

Pour Cela plusieurs prérequis qui'il a fallut lever:

- Comment porter plusieurs IP Failover sur une seule interface de mon PFSENSE???
- Comment porter 1 seul adresse MAC avec plusieurs IP Failover
- Comment paramétrer PFSENSE  pour assigner des IP Failover à certaines VM et pas d'autres.



La Cible
pfsense après


 Modifier l'adresse MAC de votre IP Failover pour utiliser une MAC Partagée qui sera porté par une VM


- Eteindre votre VM
- Se connecter sur l'interface Online
- Editer votre mac adress actuelle



maconline2
- Supprimer votre Mac address

mac3

- Une fois suprimée et mise à jour
- Editer la mac et choisissez "Utiliser une Adresse Mac Existante

mac4

- Chosir la mac adresse qui porte déjà la patte WAN de votre VM PFSENSE

mac5

macgroupee

A partir de là tous paquet à destination de votre IP Failover sera dirigé vers l'adresse MAC partagée portée par votre VM PFSENSE.



Sur PFSENSE:

- Ajouter une IP Virtuelle de type IP Alias ( Votre IP Faiolver que vous voulez migrer) en /32
  sur le WAN
virtualip



 - On voit ici 2 IP failover portées par mon pfsense  ( en plus de l'ip failover assignée à l'interface WAN)
ipfaiolverpfsense



Occupons nous du NAT :
- Notre VM ne portera plus directement l'IP Failover mais une ip Privée dans le réseau LAN PRIV ( 192.168.100.0/24)
- Nous allons choisir l'adresse IP 192.168.100.130

NAT ENTRANT
Pour cela nous allons dire à PFSENSE que tout ce qui arrive à destination de l'IP Failover sera redirigé vers 192.168.100.130
- Dans Firewall / NAT / 1:1

natentrant
 
natentrant

NAT SORTANT
Pour cela nous allons dire à PFSENSE que tout ce qui sort depuis 192.168.100.130 est natté avec l'IP Failover
- Dans Firewall / NAT / Outbound

natoutbound

Ici on voit que 192.168.100.130 et 192.168.100.110 sortiront avec 2 ip failover différentes
Le reste sortira avec l'adresse WAN par défaut ( qui est aussi une failover)

outboun2


Le Filtrage

Pour commencer faire une règle de filtrage Simple qui ouvre tout sur l'IP privée de la VM

filtrage


Sur la Machine Virtuelle qui portait auparavant l'ip Failover

- Sur votre VM qui portait auparavant votre IP Failover.
- Modifier son paramétrage pour etre dans le réseau Privé et ne plus utiliser le Vswitch public

vm lan


- Redemarrer la VM
- Modifier ces paramètres IP pour ne plus porter l'IP failover mais une IP Privée 192.168.100.130

- Avant

ipavant
 
- Après

ipapres

-Redémarrer la VM
- Après le reboot tout ping aussi bien l'adresse Pivée que Publique  ( failover)

ping

- On peut même tester le NAT Unbound

Exemple d'un wget sur un serveur apache externe, on voit bien notre ip publique failover s'afficher dans les logs

wget


Voilà , il vous reste à affiner vos règle de filtrages ( souvenez vous nous avions tout ouvert !! )
N'ouvrez que le necessaire. ( pour ma part par exemple SSH et HTTP)

Je vous conseille d'utiliser les ALIAS qui permettent de relier un objet à une adresse IP
Pratique, pas besoin de se rappeler des IP

rule alias

Gravatar de Bartounet
Original post of Bartounet.Votez pour ce billet sur Planet Libre.

Articles similaires

Carl Chenet : Édito de juillet 2019

Avec un peu de retard, l’édito récapitulant l’activité du blog en juin et les bonnes choses à venir en juillet 2019.

Debian

L’activité de la communauté Debian est riche avec la sortie de la nouvelle version stable “Buster”. J’ai écrit un article qui a bien marché sur sa date de sortie et je viens bien sûr publier rapidement un autre article sur les nouveautés de cette nouvelle version.

Débuter avec Git

Je continue ma série d’articles pour débuter avec Git selon une approche très concrète à base d’exemples.

Le prochain article, 6ème de la série, arrive la semaine prochaine, promis !

La newsletter du Courrier du hacker

Le Courrier du hacker continue sa croissance, aidée par de très gentilles mises en avant de blogueurs de la communauté, comme LinuxTricks, Lordre ou Seboss666. Encore merci à eux !

La prochaine étape est le 100ème numéro que j’attends avec impatience. Ce sera l’occasion de communiquer plus largement sur l’étape cruciale de cette aventure dans le monde des newsletters pour moi.

LinuxJobs.io

J’ai récemment lancé LinuxJobs.io, le pendant américain de LinuxJobs.fr. Il faudra que j’en parle sur ce blog ce mois-ci.

LinuxJobs.io Conclusion

Le mois de juillet est traditionnellement plus calme. Cela devrait me permettre de dégager davantage de temps pour le blog et d’au moins préparer de futurs articles.

Me suivre sur les réseaux sociaux

N’hésitez pas à me suivre directement sur les différents sociaux pour suivre au jour le jour mes différentes projets dans le Logiciel Libre :

Suivre l’actualité du Logiciel Libre et Open Source francophone

Abonnez-vous au Courrier du hacker, une newsletter hebdomadaire résumant le meilleur de l’actualité francophone du Logiciel Libre et Open Source. Déjà plus de 90 numéros et plus de 2000 abonnés.

E-mail S'abonner

The post Édito de juillet 2019 appeared first on Carl Chenet's Blog.

Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.

Articles similaires

Journal du hacker : Liens intéressants Journal du hacker semaine #27

Pour la 27ème semaine de l'année 2019, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

blog-libre : Linux sur le desktop

Je dédicace cet article à Cyrille et Ice. Cyrille qui n’arrête pas d’arrêter de parler du desktop Linux, Ice qui m’a chatouillé suffisamment pour que je cesse de leur laisser tout dire sans les confronter à des arguments contraires et participer à une saine émulation. Des échanges, des arguments, du respect, ce que le blogging devrait être. Personne n’a vraiment raison ou tort, à croiser les points de vue on dessine mieux ce que l’on voit.

Linux, Linux, Linux ou Linux

Je vais débuter en précisant une chose fort importante, je ferai une distinction entre plusieurs sujets dont nous avons la très mauvaise habitude de parler en disant simplement Linux :

  • Le noyau Linux : Le kernel
  • Les distributions Linux : Debian, Ubuntu, CentOS, Arch, Mageia…
  • Le bureau Linux, Linux sur le desktop : Distributions Linux comprenant des environnements de bureau (Gnome, KDE, Xfce, Mate…) et les logiciels
Le noyau Linux a gagné

On disait déjà que le noyau Linux était partout : routeurs, serveurs, systèmes embarqués, smartphones. Il débarque à présent sur Windows (90% du marché desktop), c’est une victoire éclatante, totale. Microsoft intégrant le noyau Linux, témoigne de sa place importante pour ne pas dire indispensable dans l’IT. Sur le cloud de Microsoft Azure, Linux est sur la moitié des machines virtuelles. Sur The Cloud Market on peut se faire une idée de l’utilisation écrasante des distributions Linux pour Amazon EC2. Rappelons également que tous les chromebooks lancés en 2019 seront compatibles avec Linux.

Les linuxiens peuvent et devraient se réjouir : Le noyau Linux n’a jamais autant été utilisé, diffusé et proche de l’utilisateur final.

Linux se professionnalise bien plus qu’il ne se démocratise

Le noyau Linux est utilisé de plus en plus par les professionnels et l’industrie, le desktop Linux touche difficilement plus d’utilisateurs.

Le noyau Linux débarquant sur Windows n’intéressera que les professionnels, les geeks, les passionnés. Mme Michu n’installera pas WSL et ne se servira pas du noyau Linux sur son Windows 10, très clairement le travail de Microsoft autour de Linux est à destination des professionnels. Il ne faut pas s’attendre à ce que les parts de marché du bureau Linux augmentent suite à l’arrivée du noyau Linux sur Windows 10.

Pendant ce temps les chiffres (1, 2, rares et discutables pour certains) tablent autour de 3% pour Linux sur le desktop. Je vais être dur parce qu’apparemment une majorité de linuxiens ne veut pas l’accepter : C’est que dalle, on parle de 3% pas de 20%.

Sur ces 5 dernières années :

  • La vente liée était une bataille importante, elle a été perdue. Tant que l’utilisateur final achètera un pc avec Windows installé dessus, aucune chance de « percer » pour Linux sur le desktop
  • Linux sur le desktop est à 3%, on a pris 1% en 5 ans (en comptant Chrome OS…)
  • Windows 10 ne respecte pas votre vie privée, les utilisateurs ont voté, ils l’utilisent quand même et n’ont pas migré massivement vers une distribution Linux
  • La migration d’un ancien PC sous Windows vers Windows 10 est proposée gratuitement, excellent coup de Microsoft
  • L’UEFI a compliqué l’installation des distribs Linux
La technique et l’humain

Lorsque je vois la question : Linux est-il prêt pour le desktop ? Je pense surtout qu’on parle technique : Est-ce que techniquement Linux est prêt pour le desktop ?

Oui, depuis un moment. D’un point de vue distributions Linux nous avons un choix pléthorique, de grosses écuries (Debian, Ubuntu, CentOS, Arch…). Nous avons aussi pas mal de distribs avec environnements de bureau qui se prêtent à une utilisation professionnelle, un large choix logiciels, des communautés importantes et pérennes, des systèmes largement stables, une excellente sécurité… mais est-ce que Linux est à la hauteur de Windows ?

Il ne suffit pas d’être à la hauteur, il faut être meilleur. On ne change pas pour équivalent mais pour mieux. LibreOffice fait le job mais il restera en-dessous de Microsoft Office pendant encore longtemps.

Il faut comprendre et accepter, les dés sont pipés : 1/ Une majorité de logiciels et d’outils (notamment professionnels) ne fonctionnent que sur Windows 2/ Les formats de fichier propriétaire emprisonnent utilisateurs/entreprises/politiques : Microsoft Office (.docx, .xlsx), Adobe (.psd, .ai) 3/ Les utilisateurs sont formés ou travaillent sur Windows et Microsoft Office, lorsqu’ils achètent un PC perso il est sur Windows 4/ La domination de Windows sur le desktop depuis 20 ans 5/ On reproche aux logiciels libres leur manque de finition sans les soutenir financièrement, il manque des profils pointus comme des graphistes, des traducteurs, des UI/UX designers… on a surtout des devs

C’est déjà une situation très compliquée sur ces points mais pour moi le vrai problème est le coût du changement. Pourquoi un utilisateur lambda passerait à une distrib Linux si il est satisfait de Windows (que son entreprise utilise et paye) ? C’est un effort colossal de formation, compréhension, changement que peu de personnes sont prêtes à faire sans y être obligées (en général professionnellement). On parle énergie, temps et motivation aussi ? La complexité de l’outil informatique est trop importante face à la volonté et capacité des individus.

La vérité est ailleurs

1,3 milliards de PC en usage, 3,5 milliards de smartphones en usage. Sur le web 50,7% du trafic mondial provient du mobile, 45,5% du desktop. Le smartphone est le nouveau pc.

Il n’est pas question de dire que le PC va disparaître, certains usages ne peuvent pas être remplacés (utilisation professionnelle, bureautique, graphisme…) mais aujourd’hui l’équipement roi est le smartphone. L’enjeu n’est plus le PC, les ventes stagnent, les usages ont évolué. On se tourne de plus en plus vers le web et le cloud : Bureautique avec Office 365 par exemple, Gmail comme client de messagerie, Google Stadia pour jouer. Le smartphone permet de nouveaux usages : Photos, vidéos, jeux en réalité augmentée, GPS, communication… et on l’a partout avec nous.

L’utilisateur, ses besoins, ses usages

Comme d’habitude on se focalise sur l’outil alors qu’on devrait parler des besoins et usages de l’utilisateur. On continue à parler de Linux sur le desktop alors que le monde à les yeux rivés sur son smartphone. Pour gagner une guerre, il faut au moins être sur le champ de bataille, pas à côté.

Il est naturel lorsqu’on apprécie Linux qu’on souhaite voir progresser son usage dans le cœur des utilisateurs. La distinction doit pourtant être faite entre installer un Linux sur un poste ET avoir un utilisateur satisfait et autonome sur Linux. Le nombre d’utilisateurs m’importe peu, leur satisfaction totalement. Je suis un utilisateur du bureau Linux, je passe plus de 50 heures par semaine dessus à titre personnel et professionnel. Je suis extrêmement satisfait alors même que cette semaine mon système était pété.

Le choix de l’utilisateur doit être éclairé, sa migration désirée et volontaire, il ne doit pas être contraint mais soutenu, pas jugé mais écouté. Le desktop devient un marché de niche où ne resteront bientôt plus que professionnels, passionnés, power-users, créatifs. Les logiciels cédent place au cloud, web, apps. Pour une majorité d’utilisateurs leurs usages se résument à surfer, écouter de la musique, regarder des vidéos, jouer casual. On allume de moins en moins un PC pour ça.

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

Articles similaires

blog-libre : Petits meurtres entre amis

J’ai trouvé cet article passionnant, j’adore ces astuces rendant le système inutilisable ha ha. Je débute une liste, j’espère que vous y participerez ;)

Fork bomb

La fork bomb est probablement l’attaque la plus connue :(){:|:&};:, bien expliquée ici. On multiplie les processus jusqu’à saturation du système.

Advanced fork bomb

Sur le même principe mais en masquant la visibilité/compréhension de la fork bomb echo "IrYWdl&r()(Y29j&r{,3Rl7Ig}&r{,T31wo});r26 décrite ici (et ).

rm -rf *

Dans le même article l’auteur propose $(echo cm0gLXJmICoK | base64 -d) qui correspond à un rm -rf * dans le dossier courant.

Zip bomb

J’entends surtout parler de cette technique pour lutter contre les scripts kiddies et les scanners de vulnérabilité attaquant les sites web. Korben et Lord ont expliqué le principe, on zippe un gros fichier dd if=/dev/zero bs=1M count=10240 | gzip -9 > 10G.php, on le met à disposition sur son site, le scanneur tente d’ouvrir la page en décompressant le fichier qui va bouffer énormément de CPU et de RAM. J’en parle à titre informatif, ça sort du cadre de l’article présent.

En revanche les limites de la zip bomb en fournissant un fichier .zip d’une taille raisonnable (en général quelques Mo) qui après décompression des données occupera un espace disque très important ont été repoussées. Cette bombe zblg.zip (que vous pouvez renommer photos.zip par exemple) de 10 Mo initialement occupera une fois dézippée 281 To.

Ma contribution : Changer les droits de .ICEauthority ou .Xauthority

Je propose une approche différente et plus vicieuse selon moi. Sans connaissances avancées de Linux, la victime restera bloquée et ne pourra pas se sortir du piège. Je précise que c’est non destructif, aucun risque de perte de données.

Je vous renvoie vers les liens .ICEauthority et .Xauthority pour connaître le rôle de chaque fichier. Ils sont utilisés par le serveur X, .Xauthority est généré par le programme xauth notamment. Pour les lister, je fais ls -l .{ICE*,X*}. Ces fichiers appartiennent à l’utilisateur courant avec des droits 600.

ls -l .{ICE*,X*} -rw------- 1 cascador cascador 918 Jul 6 06:08 .ICEauthority -rw------- 1 cascador cascador 48 Jul 6 06:08 .Xauthority

Lors de l’ouverture d’une session graphique des informations sont écrites dans ces fichiers, si ce n’est pas possible… la session graphique se referme immédiatement. Concrètement vous êtes sur l’écran d’accueil, vous tapez votre mot de passe, la session s’ouvre apparemment 1-2 secondes sur un écran noir puis vous retombez sur l’écran d’accueil. Bonne chance !

Il faut que vous ayez un accès au pc de la future victime, se placer à la racine du home de l’utilisateur (ce qui est le cas par défaut lorsqu’on ouvre un terminal) puis au choix chmod 400 .ICEauthority ou chmod 400 .Xauthority. Perso je fais chmod 400 .ICE* que je précède d’un espace car lorsqu’une commande est précédée d’un espace, bash (configuration par défaut) ne logue pas la commande dans le .bash_history donc aucune trace du crime hé hé.

La beauté de la chose également est que tout continue à fonctionner parfaitement à l’instant t, c’est seulement à la prochaine ouverture de la session graphique (probablement au prochain démarrage du pc) que la victime se retrouvera totalement démunie.

Pour corriger cette petite blague :

  • Sur l’écran d’accueil, Ctrl+Alt+F1 afin d’accéder à la console tty1
  • Tapez les identifiants (ou demander à la victime de taper ses identifiants plutôt), ça ouvrira la session en mode terminal
  • chmod 600 .ICEauthority ou chmod 600 .Xauthority suivant quel fichier vous avez modifié
  • On retourne à la session graphique avec Ctrl+Alt+F7 puis vous vous loguez normalement
Pour participer

Afin de rester dans le cadre de l’article, votre proposition doit respecter les règles suivantes :

  • Aucun droit superutilisateur ne doit être requis sinon il n’y a aucun intérêt, en étant root ou avec sudo il y a 1000 façons de flinguer le système
  • La commande ou le concept doit rester simple/accessible à comprendre ou à mettre en œuvre, les exemples cités ci-dessus utilisent en général une seule ligne de commandes. Si vous proposez un script ça sort du cadre
  • L’attaque doit être basée sur la ligne de commandes, c’est le thème principal
  • L’attaque doit rendre le système inutilisable/instable

Merci d’avance à ceux qui partageront leurs propositions !

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

Full Circle Magazine FR : Le numéro 145

Bonjour, Les trois membres de l'équipe sont heureux de vous présenter le numéro de mai (le numéro 145) en français. Comme d'habitude, vous pouvez le lire ou le visionner sur notre page NUMÉROS ou le récupérer directement en cliquant sur la photo de la couverture ci-dessous. issue_145.png Ce mois-ci, vous y trouverez, notamment :

  • Une courte présentation d'un logiciel généalogique qui s'appelle Gramps ;
  • D'autres tutoriels, comme Python, netcat et Inkscape;
  • La critique du livre Learning Perl 6 par un auteur mystérieux. Il paraît que le contenu du livre est excellent, mais son prix fera hésiter plus d'un : presque 55 $ !
  • Et beaucoup de d'autres choses dont une présentation de l'OTA-9 pour Ubuntu Touch phones, l'opinion d'Erik sur l'utilisation efficace de LibreOffice Draw (Dessin), Ubuntu au quotidien, et un entretien avec le jeune (16 ans) responsable de GhostBSD...

Nous vous en souhaitons bonne lecture.

Bab, scribeur et relecteur et d52fr et moi, AuntieE, traducteurs et relecteurs.

Gravatar de Full Circle Magazine FR
Original post of Full Circle Magazine FR.Votez pour ce billet sur Planet Libre.

Articles similaires

blog-libre : Plus de barre des tâches et autres joyeusetés sur Mint Xfce après mises à jour

Si comme moi vous faites régulièrement les mises à jour et que vous êtes sur Mint Xfce, vous rencontrez peut-être de gros problèmes : Plus de barre des tâches, plus accès aux boutons Réduire/Maximiser des fenêtres, difficultés à ouvrir des applications en maximisé comme Firefox, etc.

Pour rappel on peut retrouver la liste des paquets installés dans /var/log/dpkg.log. Pour s’informer sur le problème :
https://forums.linuxmint.com/viewtopic.php?p=1654428

Je vous donne la procédure que j’ai utilisé qui me semble la plus simple et la plus fonctionnelle :

  • Vous vous loguez sur votre session
  • Vous ouvrez un terminal (vous pouvez faire un clic droit sur le bureau puis Ouvrir dans un terminal)
  • Vous tapez la commande mintdesktop puis vous choisissez Xfwm4 + Compton enfin vous cliquez sur le bouton Close
  • Vous tapez la commande sudo reboot qui va redémarrer votre pc puis vous vous loguez sur votre session

À titre d’information, vous pouvez aussi procéder autrement :

  • Vous appuyez sur la touche Super (Windows) ce qui devrait ouvrir le menu Whisker de Xfce
  • Vous faites une recherche sur Paramètres du bureau, vous cliquez dessus puis vous choisissez Xfwm4 + Compton enfin vous cliquez sur le bouton Close
  • Vous redémarrez votre pc puis vous vous loguez sur votre session

De quoi alimenter l’éternelle question : Linux est-il prêt pour le desktop ? ha ha ha

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

Articles similaires

Benoît Boud@ud : J’ai adopté Z-Shell

Bonjour, Il y a quelques semaines, j'ai fait l'acquisition d'un très beau grimoire édité par la maison d'édition allemande Rheinwerk et qui traite de la programmation Shell. C'est bien dommage qu'une telle collection n'existe pas dans notre belle langue française car dans une bibliothèque, ça en jette. Je possède deux ouvrages de cette collection estampillée [...]

Gravatar de Benoît Boud@ud
Original post of Benoît Boud@ud.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #26

Pour la 26ème semaine de l'année 2019, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Jean-Pierre Morfin : Et si on décentralisait aussi les plateformes de publications ?

Vous connaissez certainement des plateformes de publications comme Medium ou Ghost qui proposent aux auteurs, blogueurs et experts de publier des articles et de recueillir les réactions des lecteurs sous forme de commentaires ou "likes". Pour interagir avec les auteurs, il est nécessaire d'avoir un compte sur la plateforme, ou à défaut un compte Facebook, Google ou leurs consorts. Si bien que lorsque vous n'avez pas ou plus ce genre de comptes parce que vous êtes en pleine période de "dégooglisation", vous vous retrouvez frustré(e) devant le panneau de connexion pour interagir avec les autres.

Et si une nouvelle plateforme, décentralisée (pouvant s'installer facilement sur plein de serveurs), proposait aux détenteurs de comptes Mastodon, PeerTube, Pleroma, PixelFed, Funkwhale, Hubzilla ou encore GNU Social, de publier des articles simplement sur ce réseau qu'est le Fediverse ? Cela permettrait à tous, sans compte GAFAM, mais avec un compte du Fediverse d'interagir avec l'auteur. L'article serait bien sûr accessible à tous les lecteurs.

C'est ce que pourrait proposer Diffu, un logiciel qui se veut simple à installer : on dézippe un paquet PHP sur un serveur web. Il pourrait être utilisé par celui qui veut garder la maîtrise de ces données en utilisant sa propre instance pour publier ; ou par des associations, des organisations, des CHATONS par exemple, qui souhaitent proposer ce service en plus des autres outils alternatifs.

Pour développer cette solution, mon associé et moi-même lançons une campagne de financement participatif qui nous permettra de prendre le temps de faire les choses correctement. Si le projet vous plaît ou vous semble utile, n'hésitez pas à contribuer !

Pour voir à quoi cela va ressembler, visitez la maquette. Elle n'est bien sûr pas fonctionnelle mais elle permet de se faire une idée.

Copie d'écran Diffu

Copie d'écran Diffu

Gravatar de Jean-Pierre Morfin
Original post of Jean-Pierre Morfin.Votez pour ce billet sur Planet Libre.

Simon Vieille : API pour récupérer le contenu Open Graph d'une page web

Pour la fonctionnalité de partage de liens sur ce blog, j'ai développé un script qui récupére le contenu d'une page et analyse ses balises pour identifier ses données Open Graph.

Dans un autre contexte, j'ai rencontré un bug dans Wallabag qui l'empêche de récupérer le contenu de plusieurs pages web que je désirait lire plus tard. Avec la volonté de créer un rapport de bug, la documentation m'a amené sur la piste du projet Graby utilisé par Wallabag.

Pour comprendre et peut-être proposer un correctif, j'ai joué avec Graby et ça m'a amené à réaliser une API pour remplacer le script utilisé par le blog, en combinent Graby et fusonic/opengraph. L'objectif de l'API est donc de retourner des données générées par Graby et OpenGraph au format JSON.

Voici à quoi ressemble un retour d'appel à l'API avec les données Open Graph :

Le projet est dépendant de PHP 7.3 et c'est libre. Le code source est dispo ici.

Gravatar de Simon Vieille
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.

Articles similaires

Simon Vieille : API pour récupérer le contenu OpenGraph d'une page web

Pour la fonctionnalité de partage de liens sur ce blog, j'ai développé un script qui récupére le contenu d'une page et analyse ses balises pour identifier ses données Open Graph.

Dans un autre contexte, j'ai rencontré un bug dans Wallabag qui l'empêche de récupérer le contenu de plusieurs pages web que je désirait lire plus tard. Avec la volonté de créer un rapport de bug, la documentation m'a amené sur la piste du projet Graby utilisé par Wallabag.

Pour comprendre et peut-être proposer un correctif, j'ai joué avec Graby et ça m'a amené à réaliser une API pour remplacer le script utilisé par le blog, en combinent Graby et fusonic/opengraph. L'objectif de l'API est donc de retourner des données générées par Graby et OpenGraph au format JSON.

Voici à quoi ressemble un retour d'appel à l'API avec les données Open Graph :

Le projet est dépendant de PHP 7.3 et c'est libre. Le code source est dispo ici.

Gravatar de Simon Vieille
Original post of Simon Vieille.Votez pour ce billet sur Planet Libre.

Articles similaires

Littlewing : Ansible pour les provisionner tous !

Si vous provisionnez vos VM VirtualBox avec Vagrant, vous avez sans doute eu l’idée d’automatiser le provisionning des machines virtuelles. Dans mon cas une VM GNU/Linux basée sur Debian 9.

Pour cela, soit vous faite tout manuellement et après les mises à jour deviennent fastidieuses, soit vous appliquez un script shell au démarrage de vagrant, soit vous utilisez Ansible.

Ansible est un outil opensource permettant d’automatiser le provisionning et la mise à jour des environnements à distance (via SSH). L’avantage par rapport à des outils tels que Puppet, est qu’il ne nécessite pas l’installation d’agent.

Je vais essayer de vous montrer comment mettre en place le provisionning via Ansible pour VirtualBox.

Configuration de Vagrant

Dans le fichier Vagrantfile, on active le provisionning via Ansible:

config.vm.provision "ansible_local" do |ansible|
ansible.playbook = "site.yml"
ansible.install_mode = "pip"
ansible.version = "2.7.10"
end

Cette configuration fait référence à un fichier « playbook » site.yml. C’est la configuration qui sera appliqué lors du provisionning . Que ça soit à la création ou pour les mises à jour.

Voici un exemple de contenu:

- name: VirtualBox
hosts: all
become: yes
become_user: "root"
become_method: "sudo"
roles:
- common
vars_files:
- vars/environment.yml

Ce fichier est la racine de notre configuration Ansible. On y référence les rôles appliqués et les fichiers d’ environnement. Voici un exemple de rôle:

- name: "Remove useless packages from the cache"
apt:
autoclean: yes
force_apt_get: yes

- name: "Remove dependencies that are no longer required"
apt:
autoremove: yes
force_apt_get: yes

- name: "Update and upgrade apt packages (may take a while)"
become: true
apt:
upgrade: dist
update_cache: yes
force_apt_get: yes

- name: "Install useful packages"
become: true
apt:
name:
- gcc
- g++
...
- zsh
- firewalld
state: present
update_cache: no

- name: ansible create directory example
file:
path: "{{ home }}/.m2"
state: directory
owner: "{{ username }}"
group: "{{ username }}"

- name: Install Maven settings.xml
copy:
src: settings.xml
dest: "{{ home }}/.m2/settings.xml"
owner: "{{ username }}"
group: "{{ username }}"

- name: "Install Maven"
raw: "curl -sL \\"http://mirror.ibcp.fr/pub/apache/maven/maven-3/{{ maven_version }}/binaries/apache-maven-{{ maven_version }}-bin.tar.gz\\" -o /opt/apache-maven.tar.gz && tar -zxf /opt/apache-maven.tar.gz -C /opt"
become: true
become_user: root
become_method: sudo

- name: "Change Maven Rights"
file:
path: /opt/*
state: touch
modification_time: "preserve"
access_time: "preserve"
owner: "{{ username }}"
group: "{{ username }}"

Les variables d’environnement permettent de variabiliser certains champs de vos rôles. On peut trouver par exemple les versions de certains outils déployés

maven_version: 3.5.4
username: vagrant
home: /home/vagrant
docker_compose_version: 1.22.0

Il y a une quantité impressionnante de modules Ansible que l’on peut utiliser. Que ça soit pour lancer des commandes shell ou lancer des services. Contrairement à la création d’un script shell qui pourrait faire les mêmes actions à la création, on peut facilement gérer la mise à jour de la VM car Ansible détecte les modifications lors de son exécution.

Configuration spécifique pour VirtualBox

Pour VirtualBox, j’ai ajouté deux fichiers de configuration supplémentaires à la racine:

ansible.cfg [defaults]
hostfile = hosts hosts [local]
localhost ansible_connection=local Provisionning A la création

le provisionning peut se faire au lancement de vagrant via la commande:

vagrant up

Pour faire une mise à jour

Directement dans la box, vous pouvez lancer les commandes suivantes :

sudo mount -t vboxsf vagrant /vagrant

Puis, vous pouvez lancer les commandes suivantes dans la box:

su -
cd /vagrant
export ANSIBLE_CONFIG=/vagrant
ansible-playbook site.yml

 

Gravatar de Littlewing
Original post of Littlewing.Votez pour ce billet sur Planet Libre.

Articles similaires

RaspbianFrance : Nouvelle Raspberry Pi 4, quelles nouveautés, quel prix, ou l’acheter ?

Cela fait longtemps que nous l’attendions, la fondation a annoncée aujourd’hui la sortie de la nouvelle version de son micro-ordinateur, la Raspberry Pi 4 !

Alors que la fondation disait encore il y a quelques temps ne pas avoir prévu de nouvelle version avant au moins un an, la surprise viens de tomber !

RAM augmentée, processeur plus rapide, port Ethernet Gigabit, vidéo 4K, voyons ensemble les nouveautés au rendez-vous !

Voir les prix chez Kubii.fr Jusqu’à 4 Go de RAM, une énorme amélioration

Premier point qui frappe avec cette nouvelle Raspberry Pi 4, la mémoire vive (RAM) a été considérablement augmentée, passant de 1 Go en DDR3 pour la B3+ à jusqu’à 4 Go en DDR4 pour la Pi 4 !

Cette augmentation de la RAM est la très bienvenue et devrait permettre à la Raspberry Pi de faire tourner de plus nombreuses applications en parallèle et de mieux gérer les programmes à forte consommation de mémoire, comme la vidéo ou le traitement d’images.

Raspberry pi 4 vue du dessusLa Raspberry Pi 4 vue du dessus.

Si ce point est le plus marquant, il était également le plus prévisible, de nombreux concurrents de la Raspberry Pi proposant déjà ce type de caractéristiques depuis longtemps.

Point inédit jusque là, la Raspberry Pi 4 proposera plusieurs versions avec au choix 1 Go, 2 Go ou 4 Go de mémoire. Reste à voir l’impact que cela aura sur le prix.

Un nouveau processeur Cortex A72 plus puissant

Toujours dans l’optique d’améliorer la puissance de la machine, la Raspberry Pi 4 offre également un nouveau processeur. Exit le Cortex A53 des précédentes générations, la Raspberry Pi 4 sera doté d’un Cortex A72.

Cadencé à 1500 Mhz contre 1400 Mhz pour les version précédentes, ce processeur devrait également être un peu moins énergivore.

Comme précédemment, on reste bien-sur sur un processeur ARM, et plus spécifiquement un ARMv8-A en mode 64 bits.

Si ce processeur devrait ajouter un peu de peps à la Raspberry Pi 4 quand il s’agit d’effectuer des calculs, c’est surtout sur la partie vidéo qu’il apporte une énorme nouveauté !

Un nouveau GPU VideoCore VI permettant la vidéo en 4K !

En effet, plus qu’une simple augmentation de la puissance de calcul, c’est bien la partie GPU embarqué, c’est à dire la partie « carte graphique » du processeur qui change avec l’arrivé du A72 !

En effet, si le Cortex A53 embarque un GPU VideoCore IV, c’est bien un VideoCore VI qui est présent dans le nouveau Cortex A72 !

Mais alors, quelles conséquences ? Et bien là ou les précédents modèles de processeurs, et donc de Raspberry Pi, ne supportaient que la vidéo en Full HD mono-écran, la nouvelle Raspberry Pi 4 supportera la vidéo en 4K, et sur deux écrans !!!

Le support d’OpenGL 3.0 est également ajouté, ce qui devrait là aussi améliorer largement les performances de la Pi en matière de rendu graphique, et notamment d’accélération vidéo.

Concrètement, cela signifie que la Raspberry Pi devrait définitivement s’imposer comme la solution de référence pour créer des media-centers, des consoles de rétro-gaming, et toutes autres activités nécessitant du calcul graphique !

À notre sens, cette modification est clairement la plus importante puisque le traitement graphique était vraiment le plus gros point faible de la Raspberry Pi par rapport à ses concurrents !

Meilleur Ethernet, USB et HDMI !

Dernier point d’amélioration, les connectiques ont été revues et augmentées !

Ainsi, la Raspberry Pi 4 se dote d’un port Ethernet 1 Gigabit qui était attendu depuis longtemps et devrait là aussi améliorer l’usage de la Raspberry Pi en matière de multimédia, mais également pour l’utilisation comme serveur ou flux vidéo via internet.

Les ports USB ont également été revus, et deux d’entre eux sont désormais des ports USB3. Là encore, les amoureux du multimédias vont être heureux.

Le port HDMI à disparu pour laisser place à deux mini-HDMI !

Le port HDMI traditionnel évolue lui aussi et laisse sa place à deux ports Mini-HDMI, permettant donc l’utilisation de la Raspberry Pi en double écran, ce que nous attendions depuis longtemps !

Enfin, même si cela est plus anecdotique, le Bluetooth passe en version 5.0 contre 4.2 pour les versions précédentes.

À noter également, si les ports GPIO restent les même, il sera désormais possible de gérer quelques ports séries supplémentaires, une bonne nouvelle pour les fans d’électronique.

Au final, combien coûte la Raspberry Pi 4 et ou l’acheter ?

Devant toutes ces nouveautés et améliorations, la question est bien entendu celle du prix. À quoi devons nous nous attendre ici ?

Comme nous pouvions nous y attendre, la fondation reste fidèle à son habitude avec un prix d’appel toujours maintenue à 35€ pour la version 1 Go de RAM.

En revanche, les autres versions de la Raspberry Pi 4, voient leur prix légèrement augmenter, à 45€ pour 2 Go de RAM, et 55€ pour 4 Go de RAM.

Alors certes, le prix augmente pour les versions « hautes gammes », mais nous profitons néanmoins de toutes les améliorations autres que la RAM sur le modèle à 1 Go, avec un prix maintenu à 35€ !

Pour l’instant là Raspberry Pi 4 n’est disponible en France que chez notre parteniaire kubii.fr.

Voir les prix chez Kubii.fr Conclusion, une super Raspberry Pi 4 !

Au final cette nouvelle Raspberry Pi 4 s’annonce comme une excellente version porteuse de très nombreuses améliorations.

La Raspberry Pi 4 s’annonce dors et déjà comme très adaptée pour toutes les utilisations multimédias et devrait très rapidement trouver son publique.

Là fondation a su nous surprendre en donnant un gros coup de jeune à son produit phare qui commençait un peu à tourner en rond et accuser un certain retard face à ses concurrents, retard maintenant largement rattrapé !

Vous l’aurez compris, de notre coté, nous sommes ravis !

Lire l'article complet : Nouvelle Raspberry Pi 4, quelles nouveautés, quel prix, ou l’acheter ?

Gravatar de RaspbianFrance
Original post of RaspbianFrance.Votez pour ce billet sur Planet Libre.

Articles similaires

Carl Chenet : Débuter avec Git partie 5 : fusionner des branches

Pour continuer dans cette série sur comment débuter avec Git, nous avions vu dans le précédent article précisément ce que sont les branches Git. Nous allons aujourd’hui présenter pourquoi fusionner des branches et comment s’y prendre.

Mise en place

Pour cet article nous créons un dépôt distant sur notre Gitlab (comme expliqué dans la partie 1), puis nous le clonons sur notre machine locale.

$ git clone https://gitlab.com/chaica/merge-branches.git
Cloning into 'merge-branches'…
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
$ cd merge-branches/
$ ls
README.md

Notre dépôt initial contient simplement un fichier README.md, créé par Gitlab, contenant un titre en langage Markdown

$ cat README.md # merge-branch

Nous allons maintenant ajouter un sous-titre à ce fichier pour un prochain exemple.

$ echo -e "\\n## sous-titre" >> README.md $ git commit README.md -m "add first subtitle" [master 2059805] add first subtitle 1 file changed, 2 insertions(+)

À ce niveau, nous avons donc deux commits qui constituent notre branche master, comme nous l’indique la commande git log.

$ git log commit 20598053fb2c3e55f95e2521dfa804739abd7d8a Author: Carl Chenet chaica@ohmytux.com Date: Fri Jun 21 10:22:00 2019 +0200 add first subtitle commit 11cb68a24bed5236972138a1211d189adb4512a8 (origin/master, origin/HEAD) Author: Carl Chenet chaica@ohmytux.com Date: Fri Jun 21 08:18:56 2019 +0000 Initial commit

Mise en place un peu longue, mais qui nous a permis de réviser quelques commandes fondamentales. Nous entrons dans le vif du sujet.

Création d’une nouvelle branche

Un client nous demande une évolution du code. Afin de ne pas toucher à la branche master qui contient le code de référence courant, nous allons compliquer maintenant un peu les choses en créant une nouvelle branche nommée branch-with-foo. Cette étape a déjà été expliquée dans la partie 4 plus en détail.

$ git checkout -b branch-with-foo Switched to a new branch 'branch-with-foo'

Nous créons immédiatement un fichier nommé foo dans cette branche que nous ajoutons et enregistrons dans la foulée.

$ echo "this is a foo file" > foo $ git add foo && git commit foo -m "add foo file" [branch-with-foo d9afaa2] add foo file 1 file changed, 1 insertion(+) create mode 100644 foo Divergence des branches

Nous revenons maintenant sur master et nous créons un fichier bar que nous enregistrons aussi dans la foulée.

$ git checkout master $ echo "this is a bar file" > bar $ git add bar && git commit bar -m "add bar file" [master 222c618] add bar file 1 file changed, 1 insertion(+) create mode 100644 bar

Faisons une pause, nous venons de créer notre première divergence entre nos branches, nous avons créé un embranchement dans l’historique de nos commits, les deux derniers commits n’appartenant plus aux mêmes branches.

 divergence de branches

Le schéma présente la divergence entre la branche master et la branche branch-with-foo. La première contient un fichier bar, la seconde un fichier foo. Bien, il est temps de passer aux choses sérieuses.

Fuuuuuuuuuusion

Le besoin que nous avions de créer une nouvelle branche a disparu, le client a annulé le projet.

Bon, nous allons réintégrer les modifications de cette branche dans la branche master. Nous nous positionnons dans la branche master, ou d’une manière générale la branche à laquelle nous souhaitons réintégrer les modifications d’une autre, et nous passons la commande suivante :

$ git checkout master $ git merge branch-with-foo -m "Merge branch 'branch-with-foo'" Merge made by the 'recursive' strategy. foo | 1 + 1 file changed, 1 insertion(+) create mode 100644 foo

La sortie de la commande nous précise ce qui s’est passé : un fichier foo (celui de la branche branch-with-foo) a été créé dans la branche courante master.

 fuuuuuuuuusion

Jetons un oeil à l’historique avec la commande git log avec l’option –graph qui va nous présenter une représentation graphique de notre historique et l’option –oneline afin de rendre la commande moins verbeuse.

$ git log --graph --oneline * 69fa060 (HEAD -> master) Merge branch 'branch-with-foo' |\\ | * d9afaa2 (branch-with-foo) add foo file * |222c618 add bar file |/ * 2059805 add first subtitle * 11cb68a (origin/master, origin/HEAD) Initial commit

Cette représentation est très parlante. Au niveau de l’histoire elle va de haut en bas, le haut étant le commit le plus récent et le plus bas le plus vieux. Une étoile (*) est un commit, avec son message à droite , et le nom de la branche s’il y ambiguité.

Nous reprenons notre dessin précédent et le faisons évoluer.

  fusion de branches

Nous avons bien fusionné la branche branch-with-foo dans master. Fusion réussie.

Sauver son code et ses branches

Avant de s’arrêter aujourd’hui, n’oublions pas de pousser tout ce que nous avons fait vers notre dépôt Gitlab distant. Nous commençons par la branche master.

$ git push Enumerating objects: 13, done. Counting objects: 100% (13/13), done. Delta compression using up to 8 threads Compressing objects: 100% (7/7), done. Writing objects: 100% (11/11), 975 bytes | 975.00 KiB/s, done. Total 11 (delta 2), reused 0 (delta 0) To https://gitlab.com/chaica/merge-branches.git 11cb68a..69fa060 master -> master

La dernière ligne indique bien que nous avons poussé depuis notre branche master locale vers notre branche master distante présent sur notre Gitlab.

Passons à la branche branch-with-foo, qui, même si elle a été fusionnée dans master, existe toujours. Pourquoi ? Car le nom de la branche branch-with-foo est un pointeur, un indicateur qui désigne le dernier commit connu de cette branche. Rien de plus.

Pour changer un peu nous varions la syntaxe de notre commande git push en utilisant l’option –all afin de pousser toutes les branches locales vers le dépot distant. Nous n’en avons qu’une ici, branch-with-foo.

$ git push --all Total 0 (delta 0), reused 0 (delta 0) remote: remote: To create a merge request for branch-with-foo, visit: remote: https://gitlab.com/chaica/merge-branches/merge_requests/new?merge_request%5Bsource_branch%5D=branch-with-foo remote: To https://gitlab.com/chaica/merge-branches.git [new branch] branch-with-foo -> branch-with-foo

Point très intéressant, nous voyons que les lignes commençant par remote: proviennent du Gitlab, qui nous indiquent comment créer une demande de fusion (Merge Request). Inutile, nous avons déjà fusionné. Mais ce sera intéressant dans le cadre du travail collaboratif. Ce sera pour un prochain article.

Une demande de fusion sur Gitlab

La dernière ligne nous confirme que nous avons bien poussé la branche locale branch-with-foo vers la branche du dépôt Gitlab distant nommée également branch-with-foo.

Conclusion

Nous avons vu aujourd’hui la fusion de branches Git. Cette opération permet de récupérer le travail réalisé dans une autre branche, en divergence du code “principal” que nous conservons – comme bonne pratique dans l’industrie en général – dans la branche master. C’est le cas le plus courant.

Vous devriez quasi systématiquement commencer par créer une nouvelle branche quand vous envisagez d’introduire du nouveau code dans un dépôt Git, afin de ne pas travailler directement vous-même dans master. Pourquoi pas ? C’est ce que nous verrons dans le prochain article de cette série.

Me suivre sur les réseaux sociaux

N’hésitez pas à me suivre directement sur les différents sociaux pour suivre au jour le jour mes différentes projets dans le Logiciel Libre :

Suivre l’actualité du Logiciel Libre et Open Source francophone

Abonnez-vous au Courrier du hacker, une newsletter hebdomadaire résumant le meilleur de l’actualité francophone du Logiciel Libre et Open Source. Déjà plus de 90 numéros et 2000 abonnés.

Le Courrier du hacker E-mail S'abonner

The post Débuter avec Git partie 5 : fusionner des branches appeared first on Carl Chenet's Blog.

Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.

Articles similaires

Journal du hacker : Liens intéressants Journal du hacker semaine #25

Pour la 25ème semaine de l'année 2019, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Carl Chenet : Nouvelle version stable de Debian “Buster” le 6 juillet 2019

Si elle est prête, la nouvelle version stable de Debian “Buster” , 10ème du nom, pourrait être publiée le 6 juillet 2019.

Dans un e-mail la semaine dernière, Niels Thykier de l’équipe de publication (release team) du projet Debian, a annoncé l’objectif du 6 juillet 2019 pour la date de publication de la nouvelle version stable du projet nommée “Buster”, en hommage comme d’habitude aux personnages de Toy Story.

Buster à gauche, Buzz à droite

Buster à gauche, Woody à droite

Buster remplacera donc l’actuelle version stable Stretch qui prendra elle le titre de vieille version stable (old stable).

Stretch, dont la version mineure 9.9 a été publiée en avril 2019, sera encore maintenue un an par le projet Debian lui-même à partir de la date de publication officielle de Buster, avant de passer en mode support étendu (Long Time Support ou LTS) adressant uniquement les bugs critiques et les failles de sécurité jusqu’en juin 2022.

Stretch dans Toy Story 3

Pour rappel le support étendu est une initiative extérieure au projet de développements des distributions Debian et nécessite des fonds. Si vous êtes une entreprise bénéficiant de ce support, n’hésitez pas à aider à le financer. Même une contribution minime aide à rémunèrer les développeurs travaillant au support étendu.

Rappelons encore qu’il s’agit d’une date prévisionnelle. Si la fermeture des bugs critiques n’avançait pas au rythme voulu, la publication pourrait être reportée. La devise des publications de Debian reste “publier quand c’est prêt” (release when it’s ready).

Merci à Grise Bouille pour cette illustration indémodable concernant Debian 🙂

Pour les nouveautés de cette nouvelle version stable de Debian “Buster”, nous les détaillerons davantage dans un billet à venir, mais la page dédiée et le travail en cours des notes de publication de Buster sont accessibles pour se faire sa propre idée en attendant la publication officielle.

Me suivre sur les réseaux sociaux

N’hésitez pas à me suivre directement sur les différents sociaux pour suivre au jour le jour mes différentes projets dans le Logiciel Libre :

Suivre l’actualité du Logiciel Libre et Open Source francophone

Abonnez-vous au Courrier du hacker, une newsletter hebdomadaire résumant le meilleur de l’actualité francophone du Logiciel Libre et Open Source. Déjà plus de 80 numéros et 2000 abonnés.

E-mail S'abonner

The post Nouvelle version stable de Debian “Buster” le 6 juillet 2019 appeared first on Carl Chenet's Blog.

Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.

Articles similaires

Pages