PROJET AUTOBLOG


Le blog de Seboss666

Site original : Le blog de Seboss666

⇐ retour index

Mise à jour

Mise à jour de la base de données, veuillez patienter...

Goreplay, un utilitaire diablement pratique à essayer (et adopter)

lundi 18 février 2019 à 18:30

Dans le cadre de tests d’une nouvelle plate-forme pour un client, j’ai voulu observer le comportement en temps réel avec du trafic public existant. En cherchant mes options je suis tombé sur goreplay, et je ne peux que vous inviter à l’essayer.

Comme son nom l’indique, Goreplay est un utilitaire écrit en go. Comme tous les outils écrits dans ce langage, il est distribué sous la forme d’un unique binaire ce qui le rend à la fois simple à installer et chiant à maintenir à jour de manière automatique. M’enfin pour du test ponctuel ce n’est pas la mort.

Goreplay fonctionne un peu comme tcpdump, en ce sens qu’il capture le trafic, il est toutefois très orienté Web puisqu’on peut assaisonner le trafic capturé pour le rejouer avec des contraintes supplémentaires. Dans mon cas, les vhosts de la nouvelle plate-forme sont protégés par authentification http basique, j’ai donc indiqué à goreplay d’injecter le header « Authorization » contenant les bonnes informations.

On peut rejouer le trafic en temps réel ou l’enregistrer dans un fichier et le rejouer à l’envi. Pour ma part la comparaison dans le même contexte temporel me paraissait intéressante j’ai donc rejoué en temps réel. Pour dire à quel point c’est facile à utiliser, il ne m’a fallu que quelques minutes pour obtenir la routine suivante :

goreplay --input-raw :80 --output-http="http://1.2.3.4:80" -http-original-host -http-set-header "Authorization: Basic sDgfo6R4V6SZBybziwMTg="

output-http permet d’indiquer la destination, http-original-host permet de conserver le domaine dans les requêtes, et http-set-header, hein, pas besoin de vous faire une photo. Pour le reste, je vous laisse fouiller la documentation pour trouver votre bonheur.

Attention cependant : si goreplay sait envoyer le trafic sur une destination https, par nature il ne sait pas capturer le même trafic à la source HTTPS puisque il est encore chiffré à ce moment-là. Il n’y a pas de solution magique dans ce cas, il faut que la terminaison soit effectuée en amont (reverse proxy, load balancer?), ensuite seulement il peut être capturé.

Ses capacités sont intéressantes même si j’ai rencontré quelques petits bugs. Le programme s’arrête quand il n’arrive pas à interpréter une requête pour la rejouer sur la cible. Le fait est que le numéro de version montre bien que le logiciel n’est pas encore parfait, il faut toutefois le suivre de près, fouiller les issues, bref, c’est une solution intéressante et peu coûteuse pour analyser le comportement d’une plate-forme sans passer par un complexe test de montée en charge qui ne peut que simuler le comportement utilisateur d’un point de vue réseau. Il ne teste que la partie réseau ceci dit, il vous faudra d’autres outils pour doser la fiabilité au sein du navigateur

Les dangers d’un projet géré par une seule personne

vendredi 15 février 2019 à 18:30

Il y a quelques temps, sur Twitter j’ai vu passer quelque chose de vraiment sympa pour ceux qui touchent souvent à du code, à savoir la coloration multiples des différents niveaux de crochets/accolades imbriqués pour faciliter la lecture en cas d’indentation douteuse. J’ai voulu tester ça sur Sublime Text et ça ne s’est pas passé comme prévu. Un symptôme qui peut arriver à d’autres projets.

Un week-end qui s’annonçait bien…

Voilà le Tweet qui m’a saucé :

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8">

La réponse était disponible en déroulant les discussions, ce qui n’est pas toujours évident pour ceux qui découvrent Twitter. Et donc j’ai voulu installer ça sur Sublime Text. Si vous n’avez pas déjà lu mes articles précédents et que vous découvrez cet éditeur de code, il existe un outil de référence pour faciliter l’installation et la gestion des addons, Package Control, qui a un site dédié.

Le plugin que je comptais installer est BracketHighlighter, dont le code est disponible sur Github si vous êtes fondus d’installation à la main. Son développeur recommande toutefois l’installation via Package Control. Cependant, j’ai eu droit à un message d’erreur dégueulasse en cherchant à installer le package :

Package Control: Error downloading channel. HTTP error 404 downloading https://packagecontrol.io/channel_v3.json.

Bon, c’est donc parti pour un peu de debug, de recherches Qwant, je tombe sur la page de troubleshooting (traduit littéralement, fusiller les troubles), qui ne m’aide pas tant que ça mais du coup je sais maintenant qu’elle existe, et comme je n’ai pas plus d’infos je me tourne vers le forum. Je passe sur le fait qu’il repose sur cette horreur de Discourse et tombe sur LE sujet qui m’explique et m’apprend beaucoup trop de choses d’un coup.

« Vous êtes le maillon faible »

J’ignorais complètement le fait, mais via les discussions je découvre que cet utilitaire repose sur les épaules d’une seule personne. Site web, serveur qui héberge le dépôt pour les extensions, développement du plugin, et donc financement de tout ça. Et il s’avère que le serveur en question était arrivé à saturation, ce qui a au passage corrompu la base de données. Avant d’arriver à saturation, la taille de la base avait rendu sa routine de sauvegarde inopérante. Le serveur avait été installé il y a plus de six ans, tout à la main.

