Trac: Supression de ticket en masse
Suite à un problème avec mon environnement Trac pour gérer mes sources, celui ci était envahi de ticket SPAM envoyé par des bots car j’avais mal configuré les permissions. Maintenant que les permissions sont bonnes, il ne reste plus qu’à supprimer les ticket SPAM.
Ma version de Trac est celle de la Dapper (6.06 LTS) d’Ubuntu Server, donc la version 9.3. Il n’existe pas de plugin pour cette version qui permette de supprimer des tickets en masse. J’avais 300 ticket à supprimer.
La base de donnée étant en SQLite, j’ai écrit un petit script qui permet de supprimer les tickets.
Ce script doit être lancé avec un utilisateur qui a les droits décriture sur la base de donnée de Trac.
Paramètres:
- Chemin de la base de donnée SQLite de trac
- Premier ticket à supprimer
- Dernier ticket à supprimer
Script trac_del_ticket.sh :
# # Mass removing tickets from Trac environnement # # Motarion <motarion@gmail.com> # Creation date: 12/07/2009 # Last modification: 12/07/2009 # # History: # v0.1: <12/07/2009> Initial release. # # Variables NB_PARAM="$#" DB_PATH="$1" FIRST_TICKET="$2" LAST_TICKET="$3" # Programs SQLITE_CLIENT=`which sqlite3` # Tests if [ $NB_PARAM -gt 3 ] || [ $NB_PARAM -lt 3 ]; then echo "Error: Usage $0 PATH_TO_TRAC.DB FIRST_TICKET LAST_TICKET" exit 1 fi if [ $SQLITE_CLIENT == "" ] then echo "Error: This script require Sqlite3 client to work. Please install it." exit 1 else echo "Info: Sqlite client dependancy satisfied. ($SQLITE_CLIENT)" fi if [ ! -d $DB_PATH ] then echo "Error: The path to the trac.db file is not correct." exit 1 else echo "Info: Path to the trac.db is correct." fi # Main loop for i in `seq $FIRST_TICKET $LAST_TICKET` do TICKET_ID=$i $SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM ticket WHERE id=$TICKET_ID" $SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM ticket_change WHERE ticket=$TICKET_ID" $SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM attachment WHERE type='ticket' and id=$TICKET_ID" $SQLITE_CLIENT $DB_PATH"trac.db" "DELETE FROM ticket_custom WHERE ticket=$TICKET_ID" done