Commentaires, correction scenar multiples, privé, lxc, curl

This commit is contained in:
Maniack Crudelis 2016-07-05 11:21:32 +02:00
parent 76cd4f0596
commit 92dc8555c7
8 changed files with 154 additions and 141 deletions

View file

@ -36,9 +36,10 @@ Il est nécessaire de fournir, à la racine du package de l'app à tester, un fi
> L'ordre des lignes n'a toutefois pas d'importance. > L'ordre des lignes n'a toutefois pas d'importance.
``` ```
## Nom du test ;; Nom du test
auto_remove=1 auto_remove=1
# Manifest # Commentaire ignoré
; Manifest
domain="$DOMAIN" (DOMAIN) domain="$DOMAIN" (DOMAIN)
path="$PATH" (PATH) path="$PATH" (PATH)
admin="$USER" (USER) admin="$USER" (USER)
@ -46,7 +47,7 @@ Il est nécessaire de fournir, à la racine du package de l'app à tester, un fi
is_public="Yes" (PUBLIC|public=Yes|private=No) is_public="Yes" (PUBLIC|public=Yes|private=No)
password="$PASSWORD" (PASSWORD) password="$PASSWORD" (PASSWORD)
port="666" (PORT) port="666" (PORT)
# Checks ; Checks
setup_sub_dir=1 setup_sub_dir=1
setup_root=1 setup_root=1
setup_nourl=0 setup_nourl=0
@ -63,7 +64,7 @@ Il est nécessaire de fournir, à la racine du package de l'app à tester, un fi
port_already_use=1 (XXXX) port_already_use=1 (XXXX)
final_path_already_use=0 final_path_already_use=0
``` ```
### `## Nom du test` ### `;; Nom du test`
Nom du scénario de test qui sera effectué. Nom du scénario de test qui sera effectué.
On peut créer autant de scénario de test que voulu, tous ayant la même syntaxe. On peut créer autant de scénario de test que voulu, tous ayant la même syntaxe.
Les différents scénarios de test seront exécutés successivement. Les différents scénarios de test seront exécutés successivement.
@ -72,7 +73,7 @@ Les différents scénarios de test seront exécutés successivement.
Si `auto_remove` est à 0, le script marque une pause avant chaque suppression de l'app. Afin d'éffectuer des vérifications manuelles si nécessaire. Si `auto_remove` est à 0, le script marque une pause avant chaque suppression de l'app. Afin d'éffectuer des vérifications manuelles si nécessaire.
Sinon, l'app est supprimée automatiquement et les tests continuent. Sinon, l'app est supprimée automatiquement et les tests continuent.
### `# Manifest` ### `; Manifest`
Ensemble des clés du manifest. Ensemble des clés du manifest.
Toutes les clés du manifest doivent être renseignée afin de procéder à l'installation. Toutes les clés du manifest doivent être renseignée afin de procéder à l'installation.
> Les clés de manifest données ici ne le sont qu'à titre d'exemple. Voir le manifest de l'application. > Les clés de manifest données ici ne le sont qu'à titre d'exemple. Voir le manifest de l'application.
@ -80,7 +81,7 @@ Certaines clés de manifest sont indispensables au script pour effectuer certain
`(DOMAIN)`, `(PATH)`, `(USER)`, `(PASSWORD)` et `(PORT)` doivent être mis en bout de ligne des clés correspondantes. Ces clés seront modifiées par le script. `(DOMAIN)`, `(PATH)`, `(USER)`, `(PASSWORD)` et `(PORT)` doivent être mis en bout de ligne des clés correspondantes. Ces clés seront modifiées par le script.
`(PUBLIC|public=Yes|private=No)` doit, en plus de correspondre à la clé de visibilité public, indiquer les valeurs du manifest pour public et privé. `(PUBLIC|public=Yes|private=No)` doit, en plus de correspondre à la clé de visibilité public, indiquer les valeurs du manifest pour public et privé.
### `# Checks` ### `; Checks`
Ensemble des tests à effectuer. Ensemble des tests à effectuer.
Chaque test marqué à 1 sera effectué par le script. Chaque test marqué à 1 sera effectué par le script.
Si un test est absent de la liste, il sera ignoré. Cela revient à le noter à 0. Si un test est absent de la liste, il sera ignoré. Cela revient à le noter à 0.

View file

@ -1,6 +1,7 @@
## Nom du test ;; Nom du test
auto_remove=1 auto_remove=1
# Manifest # Commentaire ignoré
; Manifest
domain="domain.tld" (DOMAIN) domain="domain.tld" (DOMAIN)
path="/path" (PATH) path="/path" (PATH)
admin="john" (USER) admin="john" (USER)
@ -8,7 +9,7 @@
is_public="Yes" (PUBLIC|public=Yes|private=No) is_public="Yes" (PUBLIC|public=Yes|private=No)
password="pass" (PASSWORD) password="pass" (PASSWORD)
port="666" (PORT) port="666" (PORT)
# Checks ; Checks
setup_sub_dir=1 setup_sub_dir=1
setup_root=1 setup_root=1
setup_nourl=0 setup_nourl=0

View file

