irccd, un robot IRC en C++ et Lua

Posté par  (site web personnel) . Édité par ZeroHeure, NeoX et claudex. Modéré par tuiu pol. Licence CC By‑SA.
Étiquettes :
18
14
sept.
2013
Technologie

Irccd (IRC Client Daemon) est une petite application C++ qui fonctionne comme un daemon. C'est un robot IRC personnalisable qui permet d'exécuter des scripts Lua d'après certains évènements IRC.

Robot

Par exemple, irccd est capable d'appeler plusieurs scripts Lua lorsque le robot se connecte à un serveur IRC, que quelqu'un parle sur le canal, qu'une personne est arrivée, etc…

Irccd est très simple et léger et ne nécessite que peu de dépendances. Il a aussi l'avantage d'être multi serveurs et multi identités, ce qui signifie qu'il peut se connecter à un serveur avec un certain nom, puis sur un autre avec un autre pseudo.

Irccd est écrit en C++11 et utilise Lua 5.2 pour les scripts, il a un outil associé nommé irccdctl qui permet de communiquer avec une instance d'irccd. Cette fois-ci c'est vous le client et vous pouvez faire parler irccd, le faire joindre un canal, etc.

Cette fonctionnalité permet par exemple d'utiliser irccd comme un relayeur de message (notification de commit notamment).

Pour résumer voici les fonctionnalités principales d'irccd :

  • Se connecte à plusieurs serveurs
  • Peut utiliser différentes identités par serveurs
  • Peut appeler des scripts Lua (optionel)
  • A le support SSL (nécessite libircclient >= 1.7)
  • Documentation très complète (y compris pages de man)
  • Possède une API Lua compréhensible et simple
  • Très léger, rapide et performant
  • Compatible Windows !
  • Peut-être contrôlé via des sockets (ou irccdctl)
  • Comporte déjà quelques plugins