La résolution a pris du temps, puisqu’elle a pris la forme d’un nouveau serveur et la définition de playbooks Ansible pour permettre de futurs déploiements plus rapides et automatisés. Il aura également fallu reproduire plusieurs semaines de mises à jour et d’ajouts de plugins à la base de données puisque la sauvegarde ne fonctionnait plus.

Je n’ai pas vu de message insultant sur l’incompétence du gars ou sa lenteur à réparer, ce qui me rassure quand je vois les torrents de merde qui se déversent fréquemment (regardez les commentaires d’applications mobiles gratuite quand une nouvelle version fout la merde, les humains sont vraiment des déchets), que du soutien voire même des conseils d’amélioration, et la question notamment du support financier a été amenée sur le tapis. C’est là qu’on apprend que si l’auteur a démarré ça de manière complètement indépendante, il travaille maintenant pour Sublime HQ, qui développe Sublime Text. mais le projet est resté complètement indépendant et maintenu sur du temps libre. La revue et la publication des extensions sur le channel sont tout de même à la charge de deux autres personnes, mais le coût financier principal est effectivement dans les mains d’un seul homme, qui investit mille dollars par an dans l’infrastructure. Et prévoit d’en mettre un peu plus pour pouvoir faire de nouveau des sauvegardes fiables. C’est toujours mieux qu’un budget clopes vous me direz, mais tout de même…

La difficulté à gérer un projet seul

On le voit, si apparemment le budget n’est pas tant un problème, gérer seul sur son temps libre limité n’a pas été de tout repos quand ça a pété : plusieurs jours pour restaurer les services, devoir tout remonter sur du neuf parce que l’ancien était saturé, et point valable pour tout hébergement géré de manière indépendante, quid de la sécurité ? (au moins ça tourne pas sur du WordPress, mais apparemment sur une application Python)

Je comprend très bien la situation, hébergeant moi-même ce blog et ayant beaucoup moins de temps libre, aussi bien pour l’écriture que la maintenance, c’est difficile. Et Arowan est aussi bien moins disponible qu’avant pour maintenir l’infrastructure quand je ne suis pas là. Sans rentrer dans trop de détails, on est toujours en Proxmox 4, la VM du blog est toujours en Debian 8 (les travaux pour sa remplaçante sont au point mort, par flemme), je dois passer une fois par semaine à peine sur les différentes VMs pour vérifier/faire les mises à jour, car je n’ai jamais pu faire en sorte qu’unattended-upgrades fonctionnent sur celles-ci alors que ça tourne nickel sur mon cluster swarm, je dois toujours monter l’environnement test du blog sur ce dernier pour bosser sur une refonte, bref, je pourrais continuer comme ça longtemps sur les projets au ralenti voire en pause à cause de ce temps libre qui manque (sans parler de la motivation parfois).

Et je ne pense pas être le seul dans ce cas, donc quand on voit des sujets discutant d’automatiser un max de choses, ou de reposer sur des prestataires de services qui s’occupent d’un max de choses pour vous, il n’y a rien de surprenant, c’est d’ailleurs ce qui a fait le succès du « cloud public » et d’outils dit « devops » qui permettent de gagner un max de temps sur les opérations du quotidien.

Quid de la gouvernance « commerciale » ?

Je l’ai dit, le développeur qui a démarré le projet de manière complètement indépendante travaille maintenant pour la société qui développe l’éditeur de code. Pourquoi dès lors ne pas se poser la question de la pérennisation d’un utilitaire qui a certainement contribué au succès dudit éditeur ? Parce que franchement, gérer à la main l’installation et la maintenance des plugins c’est une tannée, et même si manifestement le développeur n’est pas près de lâcher son bébé, si jamais les imprévus de la vie font qu’il doit tout abandonner, comment faire pour que le projet survive correctement ? Parce que si le code de l’utilitaire est open-source, je ne sais pas ce qu’il en est de la partie serveur, et la reprise d’un nom de domaine n’est pas non plus triviale pour s’assurer d’une transparence du côté des utilisateurs.

Parce que bon, des outils open-source chapeautés par des sociétés, n’en déplaise aux extrémistes, c’est très, très, très courant. Canonical, ça vous dit quelque chose ? Ben ce n’est pas une association loi 1901, mais une société qui vit de contrats de supports et de déploiement sur la base d’une distribution Linux développée en source ouverte et fournie gratuitement au public (leurs contributions aux projets « de base » sont plus nombreuses qu’auparavant). Gnome et une palanquée d’autres projets ne seraient pas ce qu’ils sont sans le support de RedHat, qui fait la même chose que Canonical mais qui a commencé il y a vingt ans. Quand vous regardez les plus gros contributeurs du noyau Linux, il est loin le temps où les développeurs indépendants sur leur temps libre étaient la norme, désormais les contributeurs sont souvent payés par leur employeur pour bosser sur le noyau, et Microsoft est même maintenant un des plus gros contributeurs, un comble !. Malgré tout le noyau reste un logiciel libre accessible à tous, c’est donc que ce modèle est possible.

Pour Package Control on peut donc imaginer pas mal de formes de soutien :

On pourrait évidemment penser à n’importe quel hybride des quelques idées que je viens de proposer. Ne serait-ce que pour conserver un équilibre entre ce qui est géré en interne et ce qui est géré par la communauté, en effet, il ne s’agirait pas de trop fermer l’accès à l’annuaire pour conserver l’intérêt des développeurs tiers pour la création, la publication et l’évolution d’extensions.

Si vous pouvez, soutenez

