Plugin WordPress pour bloquer les tentatives d’intrusion (et les spams de commentaires?)

Si comme moi, vous avez un site qui tourne sous WordPress, vous avez probablement des dizaines de tentatives d’intrusion par jour.

Pendant un temps, j’ai utilisé le plugin All in one WordPress Security. Il bloque les adresses IP après 3 tentatives de login infructueuses, et vous envoie une notification. C’est très bien mais je l’ai trouvé un peu trop lourd pour ce que je cherchais à faire, à savoir sécuriser ma page de login.

Ne trouvant pas de solution simple pour masquer cette putain de page, j’ai décidé d’écrire mon propre plugin qui fait le boulot. C’était l’occasion d’apprendre à développer des plugins WordPress, hé bien ce n’est pas si compliqué que ça en a l’air! Accessoirement, il bloque aussi les appels XML-RPC. Et comme side effect non prévu et très intéressant, les spams de commentaires… Je ne sais pas pourquoi, mais c’est ce que je constate chez moi en tout cas 🙂

Pour la petite histoire, j’ai tenté de le vendre via la plateforme codecanyon (je ne mets pas le lien, c’est volontaire car à mon humble avis ce sont des raclures). Pour ça, j’ai packagé mon petit bouzin, j’ai documenté le code à mort et je leur ai envoyé pour qu’ils l’analysent et le publient.

Deux semaines plus tard, j’ai reçu un email me disant que mon plugin a été refusé. Pourquoi? Parce que. Merci les gars pour la précision des explications, et allez vous faire empapaouter.

Alors tant pis pour la vente, je l’ai mis sous GPL2 et je l’ai publié sur Github.

Mais il marche comment ton plugin?

Le principe est très simple. Normalement, quand on veut s’authentifier sur un site WordPress, on tombe sur la page wp-login.php et on a accès au formulaire login/mot de passe.

Hé bien une fois que ce plugin est activé, il faut juste ajouter un paramètre de votre choix dans l’URL pour que la page de login soit visible. Par exemple, wp-login.php&dirty=marmotte

C’est tout. Vous pouvez essayer chez moi si vous voulez.

Vous pouvez aussi essayer d’envoyer des requêtes POST directement sur wp-login.php, même si le login/mot de passe est correct, si la clé n’est pas là ça ne passera pas;)

Et donc, je disais plus haut que ce plugin vous permet aussi de désactiver le XML-RPC, qui est un web service permettant d’effectuer des opérations sur WordPress depuis des applications tierces. C’est un vecteur important d’attaques brute force, et il est activé par défaut alors que la plupart du temps il n’est pas utile.

Et les spams de commentaires?

Alors ça, c’est le point imprévu de ce plugin.

Je soupçonne que les spambots se basent sur la présence d’une page wp-login.php pour savoir si on est sur wordpress, et à partir de là, ils savent comment poster un commentaire de façon automatique.

Ici, comme il n’y a plus de wp-admin.php standard, ils ne sauraient pas comment envoyer un commentaire. Enfin c’est mon analyse, je ne sais pas si elle est correcte… Toujours est-il que sur mon blog, j’ai zéro spam détecté par akismet, et rien en file d’attente. C’est plutôt cool du coup. N’hésitez pas à me faire un petit retour si ce n’est pas le cas chez vous, et dans ce cas je corrigerai cet article.

Voici l’archive du plugin à installer dans WordPress :
wp-login-door.zip

wp-login-door sur GitHub

Et si ce plugin vous plait, pourquoi pas faire un petit don?

A bientôt!





Un bougeoir en contreplaqué

Yo!

On peut faire de jolies choses en usinant du contreplaqué, car selon la profondeur, les couleurs s’alternent.

J’ai fait un petit (enfin bon, 15 cm) bougeoir pour parer aux coupures électriques, et aussi parce que c’est joli…

Je suis parti sur une superposition de 3 morceaux de contreplaqué de 8mm, soit une hauteur de brut de 24mm.