@ -106,7 +106,7 @@ then
git clone $arg_app "$(basename $arg_app)_check" git clone $arg_app "$(basename $arg_app)_check"
else else
# Si c'est un dossier local, il est copié dans le dossier du script. # Si c'est un dossier local, il est copié dans le dossier du script.
sudo cp -a "$arg_app" "$(basename $arg_app)_check" sudo cp -a --remove-destination "$arg_app" "$(basename $arg_app)_check"
fi fi
APP_CHECK="$(basename $arg_app)_check" APP_CHECK="$(basename $arg_app)_check"
if [ ! -d "$APP_CHECK" ]; then if [ ! -d "$APP_CHECK" ]; then
@ -296,28 +296,32 @@ TEST_RESULTS () {
ECHO_FORMAT "\t\t\t\tNot evaluated.\n" "white" ECHO_FORMAT "\t\t\t\tNot evaluated.\n" "white"
fi fi
ECHO_FORMAT "\t\t Notes de résultats: $note/$tnote - " "white" "bold" ECHO_FORMAT "\t\t Notes de résultats: $note/$tnote - " "white" "bold"
note=$(( note * 20 / tnote )) if [ "$note" -gt 0 ]
if [ $note -le 5 ]; then then
color_note="red" note=$(( note * 20 / tnote ))
typo_note="bold"
smiley=":'(" # La contribution à Shasha. Qui m'a forcé à ajouté les smiley sous la contrainte ;)
elif [ $note -le 10 ]; then
color_note="red"
typo_note=""
smiley=":("
elif [ $note -le 15 ]; then
color_note="lyellow"
typo_note=""
smiley=":s"
elif [ $note -gt 15 ]; then
color_note="lgreen"
typo_note=""
smiley=":)"
elif [ $note -eq 20 ]; then
color_note="lgreen"
typo_note="bold"
smiley="\o/"
fi fi
if [ "$note" -le 5 ]; then
color_note="red"
typo_note="bold"
smiley=":'(" # La contribution à Shasha. Qui m'a forcé à ajouté les smiley sous la contrainte ;)
elif [ "$note" -le 10 ]; then
color_note="red"
typo_note=""
smiley=":("
elif [ "$note" -le 15 ]; then
color_note="lyellow"
typo_note=""
smiley=":s"
elif [ "$note" -gt 15 ]; then
color_note="lgreen"
typo_note=""
smiley=":)"
fi
if [ "$note" -ge 20 ]; then
color_note="lgreen"
typo_note="bold"
smiley="\o/"
fi
ECHO_FORMAT "$note/20 $smiley\n" "$color_note" "$typo_note" ECHO_FORMAT "$note/20 $smiley\n" "$color_note" "$typo_note"
ECHO_FORMAT "\t Ensemble de tests effectués: $tnote/19\n\n" "white" "bold" ECHO_FORMAT "\t Ensemble de tests effectués: $tnote/19\n\n" "white" "bold"
} }
@ -346,6 +350,10 @@ INIT_VAR() {
MANIFEST=0 MANIFEST=0
CHECKS=0 CHECKS=0
auto_remove=1 auto_remove=1
install_pass=0
note=0
tnote=0
all_test=0
MANIFEST_DOMAIN="null" MANIFEST_DOMAIN="null"
MANIFEST_PATH="null" MANIFEST_PATH="null"
@ -376,20 +384,22 @@ INIT_VAR() {
INIT_VAR INIT_VAR
echo -n "" > $COMPLETE_LOG # Initialise le fichier de log echo -n "" > $COMPLETE_LOG # Initialise le fichier de log
echo -n "" > $RESULT # Initialise le fichier des résulats d'analyse echo -n "" > $RESULT # Initialise le fichier des résulats d'analyse
note=0
tnote=0
all_test=0
if [ "$no_lxc" -eq 0 ]; then if [ "$no_lxc" -eq 0 ]; then
LXC_INIT LXC_INIT
fi fi
## Parsing du fichier check_process de manière séquentielle. ## Parsing du fichier check_process de manière séquentielle.
while read LIGNE while read <&4 LIGNE
do do
if echo "$LIGNE" | grep -q "auto_remove="; then # Indication d'auto remove LIGNE=$(echo $LIGNE | sed 's/^ *"//g') # Efface les espaces en début de ligne
if [ "${LIGNE:0:1}" == "#" ]; then
# Ligne de commentaire, ignorée.
continue
fi
if echo "$LIGNE" | grep -q "^auto_remove="; then # Indication d'auto remove
auto_remove=$(echo "$LIGNE" | cut -d '=' -f2) auto_remove=$(echo "$LIGNE" | cut -d '=' -f2)
fi fi
if echo "$LIGNE" | grep -q "^##"; then # Début d'un scénario de test if echo "$LIGNE" | grep -q "^;;"; then # Début d'un scénario de test
if [ "$IN_PROCESS" -eq 1 ]; then # Un scénario est déjà en cours. Donc on a atteind la fin du scénario. if [ "$IN_PROCESS" -eq 1 ]; then # Un scénario est déjà en cours. Donc on a atteind la fin du scénario.
TESTING_PROCESS TESTING_PROCESS
TEST_RESULTS TEST_RESULTS
@ -398,16 +408,18 @@ do
read -p "Appuyer sur une touche pour démarrer le scénario de test suivant..." < /dev/tty read -p "Appuyer sur une touche pour démarrer le scénario de test suivant..." < /dev/tty
fi fi
fi fi
PROCESS_NAME=${LIGNE#\#\# } PROCESS_NAME=${LIGNE#;; }
IN_PROCESS=1 IN_PROCESS=1
MANIFEST=0
CHECKS=0
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
MANIFEST_ARGS="" # Initialise la chaine des arguments d'installation MANIFEST_ARGS="" # Initialise la chaine des arguments d'installation
fi fi
if echo "$LIGNE" | grep -q "# Checks"; then # Tests à effectuer if echo "$LIGNE" | grep -q "^; Checks"; then # Tests à effectuer
MANIFEST=0 MANIFEST=0
CHECKS=1 CHECKS=1
fi fi
@ -440,93 +452,93 @@ do
MANIFEST_PORT=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant au port MANIFEST_PORT=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant au port
LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne
fi fi
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 et les guillemets. MANIFEST_ARGS="$MANIFEST_ARGS$(echo $LIGNE | sed 's/^ *\| *$\|\"//g')&" # Ajoute l'argument du manifest, en retirant les espaces de début et de fin ainsi que les guillemets.
fi fi
fi fi
if [ "$CHECKS" -eq 1 ] if [ "$CHECKS" -eq 1 ]
then # Analyse des tests à effectuer sur ce scenario. then # Analyse des tests à effectuer sur ce scenario.
if echo "$LIGNE" | grep -q "setup_sub_dir="; then # Test d'installation en sous-dossier if echo "$LIGNE" | grep -q "^setup_sub_dir="; then # Test d'installation en sous-dossier
setup_sub_dir=$(echo "$LIGNE" | cut -d '=' -f2) setup_sub_dir=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$setup_sub_dir" -eq 1 ]; then if [ "$setup_sub_dir" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
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)
if [ "$setup_root" -eq 1 ]; then if [ "$setup_root" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "setup_nourl="; then # Test d'installation sans accès par url if echo "$LIGNE" | grep -q "^setup_nourl="; then # Test d'installation sans accès par url
setup_nourl=$(echo "$LIGNE" | cut -d '=' -f2) setup_nourl=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$setup_nourl" -eq 1 ]; then if [ "$setup_nourl" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi 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)
if [ "$setup_private" -eq 1 ]; then if [ "$setup_private" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "setup_public="; then # Test d'installation en public if echo "$LIGNE" | grep -q "^setup_public="; then # Test d'installation en public
setup_public=$(echo "$LIGNE" | cut -d '=' -f2) setup_public=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$setup_public" -eq 1 ]; then if [ "$setup_public" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "upgrade="; then # Test d'upgrade if echo "$LIGNE" | grep -q "^upgrade="; then # Test d'upgrade
upgrade=$(echo "$LIGNE" | cut -d '=' -f2) upgrade=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$upgrade" -eq 1 ]; then if [ "$upgrade" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "backup_restore="; then # Test de backup et restore if echo "$LIGNE" | grep -q "^backup_restore="; then # Test de backup et restore
backup_restore=$(echo "$LIGNE" | cut -d '=' -f2) backup_restore=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$backup_restore" -eq 1 ]; then if [ "$backup_restore" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "multi_instance="; then # Test d'installation multiple if echo "$LIGNE" | grep -q "^multi_instance="; then # Test d'installation multiple
multi_instance=$(echo "$LIGNE" | cut -d '=' -f2) multi_instance=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$multi_instance" -eq 1 ]; then if [ "$multi_instance" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "wrong_user="; then # Test d'erreur d'utilisateur if echo "$LIGNE" | grep -q "^wrong_user="; then # Test d'erreur d'utilisateur
wrong_user=$(echo "$LIGNE" | cut -d '=' -f2) wrong_user=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$wrong_user" -eq 1 ]; then if [ "$wrong_user" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "wrong_path="; then # Test d'erreur de path ou de domaine if echo "$LIGNE" | grep -q "^wrong_path="; then # Test d'erreur de path ou de domaine
wrong_path=$(echo "$LIGNE" | cut -d '=' -f2) wrong_path=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$wrong_path" -eq 1 ]; then if [ "$wrong_path" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "incorrect_path="; then # Test d'erreur de forme de path if echo "$LIGNE" | grep -q "^incorrect_path="; then # Test d'erreur de forme de path
incorrect_path=$(echo "$LIGNE" | cut -d '=' -f2) incorrect_path=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$incorrect_path" -eq 1 ]; then if [ "$incorrect_path" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "corrupt_source="; then # Test d'erreur sur source corrompue if echo "$LIGNE" | grep -q "^corrupt_source="; then # Test d'erreur sur source corrompue
corrupt_source=$(echo "$LIGNE" | cut -d '=' -f2) corrupt_source=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$corrupt_source" -eq 1 ]; then if [ "$corrupt_source" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "fail_download_source="; then # Test d'erreur de téléchargement de la source if echo "$LIGNE" | grep -q "^fail_download_source="; then # Test d'erreur de téléchargement de la source
fail_download_source=$(echo "$LIGNE" | cut -d '=' -f2) fail_download_source=$(echo "$LIGNE" | cut -d '=' -f2)
if [ "$fail_download_source" -eq 1 ]; then if [ "$fail_download_source" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
if echo "$LIGNE" | grep -q "port_already_use="; then # Test d'erreur de port if echo "$LIGNE" | grep -q "^port_already_use="; then # Test d'erreur de port
port_already_use=$(echo "$LIGNE" | cut -d '=' -f2) port_already_use=$(echo "$LIGNE" | cut -d '=' -f2)
if echo "$LIGNE" | grep -q "([0-9]*)" if echo "$LIGNE" | grep -q "([0-9]*)"
then # Le port est mentionné ici. then # Le port est mentionné ici.
@ -537,16 +549,16 @@ do
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
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)
if [ "$final_path_already_use" -eq 1 ]; then if [ "$final_path_already_use" -eq 1 ]; then
all_test=$((all_test+1)) all_test=$((all_test+1))
fi fi
fi fi
fi fi
fi fi
done < "$APP_CHECK/check_process" done 4< "$APP_CHECK/check_process" # Utilise le descripteur de fichier 4. Car le descripteur 1 est utilisé par d'autres boucles while read dans ces scripts.
TESTING_PROCESS TESTING_PROCESS
if [ "$no_lxc" -eq 0 ]; then if [ "$no_lxc" -eq 0 ]; then

6
sub_scripts/log_extractor.sh Executable file → Normal file
View file

@ -28,7 +28,11 @@ ECHO_FORMAT () {
if [ "$3" == "underlined" ]; then if [ "$3" == "underlined" ]; then
echo -en "\e[4m" echo -en "\e[4m"
fi fi
echo -en "$1" | tee -a $RESULT copy_log=--
if [ "$4" == "clog" ]; then
copy_log=$COMPLETE_LOG
fi
echo -en "$1" | tee -a "$RESULT" "$copy_log"
echo -en "\e[0m" echo -en "\e[0m"
} }

View file

@ -17,18 +17,18 @@ then # $EUID est vide sur une exécution avec sudo. Et vaut 0 pour root
fi fi
echo ">> Update et install lxc lxctl" | tee "$LOG_BUILD_LXC" echo "Update et install lxc lxctl" | tee "$LOG_BUILD_LXC"
sudo apt-get update >> "$LOG_BUILD_LXC" 2>&1 sudo apt-get update >> "$LOG_BUILD_LXC" 2>&1
sudo apt-get install -y lxc lxctl >> "$LOG_BUILD_LXC" 2>&1 sudo apt-get install -y lxc lxctl >> "$LOG_BUILD_LXC" 2>&1
echo ">> Création d'une machine debian jessie minimaliste" | tee -a "$LOG_BUILD_LXC" echo "Création d'une machine debian jessie minimaliste" | tee -a "$LOG_BUILD_LXC"
sudo lxc-create -n $LXC_NAME -t debian -- -r jessie >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-create -n $LXC_NAME -t debian -- -r jessie >> "$LOG_BUILD_LXC" 2>&1
echo ">> Autoriser l'ip forwarding, pour router vers la machine virtuelle." | tee -a "$LOG_BUILD_LXC" echo "Autoriser l'ip forwarding, pour router vers la machine virtuelle." | tee -a "$LOG_BUILD_LXC"
echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/lxc_pchecker.conf >> "$LOG_BUILD_LXC" 2>&1 echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/lxc_pchecker.conf >> "$LOG_BUILD_LXC" 2>&1
sudo sysctl -p /etc/sysctl.d/lxc_pchecker.conf >> "$LOG_BUILD_LXC" 2>&1 sudo sysctl -p /etc/sysctl.d/lxc_pchecker.conf >> "$LOG_BUILD_LXC" 2>&1
echo ">> Ajoute un brige réseau pour la machine virtualisée" | tee -a "$LOG_BUILD_LXC" echo "Ajoute un brige réseau pour la machine virtualisée" | tee -a "$LOG_BUILD_LXC"
echo | sudo tee /etc/network/interfaces.d/lxc-pchecker <<EOF >> "$LOG_BUILD_LXC" 2>&1 echo | sudo tee /etc/network/interfaces.d/lxc-pchecker <<EOF >> "$LOG_BUILD_LXC" 2>&1
auto lxc-pchecker auto lxc-pchecker
iface lxc-pchecker inet static iface lxc-pchecker inet static
@ -38,41 +38,41 @@ iface lxc-pchecker inet static
bridge_maxwait 0 bridge_maxwait 0
EOF EOF
echo ">> Active le bridge réseau" | tee -a "$LOG_BUILD_LXC" echo "Active le bridge réseau" | tee -a "$LOG_BUILD_LXC"
sudo ifup lxc-pchecker >> "$LOG_BUILD_LXC" 2>&1 sudo ifup lxc-pchecker >> "$LOG_BUILD_LXC" 2>&1
echo ">> Configuration réseau du conteneur" | tee -a "$LOG_BUILD_LXC" echo "Configuration réseau du conteneur" | tee -a "$LOG_BUILD_LXC"
sudo sed -i 's/^lxc.network.type = empty$/lxc.network.type = veth\nlxc.network.flags = up\nlxc.network.link = lxc-pchecker\nlxc.network.name = eth0\nlxc.network.veth.pair = $LXC_NAME\nlxc.network.hwaddr = 00:FF:AA:00:00:01/' /var/lib/lxc/$LXC_NAME/config >> "$LOG_BUILD_LXC" 2>&1 sudo sed -i 's/^lxc.network.type = empty$/lxc.network.type = veth\nlxc.network.flags = up\nlxc.network.link = lxc-pchecker\nlxc.network.name = eth0\nlxc.network.veth.pair = $LXC_NAME\nlxc.network.hwaddr = 00:FF:AA:00:00:01/' /var/lib/lxc/$LXC_NAME/config >> "$LOG_BUILD_LXC" 2>&1
echo ">> Configuration réseau de la machine virtualisée" | tee -a "$LOG_BUILD_LXC" echo "Configuration réseau de la machine virtualisée" | tee -a "$LOG_BUILD_LXC"
sudo sed -i "s@iface eth0 inet dhcp@iface eth0 inet static\n\taddress $PLAGE_IP.2/24\n\tgateway $PLAGE_IP.1@" /var/lib/lxc/$LXC_NAME/rootfs/etc/network/interfaces >> "$LOG_BUILD_LXC" 2>&1 sudo sed -i "s@iface eth0 inet dhcp@iface eth0 inet static\n\taddress $PLAGE_IP.2/24\n\tgateway $PLAGE_IP.1@" /var/lib/lxc/$LXC_NAME/rootfs/etc/network/interfaces >> "$LOG_BUILD_LXC" 2>&1
echo ">> Configure le parefeu" | tee -a "$LOG_BUILD_LXC" echo "Configure le parefeu" | tee -a "$LOG_BUILD_LXC"
sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1 sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -A FORWARD -i eth0 -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1 sudo iptables -A FORWARD -i eth0 -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE >> "$LOG_BUILD_LXC" 2>&1 sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE >> "$LOG_BUILD_LXC" 2>&1
echo ">> Démarrage de la machine" | tee -a "$LOG_BUILD_LXC" echo "Démarrage de la machine" | tee -a "$LOG_BUILD_LXC"
sudo lxc-start -n $LXC_NAME -d >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-start -n $LXC_NAME -d >> "$LOG_BUILD_LXC" 2>&1
sleep 3 sleep 3
sudo lxc-ls -f >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-ls -f >> "$LOG_BUILD_LXC" 2>&1
echo ">> Update et install tasksel sudo git" | tee -a "$LOG_BUILD_LXC" echo "Update et install tasksel sudo git" | tee -a "$LOG_BUILD_LXC"
sudo lxc-attach -n $LXC_NAME -- apt-get update sudo lxc-attach -n $LXC_NAME -- apt-get update
sudo lxc-attach -n $LXC_NAME -- apt-get install -y tasksel sudo git sudo lxc-attach -n $LXC_NAME -- apt-get install -y tasksel sudo git
echo "Installation des paquets standard et ssh-server" | tee -a "$LOG_BUILD_LXC" echo "Installation des paquets standard et ssh-server" | tee -a "$LOG_BUILD_LXC"
sudo lxc-attach -n $LXC_NAME -- tasksel install standard ssh-server sudo lxc-attach -n $LXC_NAME -- tasksel install standard ssh-server
echo ">> Renseigne /etc/hosts sur l'invité" | tee -a "$LOG_BUILD_LXC" echo "Renseigne /etc/hosts sur l'invité" | tee -a "$LOG_BUILD_LXC"
sudo lxc-attach -n $LXC_NAME -- echo "127.0.0.1 $LXC_NAME" | sudo tee -a /var/lib/lxc/$LXC_NAME/rootfs/etc/hosts >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-attach -n $LXC_NAME -- echo "127.0.0.1 $LXC_NAME" | sudo tee -a /var/lib/lxc/$LXC_NAME/rootfs/etc/hosts >> "$LOG_BUILD_LXC" 2>&1
echo ">> Ajoute l'user pchecker" | tee -a "$LOG_BUILD_LXC" echo "Ajoute l'user pchecker" | tee -a "$LOG_BUILD_LXC"
sudo lxc-attach -n $LXC_NAME -- useradd -m -p pchecker pchecker >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-attach -n $LXC_NAME -- useradd -m -p pchecker pchecker >> "$LOG_BUILD_LXC" 2>&1
echo ">> Autorise pchecker à utiliser sudo sans mot de passe" | tee -a "$LOG_BUILD_LXC" echo "Autorise pchecker à utiliser sudo sans mot de passe" | tee -a "$LOG_BUILD_LXC"
echo "pchecker ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /var/lib/lxc/$LXC_NAME/rootfs/etc/sudoers >> "$LOG_BUILD_LXC" 2>&1 echo "pchecker ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /var/lib/lxc/$LXC_NAME/rootfs/etc/sudoers >> "$LOG_BUILD_LXC" 2>&1
echo ">> Mise en place de la connexion ssh vers l'invité." | tee -a "$LOG_BUILD_LXC" echo "Mise en place de la connexion ssh vers l'invité." | tee -a "$LOG_BUILD_LXC"
ssh-keygen -t dsa -f $HOME/.ssh/$LXC_NAME -P '' >> "$LOG_BUILD_LXC" 2>&1 ssh-keygen -t dsa -f $HOME/.ssh/$LXC_NAME -P '' >> "$LOG_BUILD_LXC" 2>&1
sudo mkdir /var/lib/lxc/$LXC_NAME/rootfs/home/pchecker/.ssh >> "$LOG_BUILD_LXC" 2>&1 sudo mkdir /var/lib/lxc/$LXC_NAME/rootfs/home/pchecker/.ssh >> "$LOG_BUILD_LXC" 2>&1
sudo cp $HOME/.ssh/$LXC_NAME.pub /var/lib/lxc/$LXC_NAME/rootfs/home/pchecker/.ssh/authorized_keys >> "$LOG_BUILD_LXC" 2>&1 sudo cp $HOME/.ssh/$LXC_NAME.pub /var/lib/lxc/$LXC_NAME/rootfs/home/pchecker/.ssh/authorized_keys >> "$LOG_BUILD_LXC" 2>&1
@ -86,45 +86,40 @@ User pchecker
IdentityFile $HOME/.ssh/$LXC_NAME IdentityFile $HOME/.ssh/$LXC_NAME
EOF EOF
echo -e "\007" # bell
ssh $ARG_SSH $LXC_NAME "exit 0" # Initie une premier connexion SSH pour valider la clé. ssh $ARG_SSH $LXC_NAME "exit 0" # Initie une premier connexion SSH pour valider la clé.
if [ "$?" -ne 0 ]; then # Si l'utilisateur tarde trop, la connexion sera refusée... ??? if [ "$?" -ne 0 ]; then # Si l'utilisateur tarde trop, la connexion sera refusée... ???
ssh $ARG_SSH $LXC_NAME "exit 0" # Initie une premier connexion SSH pour valider la clé. ssh $ARG_SSH $LXC_NAME "exit 0" # Initie une premier connexion SSH pour valider la clé.
fi fi
ssh $ARG_SSH $LXC_NAME "git clone https://github.com/YunoHost/install_script /tmp/install_script" >> "$LOG_BUILD_LXC" 2>&1 ssh $ARG_SSH $LXC_NAME "git clone https://github.com/YunoHost/install_script /tmp/install_script" >> "$LOG_BUILD_LXC" 2>&1
echo ">> Installation de Yunohost..." | tee -a "$LOG_BUILD_LXC" echo "Installation de Yunohost..." | tee -a "$LOG_BUILD_LXC"
ssh $ARG_SSH $LXC_NAME "cd /tmp/install_script; sudo ./install_yunohost -a" | tee -a "$LOG_BUILD_LXC" 2>&1 ssh $ARG_SSH $LXC_NAME "cd /tmp/install_script; sudo ./install_yunohost -a" | tee -a "$LOG_BUILD_LXC" 2>&1
echo ">> Post install Yunohost" | tee -a "$LOG_BUILD_LXC" echo "Post install Yunohost" | tee -a "$LOG_BUILD_LXC"
ssh $ARG_SSH $LXC_NAME "sudo yunohost tools postinstall --domain $DOMAIN --password $YUNO_PWD" | tee -a "$LOG_BUILD_LXC" 2>&1 ssh $ARG_SSH $LXC_NAME "sudo yunohost tools postinstall --domain $DOMAIN --password $YUNO_PWD" | tee -a "$LOG_BUILD_LXC" 2>&1
USER_TEST=$(cat ../package_check.sh | grep USER_TEST= | cut -d '=' -f2) USER_TEST=$(cat ../package_check.sh | grep USER_TEST= | cut -d '=' -f2)
PASSWORD_TEST=$(cat ../package_check.sh | grep PASSWORD_TEST= | cut -d '=' -f2) PASSWORD_TEST=$(cat ../package_check.sh | grep PASSWORD_TEST= | cut -d '=' -f2)
SOUS_DOMAIN="sous.$DOMAIN" SOUS_DOMAIN="sous.$DOMAIN"
echo -e "\007" # bell echo "Le mot de passe Yunohost est \'$YUNO_PWD\'"
echo ">> Le mot de passe Yunohost est \'$YUNO_PWD\'" echo "Ajout du sous domaine de test" | tee -a "$LOG_BUILD_LXC"
echo ">> Ajout du sous domaine de test" | tee -a "$LOG_BUILD_LXC"
ssh $ARG_SSH $LXC_NAME "sudo yunohost domain add \"$SOUS_DOMAIN\"" ssh $ARG_SSH $LXC_NAME "sudo yunohost domain add \"$SOUS_DOMAIN\""
USER_TEST_CLEAN=${USER_TEST//"_"/""} USER_TEST_CLEAN=${USER_TEST//"_"/""}
echo -e "\007" # bell echo "Ajout de l'utilisateur de test" | tee -a "$LOG_BUILD_LXC"
echo ">> Le mot de passe Yunohost est \'$YUNO_PWD\'"
echo ">> Ajout de l'utilisateur de test" | tee -a "$LOG_BUILD_LXC"
ssh $ARG_SSH $LXC_NAME "sudo yunohost user create --firstname \"$USER_TEST_CLEAN\" --mail \"$USER_TEST_CLEAN@$DOMAIN\" --lastname \"$USER_TEST_CLEAN\" --password \"$PASSWORD_TEST\" \"$USER_TEST\"" ssh $ARG_SSH $LXC_NAME "sudo yunohost user create --firstname \"$USER_TEST_CLEAN\" --mail \"$USER_TEST_CLEAN@$DOMAIN\" --lastname \"$USER_TEST_CLEAN\" --password \"$PASSWORD_TEST\" \"$USER_TEST\""
echo -e "\n>> Vérification de l'état de Yunohost" | tee -a "$LOG_BUILD_LXC" echo -e "\nVérification de l'état de Yunohost" | tee -a "$LOG_BUILD_LXC"
ssh $ARG_SSH $LXC_NAME "sudo yunohost -v" | tee -a "$LOG_BUILD_LXC" 2>&1 ssh $ARG_SSH $LXC_NAME "sudo yunohost -v" | tee -a "$LOG_BUILD_LXC" 2>&1
echo -e "\007" # bell echo "Arrêt de la machine virtualisée" | tee -a "$LOG_BUILD_LXC"
echo ">> Arrêt de la machine virtualisée" | tee -a "$LOG_BUILD_LXC"
sudo lxc-stop -n $LXC_NAME >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-stop -n $LXC_NAME >> "$LOG_BUILD_LXC" 2>&1
echo ">> Suppression des règles de parefeu" | tee -a "$LOG_BUILD_LXC" echo "Suppression des règles de parefeu" | tee -a "$LOG_BUILD_LXC"
sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1 sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1 sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT >> "$LOG_BUILD_LXC" 2>&1
sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE >> "$LOG_BUILD_LXC" 2>&1 sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE >> "$LOG_BUILD_LXC" 2>&1
sudo ifdown lxc-pchecker >> "$LOG_BUILD_LXC" 2>&1 sudo ifdown lxc-pchecker >> "$LOG_BUILD_LXC" 2>&1
echo ">> Création d'un snapshot" | tee -a "$LOG_BUILD_LXC" echo "Création d'un snapshot" | tee -a "$LOG_BUILD_LXC"
sudo lxc-snapshot -n $LXC_NAME >> "$LOG_BUILD_LXC" 2>&1 sudo lxc-snapshot -n $LXC_NAME >> "$LOG_BUILD_LXC" 2>&1
# Il sera nommé snap0 et stocké dans /var/lib/lxcsnaps/$LXC_NAME/snap0/ # Il sera nommé snap0 et stocké dans /var/lib/lxcsnaps/$LXC_NAME/snap0/

View file

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
LXC_NAME=$(cat lxc_build.sh | grep LXC_NAME= | cut -d '=' -f2) LXC_NAME=$(cat sub_scripts/lxc_build.sh | grep LXC_NAME= | cut -d '=' -f2)
# Check root # Check root
CHECK_ROOT=$EUID CHECK_ROOT=$EUID
@ -11,25 +11,24 @@ then # $EUID est vide sur une exécution avec sudo. Et vaut 0 pour root
exit 1 exit 1
fi fi
echo ">> Retire l'ip forwarding." echo "Retire l'ip forwarding."
sudo rm /etc/sysctl.d/lxc_pchecker.conf sudo rm /etc/sysctl.d/lxc_pchecker.conf
sudo sysctl -p sudo sysctl -p
echo ">> Désactive le bridge réseau" echo "Désactive le bridge réseau"
sudo ifdown lxc-pchecker sudo ifdown lxc-pchecker
echo ">> Supprime le brige réseau" echo "Supprime le brige réseau"
sudo rm /etc/network/interfaces.d/lxc-pchecker sudo rm /etc/network/interfaces.d/lxc-pchecker
echo ">> Suppression de la machine et de son snapshots" echo "Suppression de la machine et de son snapshots"
sudo lxc-stop -n $LXC_NAME
sudo lxc-snapshot -n $LXC_NAME -d snap0 sudo lxc-snapshot -n $LXC_NAME -d snap0
sudo rm -f /var/lib/lxcsnaps/$LXC_NAME/snap0.tar.gz sudo rm -f /var/lib/lxcsnaps/$LXC_NAME/snap0.tar.gz
sudo lxc-destroy -n $LXC_NAME -f sudo lxc-destroy -n $LXC_NAME -f
echo ">> Remove lxc lxctl" echo "Remove lxc lxctl"
sudo apt-get remove lxc lxctl sudo apt-get remove lxc lxctl
echo ">> Suppression des lignes de pchecker_lxc dans .ssh/config" echo "Suppression des lignes de pchecker_lxc dans .ssh/config"
BEGIN_LINE=$(cat $HOME/.ssh/config | grep "^# ssh pchecker_lxc$") BEGIN_LINE=$(cat $HOME/.ssh/config | grep -n "^# ssh pchecker_lxc$" | cut -d':' -f 1)
sed -i "/^$BEGIN_LINE$/,/^IdentityFile$/d" $HOME/.ssh/config sed -i "$BEGIN_LINE,/^IdentityFile/d" $HOME/.ssh/config

28
sub_scripts/lxc_upgrade.sh Executable file → Normal file
View file

@ -3,13 +3,13 @@
PLAGE_IP=$(cat lxc_build.sh | grep PLAGE_IP= | cut -d '"' -f2) PLAGE_IP=$(cat lxc_build.sh | grep PLAGE_IP= | cut -d '"' -f2)
LXC_NAME=$(cat lxc_build.sh | grep LXC_NAME= | cut -d '=' -f2) LXC_NAME=$(cat lxc_build.sh | grep LXC_NAME= | cut -d '=' -f2)
echo ">> Active le bridge réseau" echo "Active le bridge réseau"
if ! sudo ifquery lxc-pchecker --state > /dev/null if ! sudo ifquery lxc-pchecker --state > /dev/null
then then
sudo ifup lxc-pchecker sudo ifup lxc-pchecker
fi fi
echo ">> Configure le parefeu" echo "Configure le parefeu"
if ! sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null if ! sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null
then then
sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT sudo iptables -A FORWARD -i lxc-pchecker -o eth0 -j ACCEPT
@ -23,48 +23,46 @@ then
sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE sudo iptables -t nat -A POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE
fi fi
echo ">> Démarrage de la machine" echo "Démarrage de la machine"
if [ $(sudo lxc-info --name $LXC_NAME | grep -c "STOPPED") -eq 0 ]; then if [ $(sudo lxc-info --name $LXC_NAME | grep -c "STOPPED") -eq 0 ]; then
# Si la machine n'est pas à l'arrêt. # Si la machine n'est pas à l'arrêt.
sudo lxc-stop -n $LXC_NAME # Arrête la machine LXC sudo lxc-stop -n $LXC_NAME # Arrête la machine LXC
fi fi
# Restaure le snapshot # Restaure le snapshot
sudo rsync -aEAX --delete /var/lib/lxcsnaps/$LXC_NAME/snap0/rootfs/ /var/lib/lxc/$LXC_NAME/rootfs/ # Pour être sûr! sudo rsync -aEAX --delete -i /var/lib/lxcsnaps/$LXC_NAME/snap0/rootfs/ /var/lib/lxc/$LXC_NAME/rootfs/ # Pour être sûr!
sudo lxc-start -n $LXC_NAME -d sudo lxc-start -n $LXC_NAME -d
sleep 3 sleep 3
sudo lxc-ls -f sudo lxc-ls -f
echo ">> Update" echo "Update"
sudo lxc-attach -n $LXC_NAME -- apt-get update sudo lxc-attach -n $LXC_NAME -- apt-get update
sudo lxc-attach -n $LXC_NAME -- apt-get dist-upgrade --dry-run | grep -q "^Inst " # Vérifie si il y aura des mises à jour. sudo lxc-attach -n $LXC_NAME -- apt-get dist-upgrade --dry-run | grep -q "^Inst " # Vérifie si il y aura des mises à jour.
if [ "$?" -eq 0 ]; then if [ "$?" -eq 0 ]; then
update_apt=1 update_apt=1
else
update_apt=0
fi fi
echo ">> Upgrade" echo "update_apt=$update_apt"
echo "Upgrade"
sudo lxc-attach -n $LXC_NAME -- apt-get dist-upgrade sudo lxc-attach -n $LXC_NAME -- apt-get dist-upgrade
echo ">> Clean" echo "Clean"
sudo lxc-attach -n $LXC_NAME -- apt-get autoremove sudo lxc-attach -n $LXC_NAME -- apt-get autoremove
sudo lxc-attach -n $LXC_NAME -- apt-get autoclean sudo lxc-attach -n $LXC_NAME -- apt-get autoclean
echo ">> Arrêt de la machine virtualisée" echo "Arrêt de la machine virtualisée"
sudo lxc-stop -n $LXC_NAME sudo lxc-stop -n $LXC_NAME
echo ">> Suppression des règles de parefeu" echo "Suppression des règles de parefeu"
sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT
sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT sudo iptables -D FORWARD -i eth0 -o lxc-pchecker -j ACCEPT
sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE sudo iptables -t nat -D POSTROUTING -s $PLAGE_IP.0/24 -j MASQUERADE
sudo ifdown lxc-pchecker sudo ifdown lzc-pchecker
if [ "$update_apt" -eq 1 ] if [ "$update_apt" -eq 1 ]
then then
echo ">> Archivage du snapshot" echo "Archivage du snapshot"
sudo tar -czf --acls --xattrs /var/lib/lxcsnaps/$LXC_NAME/snap0.tar.gz /var/lib/lxcsnaps/$LXC_NAME/snap0 sudo tar -czf --acls --xattrs /var/lib/lxcsnaps/$LXC_NAME/snap0.tar.gz /var/lib/lxcsnaps/$LXC_NAME/snap0
echo ">> Remplacement du snapshot" echo "Remplacement du snapshot"
sudo lxc-snapshot -n $LXC_NAME -d snap0 sudo lxc-snapshot -n $LXC_NAME -d snap0
sudo lxc-snapshot -n $LXC_NAME sudo lxc-snapshot -n $LXC_NAME
fi fi

55
sub_scripts/testing_process.sh Executable file → Normal file
View file

@ -8,7 +8,8 @@ echo -e "\nChargement des fonctions de testing_process.sh"
source $abs_path/sub_scripts/log_extractor.sh source $abs_path/sub_scripts/log_extractor.sh
SETUP_APP () { SETUP_APP () {
# echo -e "MANIFEST_ARGS=$MANIFEST_ARGS_MOD" # echo -e "MANIFEST_ARGS=$MANIFEST_ARGS"
# echo -e "MANIFEST_ARGS_MOD=$MANIFEST_ARGS_MOD"
COPY_LOG 1 COPY_LOG 1
LXC_START "sudo yunohost --debug app install $APP_CHECK -a \"$MANIFEST_ARGS_MOD\"" LXC_START "sudo yunohost --debug app install $APP_CHECK -a \"$MANIFEST_ARGS_MOD\""
YUNOHOST_RESULT=$? YUNOHOST_RESULT=$?
@ -32,12 +33,13 @@ REMOVE_APP () {
CHECK_URL () { CHECK_URL () {
ECHO_FORMAT "\nAccès par l'url...\n" "white" "bold" ECHO_FORMAT "\nAccès par l'url...\n" "white" "bold"
rm -f url_output # Supprime le précédent fichier html si il est encore présent
if [ "$no_lxc" -eq 0 ]; then if [ "$no_lxc" -eq 0 ]; then
IP_CURL="$(cat sub_scripts/lxc_build.sh | grep PLAGE_IP= | cut -d '"' -f2).2" IP_CURL="$(cat sub_scripts/lxc_build.sh | grep PLAGE_IP= | cut -d '"' -f2).2"
else else
IP_CURL="127.0.0.1" IP_CURL="127.0.0.1"
fi fi
echo "$IP_CURL $SOUS_DOMAIN #package_check" | sudo tee -a /etc/hosts > /dev/null # Renseigne le hosts pour le domain à tester, pour passer directement sur localhost echo -e "$IP_CURL $DOMAIN #package_check\n$IP_CURL $SOUS_DOMAIN #package_check" | sudo tee -a /etc/hosts > /dev/null # Renseigne le hosts pour le domain à tester, pour passer directement sur localhost
curl -LksS $SOUS_DOMAIN/$CHECK_PATH -o url_output curl -LksS $SOUS_DOMAIN/$CHECK_PATH -o url_output
URL_TITLE=$(grep "<title>" url_output | cut -d '>' -f 2 | cut -d '<' -f1) URL_TITLE=$(grep "<title>" url_output | cut -d '>' -f 2 | cut -d '<' -f1)
ECHO_FORMAT "Titre de la page: $URL_TITLE\n" "white" ECHO_FORMAT "Titre de la page: $URL_TITLE\n" "white"
@ -51,14 +53,12 @@ CHECK_URL () {
grep "<body" -A 20 url_output | sed 1d | tee -a $RESULT grep "<body" -A 20 url_output | sed 1d | tee -a $RESULT
echo -e "\e[0m" echo -e "\e[0m"
fi fi
if [ "$no_lxc" -eq 0 ]; then sudo sed -i '/#package_check/d' /etc/hosts # Supprime la ligne dans le hosts
sudo sed -i '/#package_check/d' /etc/hosts # Supprime la ligne dans le hosts
fi
} }
CHECK_SETUP_SUBDIR () { CHECK_SETUP_SUBDIR () {
# Test d'installation en sous-dossier # Test d'installation en sous-dossier
ECHO_FORMAT "\n\n>> Installation en sous-dossier... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Installation en sous-dossier... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ -z "$MANIFEST_DOMAIN" ]; then if [ -z "$MANIFEST_DOMAIN" ]; then
echo "Clé de manifest pour 'domain' introuvable dans le fichier check_process. Impossible de procéder à ce test" echo "Clé de manifest pour 'domain' introuvable dans le fichier check_process. Impossible de procéder à ce test"
@ -124,7 +124,7 @@ CHECK_SETUP_SUBDIR () {
CHECK_SETUP_ROOT () { CHECK_SETUP_ROOT () {
# Test d'installation à la racine # Test d'installation à la racine
ECHO_FORMAT "\n\n>> Installation à la racine... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Installation à la racine... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ -z "$MANIFEST_DOMAIN" ]; then if [ -z "$MANIFEST_DOMAIN" ]; then
echo "Clé de manifest pour 'domain' introuvable dans le fichier check_process. Impossible de procéder à ce test" echo "Clé de manifest pour 'domain' introuvable dans le fichier check_process. Impossible de procéder à ce test"
@ -149,9 +149,10 @@ CHECK_SETUP_ROOT () {
# Installation de l'app # Installation de l'app
SETUP_APP SETUP_APP
LOG_EXTRACTOR LOG_EXTRACTOR
if [ "$install_pass" -gt 0 ]; then if [ "$install_pass" -gt 0 ]; then # Si install_pass>0, une installation a déjà été faite.
tnote=$((tnote+1)) tnote=$((tnote+1))
else else
install_pass=1
tnote=$((tnote+2)) tnote=$((tnote+2))
fi fi
if [ "$YUNOHOST_RESULT" -eq 0 ]; then if [ "$YUNOHOST_RESULT" -eq 0 ]; then
@ -178,12 +179,12 @@ CHECK_SETUP_ROOT () {
if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression
then then
LOG_EXTRACTOR LOG_EXTRACTOR
if [ "$install_pass" -eq 2 ]; then if [ "$install_pass" -eq 2 ]; then # Si install_pass=2, une suppression a déjà été faite.
tnote=$((tnote+1)) tnote=$((tnote+1))
else else
install_pass=2
tnote=$((tnote+2)) tnote=$((tnote+2))
fi fi
install_pass=3
if [ "$YUNOHOST_REMOVE" -eq 0 ]; then if [ "$YUNOHOST_REMOVE" -eq 0 ]; then
ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold"
if [ "$GLOBAL_CHECK_REMOVE" -eq 0 ]; then if [ "$GLOBAL_CHECK_REMOVE" -eq 0 ]; then
@ -201,18 +202,18 @@ CHECK_SETUP_ROOT () {
GLOBAL_CHECK_REMOVE_ROOT=-1 # Suppression à la racine échouée GLOBAL_CHECK_REMOVE_ROOT=-1 # Suppression à la racine échouée
fi fi
fi fi
install_pass=$((install_pass+1))
} }
CHECK_SETUP_NO_URL () { CHECK_SETUP_NO_URL () {
# Test d'installation sans accès par url # Test d'installation sans accès par url
ECHO_FORMAT "\n\n>> Installation sans accès par url... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Installation sans accès par url... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments MANIFEST_ARGS_MOD=$MANIFEST_ARGS # Copie des arguments
# Installation de l'app # Installation de l'app
SETUP_APP SETUP_APP
LOG_EXTRACTOR LOG_EXTRACTOR
if [ "$install_pass" -eq 0 ]; then if [ "$install_pass" -eq 0 ]; then # Si install_pass=0, aucune installation n'a été faite.
install_pass=1
tnote=$((tnote+1)) tnote=$((tnote+1))
fi fi
if [ "$YUNOHOST_RESULT" -eq 0 ]; then if [ "$YUNOHOST_RESULT" -eq 0 ]; then
@ -221,6 +222,7 @@ CHECK_SETUP_NO_URL () {
note=$((note+1)) note=$((note+1))
fi fi
GLOBAL_CHECK_SETUP=1 # Installation réussie GLOBAL_CHECK_SETUP=1 # Installation réussie
GLOBAL_CHECK_SUB_DIR=1
else else
ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" ECHO_FORMAT "--- FAIL ---\n" "lred" "bold"
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
@ -232,7 +234,8 @@ CHECK_SETUP_NO_URL () {
if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression if [ "$YUNOHOST_RESULT" -eq 0 ] # Si l'installation a été un succès. On teste la suppression
then then
LOG_EXTRACTOR LOG_EXTRACTOR
if [ "$install_pass" -eq 1 ] || [ "$install_pass" -eq 3 ]; then if [ "$install_pass" -ne 2 ]; then # Si install_pass!=2, aucune suppression n'a été faite.
install_pass=2
tnote=$((tnote+1)) tnote=$((tnote+1))
fi fi
if [ "$YUNOHOST_REMOVE" -eq 0 ]; then if [ "$YUNOHOST_REMOVE" -eq 0 ]; then
@ -253,7 +256,7 @@ CHECK_SETUP_NO_URL () {
CHECK_UPGRADE () { CHECK_UPGRADE () {
# Test d'upgrade # Test d'upgrade
ECHO_FORMAT "\n\n>> Upgrade... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Upgrade... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
echo "L'installation a échouée, impossible d'effectuer ce test..." echo "L'installation a échouée, impossible d'effectuer ce test..."
@ -306,7 +309,7 @@ CHECK_UPGRADE () {
CHECK_BACKUP_RESTORE () { CHECK_BACKUP_RESTORE () {
# Test de backup # Test de backup
ECHO_FORMAT "\n\n>> Backup... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Backup/Restore... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
echo "L'installation a échouée, impossible d'effectuer ce test..." echo "L'installation a échouée, impossible d'effectuer ce test..."
@ -379,10 +382,10 @@ CHECK_BACKUP_RESTORE () {
CHECK_PUBLIC_PRIVATE () { CHECK_PUBLIC_PRIVATE () {
# Test d'installation en public/privé # Test d'installation en public/privé
if [ "$1" == "private" ]; then if [ "$1" == "private" ]; then
ECHO_FORMAT "\n\n>> Installation privée... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Installation privée... [Test $cur_test/$all_test]\n" "white" "bold" clog
fi fi
if [ "$1" == "public" ]; then if [ "$1" == "public" ]; then
ECHO_FORMAT "\n\n>> Installation publique... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Installation publique... [Test $cur_test/$all_test]\n" "white" "bold" clog
fi fi
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
@ -464,7 +467,7 @@ CHECK_PUBLIC_PRIVATE () {
CHECK_MULTI_INSTANCE () { CHECK_MULTI_INSTANCE () {
# Test d'installation en multi-instance # Test d'installation en multi-instance
ECHO_FORMAT "\n\n>> Installation multi-instance... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Installation multi-instance... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
echo "L'installation a échouée, impossible d'effectuer ce test..." echo "L'installation a échouée, impossible d'effectuer ce test..."
@ -522,16 +525,16 @@ CHECK_MULTI_INSTANCE () {
CHECK_COMMON_ERROR () { CHECK_COMMON_ERROR () {
# Test d'erreur depuis le manifest # Test d'erreur depuis le manifest
if [ "$1" == "wrong_user" ]; then if [ "$1" == "wrong_user" ]; then
ECHO_FORMAT "\n\n>> Erreur d'utilisateur... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Erreur d'utilisateur... [Test $cur_test/$all_test]\n" "white" "bold" clog
fi fi
if [ "$1" == "wrong_path" ]; then if [ "$1" == "wrong_path" ]; then
ECHO_FORMAT "\n\n>> Erreur de domaine... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Erreur de domaine... [Test $cur_test/$all_test]\n" "white" "bold" clog
fi fi
if [ "$1" == "incorrect_path" ]; then if [ "$1" == "incorrect_path" ]; then
ECHO_FORMAT "\n\n>> Path mal formé... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Path mal formé... [Test $cur_test/$all_test]\n" "white" "bold" clog
fi fi
if [ "$1" == "port_already_use" ]; then if [ "$1" == "port_already_use" ]; then
ECHO_FORMAT "\n\n>> Port déjà utilisé... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Port déjà utilisé... [Test $cur_test/$all_test]\n" "white" "bold" clog
if [ -z "$MANIFEST_PORT" ]; then if [ -z "$MANIFEST_PORT" ]; then
echo "Clé de manifest pour 'port' introuvable ou port non renseigné dans le fichier check_process. Impossible de procéder à ce test" echo "Clé de manifest pour 'port' introuvable ou port non renseigné dans le fichier check_process. Impossible de procéder à ce test"
return return
@ -639,7 +642,7 @@ CHECK_COMMON_ERROR () {
CHECK_CORRUPT () { CHECK_CORRUPT () {
# Test d'erreur sur source corrompue # Test d'erreur sur source corrompue
ECHO_FORMAT "\n\n>> Source corrompue après téléchargement... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Source corrompue après téléchargement... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
echo "L'installation a échouée, impossible d'effectuer ce test..." echo "L'installation a échouée, impossible d'effectuer ce test..."
@ -649,7 +652,7 @@ echo -n "Non implémenté"
} }
CHECK_DL () { CHECK_DL () {
# Test d'erreur de téléchargement de la source # Test d'erreur de téléchargement de la source
ECHO_FORMAT "\n\n>> Erreur de téléchargement de la source... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Erreur de téléchargement de la source... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
echo "L'installation a échouée, impossible d'effectuer ce test..." echo "L'installation a échouée, impossible d'effectuer ce test..."
@ -659,7 +662,7 @@ echo -n "Non implémenté"
} }
CHECK_FINALPATH () { CHECK_FINALPATH () {
# Test sur final path déjà utilisé. # Test sur final path déjà utilisé.
ECHO_FORMAT "\n\n>> Final path déjà utilisé... [Test $cur_test/$all_test]\n" "white" "bold" ECHO_FORMAT "\n\n>> Final path déjà utilisé... [Test $cur_test/$all_test]\n" "white" "bold" clog
cur_test=$((cur_test+1)) cur_test=$((cur_test+1))
if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then if [ "$GLOBAL_CHECK_SETUP" -ne 1 ]; then
echo "L'installation a échouée, impossible d'effectuer ce test..." echo "L'installation a échouée, impossible d'effectuer ce test..."