Je sais que c’est un message qui commence à être vomitif (comme tous les YouTubers qui mendient les pouces bleus et les partages à chaque fin de vidéo), mais il y a effectivement pas mal de formes de soutien et elles sont d’autant plus importantes que le nombre de personnes impliquées sur un projet est restreint (voire ici, unique). Un synonyme de soutien en particulier dans le monde du logiciel libre/open-source, c’est la contribution, et ça, j’en ai déjà parlé il y a un bon moment maintenant mais c’est toujours aussi valide aujourd’hui, presque plus quand on voit les complaintes de certains par rapport au nombre d’utilisateurs passifs qui pose problème sur certains projets.

(crédit image : Mohamed Elhusseiny)

Quelques liens en vrac et en français, 31° édition

mardi 12 février 2019 à 18:30

Je vous avais laissé le dernier épisode pour conclure 2018 avec une grosse, grosse livraison de lecture, après un mois et demis de repos on reprend les chemins de la culture et de la découverte, toujours en français c’est la règle, en essayant de garder une diversité les sujets 🙂

Une avocate a réécrit les conditions d’utilisation d’Instagram comme si elles étaient expliquées à un enfant de 8 ans

Constat amer au Royaume-uni, les parents laissent près de la moitié des enfants de moins de 10 ans s’inscrire sur Instagram, et ça dépasse la moitié pour la tranche 12/15 ans, très inquiétant. D’autant qu’aucun d’entre eux n’a lu et ne peut comprendre les conditions d’utilisations acceptées aveuglément. A la demande du délégué au droit des enfants, une avocate a réécrit ces fameuses conditions d’utilisations pour qu’un enfant de huit ans les comprenne. Sachant qu’à de rares exceptions près, c’est le même schéma pour n’importe quel service, qu’il soit américain ou pas, dès qu’il est gratuit.

Une nouvelle chaine YouTube sur l’univers Linux

Certes orientée sysadmin/devops/cloud (on arrête là le bullshit bingo), cette nouvelle chaîne française lancée par Thomas mérite je pense un petit soutien, en tout cas je la surveille avec attention (abonnement/flux rss toussa). Et je vous invite à en faire de même.

Faut-il passer à la 4K tout de suite ?

J’ai moi-même sauté le pas il y a plusieurs mois à l’occasion d’une bonne affaire, mais j’ai déjà eu l’occasion d’en parler je pense, entre autre sur mon passage contrôlé à Windows 10. Mais la question doit encore se poser, pour plein de raisons, en fonction de vos besoins mais pas que, et cette série d’articles fait bien le tour de cette réflexion qui n’est pas si évidente que ça.

Ce que récolte Google, revue de détail

J’ai déjà évoqué le pouvoir qu’a acquis Google sur notre monde numérique, mais je suis resté volontairement évasif sur les techniques qui lui ont permis de rentabiliser au maximum son ciblage publicitaire car ce n’était pas le cœur de sujet de l’article. Framasoft s’en est de toute façon très bien chargé pour nous, et fait un inventaire en plusieurs articles de ce que l’on a pu apprendre soit officiellement soit officieusement sur la gloutonnerie du géant en matière de tout ce qui peut concerner nos vies, sans même demander la permission pour des éléments parfois très intimes.

Photorec : trier automatiquement la restauration par type d’extensions

Photorec est un outil de récupération de fichiers (pas seulement de photos comme son nom pourrait le laisser penser), que j’ai déjà pu utiliser personnellement avec succès sur une clé USB défaillante. Cet outil dispose de nombreuses options, et ligne de commandes oblige il est possible de faire tout un tas de bidouilles avec, comme ici, trier les fichiers restaurés 🙂

Terminologie DNS

Les erreurs de vocabulaires sont très courantes à propos du DNS, même pour ceux qui pratiquent au quotidien (parler de racine plutôt que d’apex par exemple), et l’âge de la norme qui n’avait jamais été rafraichie n’aide pourtant pas. Via cette nouvelle RFC, qui ne fait que rassembler plusieurs dizaines d’années de spécifications successives (le DNS date de 1983), on a dans un seul document pratiquement tout le vocabulaire et les définitions pour maitriser son sujet, et sans surprise on peut remercier Stéphane Bortzmeyer pour son résumé/traduction 🙂

Comment la France s’est vendue aux GAFAM / Les GAFAM ont gagné, que faire ?

J’ai décidé de compacter deux liens dans le même sujet, puisque le deuxième est une réaction au premier, et que donc pour avoir le tableau d’ensemble il faut lire les deux. Tariq Krim est un entrepreneur français emblématique dans le domaine de l’Internet, premier étranger récompensé par la revue Technology review du MIT en tant qu’innovateur, il a publié une tribune dénonçant l’abandon de nos dirigeants face aux géants américain du numérique, en retraçant toute l’histoire depuis la naissance d’Internet. Qu’on soit d’accord avec le point de vue ou pas, cet historique est très intéressant à connaitre. Et l’article a bien circulé, particulièrement dans les sphères de ceux qui veulent se battre contre ces même GAFAM.

André Ani est un libriste convaincu, militant, contributeur, écrivain de plusieurs ouvrages autour des sujets qu’il affectionne, il a tout naturellement vu et lu cette tribune, et bien qu’il soit d’accord en grande partie avec Tariq Krim, partage et complète son propre point de vue sur la question en allant un peu plus loin, car comme souvent, dénoncer c’est bien, proposer autre chose c’est mieux. Avec un soupçon d’autocritique de quelqu’un qui fait déjà des choses, et c’est toujours appréciable à lire.

Faire adhérer CentOS 7 à un domaine Active Directory

