Commit 5a68a316 authored by Andres Maldonado's avatar Andres Maldonado
Browse files

Initial commit

parents
Copyright (c) 2017 Andrés Maldonado
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
## Détection des teams inactives sur mattermost
### Scripts bash utilisant l'[API v4](https://api.mattermost.com/)
* mattermost_api_liste_teams_anciennes.sh
* mattermost_api_dernier_message.sh
### Pré-requis
Pour que les scripts fonctionnent bien, il est necesaire d'utiliser le compte admin de l'instance mattermost. (Les identifiants de Picasoft se trouvent dans la section privée du wiki).
### Utilisation
* Depuis n'importe quel ordi sous linux, télecharger ce dossier, extraire et ouvrir un terminal dessus.
* Générer un token: `curl -i -d '{"login_id":"<adresse@email.com>","password":"<mot_de_passe>"}' https://team.picasoft.net/api/v4/users/login | grep token`
(Adaptez la commande pour votre instance)
* Lancez cette commande: `./mattermost_api_liste_teams_anciennes.sh "token"`
Exemple: `./mattermost_api_liste_teams_anciennes.sh "h1z8..................5tmf"`
* Le script garde dans le fichier teams_anciennes.txt les détails des teams où le dernier message a été envoyé il y a plus de 1 an (id, display_name, email de l'admin de la team et la date du dernier message sur cette team)
* Si vous voulez modifier cette durée, il suffit de modifier cette ligne: `age_limite=31536000` (au début de mattermost_api_liste_teams_anciennes.sh). Il faut mettre une durée en secondes.
### Problèmes actuels
* Lorsqu'on génère un token, la commande qu'on a tappé (et donc le mot de passe du compte admin) reste dans l'historique! (~/.bash_history)
### Contribution
Toute contribution est bienvenue! N'hésitez pas à ouvrir une pull request ou à m'envoyer un mail sur amaldona@etu.utc.fr
### Licence
The MIT License
Copyright (c) 2017 Andrés Maldonado
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#!/bin/bash
#Ce script est utilisé par mattermost_api_liste_teams_anciennes.sh
#Il retourne la date epoch du dernier message sur une team, en secondes
#Utilisation: ./mattermost_api_dernier_message.sh "token" "id_equipe"
#Example: ./mattermost_api_dernier_message.sh "h1z8..................5tmf" "r1dse986zinr8xogtqirmqcoxa"
#On récupere la date epoch du dernier message de chaque channel de la team passée en paramètre
#(on utilise cut de manière à obtenir des dates en secondes et pas en millisecondes)
dates=`curl -i -H "Authorization: Bearer $1" https://team.picasoft.net/api/v4/teams/$2/channels | grep -o --regexp "\"last_post_at\":[0-9 ]*," | cut -c 16-25`
#check erreur de connection
if [ "$dates" = "" ]; then
echo -e "\e[1;31mErreur de connection! \e[0m"
exit
fi
#On trie les dates et on les met dans le tableau "dates_tri"
IFS=$'\n' dates_tri=($(sort <<<"$dates"))
unset IFS
#tester si tout a bien marché
#printf "%s\n" "${dates_tri[@]}"
nb_dates=`expr ${#dates_tri[@]}`
date_dernier_message=${dates_tri[$nb_dates-1]}
echo "$date_dernier_message"
#!/bin/bash
#Ce script garde dans le fichier teams_anciennes.txt les détails des teams où le dernier message a été envoyé il y a plus de 1 an (id, display_name, email de l'admin de la team et la date du dernier message sur cette team)
#Utilisation: ./mattermost_api_liste_teams_anciennes.sh "token"
#Exemple: ./mattermost_api_liste_teams_anciennes.sh "h1z8..................5tmf"
#Pour obtenir un token: curl -i -d '{"login_id":"user@mail.com","password":"............"}' https://team.picasoft.net/api/v4/users/login | grep token
#Si il y a un bug, on peut enlever les commentaires des sections "TEST", ça peut donner des pistes
#Un an=60×60×24×365=31536000 s
age_limite=31536000
#Variables pour mettre en forme plus facilement les messages
bold=$(tput bold)
normal=$(tput sgr0)
#Message d'aide
message_aide="#Ce script garde dans le fichier teams_anciennes.txt les détails des teams où le dernier message a été envoyé il y a plus de 1 an (id, display_name, email de l'admin de la team et la date du dernier message sur cette team)
${bold}Utilisation:${normal} ./mattermost_api_liste_teams_anciennes.sh \"token\"
${bold}Example:${normal} ./mattermost_api_liste_teams_anciennes.sh \"h1z8..................5tmf\"
${bold}Pour obtenir un token:${normal} curl -i -d '{\"login_id\":\"user@mail.com\",\"password\":\"............\"}' https://team.picasoft.net/api/v4/users/login | grep token"
#check syntaxe
if [ "${#1}" != "26" ]; then
echo "./mattermost_api_liste_teams_anciennes.sh: ${bold}Erreur de syntaxe! ${normal} le token doit avoir 26 caractères.
$message_aide"
exit
fi
#On récupere les ids de toutes les teams
string=`curl -i -H "Authorization: Bearer $1" https://team.picasoft.net/api/v4/teams`
#check erreur de connection
if [ "$string" = "" ]; then
echo -e "\e[1;31mErreur de connection! \e[0m"
exit
fi
#parser srting
ids=`echo $string | grep -o --regexp "\"id\":\"[^\"]*" | cut -c 7-32`
display_names=`echo $string | grep -o --regexp "\"display_name\":\"[^\"]*" | cut -c 17-`
emails=`echo $string | grep -o --regexp "\"email\":\"[^\"]*" | cut -c 10-`
#TEST
#echo "Liste des ids des teams:"$'\n'"$ids"
#echo "Liste des display_names des teams:"$'\n'"$display_names"
#echo "Liste des emails:"$'\n'"$emails"
IFS=$'\n'
#On met les ids dans le tableau "tab_ids"
read -d '' -a tab_ids <<< $ids
#On met les display_names dans le tableau "tab_display_names"
read -d '' -a tab_display_names <<< $display_names
#On met les emails dans le tableau "tab_emails"
read -d '' -a tab_emails <<< $emails
unset IFS
#Normalement la longueur de tab_ids et tab_display_names est la même
tab_ids_length=`expr ${#tab_ids[@]}`
#effacer teams_anciennes.txt si il existe déjà
echo "" > teams_anciennes.txt
#TEST
#for (( i=0; i<$tab_ids_length; i++ )); do
# echo "id: ${tab_ids[$i]} display_name:${tab_display_names[$i]} email:${tab_emails[$i]}"
#done
#récupérer la date du dernier message pour chaque team
for (( i=0; i<$tab_ids_length; i++ )); do
date_actuelle=`date +%s`
date_dernier_message=`./mattermost_api_dernier_message.sh "$1" "${tab_ids[$i]}"`
date_format_humain=`date -d @$date_dernier_message`
age_message=`expr $date_actuelle - $date_dernier_message`
#TEST
#echo "age message:$age_message age_limite=$age_limite"
echo "Team: ${tab_display_names[$i]}"
if (( $age_message < $age_limite )); then
#TEST
#echo -e "./mattermost_api_dernier_message.sh \"$1\" \"${tab_ids[$i]}\""
echo -e "Date du dernier message: \e[1;32m$date_format_humain\e[0m"
else
#TEST
#echo -e "./mattermost_api_dernier_message.sh \"$1\" \"${tab_ids[$i]}\""
echo -e "Date du dernier message: \e[1;31m$date_format_humain <-- team ancienne\e[0m"
echo "id: ${tab_ids[$i]} display_name:${tab_display_names[$i]} email:${tab_emails[$i]} date du dernier message:$date_format_humain" >> teams_anciennes.txt
fi
done
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment