Écrit en python, Justabot est un robot inventé en mai 2012 pour le salon de support XMPP Devosi (support@conference.devosi.org). C'est un automate client d'un serveur XMPP (Jabber). Il offre des services d'envoi de données (push), ou de contrôle à distance. Il répond donc à vos demandes dans le salon où il a été installé dans la limite de ses connaissances, et de façon plus ou moins comique. Le mieux est encore d'essayer de lui parler.
Utilisation
Il se connecte en tant que client. La commande !help en message privé vous donnera la liste des commandes disponibles. Il est possible de lui donner des commandes en privé comme en public (certaines commandes étant restreintes à l’un ou l’autre). Il répond aussi lorsque son pseudonyme est écrit en public ou pour toute ligne en privé.
Documentation
La documentation de Justabot est disponible sur le WikiDevosi à cette adresse :
Téléchargement
Le code source originel est disponible à cette adresse : Justabot
▂ ▃ ▅ ▆ █ Amusez vous bien !! █ ▆ ▅ ▃ ▂
# Autre bot
Posté par Maxime (site web personnel) . Évalué à 4.
Je profite de ce journal pour parler d'un bot que j'avais codé il y a un certain temps déjà pour mes propres besoins. J'avais essayé à l'époque de faire quelque chose de très modulaire donc il y a une notion de modules qui sont chargeables ou déchargeables à chaud sur tel ou tel salon. Et puis du coup, il est très facile de rajouter un nouveau module.
Vous pouvez récupérer les sources ici : https://github.com/MaximeCheramy/pyAnna
N'hésitez pas à me forker puisque je n'y touche plus depuis un long moment.
[^] # Re: Autre bot
Posté par ckyl . Évalué à 3.
Tiens on est revenu 15 ans en arrière ? Les bots reviennent à la mode ?
Autrement vu ton module calc l' article suivant n'a jamais été aussi vrai…
[^] # Re: Autre bot
Posté par Maxime (site web personnel) . Évalué à 3.
Mouhaha, merci :D.
D'ailleurs pour l'histoire, j'avais à la base codé le calcul à la main : https://github.com/MaximeCheramy/pyAnna/blob/104ea5b636dc01ea43940afb5a8b1d45d2d2ed5e/modules/calc.py
Et puis quelqu'un m'a dit : tu t'es fait chier pour rien, utilise eval !
Là j'ai utilisé eval et rapidement je me suis dit : oh mais attends, c'est une grosse connerie, c'est pas secure. Et là je pense qu'on peut raisonnablement enchaîner sur ton article : j'ai googlé 10s pour trouver une solution :).
[^] # Re: Autre bot
Posté par Maxime (site web personnel) . Évalué à 2. Dernière modification le 23 mars 2013 à 10:44.
Je viens d'essayer :
Pourtant avec eval, ça marche. Qui a un exemple de faille pour ce bout de code :
[^] # Re: Autre bot
Posté par Maxime (site web personnel) . Évalué à 3.
Bon finalement, j'ai regooglé rapidement et je suis tombé sur ça : http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html et l'exemple fait bien planter l'interpréteur.
[^] # Re: Autre bot
Posté par BFG . Évalué à 2.
haypo a écrit une pysandbox.
[^] # Re: Autre bot
Posté par ckyl . Évalué à 5.
On en revient exactement à ce dont parle l'article.
Pour faire ton module calc tu as le choix entre deux options:
Écrire, ou utiliser, un parser dédié. C'est un projet que n'importe quel étudiant à fait, et qui se boucle en quelques heures. Tu es 100% sur de la sécu, au pire il va manquer des fonctionalités que tu pourras rajouter par la suite.
Utiliser quelque chose qui repose sur de l'éxecution de code de ton langage. Que ca soit eval que tu essais de sécuriser ou une sandbox ca revient en gros au même. Au moindre problème, faille, ou chose imprévue tu t'exposes à des catastrophe. Pour rien. La surface d'attaque est importante et les conséquences (DOS, faille, fuite d'info) sont très nombreuses.
Un poil de bouteille devrait te faire toujours rester très loin de la deuxième solution sauf excellente raison.
Ca s'applique à de nombreuses choses. Au fur et à mesure tu apprends à détecter les choses qui vont inexorablement poser problème et exploser en vol dans une semaine ou cinq ans et que des choix rationnels auraient évité.
[^] # Re: Autre bot
Posté par tuxicoman (site web personnel) . Évalué à 1.
et ça ? http://docs.python.org/2/library/ast.html#ast.literal_eval
Ca ne vous irait pas?
[^] # Re: Autre bot
Posté par ckyl . Évalué à 3.
Je suis pas sur qu'on était en train de chercher une solution qui ne sert à rien ;) La discussion me semblait bien plus générale: savoir sentir les cas foireux, les mauvais usages, les mauvais designs. Remplacer un eval par un python sandboxé pour faire une calculette, c'est persister dans son erreur.
Maintenant tu vas pas aller bien loin avec
literal_eval
qui comme son nom l'indique n'évalue que des literaux… Cool tu peux parser desint
et desfloat
. Le reste est à faire, tu vas donc basculer surast.walk
en faisant gaffe à pas faire de conneries. Retour plus ou moins à la case départ. Mais au fait avecliteral_eval
; ton calculteur tu voulais vraiment lui laisser parser des dicts ?Maintenant le mec qui veut se coder sa calculatrice. Il va définir son cahier des charges (quelles constructions sont autorisées, quels impacts niveau CPU et mémoire etc.), et il va soit utiliser un des 1000 projets qui doivent faire ca. Soit se coder son parseur en une aprèm si il veut quelque chose de très précis. Là encore soit à l'ancienne type premier projet de compil, soit en utilisant un lib de parsing comme il en existe tant. Bref on s'en fou un peu en fait.
[^] # Re: Autre bot
Posté par BFG . Évalué à 1. Dernière modification le 23 mars 2013 à 10:49.
L'article est intéressant, mais la comparaison avec son chat est très douteuse, à moins qu'il ne considère son chat comme un outil ou un Nabaztag.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.