C’est un fait, aussi malheureux soit-il, mais Microsoft Active Directory reste LA solution de référence pour la gestion d’un parc de postes informatiques en entreprise, ce qui impose donc aussi d’utiliser Windows en tant qu’OS sur les postes clients (pc fixes, laptop, tablettes/hybrides). Mais il est tout de même possible de relier des postes sous OS Linux au domaine, et Adrien D nous a documenté tout ça dans une page de wiki très propre. On en est pas encore à se débarrasser du serveur (Samba 4 avance sur pas mal de points mais c’est pas encore ça), mais voilà, dans une certaine mesure, pour les clients, c’est possible.

PAROLE 2 PRO. Romain Vincent de JVH (Jeux vidéo & Histoire)

L’utilisation de jeux vidéos pour l’enseignement à l’école ? Ce professeur et chercheur a tenté l’aventure, et en a discuté pendant un entretien avec l’équipe d’UnDropDansLaMare, sur les avantages, les inconvénients, les limites, le rôle des parents et surtout leur absence, bref, un entretien très intéressant à lire et partager.

15 Mesures de sécurité essentielles à WordPress

Je l’ai rappelé dans mon billet sur Tumblr, WordPress représente désormais plus de 30% du web visible. C’est à la fois une sacrée performance mais un sacré défi pour l’avenir proche, vu que les choix d’Automattic ne vont pas dans le sens de la sécurité, il faut s’armer de son côté pour éviter d’alimenter les nombreux réseaux de zombies commandés par des malfrats qui font payer leur service d’attaque via des sites infectés.

Qui dit popularité dit ressources nombreuses sur le CMS, et c’est sans surprise chez l’une des références françaises de la formation autour de WordPress que l’on peut découvrir ce guide/rappel de sécurité qui a déjà plus d’un an mais qui est plus que jamais d’actualité.

Project Alias : Un hack pour rendre sourd vos assistants personnels

A mon grand regret, les enceintes connectées ont eu beaucoup trop de succès à Noël, permettant aux géants américains d’écouter désormais vos conversations privées directement au cœur des foyers, sans possibilité de contrôle autre que de débrancher l’enceinte quand elle ne sert pas, ce qui est un peu contradictoire avec un outil qui doit être disponible à portée de voix.

Autre point pénible, pas possible de personnaliser l’accroche de commande (OK Google, Dis Siri…), donc n’importe qui peut prendre le contrôle de ce genre d’appareil sans barrière. Le projet Alias est donc doublement utile : ce capot à poser sur les micros d’une enceinte connectée génère du bruit évitant toute écoute passive de la part des sociétés via leurs appareils, mais permettent quand même de les utiliser via une commande personnalisée (le bruit s’arrête alors pour transmettre votre commande à l’assistant).

Et tous les plans et schémas sont en libre accès pour pouvoir adapter aux différentes enceintes du marché. Le modèle prototype pour la Google Home montre que ce n’est pas trop moche par dessus l’appareil qui n’a pas été conçu pour être recouvert à la base, un autre designer saura certainement faire mieux. Ça n’empêchera pas que Google & co enregistre vos questions et les réponses associées, mais au moins ils n’auront plus que ça et pas vos discussions intimes.


C’est qu’on a encore débordé un peu des dix liens dis donc ! Bon pas grave, de toute façon vu la densité, vous avez de quoi faire pendant un bon mois facile, rendez-vous au prochain épisode 😉

Quelques astuces diverses, quinzième

dimanche 10 février 2019 à 10:30

2019 ne fait pas exception aux années précédentes, tant qu’on se servira d’ordinateurs il y aura une foultitudes de petites astuces du quotidien qu’il sera toujours intéressant de découvrir et de partager, alors c’est parti !

De l’importance des options de dd

J’ai offert du SSD dans la famille à Noël cette année. Et j’ai fat le choix de cloner les disques d’origine pour pas me retaper des installations de Windows à la pelle. Pendant mes tests avec deux SSD, je suis surpris de la lenteur du transfert :

sudo dd if=/dev/sdb of=/dev/sdc status=progress
144581120 octets (145 MB, 138 MiB) copiés, 6 s, 24,1 MB/s

En fouillant un peu sur le net, dd propose des options dont une en particulier m’a permis de bien bourrer le débit :

sudo dd if=/dev/sdb of=/dev/sdc bs=128K status=progress
2289303552 octets (2,3 GB, 2,1 GiB) copiés, 12 s, 191 MB/s

Voilà, pour mes besoins ça a suffi, le vrai transfert lui devait durer plus d’une heure avec ces paramètres (correction, il a pris quasiment trois heures pour mon beau-frère, heureusement qu’on était au cinéma), et je suis certain qu’il y a des brutasses pour m’expliquer les formules de calcul pour maximiser encore plus les résultats.

VLC/Qt5 : souci d’échelle pour l’interface

La densité d’affichage a augmenté sur mon nouveau laptop par rapport à l’ancien (14″ Full HD au lieu de 15″ HD ready), ce qui amène des surprises. Des images valant mieux qu’un long discours :

On le voit, les contrôles sont énormes et je vous parle pas des menus. Et la mise à l’échelle d’une appli Qt dans un environnement GTK c’est pas encore ça. Fort heureusement on peut jouer sur ce comportement via une variable d’environnement, ici il faut la poser dans ~/.profile :

export QT_AUTO_SCREEN_SCALE_FACTOR=0

Vous pouvez recharger ensuite votre session, les applis Qt devraient maintenant avoir une meilleure tête. La preuve :

Lister les IPs bannies par fail2ban

