Planet Libre

Thuban : Syspatch : patch kernel - pcbopts - multi-arch - 6.3 + 6.4

Un nouveau correctif pour le noyau est fourni par l'équipe OpenBSD :

- pcbopts : risque de débordement de 4 octects dans la mémoire du noyau par un appel système setsockopt(2). - 6.3 : patch n°27 ; 6.4 : patch n°10

Le redémarrage de votre machine est nécessaire, car il touche le noyau.

Architectures concernées : amd64, arm64 et i386

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

Full Circle Magazine FR : Pour les Fêtes !

Voici un cadeau à mettre sous tous les sapins : le dernier numéro du FCM, le numéro 139, celui de novembre 2018, traduit en français par les Trois mousquetaires ! Vous pouvez le visionner ou télécharger sur notre page Numéros ou le récupérer directement en cliquant sur la photo ci-dessous.

issue139.png

Vous y trouverez, notamment :

  • les tutoriels habituels (Inkscape, Great Cow Basic et Freeplane), mais aussi celui qui présente les AppImages, des applis prêtes à l'emploi sur presque toutes les plateformes ;
  • dans la rubrique Ubuntu au quotidien, il y a encore plus sur le rétro-gaming et on apprend beaucoup sur les anciens jeux d'arcades (sous Linux) ;
  • la critique d'un livre sur la philosophie Linux et les administrateurs système, qui mérite quatre étoiles et semble beaucoup parler de Zen et de cowsay (!) ;
  • l'opinion d'Erik concernant le RGPD qui pourrait faire froid dans le dos des TI d'entreprises (c'est l'article de couverture) ; et
  • la critique assez élogieuse de Graveyard Keeper, un jeu qui plairaît à certains, mais n'est pas pour les « prudes asséchés », nous dit Erik ...

Amusez-vous bien !

Toute l'équipe du FCMfr vous souhaite d'excellentes fêtes de fin d'année et vous dit « À l'année prochaine ! »

Les Trois mousquetaires (sans le quatrième cette fois-ci) : Bab, scribeur et relecteur, et AE et d52fr, traducteurs/relecteurs

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

Articles similaires

Simon Vieille : [tips] PHP FPM : récupérer la vraie adresse IP du visiteur

Mon serveur web fonctionne par couches. La première couche est gérée par Nginx et traite les requetes HTTP des internautes. Nginx gère les problématiques de cache sur les assets, c'est à dire les images, les fichiers javascripts et enfin les fichiers CSS. Ensuite, il transmet les requêtes au serveur web Apache qui va délivrer le site web concerné et faire appel au process manager de PHP (FPM) pour exécuter PHP.

En l'état, il n'est pas possible de connaître l'adresse IP de l'internaute via la variable globale $_SERVER en utilisant l'index REMOTE_ADDR. En effet, si j'affiche le contenu de $_SERVER['REMOTE_ADDR'], j'aurai comme résultat 127.0.0.1 qui est l'IP locale de Nginx.

Cependant, j'ai configuré Nginx de tel sorte qu'il ajoute les entêtes HTTP X-Forwarded-For et X-Real-IP. Apache les transmet ensuite via les index HTTP_X_FORWARDED_FOR et HTTP_X_REAL_IP.

proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr;

Ces index contiennent l'IP de l'internaute mais ne sont pas utilisés par les applications hébergées. Typiquement, Nextcloud détectait l'adresse IP 127.0.0.1. Lors d'un brute force, tous les comptes utilisateurs étaient impactés par la sécurité enclanchée par Nextcloud (soit 30s d'attente avant la validation des identifiants de connexion).

J'ai fouiné sur la toile et plusieurs solutions sont évoquées. J'ai un peu tout essayé et au delà des modules Apache Rpaf et RemoteIP, pas grand chose de probant. Rpaf est déjà installé et permet à Apache de logger la bonne IP dans les logs d'accès. RemoteIP n'a pas fonctionné dans mon environnement.

Pour résoudre le problème, j'ai appliqué ce qui a été rédigé dans ce post : inclure un script PHP de façon automatique pour l'ensemble des sites web du serveur.

j'ai créé un fichier PHP comme suite :

<?php $trustedProxies = [ '127.0.0.1', ]; $remote = $_SERVER['REMOTE_ADDR']; $headers = [ 'HTTP_X_FORWARDED_FOR' => 'REMOTE_ADDR', 'HTTP_X_REAL_IP' => 'REMOTE_HOST', ]; if (in_array($remote, $trustedProxies)) { foreach ($headers as $header => $value) { $_SERVER[$value] = $_SERVER[$header]; } }

Puis j'ai alimenté les php.ini de cette façon :

auto_prepend_file = /etc/php/fpm/real-ip.php

Après avoir relancé les services, j'ai pu constater que l'adresse IP de l'internaute est bien présente dans $_SERVER['REMOTE_ADDR'].

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

Articles similaires

Framablog : Framasoft en 2019 pour les gens pressés

Vous avez aimé Dégooglisons Internet et pensez le plus grand bien de Contributopia ? Vous aimeriez savoir en quelques mots où notre feuille de route nous mènera en 2019 ? Cet article est fait pour vous, les décideurs pressés :)

Cet article présente de façon synthétique et ramassée ce que nous avons développé dans l’article de lancement de la campagne 2018-2019 : « Changer le monde, un octet à la fois ».

Un octet à la fois, oui, parce qu’avec nos pattounes, ça prend du temps.

Passé

Depuis 14 ans, Framasoft a créé un annuaire du logiciel libre, écrit et traduit des milliers d’articles, diffusé le logiciel libre sur de nombreux supports.

Depuis 4 ans, Framasoft montre qu’il est possible de décentraliser Internet avec l’opération « Dégooglisons Internet ». Le propos n’est ni de critiquer ni de culpabiliser, mais d’informer et de mettre en avant des alternatives qui existaient déjà, mais demeuraient difficiles d’accès ou d’usage.

De façon à ne pas devenir un nouveau nœud de centralisation, l’initiative CHATONS a été lancée, proposant de relier les hébergeurs de services en ligne qui partagent nos valeurs.

Dégooglisons Internet, vu par Péhä (CC-By)

Présent

Depuis l’année dernière, avec sa feuille de route Contributopia, Framasoft a décidé d’affirmer clairement qu’il fallait aller au-delà du logiciel libre, qui n’était pas une fin en soi, mais un moyen de faire advenir un monde que nous appelons de nos vœux.

Il faut donc encourager la société de contribution et dépasser celle de la consommation, y compris en promouvant des projets qui ne soient plus seulement des alternatives aux GAFAM, mais qui soient porteurs d’une nouvelle façon de faire. Cela se fera aussi en se rapprochant de structures (y compris en dehors du mouvement traditionnel du libre) avec lesquelles nous partageons certaines valeurs, de façon à apprendre et diffuser nos savoirs.

Cette année a vu naître la version 1.0 de PeerTube, logiciel phare qui annonce une nouvelle façon de diffuser des médias vidéos, en conservant le contrôle de ses données sans se couper du monde, qu’on soit vidéaste ou spectateur.

Le monde des services de Contributopia.
Illustration de David Revoy – Licence : CC-By 4.0

Avenir

La campagne de don actuelle est aussi l’occasion de de rappeler des éléments d’importance pour Framasoft : nous ne sommes pas une grosse multinationale, mais un petit groupe d’amis épaulé par quelques salarié·e·s, et une belle communauté de contributeurs et contributrices.

Cette petite taille et notre financement basé sur vos dons nous offrent souplesse et indépendance. Ils nous permettront de mettre en place de nouveaux projets comme MobilZon (mobilisation par le numérique), un Mooc CHATONS (tout savoir et comprendre sur pourquoi et comment devenir un chaton) ou encore Framapétitions (plateforme de pétitions n’exploitant pas les données des signataires).

