Voilà quelques semaines que le serveur recevait du spam via les tickets de Trac (l'outil de suivi de projets). Aussi, pour celles & ceux qui doivent y faire face aussi, quatre lignes de python à ajouter à Ticket.py[1], au début de la fonction create_ticket(), celles qui sont entre les deux lignes vides:

   def create_ticket(self):
       if not self.args.get('summary'):
           raise util.TracError('Tickets must contain Summary.')
       if self.args.get('summary').find('http://') != -1:
           raise util.TracError('Antispam: Ticket summary cannot contain URL.')
       if self.args.get('description').find('http://') != -1:
           raise util.TracError('Antispam: Ticket description cannot contain URL.')
       ticket = Ticket()
       ticket.populate(self.args)
       ticket.setdefault('reporter',self.req.authname)

Cela va refuser tout ticket ayant http dans le résumé et/ou la description, interdisant donc les envoi d'URLs. Bien entendu, les contributeurs réguliers de Trac ne peuvent plus non plus poster d'URLs dans les tickets. Il suffit ensuite de recompiler le .pyc et/ou .pyo et puis relancer apache.

Edit : Merci à Yoan de m'avoir relu. On ne devrait pas être trop vite fier de code pondu à trois heures du matin! Le code ci-dessus est corrigé; il resserre la chaîne interdite.

Notes

[1] Je me base sur Trac 0.8.x