fail2ban fait partie des outils que je vous recommande pour apporter une sécurité supplémentaire à votre serveur, en détectant des comportements à partir des journaux système. Pour avoir juste un petit résumé des IPs qu’il a banni, je suis tombé sur cette routine bien affreuse à lire mais tout à fait efficace :

fail2ban-client status | grep "Jail list:" | sed "s/ //g" | awk '{split($2,a,",");for(i in a) system("fail2ban-client status " a[i])}' | grep "Status\|IP list"

Dans mon cas, j’ai découvert un abus de l’utilisation du data saver de Google, qui s’est donc retrouvé bloqué à l’entrée du serveur de mon client.

Exploiter X-Forwarded-For dans IIS

Oui c’est plutôt rare pour être signalé, mais lors de recherches liées à cet entête HTTP très utilisé dans des contextes de load-balancing et de proxyfication, je suis tombé sur cet article qui vous explique comment enregistrer et exploiter cet entête dans IIS, le serveur web phare des plateformes Microsoft Windows. Car on y met généralement l’adresse IP du visiteur.

Pour rappel même si c’est juridiquement un peu flou pour l’instant on est encore obligé de conserver des journaux web d’identification des visiteurs à des fins légales (par exemple en cas d’injure publique, menace de mort, harcèlement…). L’adresse IP du visiteur doit donc être enregistrée correctement.

Comprendre ce qui a merdé dans une requête MySQL

Lors de la mise en place d’une base mysql pour la gestion des utilisateurs de proftpd, on a coincé sur une requête qui vérifie si l’utilisateur est activé et pas expiré :

mysql> SELECT userid, passwd, uid, gid, homedir, shell FROM users WHERE (userid='user1') AND (((disabled!=1 and (NOW()<=expires or expires=-1)))) LIMIT 1;
Empty set, 1 warning (0.00 sec)

Y’a un warning, mais on a pas le détail du warning en question. Ben en fait pour récupérer ce warning c’est tout simple :

mysql> show warnings;
+---------+------+--------------------------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------------------------+
| Warning | 1292 | Incorrect datetime value: '-1' for column 'expires' at row 1 |
+---------+------+--------------------------------------------------------------+
1 row in set (0.00 sec)

Oui ça parait évident à certains mais je suis pas un expert MySQL/MariaDB non plus même si je me débrouille hein 😀

Réparer pip après l’installation d’azure-cli

Je suis en train d’apprendre à déployer des applis sur un cluster AKS (Azure Kubernetes Services). A l’installation de l’azure-cli via pip, toutes la connectivité HTTPS a été pétée :

$ az aks install-cli
Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 174, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/__main__.py", line 32, in <module>
    az_cli = get_default_cli()
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/core/__init__.py", line 515, in get_default_cli
    help_cls=AzCliHelp)
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/core/__init__.py", line 60, in __init__
    register_ids_argument(self)  # global subscription must be registered first!
  File "/usr/local/lib/python2.7/dist-packages/azure/cli/core/commands/arm.py", line 180, in register_ids_argument
    from msrestazure.tools import parse_resource_id, is_valid_resource_id
  File "/usr/local/lib/python2.7/dist-packages/msrestazure/__init__.py", line 28, in <module>
    from .azure_configuration import AzureConfiguration
  File "/usr/local/lib/python2.7/dist-packages/msrestazure/azure_configuration.py", line 34, in <module>
    from msrest import Configuration
  File "/usr/local/lib/python2.7/dist-packages/msrest/__init__.py", line 28, in <module>
    from .configuration import Configuration
  File "/usr/local/lib/python2.7/dist-packages/msrest/configuration.py", line 37, in <module>
    from .pipeline import Pipeline
  File "/usr/local/lib/python2.7/dist-packages/msrest/pipeline/__init__.py", line 52, in <module>
    from requests.structures import CaseInsensitiveDict
  File "/usr/local/lib/python2.7/dist-packages/requests/__init__.py", line 84, in <module>
    from urllib3.contrib import pyopenssl
  File "/usr/local/lib/python2.7/dist-packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import crypto, SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/SSL.py", line 194, in <module>
    if _lib.Cryptography_HAS_SSL_ST:
AttributeError: 'module' object has no attribute 'Cryptography_HAS_SSL_ST'

Pour réparer, c’est un peu dégueu mais ça fonctionne :

$ sudo rm -rf /usr/local/lib/python2.7/dist-packages/OpenSSL/
$ sudo apt install --reinstall python-openssl

Honnêtement vu la quantité de paquets que déclenche l’installation d’azure-cli via pip, j’ai été découragé de chercher la vraie source. Évidemment adaptez le chemin d’installation du dossier OpenSSL à votre version de Python et/ou votre OS 🙂

Délester le trafic des bots, version Nginx

Denis a du prendre récemment des mesures sur son blog pour délester son hébergement de robots un peu méchants qui saturaient les ressources de sa machine. Mais il n’a fourni la directive que pour Apache. Si vous êtes sous Nginx, vous pouvez utiliser cette règle :

location / { 
  if ($http_user_agent ~ ""(; |^|@|/|.)?(Ahrefs|Cliqz|Dot|linkfluence|MJ12|[mM]oreover|Nuzzel|[oO]wlin|Rewyer|rogerbot|semantic-visions|Semrush|Slack|[sS]ociallymap|Superfeedr|ubermetrics|YaK)([bB]ot)?(/| |-|.)?"") {
    rewrite ".*" /"https://feeds.feedburner.com/dsfc?format=xml" redirect;
  }
}

Je crois qu’on peut se passer du location, mais si vous avez déjà un location / vous pouvez juste ajouter le « if » dedans 😉

