From 8d208159d0987f405519566559cc8dd3b41de67f Mon Sep 17 00:00:00 2001 From: Guillaume Damiens <guillaume.damiens@etu.utc.fr> Date: Wed, 1 May 2019 10:52:27 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20README.md=20et=20am=C3=A9liorations=20d?= =?UTF-8?q?es=20variables?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pica-wekan/README.md | 39 +++++++++++++++++++++++++++++++++++++++ pica-wekan/policy.sh | 33 +++++++++++++++------------------ 2 files changed, 54 insertions(+), 18 deletions(-) create mode 100644 pica-wekan/README.md diff --git a/pica-wekan/README.md b/pica-wekan/README.md new file mode 100644 index 00000000..8202cc24 --- /dev/null +++ b/pica-wekan/README.md @@ -0,0 +1,39 @@ +# Script de suppression des boards Wekan trop anciens +## Avant le lancement +Le paquet jq permet de parser et manipuler du JSON en ligne de commande. Il est nécessaire pour filtrer les informations reçu de l'API. + +```bash +sudo apt install jq +``` + +Le Wekan doit contenir un compte dédié pour ce script permettant d'accéder à l'API. Ce compte doit disposer des droits administrateurs du Wekan. Les identifiants doivent être présents dans un fichier séparer du script `policy.sh`. + +```bash +touch ids.sh +``` + +## Contenu de `ids.sh` +2 variables sont nécessaires : username et password du compte dédié. +```bash +#!/bin/bash + +export username="username" +export password="password" +``` + +## Choix de la deadline et de l'URL de l'API +Les boards n'ayant pas été modifiés depuis un certain temps sont définitivement supprimés. Cette durée est la somme de trois variables : `boardExpirationDurationYears`, `boardExpirationDurationMonths` et `boardExpirationDurationDays`. L'URL de l'application est également nécessaire. + Ces informations sont à modifier directement dans les premières lignes du script `policy.sh`. + +```bash +boardExpirationDurationYears=0 # années +boardExpirationDurationMonths=12 # mois +boardExpirationDurationDays=0 # jours +url=https://wekan.test.picasoft.net +``` + + +## Lancement du script +```bash +./policy.sh +``` diff --git a/pica-wekan/policy.sh b/pica-wekan/policy.sh index dbf33ae8..da795064 100755 --- a/pica-wekan/policy.sh +++ b/pica-wekan/policy.sh @@ -6,36 +6,33 @@ boardExpirationDurationYears=0 # années boardExpirationDurationMonths=12 # mois boardExpirationDurationDays=0 # jours +url=https://wekan.test.picasoft.net # Deadline = somme des durées du dessus deadlineTimeStamp=$(date -d "-"$boardExpirationDurationYears"years-"$boardExpirationDurationMonths"months-"$boardExpirationDurationDays"days" +%s) -queryPica=$(curl -s https://wekan.test.picasoft.net/users/login -d 'username='"$username"'&password='"$password"'') - +# Récupération du token de connexion +queryPica=$(curl -s $url/users/login -d 'username='"$username"'&password='"$password"'') token=$(echo $queryPica | jq -r .token) -tokenExpirationDate=$(echo $queryPica | jq -r .tokenExpires) -# condition à rajouter sur la date d'expiration du token : arrêt si trop ancien -# Récupérer les utilisateurs -users=$(curl -s -X GET https://wekan.test.picasoft.net/api/users \ +# Récupération des utilisateurs +users=$(curl -s -X GET $url/api/users \ -H 'Accept: application/json' \ -H 'Authorization: Bearer '"$token"'') usersIds=$(echo $users | jq -r '.[]._id') usersUsernames=$(echo $users | jq -r '.[].username') -# Boucler sur les utilisateurs +# Boucle sur les utilisateurs for usersId in $usersIds do - # récupérer les boards de chaque utilisateur - userBoards=$(curl -s -X GET https://wekan.test.picasoft.net/api/users/$usersId/boards \ + # Récupération des boards de chaque utilisateur + userBoards=$(curl -s -X GET $url/api/users/$usersId/boards \ -H 'Accept: application/json' \ -H 'Authorization: Bearer '"$token"'' | jq -r '.[]._id') - #boucler sur chaque board de l'utilisateur + # Boucle sur chaque board de l'utilisateur for userBoard in $userBoards do - # echo "Utilisateur "$usersId" fait partie de "$userBoard - - board=$(curl -s -X GET https://wekan.test.picasoft.net/api/boards/$userBoard \ + board=$(curl -s -X GET $url/api/boards/$userBoard \ -H 'Accept: application/json' \ -H 'Authorization: Bearer '"$token"'') boardTitle=$(echo $board | jq -r '.title') @@ -51,9 +48,9 @@ do then echo "Suppresion du board "$boardTitle" (_id "$userBoard", modifié le "$lastModificationDate")" - # supprimer le board si trop ancien - # curl -X DELETE https://wekan.test.picasoft.net/api/boards/$idBoard \ - # -H 'Authorization: Bearer '"$token"'' + # Suppression du board si trop ancien + curl -X DELETE https://wekan.test.picasoft.net/api/boards/$userBoard \ + -H 'Authorization: Bearer '"$token"'' fi done done @@ -63,14 +60,14 @@ exit 1 ######## FONCTIONNE MAIS QU'AVEC LES BOARDS PUBLICS ####### # récupération des ids de tous les boards publics -idBoards=$(curl -s -X GET https://wekan.test.picasoft.net/api/boards \ +idBoards=$(curl -s -X GET $url/api/boards \ -H 'Accept: application/json' \ -H 'Authorization: Bearer '"$token"'' | jq -r '.[]._id') # affiche les boards publics qui n'ont pas été modifié depuis deadlineTimeStamp for idBoard in $idBoards do - board=$(curl -s -X GET https://wekan.test.picasoft.net/api/boards/$idBoard \ + board=$(curl -s -X GET $url/api/boards/$idBoard \ -H 'Accept: application/json' \ -H 'Authorization: Bearer '"$token"'') -- GitLab