Nous voulons aussi tenter d’en appeler à votre générosité sans techniques manipulatoires, en vous exposant simplement d’où nous venons et où nous allons. Nous espérons que cela vous motivera à nous faire un don.

Faire un don pour soutenir les actions de Framasoft

 

Pour en savoir plus

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

Articles similaires

dada : Kubernetes en multi-master sur du baremetal avec HAProxy



Quand on joue avec Kubernetes, on se rend compte que c'est aussi puissant que fragile. L'orchestration, ça ne s'improvise pas. Il faut vraiment passer des heures à se casser les dents sur des clusters de tests qui finiront toujours par s'écrouler. Que ce soit à cause d'un souci côté hébergeur, entraînant une indisponibilité de votre master ou une configuration laxiste permettant à des pods de consommer plus de ressources que ce qu'il y a de disponible, en massacrant chaque node disponible, méticuleusement, les uns après les autres, jusqu'à vous laisser sans rien.Je ne parlerai pas ici du meilleur moyen pour contrôler la consommation des pods. On va s'attaquer au premier souci : votre unique master configuré en SPoF.Le multi-master, ton amiPour éviter de voir un cluster HS à cause de l'absence de son maître, on va le configurer avec un quorum de... 3 masters. Tout simplement.
Pourquoi HAProxy ?Mon environnement de test est basé sur des serveurs dans le cloud de Hetzner. J'ai essayé d'attendre aussi longtemps que possible des infrastructures abordables supportant k8s loin des AWS, GCP ou encore Azure, en vain. Il y a bien OVH et DigitalOcean mais le côté "abordable" n'y est pas. Le premier ouvre son infrastructure à partir de 22€ le serveur, et l'autre 20$ (node unique + LB). On est loin des 6€ par machine chez Hetzner.L'idéeComme l'indique la documentation officielle, HAProxy va faire ce qu'il sait faire de mieux : rediriger les requêtes. Comment peut-on faire croire à 3 serveurs séparés qu'ils bossent ensemble ? En installant un HAproxy sur chacun d'entre eux, configuré pour loadbalancer les requêtes qui seront balancées sur le 127.0.0.1 et le port 5443 (choisi arbitrairement).
En image, ça donne ça :

Configurés comme ça, nos masters vont s'amuser entre-eux sans aucun souci.
L'installationJe passe sur la configuration de Kubernetes, j'en parle déjà ici. Notez quand même que vous pouvez suivre ce que je raconte jusqu'à l'init du cluster. Pas plus. Pourquoi ? Parce que sur le premier de vos masters, nous allons ajouter un fichier de configuration :
root@k8smaster1:~# cat kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: stable
apiServer:
  certSANs:
  - "127.0.0.1"
controlPlaneEndpoint: "127.0.0.1:5443"
networking:
   podSubnet: "10.244.0.0/16"Ici, on voit bien que j'ai configuré mon k8s pour taper sur le localhost de la machine à travers le port 5443. C'est là que HAproxy prend la relève.
Je me suis permis d'ajouter la configuration nécessaire à Flannel, mon CNI, qui nécessite en CIDR particulier pour fonctionner correctement. C'est la partie networking.

On peut enchaîner sur la configuration de HAProxy :global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

defaults
    log    global
    mode    tcp
    option    tcplog
    option    dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend api-front
    bind 127.0.0.1:5443
    mode tcp
    option tcplog
    use_backend api-backend

backend api-backend
    mode tcp
    option tcplog
    option tcp-check
    balance roundrobin
    server master1  10.0.42.1:6443 check
    server master2  10.0.42.2:6443 check
    server master3  10.0.42.3:6443 checkLa partie global a l'exacte configuration par défaut. J'ai touché à rien.
Dans defaults, j'ai changé le mode de proxy pour le passer de http à tcp.
Les parties frontend et backend regroupent les configurations qui vont bien pour permettre à HAProxy de faire ce que je lui demande. Vous devriez pouvoir recopier tout ça en prenant seulement le soin de changer les IP des masters.
Pour comprendre plus clairement la configuration de HAproxy, je vous redirige vers cet excellent billet de Victor HÉRY.
Une fois configurés, n'oubliez pas de redémarrer les HAProxy sur tous les serveurs et de vérifier qu'ils écoutent bien sur le bon port :root@k8smaster1:~# nc -v localhost 5443
localhost [127.0.0.1] 5443 (?) openAstuce : pensez à installer hatop. C'est vraiment super ! Pour le lancer :hatop -s /var/run/haproxy/admin.sockPour le moment, tout sera down, mais une fois le premier master en état, il apparaîtra UP.
On va maintenant initialiser le premier master :kubeadm init --config=kubeadm-config.yamlUne fois terminé, vous allez récupérer les informations classiques : le join qui va bien.kubeadm join 127.0.0.1:5443 --token a1o01x.tokenblabla --discovery-token-ca-cert-hash sha256:blablablablalblawhateverlablablameans --experimental-control-planeNotez que l'IP de l'API est bien 127.0.0.1 avec le port spécifié à HAProxy. C'est tout bon ! Faites un tour dans hatop et remarquez que le backend du master1 est enfin marqué comme étant UP.
Un get nodes vous confirmera l'arrivée du master1 et un get pods vous montrera les conteneurs de base.
Installons maintenant Flannel, toujours aussi simplement :
kubectl apply -f https://github.com/coreos/flannel/raw/master/Documentation/kube-flannel.ymlEt on aura un premier master en état de fonctionner !
Pour configurer les deux autres masters, il va falloir jouer du SCP. La doc officielle fournit 2 scripts bash que vous pouvez utiliser. Je ne m'étends pas sur le sujet ici et j’enchaîne sur la configuration des autres masters. Pensez quand même à bien configurer SSH et votre user de base.
Une fois que tout est copié, vous n'avez qu'à lancer la commande join sur les masters restant, un par un, et voir le résultat :
dada@k8smaster1:~$ k get nodes
NAME         STATUS   ROLES    AGE   VERSION
k8smaster1   Ready    master   12h   v1.13.1
k8smaster2   Ready    master   11h   v1.13.1
k8smaster3   Ready    master   11h   v1.13.1Ou encore :dada@k8smaster1:~$ k get pods --all-namespaces
NAMESPACE     NAME                                 READY   STATUS    RESTARTS   AGE
kube-system   coredns-86c58d9df4-cx4b7             1/1     Running   0          12h
kube-system   coredns-86c58d9df4-xf8kb             1/1     Running   0          12h
kube-system   etcd-k8smaster1                      1/1     Running   0          12h
kube-system   etcd-k8smaster2                      1/1     Running   0          11h
kube-system   etcd-k8smaster3                      1/1     Running   0          11h
kube-system   kube-apiserver-k8smaster1            1/1     Running   0          12h
kube-system   kube-apiserver-k8smaster2            1/1     Running   0          11h
kube-system   kube-apiserver-k8smaster3            1/1     Running   0          11h
kube-system   kube-controller-manager-k8smaster1   1/1     Running   1          12h
kube-system   kube-controller-manager-k8smaster2   1/1     Running   0          11h
kube-system   kube-controller-manager-k8smaster3   1/1     Running   0          11h
kube-system   kube-flannel-ds-amd64-55p4t          1/1     Running   1          11h
kube-system   kube-flannel-ds-amd64-g7btx          1/1     Running   0          12h
kube-system   kube-flannel-ds-amd64-knjk4          1/1     Running   2          11h
kube-system   kube-proxy-899l8                     1/1     Running   0          12h
kube-system   kube-proxy-djj9x                     1/1     Running   0          11h
kube-system   kube-proxy-tm289                     1/1     Running   0          11h
kube-system   kube-scheduler-k8smaster1            1/1     Running   1          12h
kube-system   kube-scheduler-k8smaster2            1/1     Running   0          11h
kube-system   kube-scheduler-k8smaster3            1/1     Running   0          11hUn dernier tour sur hatop pour admirer la présence de tous vos backends enfin marqué UP.