Aller plus loin

  • # un copain de pyplop?

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

    Pour ceux qui utilisent une messagerie instantanée moderne, il y a pyplop.

    Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

  • # Pourquoi coder en C++ ?

    Posté par  . Évalué à -10.

    Encore un projet en C++, on le sait c'est un très mauvais langage, qui à surtout beaucoup de défauts et une relative simplicité. Donc encore une fois pourquoi du C++ ?? Si on veut saccager tout les projets libres, on est sur la bonne voie.

    • [^] # Re: Pourquoi coder en C++ ?

      Posté par  (site web personnel) . Évalué à 7.

      il ne me semblait pas qu'on était vendredi.

      https://link-society.com - https://kubirds.com - https://github.com/link-society/flowg

    • [^] # Re: Pourquoi coder en C++ ?

      Posté par  (site web personnel) . Évalué à 10.

      Encore un projet en C++, on le sait c'est un très mauvais langage, qui à surtout beaucoup de défauts et une relative simplicité. Donc encore une fois pourquoi du C++ ?? Si on veut saccager tout les projets libres, on est sur la bonne voie.

      Oui, quand on ne sait pas coder le C++ est forcément un très mauvais langage.

      git is great because linus did it, mercurial is better because he didn't

  • # Pourquoi Lua ?

    Posté par  . Évalué à 3.

    Merci pour ce projet très intéressant !

    Qu'est-ce qui a motivé le choix de Lua pour les scripts ?

    • [^] # Re: Pourquoi Lua ?

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

      Merci pour ce projet très intéressant !

      Qu'est-ce qui a motivé le choix de Lua pour les scripts ?

      Merci pour ton message ! Tout d'abord Lua est un langage de script connu pour être facilement intégrable dans du C/C++ (et même d'autres). C'est presque sa fonctionnalité première finalement, beaucoup de logiciels / jeux s'en servent afin d'étendre une application avec un langage de script performant et simple.

      Lua est très léger, sa bibliothèque (sans le compilateur et l'interpréteur) n'excède pas 14000 lignes de code, il est très haut niveau et permet donc d'étendre irccd avec seulement quelques lignes.

      Il a notamment été utilisé pour l'interface graphique de World of Warcraft, nmap, la suite logiciel Adobe Lightroom, ou bien le populaire gestionnaire de fenêtres awesome

      Par exemple, un simple plugin qui permet de répéter tout ce qui se dit sur un canal pourrait s'écrire :

      function onMessage(server, channel, nickname, message)
          server:say(channel, message)
      end
      

      git is great because linus did it, mercurial is better because he didn't

    • [^] # Re: Pourquoi Lua ?

      Posté par  . Évalué à -6.

      parce que python c'est tout pourri, surtout quand un caractère invisible mal placé, comme une tabulation à la place d'une espace, vient tout perturber.

      « I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond

      • [^] # Re: Pourquoi Lua ?

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

        Caractère invisible ? En quoi est-ce la faute de Python si ton éditeur est mauvais ? :)

        alf.life

        • [^] # Re: Pourquoi Lua ?

          Posté par  . Évalué à 3.

          En quoi est-ce la faute de Python si ton éditeur est mauvais ?

          l'avantage d'un langage comme Lua c'est que tu peux écrire du code dans un formulaire html ou directement depuis la console irc. Tu peux également copier/coller depuis du code sur un site web sans te prendre la tête à savoir si c'est la même indentation que dans ton projet en cours etc.

          « I approve of any development that makes it more difficult for governments and criminals to monopolize the use of force. » Eric Raymond

          • [^] # Re: Pourquoi Lua ?

            Posté par  . Évalué à 4.

            Si tu suis la norme (4 espaces pour l’indentation), ça roule. Sinon c’est parce que les gens respectent pas les normes, mais en général si.

            Écrit en Bépo selon l’orthographe de 1990

      • [^] # Re: Pourquoi Lua ?

        Posté par  . Évalué à 2.

        C’est passé vendredi.

        Écrit en Bépo selon l’orthographe de 1990

      • [^] # Re: Pourquoi Lua ?

        Posté par  . Évalué à 1.

        Je comprends ton point de vu, mais l'argument est mauvais, je ne connais pas de langage qui accepte un (une ?) espace insécable comme séparateur. Pourtant ça rentre dans ton argumentation.

        De 2 il y a un tas d'autres candidats, comme guile par exemple.

        Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)

  • # sleepybot

    Posté par  . Évalué à 3.

    Bonjour,

    Je pensais avoir trouvé mon bonheur avec sleepybot mais j'ai hâte de tester ce projet, ce sera lundi première heure :-)

    Mis à part le langage de programmation (C++/Lua vs Java/Sleep), quels sont, selon vous, les avantages ou différences fonctionnelles de votre bot par rapport à SleepyBot/PircBot ?

    merci

    • [^] # Re: sleepybot

      Posté par  (site web personnel) . Évalué à 2.

      Bonjour,

      Je pensais avoir trouvé mon bonheur avec sleepybot mais j'ai hâte de tester ce projet, ce sera lundi première heure :-)

      Mis à part le langage de programmation (C++/Lua vs Java/Sleep), quels sont, selon vous, les avantages ou différences fonctionnelles de votre bot par rapport à SleepyBot/PircBot ?

      Hello,

      J'ai regardé rapidement SleepyBot et ses fonctionnalités. Ce dernier a le support du DCC, qui n'est pas encore présent dans irccd mais sera peut-être rajouté dans la version 1.1. Il a l'air de posséder plus de fonctionnalités qu'irccd mais sa documentation est légèrement plus basique.

      Irccd a la possibilité de se connecter à plusieurs serveurs en même temps, ce qui -à priori- n'est pas disponible avec SleepyBot. Par contre, en utilisant Java, je pense que SleepyBot est encore plus portable.

      git is great because linus did it, mercurial is better because he didn't

  • # Fonctionnalités

    Posté par  (site web personnel) . Évalué à 10.

    Compatible Windows !

    Ah cool ! Important pour fabriquer les botnets à large échelle, ça ! /o\

Suivre le flux des commentaires

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