Docker : réutiliser les volumes d’un container existant

La formulation peut être étrange, mais vous allez comprendre. J’ai enfin monté une copie de mon blog sur mon cluster Docker Swarm pour pouvoir faire mes essais de modifications et préparer le futur. Lors d’une migration de WordPress, un outil devenu vite incontournable est wp-cli, qui permet notamment du traitement de masse sur la base de données via la configuration du blog. Sur un hébergement classique on se met à la racine du WordPress et on lance la commande. Mais dans la configuration Docker, on a pas accès à la racine puisqu’elle est dans le container, la seule persistance qui reste est le wp-content.

Docker permet cependant d’exécuter un autre container à partir des données d’un container existant, et c’est parfait pour le cas de wp-cli pour simuler justement le lancement depuis le wordpress installé dans le container voisin. La syntaxe n’est pas évidente, mais elle sauve une vie :

docker run -it --rm --volumes-from <container-id> --network container:<container-id> wordpress:cli search-replace "://old.domain.tld" "://new.domain.tld"

A exécuter sur le nœud qui exécute le container WordPress (si vous avez plusieurs containers, n’importe lequel conviendra). Et dans mon cas, je sais déjà que mon thème va me poser des problèmes pour le futur via des alertes PHP…

grep : concaténer plusieurs filtres d’exclusion ou d’inclusion de recherche

Récemment, j’ai tenté d’obtenir du sens et comparer un certain trafic de journaux web à une semaine d’intervalle. J’ai commencé à empiler les grep -v « blabla » |grep -v « blublu », facile pour itérer sur les exclusions, mais il y a plus lisible (et potentiellement plus rapide et moins consommateur) :

zcat access_log.20.gz |egrep -v ".css|.js|.jpg|.gif|.png|favicon.ico|POST" |wc -l

egrep (qui permet de déclencher le mode expression régulière), et des pipes qui séparent les modèles à exclure. Évidemment vous pouvez procéder de même pour inclure des modèles à rechercher.

Twidere : récupérer les fonctionnalités de messages privés

L’application Twidere sur Android est sympathique, mais le développement a cessé depuis un peu plus d’un an. Entre temps, Twitter a fait le gros dégueulasse avec son API et j’ai découvert que les messages privés n’étaient plus mis à jour dans l’application. En fouillant les issues Github, j’ai trouvé une solution qui a fonctionné pour moi, à savoir modifier les clés d’API dans les paramètres (settings), réseau (icône en forme de terre), Avancé, Paramètres API par défaut :

Clé client (Consumer key) : 3nVuSoBZnx6U4vzUxf5w
Mot de passe client (Consumer secret) : Bcs59EFbbsdF6Sl9Ng71smgStWEGwXXKSjYvPVt7qys

Il faut ensuite supprimer le compte et se relogger dessus, et ça rétablit le service (les messages privés de groupe sont même dispos !). Si ça ne fonctionne pas pour vous, le problème vient peut-être de la clé, auquel cas d’autres sont disponibles sur cette page github.


Voilà, je suis content de cette fournée, elle ne concerne pas que de la ligne de commande, on couvre de l’application de bureau, de l’application Android, et même du Windows, comme quoi tout est possible 🙂

Les avantages et inconvénients du jeu sous Linux

mercredi 30 janvier 2019 à 18:30

J’entends moins souvent la critique ces deux dernières années, mais elle existe encore : Linux c’est pas fait pour jouer et y’a pas de jeux dessus. C’est d’autant moins vrai maintenant, mais notre plateforme préférée n’est pas encore le paradis sur terre, voyons donc quels sont les points forts et les points faibles qui caractérisent la banquise pour les jeux vidéos sur PC.

Un monde bien plus accueillant qu’avant…

Historiquement le jeu vidéo sur PC reste un frein majeur à une libération de nos machines d’un Windows dont la version 10 et ses différentes itérations depuis sa sortie sont vraiment à éviter autant que possible. Mais depuis plusieurs années maintenant, et notamment grâce à un soutien majeur de la part de Valve, Linux peut vraiment être considéré comme une alternative crédible pour piloter votre matériel.

En effet, pour ceux qui débarquent, Valve est une société de développement de jeux vidéos qui aura permis au monde de découvrir Half-Life, Counter Strike, Portal, DOTA2, Left 4 Dead et surtout, Steam. Sorti en 2004 avec Half-Life 2, Steam est une plateforme communautaire, et une boutique en ligne, leader sur le marché PC. En 2013, après des mois de rumeurs Valve présente SteamOS et les Steam Machines, des PCs livrés sous un OS à base de Debian Linux pensés comme des alternatives aux consoles de salon. Steam lui-même est disponible depuis fin 2012 pour les différentes distributions (officiellement Debian et Ubuntu sont les seuls supportés), et tous les jeux Valve sont adaptés pour tourner sous Linux, permettant de montrer que non seulement c’est faisable, mais surtout que les performances sont là (ils ont même eu des surprises avec certains jeux plus performants sous Linux que sous Windows). Valve contribue et publie plusieurs outils facilitant le portage et le développement, remonte quantité de bugs aux pilotes open-source notamment graphiques, bref, qu’on soit pour ou contre le jeu « propriétaire », la contribution de Valve dans le domaine pour notre plateforme préférée est indéniable.

La moitié presque de ma bibliothèque, et je n’ai pas testé avec Proton