Le matériau brut : trois morceaux de contreplaqué collés entre eux
Le matériau brut : trois morceaux de contreplaqué collés entre eux
Ebauche à l'aide d'une fraise droite de 6.35mm (1/4'')
Ebauche à l’aide d’une fraise droite de 6.35mm (1/4 »)
L'ébauche est terminée...
L’ébauche est terminée…
...passons à la finition! Fraise à bout rond de 3.175mm (1/8'')
…passons à la finition! Fraise à bout rond de 3.175mm (1/8 »)

Après une bonne demi-heure de travail et un peu de ponçage au papier de verre fin, voici le résultat!

bougeoir contreplaqué

bougeoir contreplaqué

Après une couche d'huile d'abrasin, les teintes sont réchauffées
Après une couche d’huile d’abrasin, les teintes sont réchauffées

A bientôt!

Open tartine

Il y avait un moment que l’idée de graver une tranche de pain de mie ou brioche me trottait dans la tête…

J’ai gravé le logo Open Hardware sur du pain de mie. C’est une open tartine!

Alors par contre il faut aller lentement, à cause des aspérités sur la surface. A 500mm/min, ça ne marque pas du tout. J’ai gravé celle-ci à 50mm/min. Faut pas être pressé…

Open hardware pain de mie

La coupe est assez profonde
La coupe est assez profonde
Avec du fromage qui pue c'est bien meilleur :)
Avec du fromage qui pue c’est bien meilleur :)

Sous-verres : le support

Bon ben, les sous-verres, ça m’embêtait un peu de les livrer comme ça, tout nus; du coup j’ai usiné un petit support.

J’ai des planches de pin de 18mm, ce qui est un peu short en épaisseur… Alors paf! colle à bois, serre-joints, et j’ai doublé l’épaisseur 🙂

Dans ce bloc de 36mm, j’ai pu tailler ceci:

Support sous verres
Le support taillé dans deux planches collées
Support sous verres
Yeah, Jacob Delafon! Il y a 2mm de jeu entre les disques et le support.

Bisous et bon long week end!

Fabrication de sous-verres personnalisés, gravés au laser

Comme à chaque week-end de Pâques depuis une dizaine d’années, je vais retrouver mes amis et ma famille en Limousin, et c’est toujours la bonne occasion pour se mettre une belle race 🙂

Cette année, j’ai décidé de fabriquer des sous-verres pour l’ami Geo (http://vivrealarochette.fr), et y inscrire les principales spécialités de chez lui lorsque vient Pâques.

Les sous-verres mesurent 10cm de diamètre. Je les ai découpés à la fraise de 2.5mm, et gravés avec le laser.

1. Conception

Pour la conception, j’ai utilisé Inkscape (https://inkscape.org)
J’ai dessiné mon cercle de 10cm, mis en place mes textes. Ah tiens, au passage, voici comment courber un texte dans Inkscape:
– Il faut d’abord le transformer en chemin (menu Chemin > Objet en chemin)
– Aller dans Chemin > Effets de chemin
– Cliquer sur le + pour ajouter un nouvel effet de chemin, et choisir « Courber ».
– Jouer avec les différentes méthodes de courbure (manuelle, liée à un chemin…)

Une fois que mon dessin est prêt, je l’exporte au format PNG, en noir et blanc.

inkscape

2. Découpe

Mon laser n’étant pas assez puissant pour couper du MDF de 3mm, j’ai fait la découpe avec Cambam et une fraise de 2.5mm.

3. Préparation du G-Code pour graver l’image PNG

Pour générer du G-Code à partir d’une image non vectorielle, j’ai écrit un programme en C# qui lit l’image, et écrit les commandes G-Code dans un fichier texte. Il reste des choses à perfectionner, mais il fonctionne plutôt bien 🙂

PicGCode

4. Mise à zéro de la machine pour le laser

Une fois mes disques découpés, mon G-Code préparé, il n’y a plus qu’à les graver!
Par contre, le module laser est décalé par rapport à la fraise, donc il fallait remettre les choses à zéro avant d’attaquer.
Pour ça, j’ai fait un petit G-Code à la main, qui me dessine au laser un cercle de 10cm de diamètre. Après, je n’ai plus qu’à placer mon sous-verres dans le cercle et je suis sûr de sa position 🙂

Shapeoko, préparation gravure laser
Positionnement du disque après la mise à zéro de la machine

5. A l’attaque!

Hop, la phase la plus excitante: la gravure!

Le faisceau laser m'impressionnera toujours...
Le faisceau laser m’impressionnera toujours…
Universal G-Code Sender
Universal G-Code Sender
Petite photo prise entre deux allumages du laser
Petite photo prise entre deux allumages du laser
Et voilà la série de sous-verres :)
Et voilà la série de sous-verres :)

