Journal Olcc-NG : un nouveau client de messagerie moderne et efficace

Posté par  . Licence CC By‑SA.
18
8
nov.
2016

Bonjour à tous,

Une nouvelle version d'Olcc a vu le jour récemment : Olcc-NG (ou Olcc-me, on ne sait pas trop).
Code source disponible : https://github.com/BrunoSpy/olcc
Plusieurs instances sont disponibles :
* https://claudex.be/olcc-soul
* https://olcc.bombefourchette.com
* https://plop.cc

Un peu de vocabulaire

  • Tribune : espace de discussion, généralement accessible par une page web (il se dirait qu'une tribune est offerte par linuxfr mais planquée pour éviter que des personnes intéressantes en profitent. Face à ce scandale international, je me vois dans l'obligation de vous divulguer son adresse : https://linuxfr.org/board )
  • Coincoin : client avancé pour discuter sur une tribune
  • Moule : utilisateur d'une tribune
  • Mouler : Discuter sur une tribune

Olcc-NG ? C'est quoi ?

Olcc-NG est un coincoin multi-fonctions au top de ce qui se fait en matière de mouling-experience.

Olcc-NG n'est pas sorti de nulle part : ce n'est que la réécriture de l'IHM du vénéré et vénérable Onlinecoincoin qui était lui-même parti d'un script Greasemonkey.

Olcc-NG (ou Olcc-me pour Mobile-first Edition) se base sur jQuery et Bootstrap pour proposer une IHM "responsive" adaptée à la fois au desktop et aux écrans tactiles

Quoi de neuf ?

  1. Une IHM entièrement adaptable pour être efficace sur petits écrans
  2. Gestion des interactions tactiles : tap, double-tap, swipe
    • Tap sur post : highlight du post
    • Double-tap : insertion de l'horloge
    • Swipe : affichage du menu
  3. Post pessimiste : le champ n'est vidé que lorsque le message a été correctement reçu par le serveur
  4. Meilleur affichage des [url] en [DN.tld]
  5. Preview d'URL (expérimental)

Quoi de pas neuf ?

  1. Multi-tribunes
  2. Recherche de totoz
  3. Filtrage des posts
  4. Chasse aux canards
  5. Tribunes préconfigurées

Ce qui reste à faire

  1. Import/export de configuration
  2. Notifications push
  3. Notifications sonores
  4. Raccourcis claviers
  5. Scroll infini

Vous êtes invités à faire vos retours sur le Github de l'auteur et évidemment toutes les contributions sont acceptées !

  • # Perso, j'installe pas ça chez moi

    Posté par  (site Web personnel) . Évalué à 6.

    Je suis allé me balader un peu dans le code, niveau PHP c'est assez oldschool non? Je n'ai pas creusé trop loin mais j'ai déjà vu plusieurs injections potentielles, et il me semble que niveau sécu, c'est carrément 1990 non?

    Mais point positif quand même, l'outil à l'air cool, merci.

    • [^] # Re: Perso, j'installe pas ça chez moi

      Posté par  (site Web personnel) . Évalué à 3.

      Je n'ai pas creusé trop loin mais j'ai déjà vu plusieurs injections potentielles

      Tu pourrais au moins les lister rapidement, pour aider ?

    • [^] # Re: Perso, j'installe pas ça chez moi

      Posté par  . Évalué à 10.

      Raaah! C'est pas une faille, c'est une fonctionnalité pour rechercher des contacts qui s'intéressent aussi au PHP et deviendront finalement tes amis!

      ----->[]

    • [^] # Re: Perso, j'installe pas ça chez moi

      Posté par  . Évalué à 4.

      Effectivement le côté PHP est volontairement simple et basique.
      Ta contribution est la bienvenue pour améliorer cela !

      • [^] # Re: Perso, j'installe pas ça chez moi

        Posté par  (site Web personnel) . Évalué à 3.

        Ouaip, désolé j'ai répondu au mauvais endroit: https://linuxfr.org/users/soulfly_b/journaux/olcc-ng-un-nouveau-client-de-messagerie-moderne-et-efficace#comment-1680865

        Comme dit plus haut, déjà un simple échappement et validation des entrées/sorties devrait améliorer grandement la chose. Si aussi tu peux placer d'autres sécus comme par exemple, du CSRF ou ce genre de choses ou une authent sur les accès au serveur (ce qui est généralement le strict minimum) ça serait un grand plus.

        J'ai pas regardé comment ton JS marche, mais s'il tape directement les scripts PHP directement par leur URL, sans passer par un routeur, tu ne peux pas mutualiser grand chose (je ne parle pas d'aller vers du framework de bourrin, pas forcément besoin, mais a minima il y a besoin de quelque chose ici).

        • [^] # Re: Perso, j'installe pas ça chez moi

          Posté par  . Évalué à 3.

          du CSRF ou ce genre de choses ou une authent sur les accès au serveur (ce qui est généralement le strict minimum) ça serait un grand plus

          J'ai du mal à voir l'intérêt dans le cas d'olcc. Vu que rien n'est stocké sur le serveur, on ne peut rien volé à un utilisateur ou se faire passer par lui. Du coup, j'ai du mal à voir à quel problème cela va répondre.

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Perso, j'installe pas ça chez moi

      Posté par  (site Web personnel) . Évalué à 9.

      En tant qu'auteur de l'olcc original, je vais un peu expliquer le rôle du PHP là-dedans et pourquoi il est aussi basique.

      A la base, l'idée d'olcc était de faire un client de tribune entièrement en javascript. C'était un peu ce que faisait le script Greasemonkey "EnhancedBoard", en transformant totalement la page peu pratique linuxfr.org/board en quelque chose qui se rapprochait véritablement de l'expérience utilisateur d'un coincoin du type wmcc ou pycc. Cependant, il lui manquait une fonctionnalité de taille : l'agrégation de plusieurs tribunes différentes.

      Mais pour ce faire, Greasemonkey et le Javascript ne suffisaient plus, puisqu'on sortait de l'interaction avec un seul site, pour devoir afficher du contenu provenant de sites multiples, et donner la possibilité de poster dessus¹. Il fallait héberger le code d'olcc sur un serveur et permettre à ce serveur de requêter sur les sites hébergeant les tribunes.

      J'ai donc conçu un mini proxy très simple en PHP qui est appelé par ajax, et se charge d'effectuer la requête vers le bon site avec la libcurl pour la récupération des backends XML et pour le post, uniquement dans le but de contourner l'impossibilité de faire les requêtes directement en js sur les sites cibles. Et effectivement, il serait simple de détourner l'utilisation de ce PHP pour par exemple en faire une sorte de proxy universel pour requêter n'importe quelle URL sur n'importe quel site (LiNuCe< en avait d'ailleurs fait un proof-of-concept). Il y aurait quelques trucs faciles à implémenter pour sécuriser un peu le bouzin, ne serait-ce par exemple que contrôler que l'url demandée correspond bien à une url de tribune configurée côté client. Mais moi, développer une partie serveur ne m'intéressait tout bonnement pas, j'étais dans une logique de pondre un client de tribunes purement javascript autant que possible.

      D'autres se sont penchés sur la question : un "olccs" (s pour server) avait été développé, sorte d'agrégateur/archiveur de tribunes fournissant une API de consultation/recherche et de post unifiée, sur laquelle pouvait se greffer olcc ou n'importe quel coincoin. Je parle au passé car il n'y a plus d'instance maintenue.

      Voilà voilà

      ¹ Je modère un peu cette remarque par la précision suivante : en fait, une possibilité purement javascript existe bien : le requêtage Ajax cross-domain (CORS). Mais pour que cela fonctionne, il faut que tous les serveurs de tribune l'autorisent, ce qui est rarement le cas en pratique. Sinon, linuxfr donne également la possibilité d'utiliser OAuth2 pour poster dans la tribune, mais c'est une spécificité que ne partagent pas les autres moteurs de tribunes et je ne me suis jamais penché sur la mise en oeuvre.

      • [^] # Re: Perso, j'installe pas ça chez moi

        Posté par  . Évalué à 3.

        Exactement !
        Et comme Olcc-NG n'a comme seul objectif que de rendre l'IHM d'Olcc plus moderne, je n'ai pas touché à la partie PHP et je n'en ai d'ailleurs pas vraiment l'intention (enfin si, mais j'ai pas le temps car il faudrait faire une vraie partie serveur).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.