Vous avez maintenant un cluster k8s en HA ! La suite serait peut-être de vous raconter comment sortir ETCd du cluster pour le mettre en place dans un cluster séparé dédié, mais non. Ce billet est déjà bien assez long.
Si tout ne se passe pas comme prévu, pensez à regarder la documentation officielle. Mon billet n'est qu'un complément qui peut contenir des coquilles. Pensez aussi à bien vérifier la configuration de votre firewall, ou encore de HAProxy, ou encore de Docker, ou encore votre VPN parce qu'on ne laisse pas tout traîner sur le réseau. Bref.



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

Articles similaires

Marty : KooZic : sortie de la v1.1.0

Alors que KooZic a fêté discrètement ses 2 ans, le développement continue son petit bonhomme de chemin, avec comme à l'habitude une release emballée rapidement mais un article qui traîne à s'écrire. Bref, développer des fonctionnalités c'est marrant, mais rédiger un bel article les expliquant ça l'est moins.Listes de lecture intelligentes et dynamiques

Le concept de liste de lecture intelligente est dans les tuyaux depuis un bon moment déjà. Rien de révolutionnaire par rapport à d'autres softs : KooZic va créer automatiquement une liste de lecture sur base d'un des modes supportés&nbsp:

  • Aléatoire
  • Déjà joué
  • Jamais joué
  • Le plus joué
  • Dernièrement écouté
  • Récent
  • Favoris
  • Le mieux noté
  • Le moins bien noté

Par défaut, la liste est statique, c'est-à-dire qu'un nombre défini de titres est ajouté. Il est également possible de définir la liste comme étant dynamique. Dans ce cas, une piste est automatiquement ajoutée au fur et à mesure qu'on avance dans la liste de lecture.

Partage de la bibliothèque musicale

Jusqu'à la v1.0.0, chaque utilisateur avait sa propre collection musicale. D'un point de vue technique, cela rend les choses plus simples à gérer : chacun ses fichiers, ses titres, ses albums et ses artistes. De plus pas de mélange, et on ne retrouve pas dans sa collection de jazz les albums de sa petite sœur. Cependant, si plusieurs utilisateurs doivent accéder à la même collection musicale, cela veut dire ajouter la même collection pour chacun d'eux. Si de nombreux utilisateurs doivent accéder à la même collection, cela peut poser problème car la base de données est remplie de redondances.

Avec la v1.1.0, une option est introduite pour partager la collection musicale entre utilisateurs. Attention, c'est tout ou rien : soit chacun a sa propre collection, soit on partage tout. Les données relatives au nombre d'écoutes, les favoris, etc. restent tout de même spécifiques à chaque utilisateur. Notez qu'il n'est pas dans la roadmap de pouvoir gérer plus finement les accès. Cela deviendrait vite une usine à gaz pour une utilité assez limitée.

Autres Nouveautés

Les options de la liste de lecture ont légèrement été réorganisées pour plus de clarté. Par ailleurs, les pochettes d'album intégrées sont à présent utilisées si aucun fichier "cover", "front" ou "folder" n'est présent. Dans la vue par dossier, il est désormais possible d'ajouter les pistes récursivement.

Une option a aussi été ajoutée pour ignorer les tags ID3 sur un répertoire. Cela rendra l'analyse beaucoup plus rapides pour ceux qui ne les utilisent pas. Par contre, cela signifie que seule la vue par répertoire contiendra des informations. Les vues pistes, albums, artistes et genres resteront vides.

Finalement, l'ordre des transcoders est maintenant pris en compte lors du streaming. Auparavant, Opus était le format par défaut, suivi par Ogg et MP3. Dorénavant, le format par défaut sera celui du transcoder ayant la plus haute priorité. Dans le doute, ne touchez à rien ;-)

Mise-à-jour d'une installation existante