6. Vernissage

Alors certains diront qu’il ne faut pas vernir un sous-verre, parce que son but premier est d’absorber les gouttes de condensation et de pinard qui pourraient couler à l’extérieur du verre. Mais super, quoi, une fois taché, ton sous-verre est… taché.
Alors j’ai pris la liberté de passer deux couches de vernis, et j’avoue que le rendu n’est pas trop dégueu. Par contre, à la lumière, en le regardant de profil, on voit quelques coups de pinceaux. Je devrai perfectionner ma technique de vernissage…

Première couche
Première couche
Seconde couche
Seconde couche

Du nouveau dans l’chalet

Salut à vous!

Z’avez vu? Ça change hein!
Mais ceci n’est pas qu’un changement de thème. J’ai pris la décision de migrer mon blog sur un WordPress tout neuf.

Cette petite lubie vient d’une réflexion que j’ai eue avec moi-même: je me suis dit que ce serait bien d’internationaliser le bazar et d’être lu par un public international… Rho le mec, quelle ambition!

Alors pour avoir un site WordPress multilingue, il y a plusieurs possibilités avec des plugins, mais pour avoir déjà tenté la chose dans le passé, c’était un beau bordel à gérer, et pas d’une stabilité à toute épreuve. En plus de ça, les deux langues étaient dans le même post avec un séparateur, donc en gros si à l’avenir tu veux changer de plugin multilingue, tu l’as dans l’os.

L’autre solution est de créer deux sites. Ou plutôt, de mettre en place une instance de WordPress multisites. C’est la décision que j’ai prise, et comme ça, je peux en plus découvrir des fonctionnalités insoupçonnées de WordPress dans ce domaine!

C’est pas mal ce système de multisite, parce qu’on peut déployer des plugins et faire des maintenances sur tous les sites en une seule manip. Et puisqu’on parle de plugins, reconstruire un site tout propre va me permettre de faire un peu le tri dans ce que j’utilise, et conserver uniquement l’essentiel.

Donc j’ai installé un WordPress tout neuf en parallèle, activé le multisite, et créé deux sites: un pour le français, et un pour l’anglais (http://dirtymarmotte.net/en)

Côté français, j’ai importé l’existant et je me suis assuré que les urls seraient exactement les mêmes (ça c’est pour le référencement, car ce serait bête d’avoir tous mes liens morts!). Bon, il y a des images qui ont sauté, et que je suis en train de corriger… C’est bien chiant d’ailleurs.

Côté anglais, je vais reprendre les articles de 2015-2016 et les traduire. Je verrai par la suite pour traduire les années d’avant… Ca va me faire un peu de boulot, mais je pense que le jeu en vaut la chandelle, et mes articles pourraient intéresser des lecteurs par-delà les limites de la francophonie… Mais qu’est-ce que c’est que cette phrase?? Au secours!

Bref, pour vous cela ne changera rien, à part la tronche du blog, que je retoucherai peut-être avec le temps. Les articles seront toujours aussi mal rasés, et sentiront toujours aussi bon le garage (où il fait 5°C cet hiver), l’atelier et le plastique fondu!

Piloter Grbl par le port série

Hey, j’ai une bonne nouvelle : ma Shapeoko arrive à fonctionner, et surtout ne plus planter, et ce avec ma carte maison! Wouhouuu c’teu fête!

J’ai bagarré pour en arriver là. J’attends la carte « nouvelle mouture » du fabricant, mais impatient que je suis, je n’ai pas pu résister à la tentation de la faire fonctionner moi-même…:)

Le point sensible, d’après les forums et mes constats, c’est la liaison USB entre le PC et l’Arduino sur laquelle tourne Grbl.
Alors je me suis dit que je pourrais utiliser une autre Arduino entre les deux, qui communique par liaison série.