Au point que les principaux fournisseurs de moteurs de jeu, Unreal Engine 4 pour Epic, Unity, CryEngine, proposent tous un support natif de Linux comme plateforme cible. Pour ceux qui ne veulent pas prendre directement en charge la plateforme, des experts dans le domaine du portage émergent ou reviennent sur le devant de la scène, dont un majeur est Feral Interactive, à qui on doit la disponibilité de gros titres comme Alien Isolation, Mad Max, Deus Ex Mankind Divided, Tomb Raider (depuis le reboot de 2013), plusieurs titres Warhammer et XCOM. D’autres titres un peu plus anciens ont vu leur portage natif aussi, comme les titres 2033, Borderlands, Rocket League, Worms, The Witcher, et comme je l’ai dit quantité de titres indépendants, aidés par leur moteur qui propose un support natif.

Dernièrement, Valve a initié le projet Proton. Basé sur WINE, qui est une couche de traduction permettant d’exécuter directement des programmes conçus pour Windows sous Linux, Proton se concentre sur les jeux vidéos et permet de lancer une quantité toujours plus importante de jeux prévus uniquement pour Windows directement sous Linux. Le logiciel est jeune, le support est variable en fonction des jeux, mais le travail est déjà impressionnant. Dommage par contre qu’on ne voie pas les corrections et améliorations remonter sur le projet d’origine (probablement parce que certaines optimisations peuvent être protégées par des brevets). Le projet est encore en beta et les remontées sont plus que bienvenues pour les titres qui ne sont pas encore supportés correctement.

Steam n’est pas le seul acteur à proposer de distribuer des jeux sous Linux, GOG est un autre acteur qui joue la carte du « sans DRM » pour la plupart des jeux, en tout cas pas de DRM maison par défaut, qui est l’un des points noir de Steam qui a malheureusement contribué à son succès (les éditeurs voulant à tout prix s’assurer qu’on ne peut pas copier leur jeux). Le catalogue est cependant moins fourni, mais les titres disponibles sous Linux sont facilement accessibles, et installables sans client dédié. Autant dire que faut être un gros consommateur pour être en manque sous Linux désormais.

Un autre aspect qu’on oublie facilement lorsqu’on parle de jeu vidéo, c’est la communication entre joueurs, et là aussi, aucun problème sur la banquise. Teamspeak, Mumble, Discord, les trois gros représentant de la discussion audio sont présents. Pour la technique Mumble et Teamspeak utilisent Qt comme bibliothèque d’interface, les rendant légers, Discord a malheureusement fait le choix d’Electron, vous consommez donc plus de 200Mo de mémoire pour profiter du service (Electron en gros package une appli web avec un navigateur web Chromium, et un nodejs en dessous, que des outils lourdingues).

Dans le même esprit, si vous comptez diffuser vos parties en direct (parce que vous êtes suffisamment équipés aussi bien en matériel qu’en connexion fibre), Open BroadCaster Software est également présent et de ce que j’ai pu en juger par mes premières manipulations, tout aussi capable que sous Windows.

Mais il manque encore pas mal de choses

En parlant de communication, un des points noirs du « gaming » sous Linux concerne les périphériques. Non pas qu’ils ne sont pas reconnus, généralement les claviers, souris et casques USB sont reconnus quand ils sont branchés, par contre, les outils pour le paramétrage des fonctions avancées, c’est pas la même sauce. Ils sont tout simplement inexistants, pour certains dont les paramètres sont stockés dans une mémoire interne ça peut éventuellement se contourner (on configure sous Windows et on utilise sous Linux), mais généralement c’est pas Byzance. Si vous n’utilisez pas les fonctions avancées de vos périphériques (contrôle des LED, programmation des touches supplémentaires), vous pourrez tout de même profiter de votre matériel dans les mêmes conditions. Par exemple, je n’avais pas vu d’interface pour ma manette d’Xbox 360, pourtant j’en profite régulièrement.

Si pendant des années les initiatives indépendantes d’interfaces de gestion ont difficilement existé et se concentraient parfois sur un seul modèle très populaire (souris ou clavier), avec justement l’élargissement de l’offre, plus de développeurs ont attaqué leurs périphériques, certains fabricants soutiennent presque officiellement certaines initiatives. Là je vais pas trop m’étendre sur le sujet, un confrère a fait plusieurs articles très bien fait sur le sujet que je vous invite à lire. Avantage, entre autres pour Razer, c’est que vous pouvez du coup utiliser une interface qui ne vous demande pas d’abandonner quelques informations personnelles pour utiliser du matériel (oui, Razer Synapse vous demande de vous inscrire avec une adresse e-mail pour gérer votre souris sur votre ordi). Roccat semble être un fabricant à contre-courant puisqu’il a développé et publié pilotes et utilitaires, plutôt cool non ?

Si Proton est une initiative intéressante qui avance très vite, tous les jeux ne pourront pas être supportés à cause de certaines technologies sales qui sont très dépendantes de l’architecture du noyau Windows. En particulier, pour prendre l’exemple de PUBG, techniquement il utilise l’Unreal Engine 4, donc il pourrait supporter Linux nativement, mais l’outil anti-triche qu’il embarque fonctionne de la même façon qu’un antivirus qui est fortement dépendant des technologies bas-niveau du système d’exploitation, qui ne peuvent pas être traduites. Il n’est pas seul sur le sujet, pendant plusieurs années si je pouvais faire tourner Call of Duty 2 et 4 sous Linux via Wine sans difficultés particulières, un des éléments disqualifiant pour jouer en ligne était Punkbuster.

Je pense que c’est explicite…

