Meta-Press.es

Moteur de recherche décentralisé & revue de presse automatisée

Version 1.7.8 : améliorations d'ergonomie

Un mois et demi après la précédente release, la version 1.7.8 de Meta-Press.es est maintenant en ligne. Cette nouvelle version apporte des améliorations d’ergonomie et un gros effort de mise à jour des sources connues.

Ces améliorations étaient pour certaines attendues de longue date :

  • un filtre par tranche de date, avec deux sélecteurs de date, pour travailler sur les résultats locaux

  • une recherche dans les noms des sources ayant donné des résultats (visible si plus de 30 sources ont donné des résultats)

  • des aides à la sélection de résultats pour l’export avec un bouton "sélectionner tout", ou rien, ou inverser la sélection. Ces boutons ne concernant que les résultats visibles sur la page courante (et il est toujours possible de choisir combien d’éléments sont listés par page)

  • la liste des sources en attente, lorsqu’une recherche prends suffisamment de temps pour qu’on puisse cliquer sur le petit bouton "+" apparu dans la ligne de statistiques d’une recherche en cours, dès lors que moins de 30 sources sont encore attendues

  • un bouton "Annuler" qui stoppe la recherche là où elle en est et vous laisser travailler sur les résultats déjà récupérés (quand la précédente implémentation rafraichissait simplement la page, perdant les résultats) Meta-Press.es utilise pour ce faire la récente API JavaScript permettant d’annuler une promesse (qui avait envie de rendre ça possible ?). Un grand merci à @lutindiscret pour nous l’avoir signalée.

    • En conséquence, un nouveau réglage est apparu : un délais maximum de recherche ; qui termine automatiquement une recherche au bout de 90s (mais peut être réglé sur 0 pour attendre "à tout jamais" si vous le souhaitez)

  • une nouvelle ligne de statistiques affichant le nombre de sources sélectionnées ainsi que le nombre de permissions requises pour réaliser la prochaine recherche, le tout avec un bouton pour donner directement les permissions en question

De plus, les expressions régulières des 314 sources actuelles (qui représentent déjà 10k lignes de JSON formaté) ont toutes été scannées par l’outil RegexStaticAnalysis pour vérifier leur vulnérabilité aux attaques de type ReDOS.

25 regex ont été signalées par l’outil comme contenant un degré exponentiel ou infini d’ambiguité (EDA ou IDA) sur les 180 expression analysées. Il s’agissait chaque fois de bornes manquantes, d’utilisation de plusieurs quantificateurs infinis (* or +) à la suite ou d’une construction en 'ou' logique (a|a)* avec en plus un quantificateur infini.

De manière assez surprenante, il a été possible à chaque fois d’améliorer l’expression en question, à la fois pour quelle passe le test et qu’elle fonctionne plus vite (étant définie plus précisément). Par exemple, voici une expression régulière simple et lisible :

  • (\d+) (.+) (\d+) [1] ;

Qui capture une date (par exemple '23 juillet 2021'), et a été remplacée par :

  • ^(\d{1,2}) ([^ ]{3,9}) (\d{4})$ [2] ;

Qui capture la même date, mais avec des bornes autour de la portion de chaîne de caractère (^ pour le début de la chaîne, parce que dans ce cas là on commence au tout début, et $ pour la fin et donc il n’y a rien après le numéro de l’année) et une description plus précise des champs à attraper (nombres précis de chiffres à capturer), nom de mois ne contenant pas d’espace, mais pouvant contenir des lettres accentuées comme ça peut être le cas en français (pour décembre par exemple…). Les exemples trouvés dans les définitions de sources sont généralement un peu plus complexes, mais l’idée principale est bien là.

À nouveau, comme lors de l’audit d’accessibilité, ces modifications résultent en un meilleur code, plus robuste et plus rapide et donc une amélioration globale de Meta-Press.es.


1. Ici les 1ers symboles entre parenthèse permettent de capturer un nombre, celui du jour de la date traitée, la seconde parenthèse attrape n’importe quoi entre deux espaces et dans notre cas ça tombe sur un nom de mois et la dernière parenthèse capture un autre nombre qu’on espère être l’année
2. Où il y a toujours 3 groupes de symboles entre parenthèses, le premier capturant des nombres d’un à deux chiffres (ce qui est suffisant pour capture un 31), puis le nom du mois ne peut plus contenir d’espace (et mesure entre 3 et 9 caractères), et enfin le numéro de l’année comporte forcément 4 chiffres. Je serai très heureux de corriger ce 'bug' moi-même dès que les années seront comptées avec des nombres à 5 chiffres, à conditions qu’aucune religion ne vienne perturber le calendrier grégorien utilisé actuellement)