J’aurai donc:

PC<– liaison USB –> Arduino 1 (relais) <– Liaison série (Rx/Tx) –> Arduino 2 (Grbl)

L’Arduino 1 est une Arduino Mega 2560, largement surdimensionnée mais j’en avais une en stock alors ça m’allait bien 🙂

Entre les deux Arduini (pluriel d’Arduino?), on a juste besoin de 3 fils: Rx Arduino 1 vers Tx Arduino2, Tx Arduino 1 vers Rx Arduino 2, et relier les masses entre elles (Gnd).

En fin de compte, sur l’Arduino « relais », j’avais besoin d’un port usb en entrée et un port série en sortie (la Mega 2560 en a 3, en plus du port zéro qui correspond à l’entrée USB). Quoique, ça devrait aussi fonctionner avec la librairie SoftwareSerial pour émuler un port série.

Bref, le programme est très simple et assure une communication bidirectionnelle: il lit ce qui entre sur le port 0 (le port USB) et l’écrit sur le port 1 (connecté à l’Arduino 2), et il lit ce qui arrive du port 1 pour l’écrire sur le port 0 (connecté au PC).

int baudRate = 115200;
int tmpUsbData = 0;
int tmpGrblData = 0;

void setup() {
  Serial.begin(baudRate);
  Serial1.begin(baudRate);
}

void loop() {
  
  if(Serial.available())
  {
    //lecture des données en provenance du PC (USB)
    tmpUsbData = Serial.read();
    //Ecriture vers le port série
    Serial1.write(tmpUsbData);
  }
  
  if(Serial1.available())
  {
    //lecture des données en provenance du port série
    tmpGrblData = Serial1.read();
    //Ecriture vers le PC (USB)
    Serial.write(tmpGrblData);
  }
}

Le câble USB utilisé mesure 20cm (beaucoup plus court que le câble d’origine, et donc moins sensible aux interférences électromagnétiques). J’ai dû virer l’isolateur galvanique qui posait des problèmes de communication.

Et ça ne plante plus, mon pote. Ca ne plante plus! Enfin jusqu’à preuve du contraire hein, parce que je commence à avoir l’habitude des phases maniaco-dépressives avec cette machine…

L’intérêt de conserver une liaison USB est de pouvoir utiliser bCNC et les autres outils de contrôle pour Grbl. Si j’utilisais une carte SD, je serais limité dans les interactions avec la machine, et je ne pourrais pas bénéficier (entre autres) de l’autoleveling de bCNC.

Shapeoko 3, déconnexions USB et carte de contrôle

Je me bats avec ma Shapeoko 3 depuis à peu près le début, car il y a des déconnexions USB très fréquentes quand on attaque assez fort dans la matière. Par contre ce n’est pas le cas si on n’attaque pas trop fort dans la matière.

Un tour dans les forums et des discussion avec Jorge Sanchez (de chez Carbide 3D) m’ont laissé entendre que ces déconnexions étaient très probablement causées par des interférences électromagnétiques entre les moteurs (pas à pas, ou peut-être la broche) et le câble USB.

J’ai suivi les instructions de Jorge: raccordement de masses, utilisation d’un isolateur galvanique USB, mise à la terre. J’ai cru que c’était réglé, et puis c’est revenu… Ça m’a vraiment saoulé, et j’ai décidé de fabriquer ma propre carte de contrôle pour la machine.

Je suis parti sur des drivers pas à pas Pololu DRV8825, commandés par une Arduino Uno sous Grbl. Rien de très compliqué a priori, puisque j’ai déjà fait quelque chose de comparable avec mon CoreXY, sur 2 axes seulement.

Alors je me suis lancé, et j’ai fabriqué un circuit imprimé avec la Shapeoko elle-même (comme je disais, quand on grave et que ça ne force pas, ça marche!).

Côté design, j’ai utilisé Fritzing et Visolate.