Aussi, plusieurs gros éditeurs qui lient leurs jeux à un lanceur spécifique (faisant aussi office de boutique en ligne maison, comme Steam) sont mécaniquement absents sous Linux : UPlay (Ubisoft), Origin (EA), Battle.net (Blizzard), sont toujours limités à Windows, parfois dispos sous Mac (pour Blizzard). Exit donc les Assassin’s Creed, Far Cry, Battlefield, Overwatch… Je ne sais pas comment ça a évolué, mais j’avais pu en 2008 jouer à WoW sur mon HP sous ArchLinux via WINE, mais certains se sont vu bannir parce qu’on considérait qu’ils cherchaient à tricher, ce qui est toujours gênant (perso je m’en foutais je jouais sur un serveur privé). L’offre restera donc toujours moins complète que sous Windows, mais si ces gros titres ne vous intéressent pas, que vous êtes un drogué des jeux indés, alors ça pourra tenir le choc. Les raisons sont souvent économiques avant d’être techniques (encore que ma réflexion sur les moteurs de jeu me semble toujours d’actualité), les gros éditeurs ont de gros sous à faire pour satisfaire des actionnaires avant de faire plaisir aux joueurs et aux développeurs.

Malgré les améliorations qui sont plus que significatives, le support des pilotes graphiques reste encore très problématique sous Linux. Souvent, les éditeurs indiquent seulement un support officiel uniquement pour le pilote Nvidia propriétaire, car c’est finalement le plus facilement prévisible. En effet, le caméléon distribue son pilote sous une forme packagée indépendante de la distribution, comme sous Windows, quand du côté des pilotes open-source c’est beaucoup plus bordélique. En effet, entre le DRM (la partie noyau), la partie user-space (Xorg/wayland), la partie MESA, chaque distribution propose donc son propre cocktail de versions des différents composants qui sont moins facilement mis à jour (à part sous Arch Linux/Manjaro). C’est notamment le cas pour Intel, même si celui-ci propose d’installer les derniers composants via une batterie d’outils d’installation sur son site, et chez AMD c’est tellement la foire que j’ai perdu le fil, à un moment donné il y avait trois pilotes différents, dont le support était très différent en fonction des générations de matériel. Jouer donc avec ces pilotes est très aléatoire, et vous êtes tous seuls quand vous rencontrez un problème. Pire, ne comptez pas sur une interface graphique pour manipuler finement les paramètres pourtant nombreux de ces pilotes graphiques, seuls les chemins dans /proc et /sys peuvent vous aider. Pour ma part j’ai pu tester les jeux Valve, Rocket League, Serious Sam 3, sur le laptop avec la carte intégrée Intel, qui n’est absolument pas faite pour ça mais ça fonctionne (faut salement baisser les réglages pour que ça soit fluide). Mais c’est pas une évidence. Ça limite donc le choix sur le matériel, Nvidia reste une préférence même sous Windows.

Et les jeux « libres » ?

De par l’investissement demandé, aussi bien technique mais surtout artistique, les jeux libres/open-source ne sont pas légion, même si certains titres vivent très bien. Unvanquished, 0ad, SuperTux Kart (qui va bientôt finaliser son mode multijoueurs en ligne), j’en ai chié sur SuperTux, un « clone » de Super Mario Bros avec notre manchot préféré en guise de protagoniste, pas parce qu’il est mal fait mais il devient vite exigeant et je ne suis plus vraiment une brutasse dans les platformers (pourtant j’ai kiffé Splasher), Armagetron réveillera la nostalgie des adorateurs de Tron, certains s’attaquent à recoder le moteur de jeux comme Command and Conquer (Red Alert), Total Annihilation, bien que les données restent propriétaires… D’autres projets dont je n’ai pas forcément connaissance pourront vous donner à la fois du fil à retordre mais aussi de longues heures de plaisir, vous aurez par contre à composer avec une qualité graphique et/ou sonore un peu en dessous des standards du monde commercial.

Un dernier élément qui peut être intéressant, le monde du retrogaming n’a pas oublié la plateforme polaire, et donc les émulateurs sont légion. En effet, vous avez probablement entendu parler des projets comme Recalbox qui ciblent le Raspberry Pi, qui ne font que prépackager les émulateurs et les optimisations pour la plateforme. Ces émulateurs sont évidemment disponibles sur une distribution plus classique, là aussi vous pourrez monopoliser une quantité de temps non négligeable à (re)découvrir des titres du passé, avec l’avantage par rapport au Rapsberry de pouvoir jouer à plus récent (je pense aux plateformes comme la Wii, potentiellement la Xbox 360 (j’ai pas pris le temps de chercher mais en 2015 déjà ça avançait), sûrement la PS3 même si ça peut demander une machine solide pour en profiter. L’aspect légal est toujours compliqué alors je vous laisse décider, mais c’est là.

Windows n’est plus la seule option

C’est ce qu’il faut retenir de cet article finalement. Quand on fait l’inventaire de ses usages, de ses matériels, que rien ne semble être bloquant y compris dans ce bastion qu’est le jeu vidéo, alors il n’y a aucune raison de conserver Windows sur son PC. J’ai déjà pu le dire et le redire, mais si vous êtes prêt à faire l’effort de vous libérer d’une plateforme qui vous plaît de moins en moins, franchement, entre collecte indue de données, absence de contrôle sur les mises à jour, installations de logiciels pénible (sans parler du Windows Store), vous trouverez certainement dans l’univers Linux la distribution qui vous siéra, qui siéra à votre matériel, bref, votre bonheur, parce qu’avec un monde qui devient de plus en plus tourné vers le numérique, il est plus que nécessaire de disposer des bons outils, des outils qui vous servent avant de servir leur fabricant/développeur.