La v1.1.0 est compatible avec les versions précédentes. Pour mettre à jour (attention, l'adresse a changé) :

curl https://raw.githubusercontent.com/DocMarty84/koozic_install/v1/koozic_install.py > k_install.py chmod +x k_install.py sudo ./k_install.py install

N'hésitez pas à soumettre un problème sur Github si nécessaire !

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

Thuban : Syspatch : patch kernel - recvwait - multi-arch - 6.3+6.4

Un nouveau correctif, hier soir, de l'équipe d'OpenBSD touchant le noyau :

- recvwait : le noyau peut paniquer lorsque recv(2) utilisé avec le drapeau MSG_WAITALL reçoit des messages de contrôle à partir d'une socket - 6.4 : patch n°9 ; 6.3 : patch n°26

Le redémarrage de votre machine est nécessaire, car il touche le noyau.

Architectures concernées : amd64, arm64 et i386

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

Carl Chenet : Les meilleurs médias francophones du Logiciel Libre

Ceux qui suivent régulièrement ce blog le savent : j’adore mettre en avant l’extraordinaire travail de la communauté FOSS francophone. D’où ce billet en forme de récapitulatif des meilleurs médias francophones du Logiciel Libre et Open source.

Pourquoi cette liste ?

Pris comme nous le sommes dans nos vies professionnelles et personnelles, il est simple de passer à côté d’un nouveau média prometteur ou d’un blog sympa. Coincés dans nos habitudes, nous n’allons pas toujours fureter en dehors de nos sources d’informations habituelles, souvent à tort.

Les étudiants et jeunes diplômés qui découvrent la scène francophone y trouveront aussi leur compte, avec une vue générale de cette scène francophone qui leur permettra de trouver les médias qui leur conviennent.

LinuxFR

LinuxFR aborde à peu près tous les sujets liés au Logiciel Libre et Open Source. Avec presque 20 ans d’activités, la communauté autour du site est massive. Vous pouvez rédiger vous-mêmes des articles à destination des lecteurs et/ou y maintenir un journal personnel autour de vos activités FOSS. Il est souvent utilisé pour annoncer des nouveaux projets ou avertir la communauté d’évolutions majeures d’un projet.

Les plus :

  • publier des annonces sur la vie de vos projets
  • nourrir un journal sur les avancés de vos projets
Le Journal du hacker

Agrégateur de la communauté FOSS francophone, le Journal du hacker permet à ses contributeurs de proposer des liens et de voter afin de déterminer les plus pertinents qui vont gagner en visibilité.

Les liens proviennent d’autres médias FOSS, mais aussi de médias généralistes et de la communauté des bloggeurs francophones, qu’ils soient des particuliers ou des entreprises. Les liens sont relayés vers Mastodon, Diaspora* et Twitter.

Les plus :

  • relayer largement des articles via le site et ses réseaux sociaux
  • contribuer à mettre en avant les articles les plus intéressants pour la communauté
Developpez.com

Site historique parlant de façon générale d’informatique, Developpez.com suit de très près l’actualité FOSS et est souvent le premier à produire des articles francophones sur des sujets chauds.

Même s’il est aujourd’hui concurrencé sur le FOSS sur certains sujets comme Numerama ou Zdnet, il reste une référence et un important producteur de contenu francophone.

Les plus :

  • premier à produire des articles francophones sur des sujets FOSS chauds
Framablog

Le Framablog, blog officiel de Framasoft, publie très régulièrement un contenu très important sur les questions des alternatives aux logiciels propriétaires et aux plateformes fermées, mais aussi de libertés individuelles et de vie privée.

Produisant du contenu en rapport direct avec le FOSS au sein de notre société, le Framablog est un incontournable de la communauté FOSS francophone.

Les plus :

  • articles fouillés
  • transcriptions de conférence
  • traitent des questions de fond
  • contenu souvent original, même hors de la communauté francophone
l’April

L’April est une association visant à promouvoir et défendre le Logiciel Libre. Et il en a souvent bien besoin ! Soutien indéfectible du Logiciel Libre, l’April produit régulièrement du contenu original à suivre si ces questions vous intéressent.

Les plus :

  • complète la vision technique du FOSS par son côté idéologique et politique
La Quadrature du Net

La Quadrature du Net promeut et défend les libertés fondamentales dans l’environnement numérique. Elle étudie par exemple les nouveaux textes de loi et déterminent les aspects liberticides de ceux-ci avant d’organiser le combat pour la défense des libertés fondamentales. Une tâche difficile et ingrate que le  FOSS en France est bien heureux que la Quadrature du net mène, vu le nombre d’attaques et d’incohérences votées par nos chers représentants.

Les plus :

  • contenu original en rapport avec l’actualité legislative et politique
  • lève les alertes auprès de la communauté FOSS
Le Courrier du hacker

Le Courrier du hacker (j’en suis le fondateur) se propose de résumer l’actualité francophone du Logiciel Libre et Open Source en un e-mail chaque semaine publié le vendredi,  avec aujourd’hui plus de 60 numéros publiés et plus de 2000 abonnés.

Réalisé à partir des meilleurs articles de la semaine passée, vous pouvez ainsi obtenir une bonne base en une quinzaine de liens directement dans vos e-mails en fin de semaine. Vous y retrouverez des articles en provenance de la plupart des médias présentés dans cet article.

Idéal donc pour se tenir au courant de l’actualité FOSS francophone sans investir beaucoup de temps.

Vous pouvez vous y abonner juste ci-dessous.

E-mail Submit

Les plus :

  • contenu dense et déjà choisi
  • directement dans la boîte à e-mail
En conclusion

Cet article offre une sélection des meilleurs médias FOSS francophones afin de vous aider dans la réalisation de votre veille, qu’elle soit technologique ou idéologique dans le domaine du Logiciel Libre et Open Source.

Il était impossible d’être exhaustif pour que l’article reste lisible, toutes mes excuses donc à tout ceux que je n’ai pas pu citer. Mais j’ai cité des médias sur lesquels on peut voir passer tous les producteurs de contenu. Et bien sûr si l’article plaît, je n’hésiterais pas à en écrire un prochain mettant en avant d’autres aspects de la communauté FOSS francophone.

L’auteur

Carl Chenet est un acteur de la communauté du Logiciel Libre et Open Source francophone, fondateur du Journal du hacker, du Courrier du hacker et du site d’emploi LinuxJobs.fr. Il a écrit et maintient également de nombreux logiciels libres.

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 :

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

Articles similaires

Dimitri Robert : GIMP : détourage par contraste avec un masque de calque

C’est le retour du palmier qui fut le héros de précédents tutoriels, notamment celui du détourage avec l’outil d’extraction de premier plan. Mais cet outil a évolué dans la version 2.10 de GIMP et fonctionne différemment, et pour des résultats qui semblent de moins bonne qualité (à creuser).

Finalement, ne pourrait-on pas se passer d’outil de détourage ? Finalement, c’est le contraste entre le fond et le premier plan qui permet d’isoler ce dernier.

Voici donc une technique originale : le détourage par contraste. Cela consiste à créer un masque de calque initialisé avec une copie du calque en niveaux de gris. Ainsi le calque se masque lui-même. Il ne reste alors qu’à utiliser l’outil Niveaux pour forcer le contraste, pour que le fond devienne noir et le premier plan blanc avec un peu de nuances entre les deux.

Et le résultat s’avère meilleur qu’avec l’outil Extraction de premier plan !

Voici comment faire en vidéo.

L’article GIMP : détourage par contraste avec un masque de calque est apparu en premier sur Formation logiciel libre.

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

Articles similaires

genma : Astuces Debian

Quelques astuces et commandes que je ne connaissais pas, que j'ai découverte et que je veux partager.

Automatiser la mise à jour apt en conservant les actuels fichiers de configuration

Issu du site bggofurther.com, dont je recopie le billet ici :
Lorsqu'une mise à jour est faite sur un serveur Debian/Ubuntu, si un paquet essaie de modifier un fichier de configuration, un choix manuel est requis. Si vous essayez d'automatiser le processus, vous souhaitez probablement éviter cette question and conserver la configuration actuelle par défaut.

#!/bin/bash
apt-get update
listUpgrades=`apt list --upgradable |grep upgradable |cut -d/ -f1`
execUpgrades="DEBIAN_FRONTEND=noninteractive apt-get --yes --assume-yes -o DPkg::options::=\\"--force-confdef\\" -o DPkg::options::=\\"--force-confold\\" --only-upgrade install "$listUpgrades
eval $execUpgrades

Les différentes options vont forcer la mise à jour à conserver la configuration actuelle et ne pas l'écraser avec celle par défaut du package.

debsum

Debsum est un programme qui va comparer la signature des paquets installés (comparaison du MD5 checksum) avec une liste de référence qui se trouve dans les fichiers /var/lib/dpkg/info/*.md5sums.

Utile pour vérifier l'intégralité d'un binaire dans le cas d'une machine potentiellement compromise (voir par exemple à ce sujet
Devenir SysAdmin d'une PME - Mineur de bitcoin- Billet n°2

Il faut bien évidemment que les fichiers /var/lib/dpkg/info/*.md5sums n'est pas été compromis par un attaquant.

debsecan

Debscan permet de générer une liste des vulnérabilités présentes sur une machine (serveur ou machine personnel) avec les numéros de CVE correspondants.

Pour avoir un article détaillé sur ce programme, voir Debsecan, le paquet qui fait peur sur le Blog-libre de Cascador, il faut également lire les commentaires avec un commentaire de Raphael Hertzog (auteur du livre Debian Administrator's Handbook).

checkrestart

Outil qui se trouve dans le paquet debian-goodies. checkrestart permet de vérifier quels services utilisent des librairies mises à jour depuis le lancement du service, et qu'il faudrait donc redémarrer pour prendre en compte ces mises à jour.

Voir sur cet utilitaire CheckRestart, outil pratique de debian-goodies, et version Octopuce

Autre façon de savoir s'il faut redémarrer un serveur, la présence du fichier /var/run/reboot-required qui indique que la prise en compte de la mise à jour du noyau (par exemple) nécessite un redémarrage de la machine.

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

Articles similaires

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

Pour la 50ème semaine de l'année 2018, 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 ou bien dans les commentaires de ce billet :)

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

Articles similaires

Paul Ezvan : Conversion de type avec PostgreSQL

Tous les jours je reçois un message d'erreur généré par le script cron de mon logiciel de webmail Roundcube:

ERROR: [7] ERROR: operator does not exist: boolean = integer LINE 1: DELETE FROM "contactgroups" WHERE "del" = 1 AND "changed" < ... ^ HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts. (SQL Query: DELETE FROM "contactgroups" WHERE "del" = 1 AND "changed" < '2018-12-04 00:00:00')

Il semble que l'erreur soit causée par une incompatibilité entre le schéma de la base de données et la requête SQL utilisée par le script de nettoyage.

Pour administrer mes bases de données PostgreSQL simplement j'utilise le logiciel web phpPgAdmin. En observant le schéma de la table contactgroups je note que le type de la colonne del est boolean. C'est incompatible avec la requête DELETE FROM "contactgroups" WHERE "del" = 1 car del devrait être un nombre entier (un int). PostreSQL est tâtillon avec les types, et ne convertit pas un entier en booléen implicitement, ce qui cause l'erreur.

J'avais importé cette base depuis MySQL vers PostgreSQL, ce qui a pu causer quelques incohérences avec la schéma attendu par Roundcube. Je vérifie que c'est le cas en comparant avec le schéma fourni par Roundcube pour créer une base :

CREATE TABLE contactgroups ( contactgroup_id integer DEFAULT nextval('contactgroups_seq'::text) PRIMARY KEY, user_id integer NOT NULL REFERENCES users(user_id) ON DELETE CASCADE ON UPDATE CASCADE, changed timestamp with time zone DEFAULT now() NOT NULL, del smallint NOT NULL DEFAULT 0, name varchar(128) NOT NULL DEFAULT '' );

En effet dans ce schéma la colonne del est de type smallint. Je vais donc modifier le schéma de la table pour utiliser le type smallint à la place de boolean à l'aide du client psql.

roundcube=> ALTER TABLE "public"."contactgroups" ALTER COLUMN "del" TYPE smallint; ERROR: column "del" cannot be cast automatically to type smallint ASTUCE : You might need to specify "USING del::smallint".

Malheureusement la conversion échoue ! En effet PostgreSQL ne sait pas comment convertir un booléen en entier.

On peut donc lui indiquer:

roundcube=> ALTER TABLE "public"."contactgroups" roundcube-> ALTER COLUMN "del" TYPE smallint roundcube-> USING CASE WHEN del=FALSE then 0 roundcube-> WHEN del=TRUE then 1 roundcube-> else NULL roundcube-> END; ERROR: default for column "del" cannot be cast automatically to type smallint

Nouvelle erreur ! Cette fois c'est la valeur par défaut du champ, configurée à FALSE, qui ne peut pas être convertie. Le plus simple est de supprimer la valeur par défaut, effectuer la conversion, puis rajouter une valeur par défaut.

roundcube=> ALTER TABLE "public"."contactgroups" ALTER COLUMN "del" DROP DEFAULT; ALTER TABLE roundcube=> ALTER TABLE "public"."contactgroups" ALTER COLUMN "del" TYPE smallint USING CASE WHEN del=FALSE then 0 WHEN del=TRUE then 1 else NULL END; ALTER TABLE roundcube=> ALTER TABLE "public"."contactgroups" ALTER COLUMN "del" SET DEFAULT 0; ALTER TABLE

Et voilà, pas de problème cette fois !

Modifier le schéma d'une base de données peut amener à se soucier de nombreuses subtilités. Ces opérations sont délicates et il vaut mieux toujours tester avant de réaliser ce type d'opération en production.

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

Morot : Mémo openssl

Création :

Générer une clé privée :

openssl genrsa -out key.pem 2048

Générer un CSR à partir d’une clé existante :

openssl req -out csr.csr -key key.pem -new

Générer une nouvelle clé et un CSR :

openssl req -out csr.csr -new -newkey rsa:2048 -nodes -keyout key.pem

Générer un certificat auto-signé :

openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout key.pem -out certificate.crt -days 365

Générer un CSR sur la base d’un certificat et d’une clé existants :

openssl x509 -x509toreq -in certificate.crt -signkey key.pem -out csr.csr

Retirer la pass-phrase d’une clé privée :

openssl rsa -in key.pem -out newkey.pem Informations sur un certificat :

Obtenir la date d’expiration :

openssl x509 -noout -in certificate.crt -dates

Obtenir le signataire d’un certificat :

openssl x509 -noout -in certificate.crt -issuer Vérification des certificats :

Vérifier qu’une clé privée et un CSR correspondent :

openssl rsa -noout -modulus -in key.pem | openssl md5 openssl req -noout -modulus -in csr.txt | openssl md5

Vérifier qu’une clé privée et un certificat correspondent :

openssl x509 -noout -modulus -in cert.crt | openssl md5 openssl rsa -noout -modulus -in key.pem | openssl md5

Vérifier un CSR :

openssl req -text -noout -verify -in csr.csr

Vérifier une clé privée :

openssl rsa -in key.pem -check

Vérifier un certificat :

openssl x509 -in certificate.crt -text -noout

Vérifier un certificat PKCS12 :

openssl pkcs12 -info -in store.p12 Tester une connexion à un serveur :

Vérifier une connexion et la chaîne de confiance sur un port TCP :

openssl s_client -connect host:443

Vérifier la prise en charge de SSLv2, SSLv3, TLS1.0, TLS1.1 et TLS1.2 :

openssl s_client -connect host:443 -ssl2 openssl s_client -connect host:443 –ssl3 openssl s_client -connect host:443 –tls1 openssl s_client -connect host:443 –tls1_1 openssl s_client -connect host:443 –tls1_2

Vérifier la prise en charge d’un algorithme de chiffrement sur un serveur (openssl ciphers) :

openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect host:443 Conversions :

Convertir un PEM en DER :

openssl x509 -outform der -in certificate.crt -out certificate.der

Convertir un DER en PEM :

openssl x509 -inform der -in certificate.der -out certificate.pem

Conversion PEM en PKCS12 :

openssl pkcs12 -export -inkey key.pem -in certificate.crt -name SuperCertificat -out store.p12

Conversion PKCS12 en PEM :

openssl pkcs12 -in store.p12 -out store.pem -nodes

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

Articles similaires

Cenwen : Me Gamer and Linux User = Impossible Mission ? Not exactly. Part 6

Dans le dernier opus, nous traitions des périphériques tel que les casques sans toutefois avoir parler des jeux proprement dis. Et que dire de l’actualité de ces derniers jours. Et comme d’habitude, de fil en aiguilles, on se rend compte que l’éco-système est bien plus riche qu’on le croyais. En effet, si je vous dis GGKBDD ou Epic Games ou Steam ou encore Cougar. Et bien d’autres encore. A quoi pensez-vous  ? La réponse maintenant. 

Avant de commencer, une nouvelle importante pour tous les utilisateurs des dernières cartes graphiques AMD Radeon RX590 sorties mi-Novembre. Bien que du code les concernant avait été inclus dans le noyau en Septembre dernier, les développeurs Linux d’AMD ont eu la désagréable surprise d’avoir un bogue empêchant le fonctionnement tout court de ces cartes quelque soit le pilote graphique utilisé. Ceci était due à une modification du BIOS de ces cartes sur la ligne d’assemblage. Si la découverte du bogue a été presque immédiate dès la sortie, sa correction a demandé plus de temps et vient d’être annoncé ce . Ces patches pour l’AMDGPU seront inclus dans le noyau en cours (le 4.20) et une demande pour le noyau 4.19 a été émise. C’est donc une grande nouvelle pour les possesseurs de ces cartes graphiques.

Pour la petite info toute fraîche, AMD a envoyé toute une série de nouveau PCI ID concernant les Vegas 20 (0X66A4) et 10 (0X6869, 0X686A0X686B0X686D0X686E0X686F) à inclure dans le driver Linux. Cela ne signifie pas forcément que 7 nouvelles cartes vont sortir l’année prochaine mais en tout cas, il y aura de la nouveauté de ce côté. Nous en serons plus lors du CES à las Vegas mais des rumeurs non confirmées annoncent 3 nouvelles cartes qui vont venir concurrencer les best-off de Nvidia.

Le clavier Cougar 700K est un clavier mécanique avec une structure en aluminium et des switches mécanique MX, des Leds et des touches spéciales gaming. Au début de l’année, un nouveau driver HID a été inclus dans le Kernel 4.19 pour supporter le Cougar 500K de la marque. Dans le cycle en cours (Kernel 4.21), ce driver a été mis à jour afin de supporter toutes les fonctionnalités du 700K.

Peter Hutterer de Red Hat a créé GGKBDD en tant que daemon générique pour les claviers Gaming pour les systèmes Linux.
Ne vous emballez pas trop vite pour l’instant, il s’agit plus d’une ébauche de validation d’un concept qu’un programme/librairie fonctionnel. Même le nom est temporaire. Mais, si cela se confirme, cela sera vraiment très intéressant. Après, c’est en Python3. L’utilisation de ce langage (contrairement à du C ou du C++) touchera plus de monde qui soit susceptible de participer et donc de développer ce projet en quelque chose de concret rapidement.
A quand la même chose pour les souris, les casques,… ?

Un petit mot sur ce développeur de Red Had, Peter Hutterer. Ce nom ne vous est peut-être pas inconnu. En effet, ce talentueux développeur, spécialiste de « l’input » est l’auteur de nombreuses librairies pour piloter nos périphériques d’entrée dont nous tirons partie tous les jours. Libwacon, Tuhi, libratbag, libevdev, libinput, openRazer, … ont, entre autre, bénéficié de ses talents. La liste des projets sur lesquels il a travaillé est longue. Impressionnant.

Une autre nouvelle très importante: Epics Games a officiellement lancé leur nouveau « Game Store » (magasin en ligne) en tant qu’alternative à celui de Steam. Jusqu’à présent, le magasin existant ne supportait que Windows et MacOS. Courant 2019, il supportera aussi Android et les autres plateformes ouvertes (donc nous). Avec 12% du marché des jeux, l’arrivée de ce nouvel acteur va ouvrir de nouvelles perspectives pour nous autres Linuxiens Gamers.

Puisque nous parlons magasin en ligne de jeux, il serait inconcevable de ma part de parler de Steam et de son Steam Store. Depuis l’arrivée de Windows 8, Valve  a fait de gros efforts pour porter son Steam Store sous Linux. D’ailleurs, voici une liste du nombre de jeux tournant nativement sous Linux. Et je n’ai pas parlé des projets tel que Wine ou bien Playonlinux. Mais nous y reviendrons dans un instant avec un autre projet de Steam: Proton.

Puisque nous parlons des magasins de Jeux sous Linux, il serait indécent de ma part de ne pas mentionner de Lutris, Desura semble être un projet mort. Il faut aussi citer deux autres sites recensent l’actualité des jeux : Le bottin des Jeux Linux (3700 jeux) et GamingOnLinux.

Gnome Twitch est un client Linux pour la plateforme de streaming et de vidéos en ligne des joueurs enregistrant leurs parties de jeux : Twitch. Noter cependant qu’il n’a pas été mis à jour depuis 2 ans.

Sous Manjaro, vous l’installez de la manière suivante:

sudo pacman -S gnome-twitch

Voici une autre solution pour ceux qui ne veulent pas utiliser Gnome-twitch : Orion. Ce logiciel en QML/QT offre non seulement un client Twitch pour le bureau mais celui-ci offre en plus la VOD et le tchat et bien autres choses aussi.

Si vous voulez l’installer, vous avez à votre disposition la version stable mais aussi, pour les plus intrépides la version de développement disponibles sur AUR. Comme d’habitude, voici les commandes magiques:

yaourt -S orion

yaourt -S orion-git

Après Orion, voici une autre découverte faite cette semaine : Moonlight. Il s’agit d’une implémentation open source de NVidia GameStream.  Attention, cette version est une réécriture du programme en QT. L’ancienne version était elle, en Java.

Si vous voulez l’installer, vous avez à votre disposition la version stable mais aussi, pour les plus intrépides la version de développement disponibles sur AUR. Faites très attention pour prendre la bonne version. Comme d’habitude, voici les commandes magiques:

yaourt -S moonlight-qt

yaourt -S moonlight-qt-git

Voici maintenant deux logiciels indispensables pour jouer sous Linux comme nos collègues Windowsiens. Commençons par le premier: Mumble

Logiciel destiné plus particulièrement aux joueurs de tout poil mais pas que, Mumble est un logiciel libre performant de communications vocale (VOIP=Voices Over Internet Protocol) qui a la différence de son concurrent non libre Teamspeak utilise non seulement le serveur de son OSS, mais aussi Alsa et PulseAudio. Si vous êtes un gamer, c’est LE LOGICIEL A AVOIR lors de vos parties de jeux. Il se connecte à un serveur Murmur au protocole ouvert utilisant une répartition distribuée.  Chacun peut donc créer, si besoin est, son propre serveur.

Sous Manjaro, vous les installez de la manière suivante:

sudo pacman -S mumble murmur

Si vous désirez les versions de développement et bien plus encore, celles-ci sont disponibles sur AUR. Une simple recherche de type mumble dans votre gestionnaire de paquets graphiques vous en montrera toute l’étendue. Amusez-vous bien.

Passons maintenant à notre deuxième logiciel et quel logiciel car il offre la possibilité de profitez des jeux Windows de telle manière qu’on en oublierait que l’on se trouve sous Linux. Valve la société derrière la plateforme de jeux en ligne Steam a crée Proton le bien nommé.Sortie pendant les grandes vacances de cette année, on pourrait croire que la nouvelle aurait pu passée inaperçu. Que nenni. Ce nouvel outil est en train de révolutionner le Gaming pour Nous.Intégré à Steam, Proton est une version optimisée de Wine  afin de faciliter l’installation des jeux sous Linux, y compris ceux conçus pour Windows. Et ce n’est pas rien. Pour cela, il inclus deux autres outils: DXKV et vkd3d. Ce sont deux émulateurs DX11 et DX12 basé sur Vulkan le remplaçant de OpenGL.

La base de donnée ProtonDB (à garder dans vos marques pages et à consulter régulièrement) dont vous voyez une capture écran juste au-dessus recense la compatibilité des jeux à l’aide d’un code couleur et d’une appellation liée à celui-ci.Au bas de l’échelle, nous avons le rouge (Borked) pour un jeu ne fonctionnant pas du tout. Puis, nous passons en bronze (Bronze+) pour un jeu ayant des bogues majeurs, en argent (Silver+) pour un jeu jouable mais avec quelques anomalies. Ensuite, nous avons gold (Gold+) pour une jeu fonctionnant avec quelques réglages et enfin nous avons platinium (Platinium+) pour un jeu fonctionnant sans aucun réglage. A ce jour, 3131 jeux fonctionnent avec près de 23500 rapports écris sur 5718 jeux testés. C’est énorme.Chaque jeu dispose de son rapport réalisé par les utilisateurs testeurs. Outre les commentaires de ceux-ci, sont notamment préciser des informations importantes tel que la distribution utilisée, le noyau, les pilotes graphiques,… Pour les plus accros, cette base de données fournit aussi des données très utiles à cet endroit. Pour chaque catégorie de compatibilité, on y retrouve en effet :

  • la version de Proton utilisée
  • la distribution utilisée

  • le type de GPU utilisé
  • la version des pilotes graphiques utilisée

Et bien d’autres informations.Et comme tout projet libre, vous pouvez contribuer ici.Vous pouvez installer Proton et Steam sans aucun problème sous Manjaro car ils sont disponibles dans les dépôts officiels de la distribution et sur AUR. Tout dépendra de vos attentes. En attendant, pour ma part, ce sera:

sudo pacman -S steam-manjaro steam-devices && yaourt -S proton steam-fonts

Nous voici à la fin de sixième partie. Qui m’aurait dis l’année dernière (quand m’est venue l’idée de faire un article sur les périphériques gaming/Hardware) et sa division cette année en plusieurs parties (initialement 2) qu’il serait si grand, si étendue, si riche. Enfin, c’est ainsi. Après tout, le monde informatique évolue vite et les logiciels libres aussi. Et quand des sociétés s’y mettent, cela va encore plus vite. Amusez-vous bien.

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

Articles similaires

genma : Borg Checker, petit script Python sans prétention

Prérequis :
- Avoir déjà utilisé Borg
- Connaître Python, ou a minima savoir lire du code

Rôle de ce bout de code

L'objectif est de savoir si les sauvegardes lancées la nuit, reposant sur un script Borg, se sont bien passées. Pour cela, nous partons du principe que si une commande borg c'est bien lancée, dans la liste des sauvegardes renvoyées par Borg, on aura une sauvegarde portant le bon nom (le nom incluant la date du jour). Le nom de chaque sauvegarde est donc l'élément discriminant et est de la forme Documents_AAAA-MM-DD-HH:MM:SS. Exemple Documents_2018-10-31-10:10:10

Le script répond à notre besoin, à savoir éviter de faire un "borg list" sur X répertoires et nous renvoyer un OK quand on a une sauvegarde avec la bonne date, KO si il n'y a pas de sauvegarde ayant la date du jour et il indique le nombre de jours entre la dernière sauvegarde et la date du jour.

Pourquoi en Python et pas en bash ?

J'avais commencé à former mon Pandawan au Shell et nous aurions pu faire un script équivalent en shell. Mais je voulais aussi le former à des notions de programmation objet, lui montrer que l'on pouvait faire aussi des choses en Python et dérouiller mon propre Python. D'où le choix de ce langage.

Attention, nous ne sommes pas des spécialistes Python, nous savons juste faire des bouts de scripts & codes que nous saurons relire et améliorer dans plusieurs mois. Le but n'était pas de faire un code optimisé ultra efficace mais de faire quelque chose de lisible et réutilisable et maintenable, compréhensible par la première personne qui sait lire un peu de code.

Le code

[SauvegardeBorg]
Documents_Dossier_A = /Backup/Documents/Dossier_A/
Documents_Dossier_B = /Backup/Documents/Dossier_B/
Documents_Dossier_C = /Backup/Documents/Dossier_C/#!/usr/bin/python
# -*-coding:Utf-8 -*
import configparser
import sys
import os.path
import datetime

#===========================================================
# SCRIPT DE VALIDATION DES DIFFERENTES SAUVEGARDES
#==========================================================

#"------------------------------------------------------------
# Initialisation des chemins
# On a un fichier avec
# * en clef : la sauvegarde à valider
# * en valeur : le chemin dans lequel on vérifie la sauvegarde
# via le check de borg list avec une sauvegarde borg à la date du jour
config = configparser.ConfigParser()
config.optionxform = str
config.read('./Config.ini')
configsauvegardeBorg = config['SauvegardeBorg']

def fctCheckBorg():
print("==========================================")
print(" CHECK DES SAUVEGARDES BORG")
print("==========================================")

from datetime import datetime
# Lecture de tous les éléments de BorgBackupPath
for key,value in config.items('SauvegardeBorg'):
try:
borgCommand="borg list "+ value
sortie = os.popen(borgCommand).read()
tabBorgList = sortie.split("\\n")
number=len(tabBorgList) -2
# La ligne est de la forme
# Documents_2018-10-31-10:10:10 Wed, 2018-10-31 10:10:10 [b576a0703b7144be76afd2e2]
# On coupe pour trouver la date
lastBackupDate = tabBorgList[number].split(",")[1].split("[")[0].split(" ")[1]
# Conversion du String en Date
lastBackupDateToDate = datetime.strptime(lastBackupDate,'%Y-%M-%d')
# Récupération de la date du jour au bon format
now=datetime.strptime(datetime.now().strftime('%Y-%M-%d'),'%Y-%M-%d')
# Calcul du delta
delta = now - lastBackupDateToDate
if (delta.days == 0):
print(key, ": statut OK. Nombre de jours depuis la dernière sauvegarde : ", str(delta.days))
else:
print(key, ": statut KO. Nombre de jours depuis la dernière sauvegarde :", str(delta.days))
except Exception as e:
print("Erreur rencontree : ")
print(str(e))
continue
print("\\n")
return 0;

Exemple de résultat d'exécution

Le script se lance via

python3 BorgChecker.py

Résultat de l'exécution quand on a bien une sauvegarde qui s'est déroulée sur la nuit

Documents_Dossier_A : statut OK. Nombre de jours depuis la dernière sauvegarde : 0.
Documents_Dossier_B : statut OK. Nombre de jours depuis la dernière sauvegarde : 0.

Résultat de l'exécution quand on a bien une erreur (et le nombre de jours permet de détecter que le script ne tourne plus depuis X jours par exemple).

Documents_Dossier_C : statut KO. Nombre de jours depuis la dernière sauvegarde : 3.

Ainsi on sait que pour le dossier A et B, on a bien une sauvegarde. Pour le dossier C, il y a eu une erreur (vu que l'on a un K0) et il faudra donc aller analyser pour en savoir plus (coupure de réseau, lock qui a empêché la bonne exécution de Borg...)

Conclusion

Le code source et l'ensemble de cet article sont en licence CC BY SA, faites en ce que vous voulez. Si ça peut vous être utile, tant mieux ;)

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

genma : Rsync et Borg le couple gagnant ?

Nouveau billet de blog sur Borg comme outil de sauvegarde. Dans le présent billet, je voudrais développer un peu une procédure de sauvegarde que j'ai mise en place pour certains serveurs.

Sur une partition dédiée, un script créé une archive tar.gz à la date du jour pour les différents dossiers importants (/etc, /home, /var/www/). Un dump de la base de données est également fait et zippé en local. Ces archives ont une durée de rétention et de rotation sur 5 jours et permettent d'avoir rapidement les données accessibles si besoin depuis la machine.

Les dossiers importants (/etc, /home, /var/www) et les dumps de la base de donnée sont sauvegardés via un rsync à travers SSH sur un premier serveur de fichiers.

Suite à ça, un second script, lancé quotidiennement sur ce serveur de fichiers, effectue une sauvegarde via Borg de ces données (ensemble des fichiers synchronisés par rsync et dumps du jour) sur un espace disque situé sur un NAS / espace de stockage. Le script lançant la sauvegarde via Borg lance également la commande de purge qui permet d'avoir une conservation des données selon la règle suivante : conservation des données sur 7 jours (soit l'équivalent de 7 sauvegarde complète sur une semaine), conservation des données d'un jour de la semaine pendant 1 mois, conservation d'une sauvegarde du mois pendant 1 an.

Pourquoi ce schéma de sauvegarde ?

Les scripts rédigés se dupliquent facilement. Il suffit de créer un nouveau dossier racine pour un client, on duplique le script, le renomme, recherche et remplace dedans par le nouveau nom.

Le respect de la règle des 3-2-1

Pour rappel, voir mon billet Sauvegarde la règle des 3-2-1

On va même un peu plus loin car :
- on a 4 exemplaires de la donnée : la donné initiale (1), la donnée dans l'archive .tar.gz (2), la donnée copiée sur le serveur via rsync (3) et la donnée dans la sauvegarde borg (4).
- on a 3 systèmes de sauvegarde : tar.gz horodatée, rsync et borg
- on a 3 supports différents : un disque rattaché directement à la machine, un premier serveur situé sur un réseau autre que la machine sauvegardée, un volume NAS (soit un deuxième serveur).

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

Remi Collet : Installer PHP 7.3 sur CentOS, RHEL ou Fedora

Voici un guide rapide pour mettre à jour le PHP fournit par Fedora, RHEL ou CentOS par la dernière version 7.3.

 

Configuration des dépôts:

Sur Fedora, les dépôts standards sont suffisant, sur Enterprise Linux (RHEL, CentOS) il est aussi nécessaire de configurer le dépôt Extra Packages for Enterprise Linux (EPEL), et sur RHEL d'activer le canal optional.

Fedora 29 wget http://rpms.remirepo.net/fedora/remi-release-29.rpm dnf install remi-release-29.rpm Fedora 28 wget http://rpms.remirepo.net/fedora/remi-release-28.rpm dnf install remi-release-28.rpm RHEL version 8.0 Beta wget http://rpms.remirepo.net/enterprise/remi-release-8.rpm rpm -Uvh remi-release-8.rpm RHEL version 7.6 wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm subscription-manager repos --enable=rhel-7-server-optional-rpms RHEL version 6.10 wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm rhn-channel --add --channel=rhel-$(uname -i)-server-optional-6 CentOS version 7.6 wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm rpm -Uvh remi-release-7.rpm epel-release-latest-7.noarch.rpm CentOS version 6.10 wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm wget http://rpms.remirepo.net/enterprise/remi-release-6.rpm rpm -Uvh remi-release-6.rpm epel-release-latest-6.noarch.rpm

 

Utilisation du module php

Pour Fedora 29+ et RHEL-8 beta, il suffit d'utiliser le flux remi-7.3 du module php

dnf module install php:remi-7.3

 

Activation du dépôt remi-php73

Les paquets sont dans les dépôts remi-safe (activé par défaut) et remi-php73 qui n'est pas activé par défaut (choix de l'administrateur en fonction de la version de PHP souhaitée).

RHEL et CentOS yum install yum-utils yum-config-manager --enable remi-php73 Fedora dnf install dnf-plugins-core dnf config-manager --set-enabled remi-php73

 

Mise à jour de PHP

Par choix, les paquets ont le même nom que les paquets fournit par défaut avec le système, une simple mise à jour est donc suffisante :

yum update

Et c'est tout :)

$ php -v PHP 7.3.0 (cli) (built: Dec 4 2018 16:12:20) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.3.0, Copyright (c) 1999-2018, by Zend Technologies

 

Problèmes connus

La mise à jour peut échouer (c'est voulu) lorsque certaines extensions présentes ne sont pas encore compatibles avec PHP 7..3.

Voir la liste des compatibilité : PECL extensions RPM status

Si elles ne sont pas indispensables, vous pouvez les désinstaller avant la mise à  jour, sinon, il faudra patienter.

Attention : quelques extensions sont encore en phase de développement (xdebug...), mais il m'a semblé utile de les fournir afin de permettre la mise à jour au plus grand nombre, et aussi permettre leur test et des retours vers les auteurs.

 

Plus d'informations

Si vous souhaitez une installation en parallèle de la version par défaut de PHP, cela est possible en utilisant les paquets préfixés php73 Voir le billet PHP 7.3 en Software Collection.

Vous pouvez aussi utiliser le nouvel assistant de configuration.

Les paquets présents dans le dépôt ont été utilisés comme source pour Fedora 30 (la proposition de changement, a déjà été acceptée et est testable).

En fournissant une pile complète, environ 130 extensions disponibles, 5 versions de PHP, paquets de base et SCL, pour Fedora et Enterprise Linux, et avec 300 000 téléchargements par jour, le dépôt remi est devenu en 13 ans une référence pour les utilisateurs de PHP sur les distributions RPM, maintenu par un contributeur actif aux différents projets (Fedora, PHP, PECL...).

Et aussi :

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

Articles similaires

genma : Retour d'expérience avec Borg comme outil de sauvegarde

Borg est-il prêt pour faire des sauvegardes de la production ? En un mot, je répondrai oui. En plus détaillé, il y aura le présent billet de blog. Les personnes voulant plusieurs retours d'expériences et sachant lire l'anglais pourront se tourner vers de post Reddit Reddit - Is Borg backup suitable for the production ?

Le contexte

Borg est utilisable et utilisé en production par différentes personnes avec qui j'ai discuté. Dans mon cas, je l'utilise pour sauvegarder des fichiers de serveurs Linux (fichiers plats et binaires), et des dumps de base de données.

Quelques liens

La page la plus complète que l'on peut trouver en français sur le sujet de Borg est celle du wiki de Sebsauvage

Lors des JRES, Framasky, l'administrateur système qui gère les machines de Framasoft qui permettent au projet Degooglisons d'exister avait une conférence Quelle infrastructure pour dégoogliser Internet - JRES 2017 dans laquelle il parle, entre, des outils de sauvegarde et évoque Borg.

Une autre conférence est celle donnée par Maurice LIBES, Didier MALLARINO, Sauvegardes en mode dédupliquée avec Borg-Backup : retour d'expérience, le titre parle de lui-même.

Autre lien, en anglais sur les Sauvegardes de bases de données, Create daily database backups with Borg

Enfin, ayant créé des alias pour mes sauvegardes personnelles que je fais aussi avec Borg, suite au partage d'expérience de Djan Gicquel, je mets le lien vers son article Alias et fonctions pour Borgbackup (Djan Gicquel avait lui-même adopté Borg suite à mon article de présentation, la boucle est bouclée).

Un espace dédié par serveur

Borg permet de la déduplication et si un même fichier est présent sur plusieurs serveurs, il peut être tentant (utile) de profiter de cette déduplication en sauvegardant ces différents serveurs dans un même espace. Le fichier ne sera sauvegardé d'une fois, commun aux sauvegardes des différents serveurs et conservé tant qu'une sauvegarde de l'un des serveurs y fera référence.

Par contre, dans le cas d'un répo unique, il s'avère que
if you back them up into a single repo, you will have to frequently resync the chunks cache on each server and also you can't do backups in parallel to same repo.

ce que l'on peut traduire par le fait qu'il faudra régulièrement lancer la commande de resynchronisation du cache sur chaque serveur qui fait ses sauvegardes via Borg et il n'est pas possible de sauvegarder plusieurs serveurs en même temps sur le même répo.

Pour ne pas avoir ces contraintes j'ai donc fait le choix de faire une stratégie de sauvegarde avec un espace dédié par serveur (et avec des sous-répertoires pour avoir différents repo Borg pour les différents types de données des serveurs).

Sens des sauvegardes : Push vs Pull

Push Borg marche très bien vers SSH. Mais cela nécessite d'installer Borg sur chaque machine client pour envoyer les données à sauvegarder sur un espace de fichier sur un serveur dédié. A ce sujet, voir le billet de blog de Karolak sur monter un serveur de sauvegarde avec Borgbackup

Pull C'est la machine de stockage qui lance Borg et centralise les tâches Cron de sauvegarde. Il faut monter l'espace distant à sauvegarder via SSHFS et alors faire la sauvegarde.

Le choix de l'un ou de l'autre dépend de plusieurs choses dont un aspet sécuritaire.

Dans le cas du Push, chacune des machines à un accès SSH sur le serveur de Sauvegarde. La compromission de la machine sauvegardée permet par rebond d'accéder à la machine de sauvegarde. Dans le cas du Pull, le serveur de sauvegarde a lui accès à toutes les machines et la compromission de ce dernier permet par rebond d'accéder à toutes les machines sauvegardées...

Dans le cas du Push, le client ne peut avoir accès qu'en "append" sur le serveur de backup et le serveur de backup n'a pas accès sur la machine client.

Quelques remarques

Prenons le cas de la sauvegarde d'un site web que l'on sauvegarde avec Borg. La déduplication marche quand les fichiers restent inchangés. Pour les dumps de la base de données, si il y a eu le moindre changement dans la base, le dump est différent et il sera vu comme un nouveau fichier. On profitera toutefois de la compression de Borg permettant un gain de place pour la sauvegarde et du fait que Borg découpe le fichier en chunk, et que les parties communes du fichier dump ne seront pas dédupliquées.

Les limites

On ne peut sauvegarder que des fichiers statiques. Même si Borg est rapide, une sauvegarde avec Borg prend un certain temps et le fichier ne doit pas avoir été modifié durant le laps de temps que dure la sauvegarde, sinon cela peut rendre la sauvegarde de ce dernier inconsistante.

Il n'y a pour l'instant pas d'interface graphique pour la gestion des sauvegardes, même si un projet Borg Web a été initié et repris par une start-up (ce sera le sujet d'un autre billet de blog. J'ai testé le projet en développement BorgWeb sans réussir à le faire fonctionner).

Améliorations à prévoir

Dans les améliorations que je prévois dans mon usage de Borg, il y a celui d'utiliser Borgomatic pour la création des configuration de sauvegardes. Car actuellement, je passe par la copie d'un script de référence contenant les lignes de sauvegarde et de conservation (option prune) que j'adapte au cas par cas...

Il existe des scripts pour Nagios et pour Zabbix qui vérifie la présence des sauvegardes et alertes si celle-ci sont manquantes. Je n'ai pas encore utilisé le plugin Zabbix (https://github.com/theranger/zabbix-borg) et c'est prévu

De même Borg peut s'interfacer avec l'outil BackupNinja. Là encore, c'est dans ma todo d'étudier ça.

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

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

Pour la 49ème semaine de l'année 2018, voici 16 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 ou bien dans les commentaires de ce billet :)

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

Articles similaires

Pages