Pour l’envoi sur la machine, j’ai découvert bCNC et croyez-moi c’est VRAIMENT le top. Je ferai certainement un article dessus pour la prise en main. Pour la faire courte, c’est un logiciel qui envoie le G-Code à la machine, mais qui permet de compenser l’axe Z selon les mesures faites au préalable avec un palpeur. C’est trop bien, particulièrement quand on grave un circuit imprimé et qu’on veut avoir une profondeur identique partout!

Bref, voici la fabrication de la carte en images.

Gravure PCB
Gravure des traces. Si si, ça tourne! C’est l’appareil photo qui est trop rapide :)

 

perçage pcb
Le perçage avec une mèche de 1mm.

 

bCNC
bCNC en pleine action! On peut voir le quadrillage effectué par le palpeur, avec les différences de hauteur.

 

Le circuit terminé
Le circuit terminé. C’est autre chose que ce que j’avais fait dans le passé!

 

Test pcb
Test avec 3 moteurs Nema17, concluant :)

 

J’ai branché les moteurs de la Shapeoko (Nema23) sur la carte, et.. Rien. Enfin si: des réactions, mais des réactions étranges.

En fait j’ai réalisé que les fils n’étaient pas agencés pareil au niveau des connecteurs!

Cablage moteurs pas à pas 4 fils
Codes couleurs des moteurs bipolaires à 4 fils. (honteusement piqué sur http://www.linengineering.com)

 

Avec les fils dans le bon ordre, le fonctionnement est bien meilleur, n’est-ce pas 🙂

Tout content, je lance un job avec des passes de 2.5mm dans du pin. J’y crois, j’y crois, j’y crois. Jusqu’à ce que ça se plante. La même. Exactement la même qu’avec le contrôleur d’origine de la Shapeoko. Autant dire que ma tête a pris successivement toutes les couleurs de l’image ci-dessus.

J’ai tout fait, j’ai essayé sur un PC de bureau (relié à la terre) plutôt qu’un portable, j’ai essayé à tout hasard un autre firmware, rien à faire. C’est relou hein…

Alors hier soir j’ai retenté le contrôleur d’origine, en diminuant la profondeur des passes (1.25mm) et ça va. Pour le moment en tout cas…

Mais c’est frustrant, quand on a une grosse machine, puissante, de devoir se coltiner des passes aussi fines, franchement…

[Edit du soir même] Hééééé ben non. Finalement ce soir elle ne voulait plus. Je commence à en avoir plein mon ass, mais alors vraiment…

[Edit du lendemain] Carbide 3D va m’envoyer une nouvelle carte (une nouvelle mouture, pas juste un remplacement de celle-ci). Même si je râle, j’apprécie énormément leur support, ils ne laissent pas leurs clients dans le mouise. C’est très important.

Si vous avez le même problème que moi, faites-moi signe, que vous l’ayez résolu ou non, ça m’intéresse!

Podcasts, RSS et PHP

Oyo!

Un petit billet « copinage » pour les podcasts que j’écoute, et promo pour podcast addict, un lecteur de podcasts sur android. Vous les trouverez (en partie) dans le menu de gauche, sous « podcasts ».

Breaking news : http://www.nextinpact.com/news/98103-podcast-addict-retire-play-store-son-developpeur-cherche-solution.htm

Non mais qu’est-ce que c’est que ce bordel?? Podcast addict retiré aujourd’hui du play store pour cause de contenu pornographique… Non mais n’importe quoi les gars… Un conseil Xavier: pars sur F-Droid…

Edit : au 18.01.2016, Podcast Addict est revenu dans le play store.

Je les écoute dans la voiture; parmi eux NipSource, une très bonne équipe dont j’aimerais bien entendre le premier épisode de 2016 au passage… Un membre de cette équipe, Donkluivert, fait son propre podcast et est hébergé sur une plateforme qui ne lui permet pas de l’exporter correctement en RSS. Quand je dis correctement, c’est juste qu’un lien vers le fichier son doit être présent dans les items du flux pour qu’il soit téléchargeable par podcast addict (susmentionné:) sur ma tablette.

Bref, je voulais ajouter son podcast à mes flux et ça ne marchait pas.

Alors j’ai écrit un petit proxy en PHP qui enrichit son flux en allant extraire les liens sons depuis les pages cibles, et qui les insère dans les items du flux RSS.

Avec un petit système de cache pour ne pas envoyer trop de requêtes vers le site initial.

Le flux complet de l’ami DK est donc ici : chroniques du jeune manchot

Alors voilà, si l’un d’entre vous anime un podcast ET a des problèmes de flux RSS (je dirais probabilité… nulle?), ce proxy est pour vous!

Mésaventures graphiques linuxiennes

facepalm

Comme dirait mon ami Gégé, avec son accent languedocien : « putaing, ça m’a cassé les couilleu! »

Je ne crois pas vous en avoir déjà parlé ici, mais depuis que j’étais sous Linux Mint 17.2 j’avais parfois des problèmes au démarrage de mon pc . Dans l’ordre normal, Grub s’affiche, puis le logo de Mint, puis un écran noir avec un curseur en haut à gauche, et enfin l’écran de login.

Hé bien il arrivait que ça se bloque à l’écran noir, avec le curseur en haut qui ne clignote pas. Et là, rien à fait, il fallait éteindre l’ordi à la sauvage, et réessayer. Et au bout de 2 ou 3 fois, ça finissait par passer.

A un moment, j’ai bien cru que j’avais réglé le problème, je ne sais plus comment d’ailleurs, mais tant pis car c’est revenu.

Alors nouvelle année oblige, je me suis dit « Bon ça me prend vraiment la tête, je vais tenter une autre distribution. »

Je pars sur Fedora, mon premier amour. On en est à la 23. Oh la vache, ça a bien changé! Gnome 3, accroche toi, on ne peut pas réduire une fenêtre… Bref, j’étais prêt à adopter Fedora 23 malgré tout, lorsque tout à coup… ça a recommencé. MERDE!

Alors pas exactement de la même manière, car là j’arrivais en mode graphique, et l’écran restait vide et gris, avec la souris au milieu. Nous voilà bien barrés… Et pareil, en redémarrant à la cochon 3 ou 4 fois (oui ça a augmenté…) j’arrivais à ouvris ma session.

J’ai alors pensé à Patrick de bloguelinux.ca, qui a passé des années sous Debian et en a toujours vanté les mérites (sauf récemment, puisqu’il a décidé de passer à ArchLinux. Bonne chance à toi d’ailleurs Patrick, car j’ai essayé d’installer Arch sur une VM avant histoire de voir, j’ai vomi et j’ai dû dire quelque chose comme « ah oui… »)

Déprimé à l’idée de Arch donc, va pour Debian!

J’installe Debian, qui me force à monter à l’étage et à me brancher en ethernet sur la box (oui, comme le driver de la puce wi-fi n’est pas libre, il faut l’installer après coup… Chez tous les autres le wi-fi est reconnu direct…)

Bref, sous Debian je la fais courte mais j’ai de nouveau été emmerdé. Cette fois j’avais accès à l’écran de login, mais une fois validé, j’avais juste un écran vert Debian, ma souris, et… C’est tout. Et la même, tous les 4-5 reboot c’était bon.

Alors là j’aime autant vous dire que c’est devenu très relou, et j’ai commencé à creuser… En mode console, j’ai fait le tour des logs de démarrage, et je les ai comparés à ceux du live cd qui lui, démarre bien.

Ma carte graphique, une AMD Radeon HD 8870M, était détectée comme intel i915 sur le live cd, et comme radeon sur mon installation.

J’ai édité le fichier /etc/X11/xorg.conf pour changer le driver de radeon à intel et plus de problème de démarrage… Non mais j’te jure…

Par contre je me retrouvais avec un e Debian, et ce qui me fatigue chez Debian, c’est son côté extrémiste du libre… Le driver du wifi, flash player (même si bon… ok…)

Il y a aussi le magasin d’applications qui est moins friendly que celui de Mint.

Alors j’ai réinstallé Mint! Soyons fous!

Après plusieurs démarrages « nomodeset » dans grub, j’ai réussi à paramétrer mon fichier xorg.conf pour qu’il utilise le driver intel, et ma foi… On a l’air pas mal…

C’est pas simple tous les jours, je vous assure…