mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
Setup root, subdir, nourl, remove
This commit is contained in:
parent
be4056eee5
commit
654a9d615b
5 changed files with 530 additions and 61 deletions
|
@ -10,6 +10,7 @@
|
||||||
# Checks
|
# Checks
|
||||||
setup_sub_dir=1
|
setup_sub_dir=1
|
||||||
setup_root=1
|
setup_root=1
|
||||||
|
setup_nourl=0
|
||||||
setup_private=1
|
setup_private=1
|
||||||
setup_public=1
|
setup_public=1
|
||||||
wrong_user=1
|
wrong_user=1
|
||||||
|
@ -31,6 +32,7 @@
|
||||||
# Checks
|
# Checks
|
||||||
setup_sub_dir=1
|
setup_sub_dir=1
|
||||||
setup_root=1
|
setup_root=1
|
||||||
|
setup_nourl=0
|
||||||
setup_private=1
|
setup_private=1
|
||||||
setup_public=1
|
setup_public=1
|
||||||
wrong_user=1
|
wrong_user=1
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
## Nom du 1er scénario de test
|
|
||||||
# Manifest
|
|
||||||
domain="$DOMAIN"
|
|
||||||
path="$PATH"
|
|
||||||
admin="$USER"
|
|
||||||
language="en_EN"
|
|
||||||
is_public="No"
|
|
||||||
password="$PASSWORD"
|
|
||||||
port="666"
|
|
||||||
# Checks
|
|
||||||
setup_sub_dir=1
|
|
||||||
setup_root=1
|
|
||||||
setup_private=1
|
|
||||||
setup_public=1
|
|
||||||
wrong_user=1
|
|
||||||
wrong_path=1
|
|
||||||
incorrect_path=1
|
|
||||||
corrupt_source=1
|
|
||||||
fail_download_source=1
|
|
||||||
port_already_use=1
|
|
||||||
final_path_already_use=1
|
|
||||||
## Nom du 2e scénario de test
|
|
||||||
# Manifest
|
|
||||||
domain="$DOMAIN"
|
|
||||||
path="$PATH"
|
|
||||||
admin="$USER"
|
|
||||||
language="en_EN"
|
|
||||||
is_public="Yes"
|
|
||||||
password="$PASSWORD"
|
|
||||||
port="666"
|
|
||||||
# Checks
|
|
||||||
setup_sub_dir=1
|
|
||||||
setup_root=1
|
|
||||||
setup_private=1
|
|
||||||
setup_public=1
|
|
||||||
wrong_user=1
|
|
||||||
wrong_path=1
|
|
||||||
incorrect_path=1
|
|
||||||
corrupt_source=1
|
|
||||||
fail_download_source=1
|
|
||||||
port_already_use=1
|
|
||||||
final_path_already_use=1
|
|
193
package_check.sh
193
package_check.sh
|
@ -2,14 +2,19 @@
|
||||||
|
|
||||||
USER_TEST=package_checker
|
USER_TEST=package_checker
|
||||||
PASSWORD_TEST=checker_pwd
|
PASSWORD_TEST=checker_pwd
|
||||||
# DOMAIN=$(sudo yunohost domain list -l 1 | cut -d" " -f 2)
|
PATH_TEST=/check
|
||||||
|
DOMAIN=$(sudo yunohost domain list -l 1 | cut -d" " -f 2)
|
||||||
|
|
||||||
source sub_scripts/*
|
abs_path=$(cd $(dirname $0); pwd) # Récupère le chemin absolu du script.
|
||||||
|
|
||||||
|
source $abs_path/sub_scripts/testing_process.sh
|
||||||
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
# Vérifie l'existence de l'utilisateur de test
|
# Vérifie l'existence de l'utilisateur de test
|
||||||
# if ! ynh_user_exists "$USER_TEST" ; then # Si il n'existe pas, il faut le créer.
|
if ! ynh_user_exists "$USER_TEST" ; then # Si il n'existe pas, il faut le créer.
|
||||||
# sudo yunohost user create --firstname $USER_TEST --mail $USER_TEST@$DOMAIN --lastname $USER_TEST --password $PASSWORD_TEST $USER_TEST
|
USER_TEST_CLEAN=${USER_TEST//"_"/""}
|
||||||
# fi
|
sudo yunohost user create --firstname "$USER_TEST_CLEAN" --mail "$USER_TEST_CLEAN@$DOMAIN" --lastname "$USER_TEST_CLEAN" --password "$PASSWORD_TEST" "$USER_TEST"
|
||||||
|
fi
|
||||||
|
|
||||||
# Vérifie le type d'emplacement du package à tester
|
# Vérifie le type d'emplacement du package à tester
|
||||||
if echo "$1" | grep -Eq "https?:\/\/"
|
if echo "$1" | grep -Eq "https?:\/\/"
|
||||||
|
@ -30,18 +35,19 @@ fi
|
||||||
GLOBAL_CHECK_SETUP=0
|
GLOBAL_CHECK_SETUP=0
|
||||||
GLOBAL_CHECK_SUB_DIR=0
|
GLOBAL_CHECK_SUB_DIR=0
|
||||||
GLOBAL_CHECK_ROOT=0
|
GLOBAL_CHECK_ROOT=0
|
||||||
GLOBAL_CHECK_PRIVATE=0
|
|
||||||
GLOBAL_CHECK_PUBLIC=0
|
|
||||||
GLOBAL_CHECK_REMOVE=0
|
GLOBAL_CHECK_REMOVE=0
|
||||||
|
GLOBAL_CHECK_REMOVE_SUBDIR=0
|
||||||
|
GLOBAL_CHECK_REMOVE_ROOT=0
|
||||||
GLOBAL_CHECK_UPGRADE=0
|
GLOBAL_CHECK_UPGRADE=0
|
||||||
GLOBAL_CHECK_BACKUP=0
|
GLOBAL_CHECK_BACKUP=0
|
||||||
GLOBAL_CHECK_RESTORE=0
|
GLOBAL_CHECK_RESTORE=0
|
||||||
|
GLOBAL_CHECK_PRIVATE=0
|
||||||
|
GLOBAL_CHECK_PUBLIC=0
|
||||||
GLOBAL_CHECK_ADMIN=0
|
GLOBAL_CHECK_ADMIN=0
|
||||||
GLOBAL_CHECK_DOMAIN=0
|
GLOBAL_CHECK_DOMAIN=0
|
||||||
GLOBAL_CHECK_PATH=0
|
GLOBAL_CHECK_PATH=0
|
||||||
GLOBAL_CHECK_CORRUPT=0
|
GLOBAL_CHECK_CORRUPT=0
|
||||||
GLOBAL_CHECK_DL=0
|
GLOBAL_CHECK_DL=0
|
||||||
GLOBAL_CHECK_=0
|
|
||||||
GLOBAL_CHECK_PORT=0
|
GLOBAL_CHECK_PORT=0
|
||||||
GLOBAL_CHECK_FINALPATH=0
|
GLOBAL_CHECK_FINALPATH=0
|
||||||
IN_PROCESS=0
|
IN_PROCESS=0
|
||||||
|
@ -56,7 +62,7 @@ do
|
||||||
PROCESS_NAME=${LIGNE#\#\# }
|
PROCESS_NAME=${LIGNE#\#\# }
|
||||||
IN_PROCESS=1
|
IN_PROCESS=1
|
||||||
fi
|
fi
|
||||||
if [ $IN_PROCESS -eq 1 ]
|
if [ "$IN_PROCESS" -eq 1 ]
|
||||||
then # Analyse des arguments du scenario de test
|
then # Analyse des arguments du scenario de test
|
||||||
if echo "$LIGNE" | grep -q "# Manifest"; then # Arguments du manifest
|
if echo "$LIGNE" | grep -q "# Manifest"; then # Arguments du manifest
|
||||||
MANIFEST=1
|
MANIFEST=1
|
||||||
|
@ -83,7 +89,7 @@ do
|
||||||
if [ "${#MANIFEST_ARGS}" -gt 0 ]; then # Si il y a déjà des arguments
|
if [ "${#MANIFEST_ARGS}" -gt 0 ]; then # Si il y a déjà des arguments
|
||||||
MANIFEST_ARGS="$MANIFEST_ARGS&" #, précède de &
|
MANIFEST_ARGS="$MANIFEST_ARGS&" #, précède de &
|
||||||
fi
|
fi
|
||||||
MANIFEST_ARGS="$MANIFEST_ARGS$(echo $LIGNE | sed 's/ //g')" # Ajoute l'argument du manifest, en retirant les espaces.
|
MANIFEST_ARGS="$MANIFEST_ARGS$(echo $LIGNE | sed 's/[ \"]//g')" # Ajoute l'argument du manifest, en retirant les espaces et les guillemets.
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [ "$CHECKS" -eq 1 ]
|
if [ "$CHECKS" -eq 1 ]
|
||||||
|
@ -94,6 +100,9 @@ do
|
||||||
if echo "$LIGNE" | grep -q "setup_root="; then # Test d'installation à la racine
|
if echo "$LIGNE" | grep -q "setup_root="; then # Test d'installation à la racine
|
||||||
setup_root=$(echo "$LIGNE" | cut -d '=' -f2)
|
setup_root=$(echo "$LIGNE" | cut -d '=' -f2)
|
||||||
fi
|
fi
|
||||||
|
if echo "$LIGNE" | grep -q "setup_nourl="; then # Test d'installation sans accès par url
|
||||||
|
setup_nourl=$(echo "$LIGNE" | cut -d '=' -f2)
|
||||||
|
fi
|
||||||
if echo "$LIGNE" | grep -q "setup_private="; then # Test d'installation en privé
|
if echo "$LIGNE" | grep -q "setup_private="; then # Test d'installation en privé
|
||||||
setup_private=$(echo "$LIGNE" | cut -d '=' -f2)
|
setup_private=$(echo "$LIGNE" | cut -d '=' -f2)
|
||||||
fi
|
fi
|
||||||
|
@ -121,11 +130,171 @@ do
|
||||||
if echo "$LIGNE" | grep -q "final_path_already_use="; then # Test sur final path déjà utilisé.
|
if echo "$LIGNE" | grep -q "final_path_already_use="; then # Test sur final path déjà utilisé.
|
||||||
final_path_already_use=$(echo "$LIGNE" | cut -d '=' -f2)
|
final_path_already_use=$(echo "$LIGNE" | cut -d '=' -f2)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
done < "$APP_CHECK/check_process"
|
done < "$APP_CHECK/check_process"
|
||||||
|
|
||||||
TESTING_PROCESS
|
TESTING_PROCESS
|
||||||
|
|
||||||
|
ECHO_FORMAT "Installation: "
|
||||||
|
if [ "$GLOBAL_CHECK_SETUP" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_SETUP" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Installation en sous-dossier: "
|
||||||
|
if [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_SUB_DIR" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Installation à la racine: "
|
||||||
|
if [ "$GLOBAL_CHECK_ROOT" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_ROOT" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Suppression: "
|
||||||
|
if [ "$GLOBAL_CHECK_REMOVE" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_REMOVE" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Suppression depuis sous-dossier: "
|
||||||
|
if [ "$GLOBAL_CHECK_REMOVE_SUBDIR" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_REMOVE_SUBDIR" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Suppression depuis racine: "
|
||||||
|
if [ "$GLOBAL_CHECK_REMOVE_ROOT" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_REMOVE_ROOT" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Upgrade: "
|
||||||
|
if [ "$GLOBAL_CHECK_UPGRADE" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_UPGRADE" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Backup: "
|
||||||
|
if [ "$GLOBAL_CHECK_BACKUP" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_BACKUP" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Restore: "
|
||||||
|
if [ "$GLOBAL_CHECK_RESTORE" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_RESTORE" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Installation privée: "
|
||||||
|
if [ "$GLOBAL_CHECK_PRIVATE" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_PRIVATE" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Installation publique: "
|
||||||
|
if [ "$GLOBAL_CHECK_PUBLIC" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_PUBLIC" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Mauvais utilisateur: "
|
||||||
|
if [ "$GLOBAL_CHECK_ADMIN" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_ADMIN" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Erreur de domaine: "
|
||||||
|
if [ "$GLOBAL_CHECK_DOMAIN" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_DOMAIN" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Correction de path: "
|
||||||
|
if [ "$GLOBAL_CHECK_PATH" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_PATH" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Source corrompue: "
|
||||||
|
if [ "$GLOBAL_CHECK_CORRUPT" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_CORRUPT" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Erreur de téléchargement de la source: "
|
||||||
|
if [ "$GLOBAL_CHECK_DL" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_DL" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Port déjà utilisé: "
|
||||||
|
if [ "$GLOBAL_CHECK_PORT" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_PORT" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
||||||
|
ECHO_FORMAT "Dossier déjà utilisé: "
|
||||||
|
if [ "$GLOBAL_CHECK_FINALPATH" -eq 1 ]; then
|
||||||
|
ECHO_FORMAT "SUCCESS\n" "lgreen"
|
||||||
|
elif [ "$GLOBAL_CHECK_FINALPATH" -eq -1 ]; then
|
||||||
|
ECHO_FORMAT "FAIL\n" "lred"
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "Not evaluated.\n" "white"
|
||||||
|
fi
|
||||||
|
|
83
sub_scripts/log_extractor.sh
Normal file
83
sub_scripts/log_extractor.sh
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
OUTPUTD="debug_output"
|
||||||
|
YUNOHOST_LOG="/var/log/yunohost/yunohost-cli.log"
|
||||||
|
|
||||||
|
echo "Chargement des fonctions de log_extractor.sh"
|
||||||
|
|
||||||
|
ECHO_FORMAT () {
|
||||||
|
if [ "$2" == "red" ]; then
|
||||||
|
echo -en "\e[91m"
|
||||||
|
fi
|
||||||
|
if [ "$2" == "lyellow" ]; then
|
||||||
|
echo -en "\e[93m"
|
||||||
|
fi
|
||||||
|
if [ "$2" == "lred" ]; then
|
||||||
|
echo -en "\e[91m"
|
||||||
|
fi
|
||||||
|
if [ "$2" == "lgreen" ]; then
|
||||||
|
echo -en "\e[92m"
|
||||||
|
fi
|
||||||
|
if [ "$2" == "white" ]; then
|
||||||
|
echo -en "\e[97m"
|
||||||
|
fi
|
||||||
|
if [ "$3" == "bold" ]; then
|
||||||
|
echo -en "\e[1m"
|
||||||
|
fi
|
||||||
|
if [ "$3" == "underlined" ]; then
|
||||||
|
echo -en "\e[4m"
|
||||||
|
fi
|
||||||
|
echo -en "$1" | tee -a $RESULT
|
||||||
|
echo -en "\e[0m"
|
||||||
|
}
|
||||||
|
|
||||||
|
COPY_LOG () {
|
||||||
|
if [ "$1" -eq 1 ]; then
|
||||||
|
log_line=$(sudo wc -l "$YUNOHOST_LOG" | cut -d ' ' -f 1) # Compte le nombre de ligne du fichier de log Yunohost
|
||||||
|
log_line=$(( $log_line + 1 )) # Ignore la première ligne, reprise de l'ancien log.
|
||||||
|
fi
|
||||||
|
if [ "$1" -eq 2 ]; then
|
||||||
|
sudo tail -n +$log_line "$YUNOHOST_LOG" > "$OUTPUTD" # Copie le fichier de log à partir de la dernière ligne du log préexistant
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
PARSE_LOG () {
|
||||||
|
while read LOG_LIGNE_TEMP
|
||||||
|
do # Lit le log pour extraire les warning et les erreurs.
|
||||||
|
if echo "$LOG_LIGNE_TEMP" | grep -q "^>ERROR: "; then
|
||||||
|
ECHO_FORMAT "Error:" "red" "underlined"
|
||||||
|
ECHO_FORMAT " $(echo "$LOG_LIGNE_TEMP\n" | sed 's/^>ERROR: //')" "red"
|
||||||
|
fi
|
||||||
|
if echo "$LOG_LIGNE_TEMP" | grep -q "^>WARNING: "; then
|
||||||
|
ECHO_FORMAT "Warning:" "lyellow" "underlined"
|
||||||
|
ECHO_FORMAT " $(echo "$LOG_LIGNE_TEMP\n" | sed 's/^>WARNING: //')" "lyellow"
|
||||||
|
fi
|
||||||
|
done < "temp_$RESULT"
|
||||||
|
}
|
||||||
|
|
||||||
|
CLEAR_LOG () {
|
||||||
|
# Élimine les warning parasites connus et identifiables facilement.
|
||||||
|
sed -i '/^>WARNING: yunohost\.hook <lambda> - \[[0-9.]*\] ?$/d' "temp_$RESULT" # Ligne de warning vide précédant et suivant la progression d'un wget
|
||||||
|
sed -i '/^>WARNING: yunohost\.hook <lambda> - \[[0-9.]*\] *[0-9]*K \.* /d' "temp_$RESULT" # Ligne de warning de progression d'un wget
|
||||||
|
sed -i '/% Total % Received % Xferd/d' "temp_$RESULT" # Ligne de warning des statistiques d'un wget
|
||||||
|
sed -i '/Dload Upload Total Spent/d' "temp_$RESULT" # 2e ligne de warning des statistiques d'un wget
|
||||||
|
sed -i '/--:--:-- --:--:-- --:--:--/d' "temp_$RESULT" # 3e ligne de warning des statistiques d'un wget
|
||||||
|
sed -i '/^$/d' "temp_$RESULT" # Retire les lignes vides
|
||||||
|
}
|
||||||
|
|
||||||
|
LOG_EXTRACTOR () {
|
||||||
|
echo -n "" > temp_$RESULT # Initialise le fichier des résulats d'analyse
|
||||||
|
while read LOG_LIGNE
|
||||||
|
do # Lit le log pour extraire les warning et les erreurs.
|
||||||
|
if echo "$LOG_LIGNE" | grep -q " ERROR "; then
|
||||||
|
echo -n ">ERROR: " >> "temp_$RESULT"
|
||||||
|
echo "$LOG_LIGNE" | sed 's/^.* ERROR *//' >> "temp_$RESULT"
|
||||||
|
fi
|
||||||
|
if echo "$LOG_LIGNE" | grep -q " WARNING "; then
|
||||||
|
echo -n ">WARNING: " >> "temp_$RESULT"
|
||||||
|
echo "$LOG_LIGNE" | sed 's/^.* WARNING *//' >> "temp_$RESULT"
|
||||||
|
fi
|
||||||
|
done < "$OUTPUTD"
|
||||||
|
CLEAR_LOG
|
||||||
|
PARSE_LOG
|
||||||
|
}
|
|
@ -1,18 +1,275 @@
|
||||||
OUTPUTD="debug_output"
|
#!/bin/bash
|
||||||
|
|
||||||
|
RESULT="Test_results.log"
|
||||||
|
|
||||||
|
echo "Chargement des fonctions de testing_process.sh"
|
||||||
|
|
||||||
|
source $abs_path/sub_scripts/log_extractor.sh
|
||||||
|
|
||||||
|
echo -n "" > $RESULT # Initialise le fichier des résulats d'analyse
|
||||||
|
|
||||||
SETUP_APP () {
|
SETUP_APP () {
|
||||||
sudo yunohost app --debug install $APP_CHECK -a "$MANIFEST_ARGS" > $OUTPUTD 2>&1
|
# echo -e "\nMANIFEST_ARGS=$MANIFEST_ARGS_MOD\n"
|
||||||
|
sudo yunohost --debug app install $APP_CHECK -a "$MANIFEST_ARGS_MOD" > /dev/null 2>&1
|
||||||
|
YUNOHOST_RESULT=$?
|
||||||
}
|
}
|
||||||
|
|
||||||
REMOVE_APP () {
|
REMOVE_APP () {
|
||||||
# Il faut choper le label pour savoir quoi supprimer...
|
sudo yunohost --debug app remove $APPID > /dev/null 2>&1
|
||||||
|
YUNOHOST_REMOVE=$?
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_URL () {
|
||||||
|
echo "127.0.0.1 $DOMAIN #package_check" | sudo tee -a /etc/hosts > /dev/null # Renseigne le hosts pour le domain à tester, pour passer directement sur localhost
|
||||||
|
curl -LksS $DOMAIN/$CHECK_PATH -o url_output
|
||||||
|
URL_TITLE=$(grep "<title>" url_output | cut -d '>' -f 2 | cut -d '<' -f1)
|
||||||
|
ECHO_FORMAT "Titre de la page: $URL_TITLE\n" "white"
|
||||||
|
if [ "$URL_TITLE" == "YunoHost Portal" ]; then
|
||||||
|
YUNO_PORTAL=1
|
||||||
|
# Il serait utile de réussir à s'authentifier sur le portail pour tester une app protégée par celui-ci. Mais j'y arrive pas...
|
||||||
|
else
|
||||||
|
YUNO_PORTAL=0
|
||||||
|
ECHO_FORMAT "Extrait du corps de la page:\n" "white"
|
||||||
|
echo -e "\e[37m" # Écrit en light grey
|
||||||
|
grep "<body" -A 20 url_output | sed 1d | tee -a $RESULT
|
||||||
|
echo -e "\e[0m"
|
||||||
|
fi
|
||||||
|
sudo sed -i '/#package_check/d' /etc/hosts # Supprime la ligne dans le hosts
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_SETUP_SUBDIR () {
|
||||||
|
# Test d'installation en sous-dossier
|
||||||
|
ECHO_FORMAT "\n>>Installation en sous-dossier...\n" "white" "bold"
|
||||||
|
MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$DOMAIN'/"$DOMAIN"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PATH'/"$PATH_TEST"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$USER'/"$USER_TEST"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PASSWORD'/"$PASSWORD_TEST"}
|
||||||
|
COPY_LOG 1
|
||||||
|
# Installation de l'app
|
||||||
|
SETUP_APP
|
||||||
|
if [ "$YUNOHOST_RESULT" -eq 0 ]; then
|
||||||
|
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||||
|
GLOBAL_CHECK_SETUP=1 # Installation réussie
|
||||||
|
GLOBAL_CHECK_SUB_DIR=1 # Installation en sous-dossier réussie
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||||
|
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
|
||||||
|
GLOBAL_CHECK_SETUP=-1 # Installation échouée
|
||||||
|
fi
|
||||||
|
GLOBAL_CHECK_SUB_DIR=-1 # Installation en sous-dossier échouée
|
||||||
|
fi
|
||||||
|
COPY_LOG 2
|
||||||
|
LOG_EXTRACTOR
|
||||||
|
APPID=$(grep -o "YNH_APP_INSTANCE_NAME=[^ ]*" "$OUTPUTD" | cut -d '=' -f2) # Récupère le nom de l'app au moment de l'install. Pour pouvoir le réutiliser dans les commandes yunohost. La regex matche tout ce qui suit le =, jusqu'à l'espace.
|
||||||
|
ECHO_FORMAT "\nAccès par l'url...\n" "white" "bold"
|
||||||
|
# Test l'accès à l'app
|
||||||
|
CHECK_PATH=$PATH_TEST
|
||||||
|
CHECK_URL
|
||||||
|
COPY_LOG 1
|
||||||
|
ECHO_FORMAT "\nSuppression...\n" "white" "bold"
|
||||||
|
# Suppression de l'app
|
||||||
|
REMOVE_APP
|
||||||
|
if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression
|
||||||
|
then
|
||||||
|
if [ "$YUNOHOST_REMOVE" -eq 0 ]; then
|
||||||
|
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||||
|
GLOBAL_CHECK_REMOVE_SUBDIR=1 # Suppression réussie
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||||
|
if [ "$GLOBAL_CHECK_REMOVE" -ne 1 ]; then
|
||||||
|
GLOBAL_CHECK_REMOVE=-1 # Suppression échouée
|
||||||
|
fi
|
||||||
|
GLOBAL_CHECK_REMOVE_SUBDIR=-1 # Suppression échouée
|
||||||
|
fi
|
||||||
|
COPY_LOG 2
|
||||||
|
LOG_EXTRACTOR
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_SETUP_ROOT () {
|
||||||
|
# Test d'installation à la racine
|
||||||
|
ECHO_FORMAT "\n>>Installation à la racine...\n" "white" "bold"
|
||||||
|
MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$DOMAIN'/"$DOMAIN"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PATH'/"$PATH_TEST"} # Domain et path ne devrait théoriquement pas être utilisés
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$USER'/"$USER_TEST"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PASSWORD'/"$PASSWORD_TEST"}
|
||||||
|
COPY_LOG 1
|
||||||
|
# Installation de l'app
|
||||||
|
SETUP_APP
|
||||||
|
if [ "$YUNOHOST_RESULT" -eq 0 ]; then
|
||||||
|
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||||
|
GLOBAL_CHECK_SETUP=1 # Installation réussie
|
||||||
|
GLOBAL_CHECK_ROOT=1 # Installation à la racine réussie
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||||
|
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
|
||||||
|
GLOBAL_CHECK_SETUP=-1 # Installation échouée
|
||||||
|
fi
|
||||||
|
GLOBAL_CHECK_ROOT=-1 # Installation à la racine échouée
|
||||||
|
fi
|
||||||
|
COPY_LOG 2
|
||||||
|
LOG_EXTRACTOR
|
||||||
|
APPID=$(grep -o "YNH_APP_INSTANCE_NAME=[^ ]*" "$OUTPUTD" | cut -d '=' -f2) # Récupère le nom de l'app au moment de l'install. Pour pouvoir le réutiliser dans les commandes yunohost. La regex matche tout ce qui suit le =, jusqu'à l'espace.
|
||||||
|
ECHO_FORMAT "\nAccès par l'url...\n" "white" "bold"
|
||||||
|
# Test l'accès à l'app
|
||||||
|
CHECK_PATH="/"
|
||||||
|
CHECK_URL
|
||||||
|
COPY_LOG 1
|
||||||
|
ECHO_FORMAT "\nSuppression...\n" "white" "bold"
|
||||||
|
# Suppression de l'app
|
||||||
|
REMOVE_APP
|
||||||
|
if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression
|
||||||
|
then
|
||||||
|
if [ "$YUNOHOST_REMOVE" -eq 0 ]; then
|
||||||
|
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||||
|
GLOBAL_CHECK_REMOVE_ROOT=1 # Suppression réussie
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||||
|
if [ "$GLOBAL_CHECK_REMOVE" -ne 1 ]; then
|
||||||
|
GLOBAL_CHECK_REMOVE=-1 # Suppression échouée
|
||||||
|
fi
|
||||||
|
GLOBAL_CHECK_REMOVE_ROOT=-1 # Suppression échouée
|
||||||
|
fi
|
||||||
|
COPY_LOG 2
|
||||||
|
LOG_EXTRACTOR
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_SETUP_NO_URL () {
|
||||||
|
# Test d'installation sans accès par url
|
||||||
|
ECHO_FORMAT "\n>>Installation sans accès par url...\n" "white" "bold"
|
||||||
|
MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$DOMAIN'/"$DOMAIN"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PATH'/"/"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$USER'/"$USER_TEST"}
|
||||||
|
MANIFEST_ARGS_MOD=${MANIFEST_ARGS_MOD//'$PASSWORD'/"$PASSWORD_TEST"}
|
||||||
|
COPY_LOG 1
|
||||||
|
# Installation de l'app
|
||||||
|
SETUP_APP
|
||||||
|
if [ "$YUNOHOST_RESULT" -eq 0 ]; then
|
||||||
|
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||||
|
GLOBAL_CHECK_SETUP=1 # Installation réussie
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||||
|
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
|
||||||
|
GLOBAL_CHECK_SETUP=-1 # Installation échouée
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
COPY_LOG 2
|
||||||
|
LOG_EXTRACTOR
|
||||||
|
APPID=$(grep -o "YNH_APP_INSTANCE_NAME=[^ ]*" "$OUTPUTD" | cut -d '=' -f2) # Récupère le nom de l'app au moment de l'install. Pour pouvoir le réutiliser dans les commandes yunohost. La regex matche tout ce qui suit le =, jusqu'à l'espace.
|
||||||
|
COPY_LOG 1
|
||||||
|
ECHO_FORMAT "\nSuppression...\n" "white" "bold"
|
||||||
|
# Suppression de l'app
|
||||||
|
REMOVE_APP
|
||||||
|
if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression
|
||||||
|
then
|
||||||
|
if [ "$YUNOHOST_REMOVE" -eq 0 ]; then
|
||||||
|
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
|
||||||
|
GLOBAL_CHECK_REMOVE_ROOT=1 # Suppression réussie
|
||||||
|
else
|
||||||
|
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
|
||||||
|
if [ "$GLOBAL_CHECK_REMOVE" -ne 1 ]; then
|
||||||
|
GLOBAL_CHECK_REMOVE=-1 # Suppression échouée
|
||||||
|
fi
|
||||||
|
GLOBAL_CHECK_REMOVE_ROOT=-1 # Suppression échouée
|
||||||
|
fi
|
||||||
|
COPY_LOG 2
|
||||||
|
LOG_EXTRACTOR
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
CHECK_UPGRADE () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_UPGRADE=0
|
||||||
|
}
|
||||||
|
CHECK_BACKUP () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_BACKUP=0
|
||||||
|
}
|
||||||
|
CHECK_RESTORE () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_RESTORE=0
|
||||||
|
}
|
||||||
|
CHECK_PRIVATE () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_PRIVATE=0
|
||||||
|
}
|
||||||
|
CHECK_PUBLIC () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_PUBLIC=0
|
||||||
|
}
|
||||||
|
CHECK_ADMIN () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_ADMIN=0
|
||||||
|
}
|
||||||
|
CHECK_DOMAIN () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_DOMAIN=0
|
||||||
|
}
|
||||||
|
CHECK_PATH () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_PATH=0
|
||||||
|
}
|
||||||
|
CHECK_CORRUPT () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_CORRUPT=0
|
||||||
|
}
|
||||||
|
CHECK_DL () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_DL=0
|
||||||
|
}
|
||||||
|
CHECK_PORT () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_PORT=0
|
||||||
|
}
|
||||||
|
CHECK_FINALPATH () {
|
||||||
|
echo "Non implémenté"
|
||||||
|
# GLOBAL_CHECK_FINALPATH=0
|
||||||
}
|
}
|
||||||
|
|
||||||
TESTING_PROCESS () {
|
TESTING_PROCESS () {
|
||||||
# Lancement des tests
|
# Lancement des tests
|
||||||
echo "PROCESS_NAME=$PROCESS_NAME"
|
ECHO_FORMAT "\nScénario de test: $PROCESS_NAME\n" "white" "underlined"
|
||||||
echo "MANIFEST_ARGS=$MANIFEST_ARGS"
|
if [ "$setup_sub_dir" -eq 1 ]; then
|
||||||
|
CHECK_SETUP_SUBDIR # Test d'installation en sous-dossier
|
||||||
SETUP_APP
|
fi
|
||||||
|
if [ "$setup_root" -eq 1 ]; then
|
||||||
|
CHECK_SETUP_ROOT # Test d'installation à la racine du domaine
|
||||||
|
fi
|
||||||
|
if [ "$setup_nourl" -eq 1 ]; then
|
||||||
|
CHECK_SETUP_NO_URL # Test d'installation sans accès par url
|
||||||
|
fi
|
||||||
|
CHECK_UPGRADE
|
||||||
|
CHECK_BACKUP
|
||||||
|
CHECK_RESTORE
|
||||||
|
if [ "$setup_private" -eq 1 ]; then
|
||||||
|
CHECK_PRIVATE # Test d'installation en privé
|
||||||
|
fi
|
||||||
|
if [ "$setup_public" -eq 1 ]; then
|
||||||
|
CHECK_PUBLIC # Test d'installation en public
|
||||||
|
fi
|
||||||
|
if [ "$wrong_user" -eq 1 ]; then
|
||||||
|
CHECK_ADMIN # Test d'erreur d'utilisateur
|
||||||
|
fi
|
||||||
|
if [ "$wrong_path" -eq 1 ]; then
|
||||||
|
CHECK_DOMAIN # Test d'erreur de path ou de domaine
|
||||||
|
fi
|
||||||
|
if [ "$incorrect_path" -eq 1 ]; then
|
||||||
|
CHECK_PATH # Test d'erreur de forme de path
|
||||||
|
fi
|
||||||
|
if [ "$corrupt_source" -eq 1 ]; then
|
||||||
|
CHECK_CORRUPT # Test d'erreur sur source corrompue -> Comment je vais provoquer ça!?
|
||||||
|
fi
|
||||||
|
if [ "$fail_download_source" -eq 1 ]; then
|
||||||
|
CHECK_DL # Test d'erreur de téléchargement de la source -> Comment!?
|
||||||
|
fi
|
||||||
|
if [ "$port_already_use" -eq 1 ]; then
|
||||||
|
CHECK_PORT # Test d'erreur de port
|
||||||
|
fi
|
||||||
|
if [ "$final_path_already_use" -eq 1 ]; then
|
||||||
|
CHECK_FINALPATH # Test sur final path déjà utilisé.
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue