Skip to content
Korben, roi d’internet, logo bébé avec des lunettes en mode thug life

CrowdSec – Introduction à l’API Local

Article en partenariat avec CrowdSec

Qu’est-ce que CrowdSec ?

Si vous avez manqué les épisodes précédents sur CrowdSec, il s’agit d’un outil open source que vous installez sur un serveur et qui est capable de détecter et bloquer les adresses IP malicieuses en se basant sur des schémas locaux et une liste d’IP mutualisée entre les utilisateurs de CrowdSec. Pour tous les détails, je vous invite à lire mon article sur CrowdSec 1.0.

Dans cette version 1.x, CrowdSec a mis en place une API Local qui peut être requêtée par l’agent CrowdSec ou le client en ligne de commande, mais également par les machines CrowdSec distantes.

Que permet de faire l’API ?

L’API Local permet plusieurs choses. Tout d’abord elle permet aux bouncers (qui sont les vigiles de votre serveur si vous préférez et qui envoient les data à bloquer à votre Firewall, WordPress, Nginx…etc.) de tout simplement consulter la liste des décisions en place. « Décision » ici a le même sens que « règle ».

Alors qu’est-ce qu’une « décision » dans le cadre de CrowdSec ? Et bien c’est tout simplement des règles de blocage par IP, par plage IP, par nom d’utilisateur ou ce que vous voulez puisqu’il est possible de faire du customisé.

Pour que cela fonctionne, le bouncer a besoin d’une clé API générée par CrowdSec et l’autorisant à consulter la liste des décisions en place.

Après si vous voulez aller plus loin, avec le client en ligne de commande ou vos propres scripts ou votre propre code, vous pouvez également agir sur l’API en mode « écriture ». C’est-à-dire supprimer ou ajouter des décisions, pousser des alertes, rechercher ou récupérer des alertes, mais également en supprimer.

Pour cela, il vous faudra vous authentifier sur l’API avec un ID de machine et un mot de passe.

Comment utiliser l’API ?

Bon je pars du principe que CrowdSec est en place et que vous disposez du client en ligne de commande (CLI).

S’authentifier sur l’API

Pour vous authentifier sur l’API vous avez besoin de générer une clé pour le bouncer. La plupart des Bouncers proposés sur le hub de CrowdSec sont équipés d’un script d’installation qui effectue cette démarche à votre place.

Toutefois si vous développez votre propre bouncer, voici comment obtenir une clé :

cscli bouncers add BouncerdeTest

Ce qui va vous donner alors une clé d’API que vous devrez indiquer dans la config de votre Bouncer.

Si c’est une machine que vous voulez enregistrer, vous pouvez le faire de 2 façons différentes. La plus simple consiste à utiliser la commande suivante :

cscli machines add MachinedeTest --auto

Cela aura pour effet de vous générer un login et mot de passe dans un fichier de config yaml que vous pourrez ensuite utiliser.

Ça, c’est dans le cas où vous fonctionnez uniquement en local sur une même machine. Maintenant si vous êtes sur une machine distante, vous devez enregistrer votre serveur API comme ceci :

cscli lapi register -u <api_url>

Puis valider l’ajout de la machine, cette fois sur le serveur où se trouve l’API Local comme ceci :

cscli machines validate MachinedeTest

Ensuite pour lister les machines enregistrées, il suffit de faire :

Utiliser l’API via un Bouncer

Maintenant pour établir une connexion avec l’API, et bien comme pour toutes les API, de la requête HTTP (vous pouvez activer le HTTPS si vous bossez avec plusieurs machines. Pas besoin donc si vous tournez uniquement en local.

Avec

Concernant les appels à l’API à partir d’un Bouncer, vous avez 2 méthodes disponibles :

Query Mode (getDecisions)

Le Query mode permet au bouncer d’interroger l’API afin de récupérer des informations concernant les décisions prises au sujet de certaines plages IP, IP individuelles, nom d’utilisateur…etc.

Voici comment appeler l’API (avec Curl) pour demander des infos sur une IP bannie :

curl  -H "X-Api-Key: e73e3672427ecd8cd9a6487f7e8f4f03"  http://localhost:8080/v1/decisions\?ip=98.65.32.47

Comme vous pouvez le voir, on passe bien la clé de l’API et on invoque le paramètre ?ip pour spécifier l’adresse IP sur laquelle on souhaite avoir des infos.

Et la réponse renvoyée sera au format JSON comme ceci :

[{"duration":"2h25m47.212560128s","id":1023,"origin":"cscli","scenario":"manual 'ban' from '939972095cf1459c8b22cc608eff85daEb4yoi2wiTD7Y3fA'","scope":"Ip","type":"ban","value":"1.2.3.4"}]

Vous pouvez également utiliser le paramètre ?range pour spécifier une plage réseau, ou si vous le souhaitez, le couple de paramètres scope + value pour demander des infos sur un nom d’utilisateur précis, un ID de session…etc.

curl  -H "X-Api-Key: e73e3672427ecd8cd9a6487f7e8f4f03"  http://localhost:8080/v1/decisions\?scope\=username\&value\=korben

Très cool, n’est-ce pas ?

Stream Mode (getDecisionsStream)

Le stream mode a un fonctionnement un peu différent et plus basique puisqu’il permet au bouncer de récupérer les décisions en place ou les nouvelles décisions à intervalles réguliers.

Au lancement du bouncer, on peut par exemple récupérer les décisions actives, mais également celles fraichement supprimées en invoquant l’API à l’aide du paramètre ?startup à « true », comme ceci :

curl  -s -H "X-Api-Key: e73e3672427ecd8cd9a6487f7e8f4f03"  http://localhost:8080/v1/decisions/stream\?startup\=true

En passant le paramètre ?startup à false, vous récupérerez ensuite uniquement les nouvelles décisions arrivées après le démarrage du bouncer.

{
  "deleted": null,
  "new": [
    {
      "duration": "3h59m57.641708614s",
      "id": 2410,
      "origin": "cscli",
      "scenario": "manual 'ban' from '939972095cf1459c8b22cc608eff85daEb4yoi2wiTD7Y3fA'",
      "scope": "Ip",
      "type": "ban",
      "value": "3.3.3.4"
    }
  ]
}

Si aucune décision n’a été ajoutée, la réponse sera « null » :

{
  "deleted": null,
  "new": null
}

Utiliser l’API via un Watcher (cscli ou l’agent CrowdSec)

Comme je vous le disais en intro, il vous faudra ici fournir à l’API un ID de machine et un mot de passe. L’utilisation en écriture (POST / DELETE) ou en consultation (GET) de certaines fonctions de l’API se fait principalement via l’interface en ligne de commande ou l’agent CrowdSec, mais rien ne vous empêche également de l’utiliser en direct.

Ici même principe… Par exemple pour supprimer une ou plusieurs décisions concernant une IP précise :

curl -X DELETE "https://localhost:8080/v1/decisions?ip=98.65.32.47" -H  "accept: application/json"

Et en réponse, vous recevrez une chaine de caractère vous indiquant combien de décisions ont été supprimées.

Pour ceux qui veulent se lancer dans le code, sachez que le Github de CrowdSec contient du code écrit en Go qui montre comment se connecter et exploiter l’API.

L’ensemble des méthodes de l’API sont disponibles ici.

Conclusion

Vous l’aurez compris, l’API Local de CrowdSec est assez simple à prendre en main, et la création d’un bouncer spécifique est abordable. Un bouncer écrit en Go et adaptable à vos besoins spécifiques est également disponible ici, en plus des bouncers spécifiques pour Nginx, WordPress, HAProxy, iptables, nftables ou encore les firewalls cloud d’Amazon (AWS) et Google (Network FW et Cloud Armor) dont les sources sont également trouvables sur le Github. Vous trouverez aussi un bouncer en LUA et un autre en PHP ici.

Et bien sûr, vous trouverez toutes les informations dont vous avez besoin sur le site de CrowdSec.

Le codeur Michael Mulet, inventeur du Code Relay qui consiste à coder les uns derrière les autres un peu comme une course de relai, a mis au point un jeu baptisé Fontemon qui est, tenez-vous bien, le premier jeu qui tient dans une font… Oui oui, une font, c’est-à-dire une police de caractère au format OTF.

Jouable dans Word, dans votre éditeur de code ou dans votre logiciel de retouche photo, Fontemon ne contient ni JavaScript, ni HTML, ni quoi que ce soit de technique. C’est 100% de la font !

Et il en a soulevé de la font pour produire ce jeu, puisqu’il s’est penché sur les différentes méthodes permettant de dessiner un glyphe à l’écran en appuyant sur une touche du clavier. Pour cela, il est parti sur la syntaxe Type2 Charstrings qui lui permet de dessiner l’équivalent de pixel dans sa font.

Type2 Charstrings explications

Puis en fonction de son dessin, il peut donner l’impression que le pixel est plus ou moins noir / gris.

création de pixels en charstrings

Ainsi, chaque caractère tapé à partir de votre clavier génère une frame complète écrite en Type2 Charstrings. Mais pour que le jeu soit vraiment un jeu, il faut que ce soit jouable. Ahaha. Et pour que les scènes (les glyphes) s’enchainent correctement que le gameplay soit réel, il a utilisé les ligatures que les experts en FireCode connaissent bien, ce qui lui permet « d’associer » les glyphes entre eux, permettant alors d’afficher de nouvelles scènes.

Tableau des ligatures

En gros, c’est comme si vous tapiez un O (et là ça affiche Pikachu), puis vous tapez un E, et au lieu d’afficher le glyphe qui correspond à E, ça fusionne les deux et ça affiche le glyphe correspondant à Œ. Donc par exemple un Pikachu qui gagne le combat. Mais si vous avez utilisé une autre lettre après le O, la ligature générée sera différente, mais s’enchainera bien également (Genre Pikachu qui perd).

Et le résultat est jouable soit dans un outil de votre choix en téléchargeant sa police de caractère, soit en testant le jeu directement sur son site.

capture du jeu Fontemon

Et si vous voulez des solutions ou des cheatcodes, tout est là.

Maintenant si vous souhaitez vous aussi développer votre propre jeu en font, il vous faudra Blender ainsi que le moteur développé par Michael Mulet capable de convertir un sprite en chartstrings. Toutes les explications sont disponibles ici.


Qui ne connait pas encore Zoom ? L’outil préféré des adeptes de la visioconférence est rentré dans les habitudes de tous, à tel point qu’on se dit maintenant : « Je te zoom »… Un peu comme on se dit « Je te skype ».

Sauf que voilà, pour utiliser Zoom sur PC ou Mac, il faut installer ce qui s’appelle un client. C’est un petit bout de logiciel silencieux qui s’installe sur l’ordinateur et qui vous permet ensuite d’utiliser ce service. Et malheureusement, cela peut poser plusieurs problèmes. Tout en d’abord en termes de sécurité, il suffit qu’un jour une vulnérabilité soit détectée dans cet agent, et paf, votre ordinateur peut-être potentiellement à risque ou votre caméra activée à distance. Ce genre d’incident a d’ailleurs déjà eu lieu en 2019 avec une faille permettant d’activer les webcams. Ou plus récemment en mars dernier avec du partage d’écran non sollicité.

Article de presse sur les failles de Zoom

Mais au-delà de ça, Zoom collecte également pas mal de données personnelles que la société partage ensuite avec d’autres sociétés tierces. Et cela même si vous utilisez Zoom sans vous créer de compte. Zoom va enregistrer votre IP, le type d’appareil utilisé et même le compte Facebook que vous utilisez si vous êtes connecté en même temps sur le réseau social.

Vous l’aurez compris, c’est de la saloperie. Après, on est souvent forcé d’utiliser Zoom parce que notre employeur l’exige ou parce que nos amis sont trop noobs pour savoir utiliser autre chose. Dans ce cas, je vous recommande de passer exclusivement par l’application mobile. Ça vous évite au moins d’installer le client sur votre PC ou votre Mac.

Après si c’est trop tard, et bien pas de stress. Car il existe un outil open source qui s’appelle Zoom Deleter et qui s’installe sur macOS ou Windows, et qui une fois lancé, possède 2 fonctions :

  • Désinstaller le client Zoom
  • Empêcher une installation future de ce client Zoom
Zoom Deleter Interface

Ainsi, vous retrouverez un OS vierge de tout agent infiltré Zoom et surtout vous serez protégé d’une éventuelle réinstallation à l’insu de votre plein gré. On ne sait jamais…

Pour plus d’infos, je vous invite à :


Si vous êtes amoureux du terminal et de la ligne de commande et qu’en même temps, vous êtes un trader du dimanche, voire un cryptotrader, j’ai un super outil à vous proposer qui s’appelle Ticker.

Ticker permet de visualiser d’un seul coup d’oeil un tableau contenant les valeurs de votre choix, aussi bien des cours de bourse traditionnels que du Forex, des EFT et même le cours de cryptomonnaies. Les données sont issues pour la plupart de Yahoo Finance / Coinmarketcap

valeurs bourse dans le logiciel ticker

Pour installer Ticker sous macOS, il faut utiliser Brew :

brew install achannarasappa/tap/ticker

Et pour Linux, vous pouvez utiliser le snap, le docker ou l’installer manuellement.

sudo snap install ticker
docker run -it --rm achannarasappa/ticker
curl -Ls https://api.github.com/repos/achannarasappa/ticker/releases/latest \
| grep -wo "https.*linux-amd64*.tar.gz" \
| wget -qi - \
&& tar -xf ticker*.tar.gz \
&& chmod +x ./ticker \
&& sudo mv ticker /usr/local/bin/

Le suivi se fait en live avec un intervalle que vous réglez vous-même. Les stocks que vous voulez suivre peuvent être entrés dans le fichier de config ticker.yaml ou appelés directement depuis la ligne de commande.

Voici un exemple :

ticker -w BTC-USD,TSLA,ABNB -i 5
ticker interface

Après il y a différents paramètres qui vous permettent d’afficher plus ou moins d’infos dans la fenêtre. Ainsi vous pouvez afficher la valeur, le nom de l’action, le délai de cotation, le cours à l’ouverture, le cours à la clôture de la veille…etc.

Au-delà des données, vous pouvez également configurer le rendu d’affichage du tableau et mettre par exemple vos couleurs.

Cool non ? Amusez-vous bien avec ce truc, Ticker ❤️ sur vous !


Vous le savez, Firefox est le meilleur navigateur Internet de l’Univers visible et invisible. Toutefois, à un moment, Mozilla a un petit peu tourné le dos au format RSS. Et c’est bien dommage.

RSS (Really Simple Syndication) est tout simplement une manière de structurer un contenu web en XML sans mise en forme, souvent une liste d’articles qui est ensuite interprété dans un lecteur de flux RSS. Ça permet par exemple de faire de la veille ou d’importer du contenu dans un système.

Pour une raison que j’ignore, le RSS a été clairement délaissé par les géants d’Internet. Je pense que cela permettait une trop grande ouverture et un partage trop simple des contenus en ligne. Snif… Moi, perso, je ne l’ai jamais abandonné et vous pouvez retrouver mes flux RSS sur cette page.

Mon travail ne serait pas le même sans flux RSS… Mais que voulez-vous, dorénavant, les sites qui proposent du RSS qui plus est avec du contenu non tronqué, sont en infériorité. Surement parce qu’en gardant captif l’internaute sur le site web, on peut lui afficher de la pub et l’enfermer dans une bulle de contenu, alors que le flux RSS, c’est la donnée qui se balade et qui se mélange avec d’autres flux.

Et donc comme je vous le disais, Firefox a également suivi ce chemin… Donc si vous allez sur un flux RSS avec Firefox, celui-ci vous proposera de le télécharger comme un vulgaire fichier alors qu’avant il savait l’afficher proprement et permettait même de s’y abonner.

Heureusement, grâce à l’extension Want My RSS, vous allez pouvoir redonner à Firefox les fonctionnalités qui lui permettaient de vous avertir de la présence d’un flux sur le site visité…

Mais également celle qui affichait le contenu en mode clair ou sombre, ainsi qu’un petit bouton d’abonnement au flux renvoyant vers le lecteur de flux Feedly

Plus d’excuses donc pour ne pas suivre les flux de vos sites préférés. Et n’oubliez pas, à chaque nouvel abonné sur mon flux RSS, c’est un petit chaton trop mignon que vous sauvez in extremis d’un fou armé d’un massicot.

Alors, n’hésitez pas !


Si vous vous sentez d’humeur créative et que vous voulez écrire la plus belle fiction interactive de l’histoire des fictions interactives, j’ai ce qu’il vous faut.

Mais avant, petit rappel sur ce qu’est une fiction interactive. Il s’agit d’une catégorie de jeu vidéo entièrement textuel dans lequel le joueur suit une histoire et peut prendre différents chemins dans la narration. Vous connaissez sans doute Zork I sorti en 1979, évidemment Le Guide du Voyageur Intergalactique dont j’ai parlé y’a pas longtemps, ou encore le Manoir du Dr Genius.

Manoir du Dr Genius

Vous connaissez aussi peut-être les « livres dont vous êtes le héros« . J’en ai lu plein quand j’étais plus jeune et franchement, ça me tente d’y remettre le nez.

les livres dont vous êtes le héros

Il y a également les escape games très à la mode ces dernières années qui reprennent un peu ce concept.

Basiquement, concevoir ce type de fiction interactive, que ce soit sous forme de jeu sur ordinateur ou dans un bouquin n’est pas vraiment difficile si 1/ Vous avez de l’imagination et quelques talents d’écrivain et 2/ Si vous avez le bon outil pour vous y retrouver.

Alors pour le talent d’écrivain, je peux rien faire pour vous… Faut bosser. Mais pour le logiciel, j’ai une petite sélection à vous proposer. Cela vous permettra de concevoir vos jeux, vos histoires voire même des scénarios de formation en mode serious gaming même si vous n’êtes pas du tout calé en développement.

Sommaire

Allez, c’est parti !

Ink

Ink est présenté par ses concepteurs comme le Word de la story interactive (Choose Your Own Adventure). Le principe de fonctionnement est classique pour ce genre d’outils. Vous commencez à rédiger votre histoire puis vous la faites progresser sous forme de branches qui se séparent, se rejoignent…etc. Ainsi, pas forcement besoin de faire un plan complexe avant, il suffit juste de laisser l’histoire vous emporter et organiser votre contenu au fur et à mesure.

éditeur ink fictions interactives

Comme vous pouvez le voir sur ma première story interactive, il y a toute une syntaxe à respecter un peu comme du markdown, plutôt simple et dont vous trouverez les détails ici. Comme dans ce genre d’histoire, il est possible de définir des variables pour votre personnage comme des points de vie que vous pouvez lui retirer en fonction des choix qui sont faits.

Une fois votre histoire écrite, vous pouvez alors l’exporter au format HTML interactif, ou utiliser le plugin Unity pour récupérer le script dans l’éditeur Unity.

story histoire manu covid

ADRIFT

Le second s’appelle ADRIFT, est totalement gratuit et se compose d’un module pour le développement et d’un module « runner » pour le lancement des jeux. La conception se fait en point and click et ça fonctionne sous Windows et Linux. A vous de débrider votre imagination et de décrire les lieux, les personnages, les objets et les événements qui surgissent dans votre jeu !

QUEST

Le troisième c’est Quest. Plus modeste et plus simple, Quest est lui aussi gratuit, autorise l’insertion de sons et de vidéos et permet même de transformer son app en app mobile.

TADS

Celui-ci s’appelle TADS et est un peu plus costaud. En effet, vous pouvez aller un peu plus loin et utiliser le langage de script intégré qui s’inspire du C et qui vous permettra d’ajouter encore un peu plus de complexité et de fonctionnalités à votre jeu. L’outil est lui aussi gratuit et tourne sous Windows, Mac et Linux. A noter que sur le site de TADS, certains projets sont disponibles en ligne. De quoi vous inspirer…

TADS MacOS

Netstory

Netstory n’est pas à proprement parlé un logiciel, mais plutôt un service en ligne qui vous permet de jouer aux histoires des autres, mais également de concevoir vos propres fictions interactives en y ajoutant des images, des sons…etc.

Netstory.io site pour histoires

Twine

Twine quant à lui est un outil dispo sous Mac et Windows, mais également sous Linux en ligne de commande qui permet d’organiser vos histoires de manière graphique (en tout cas sous Win + Mac) avec des petites box à relier.

Genial.ly

Genially est un service en ligne qui permet de réaliser tout un tas de présentations interactives, du PowerPoint au infographies sans oublier évidemment la possibilité de concevoir de vrais petits jeux vidéos dont des fictions interactives comme cela est expliqué dans ce tuto.

Glide

Glide est un service en ligne qui permet de concevoir une application mobile à partir d’un tableau Excel. Vous pouvez réaliser des applications traditionnelles, mais également des jeux interactifs. C’est ce qu’on fait les gens de S’Cape qui expliquent tout ça ici. Ils ont utilisé un outil de mindmapping, mis tous leurs scénarios sous la forme d’un tableur et ont réussi à faire ce jeu textuel sans pondre une seule ligne de code et le rendre téléchargeable sur mobile.

glide forêt désenchantée

ZTab

Ztab se constitue d’un éditeur et d’un player qui vous permettra de concevoir de jeux vidéos textuels ou des histoires interactives en y intégrant également des graphismes. Il est également possible tout en jouant d’étendre votre jeu en ajoutant directement des nouveaux textes et conditions. Ensuite pour l’export, ça peut partir en HTML, EPUB, Twine, Quest…etc.

ztab éditeur

Ren’Py

Ren’Py est un moteur de nouvelles visuelles. Cela vous permet de concevoir vos histoires interactives en y intégrant une flopée de belles images, de sons et bien évidemment de choix impossibles. loool. L’éditeur est accessible à tous, mais pour ceux qui maîtrisent le Python, il est possible de scripter les histoires pour les rendre encore plus complexes. Y’a toute une liste de jeux produits avec Ren’Py ici et certains sont même vendus sur Steam.

ren'py nouvelles visuelles

iFiction – AXAM Story Maker

iFiction est un site qui propose des story interactives, mais également un éditeur assez basic similaire à Twine, totalement en ligne qui est basé sur la solution de Axamasoft : AXMA Story Maker dispo sous Windows, macOS et Linux, mais également en version online

iFiction Axam Story Maker

ChoiceScript

Pour les plus barbus qui veulent coder directement, il existe aussi ChoiceScript qui est un langage de dev dédié à la conception d’histoires dont vous êtes le héro ou encore les MCG (Multiple Choice Games). Sur le site Choice of Games, vous retrouverez également des jeux à tester.

choice script choice game site

UNDUM

Undum est quant à lui un framework côté client qui permet de créer et de faire fonctionner des jeux de fiction interactive avec bien évidemment des liens hypertextes. Conçu pour la production de jeux 100% en HTML5 et CSS3, UNDUM est libre est téléchargeable ici. Vous pouvez également tester l’un des jeux tuto en cliquant ici.

Dedalus

Dedalus se présente comme une alternative à Twine ou Undum qui permet de créer et faire tourner des fictions interactives directement sous la forme de pages web dans le navigateur.

Visual Novelty

Visual Novelty est également un outil de conception de nouvelles graphiques et interactives comme l’est Ren’Py qui fonctionne uniquement sous Windows et qui permet de concevoir vos histoires, soit de manière basique en WYSIWYG ou de manière plus avancée en mettant les doigts dans le code en C++ ou Java. Il est même possible de collaborer à plusieurs sur la même histoire.

ActiveLit

Développé par les créateurs de Quest, ActiveLit est un service en ligne qui vous propose soit de jouer à des jeux textuels interactifs, mais également de créer vos fictions interactives (ou jeux interactifs) en ligne directement dans l’éditeur proposé.

Celestory

Celestory

Moiki

Moiki

Storyspace

Storyspace

You are the hero / Inform / Donjon

En tout cas, ça m’a donné envie. Moi qui aime l’écriture et les jeux vidéo, je me dis qu’une aventure interactive comme celle-ci serait très sympathique à imaginer… Après c’est comme d’hab, le temps qui manque…

Et pour aller plus loin, je vous invite à lire cet article qui vous donnera tous les secrets sur la conception de « bons » jeux vidéos.

Article rédigé le 20 mars 2013. Mis à jour le 13 avril 2021.


Mes gazouillis

Mac Chimes of Death – 512 Pixels https://t.co/3LoS2PLFwM #kbn
Ahahahaha. GG ! #kbn https://t.co/SXNIf7gfyQ