diff --git a/package_check.sh b/package_check.sh index c7a29a3..5077f3d 100755 --- a/package_check.sh +++ b/package_check.sh @@ -12,6 +12,13 @@ echo "" # Récupère le dossier du script if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi +# Check user +if [ "$USER" != "$(cat "$script_dir/sub_scripts/setup_user")" ]; then + echo -e "\e[91mCe script doit être exécuté avec l'utilisateur $(cat "$script_dir/sub_scripts/setup_user")" + echo -en "\e[0m" + exit 0 +fi + source "$script_dir/sub_scripts/lxc_launcher.sh" source "$script_dir/sub_scripts/testing_process.sh" source /usr/share/yunohost/helpers @@ -522,8 +529,8 @@ then # Si le fichier check_process est trouvé fi if echo "$LIGNE" | grep -q "(PUBLIC"; then # Accès public/privé dans le manifest MANIFEST_PUBLIC=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant à l'accès public ou privé - MANIFEST_PUBLIC_public=$(echo "$LIGNE" | grep -o "|public=[a-Z]*" | cut -d "=" -f2) # Récupère la valeur pour un accès public. - MANIFEST_PUBLIC_private=$(echo "$LIGNE" | grep -o "|private=[a-Z]*" | cut -d "=" -f2) # Récupère la valeur pour un accès privé. + MANIFEST_PUBLIC_public=$(echo "$LIGNE" | grep -o "|public=[a-Z0-9]*" | cut -d "=" -f2) # Récupère la valeur pour un accès public. + MANIFEST_PUBLIC_private=$(echo "$LIGNE" | grep -o "|private=[a-Z0-9]*" | cut -d "=" -f2) # Récupère la valeur pour un accès privé. LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne fi if echo "$LIGNE" | grep -q "(PASSWORD)"; then # Password dans le manifest diff --git a/sub_scripts/lxc_build.sh b/sub_scripts/lxc_build.sh index d29c5ac..0faf28c 100755 --- a/sub_scripts/lxc_build.sh +++ b/sub_scripts/lxc_build.sh @@ -1,7 +1,7 @@ #!/bin/bash # Récupère le dossier du script -if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi +if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi LOG_BUILD_LXC="$script_dir/Build_lxc.log" PLAGE_IP="10.1.4" @@ -10,14 +10,8 @@ DOMAIN=domain.tld YUNO_PWD=admin LXC_NAME=pchecker_lxc -# Check root -CHECK_ROOT=$EUID -if [ -z "$CHECK_ROOT" ];then CHECK_ROOT=0;fi -if [ $CHECK_ROOT -eq 0 ] -then # $EUID est vide sur une exécution avec sudo. Et vaut 0 pour root - echo "Le script ne doit pas être exécuté avec les droits root" - exit 1 -fi +# Check user +echo $USER > "$script_dir/setup_user" echo "> Update et install lxc lxctl" | tee "$LOG_BUILD_LXC" sudo apt-get update >> "$LOG_BUILD_LXC" 2>&1 diff --git a/sub_scripts/lxc_launcher.sh b/sub_scripts/lxc_launcher.sh index ad4eb40..1e0c8f2 100755 --- a/sub_scripts/lxc_launcher.sh +++ b/sub_scripts/lxc_launcher.sh @@ -64,7 +64,7 @@ LXC_STOP () { LXC_TURNOFF () { echo "Arrêt du réseau pour le conteneur." # Suppression des règles de parefeu - if sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null + if sudo iptables -C FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null then sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$RESULT" 2>&1 fi diff --git a/sub_scripts/lxc_remove.sh b/sub_scripts/lxc_remove.sh index 2404dd8..a978cf8 100755 --- a/sub_scripts/lxc_remove.sh +++ b/sub_scripts/lxc_remove.sh @@ -5,13 +5,11 @@ if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$P LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2) -# Check root -CHECK_ROOT=$EUID -if [ -z "$CHECK_ROOT" ];then CHECK_ROOT=0;fi -if [ $CHECK_ROOT -eq 0 ] -then # $EUID est vide sur une exécution avec sudo. Et vaut 0 pour root - echo "Le script ne doit pas être exécuté avec les droits root" - exit 1 +# Check user +if [ "$USER" != "$(cat "$script_dir/sub_scripts/setup_user")" ]; then + echo -e "\e[91mCe script doit être exécuté avec l'utilisateur $(cat "$script_dir/sub_scripts/setup_user")" + echo -en "\e[0m" + exit 0 fi echo "> Retire l'ip forwarding." diff --git a/sub_scripts/lxc_upgrade.sh b/sub_scripts/lxc_upgrade.sh index ed52b15..4c94a39 100755 --- a/sub_scripts/lxc_upgrade.sh +++ b/sub_scripts/lxc_upgrade.sh @@ -6,6 +6,13 @@ if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$P PLAGE_IP=$(cat "$script_dir/lxc_build.sh" | grep PLAGE_IP= | cut -d '"' -f2) LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2) +# Check user +if [ "$USER" != "$(cat "$script_dir/sub_scripts/setup_user")" ]; then + echo -e "\e[91mCe script doit être exécuté avec l'utilisateur $(cat "$script_dir/sub_scripts/setup_user")" + echo -en "\e[0m" + exit 0 +fi + echo "> Active le bridge réseau" if ! sudo ifquery lxc-pchecker --state > /dev/null then @@ -39,9 +46,9 @@ sleep 3 sudo lxc-ls -f echo "> Update" +update_apt=0 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. -update_apt=0 if [ "$?" -eq 0 ]; then update_apt=1 fi diff --git a/sub_scripts/testing_process.sh b/sub_scripts/testing_process.sh index 3fdd824..606c280 100644 --- a/sub_scripts/testing_process.sh +++ b/sub_scripts/testing_process.sh @@ -477,60 +477,70 @@ CHECK_PUBLIC_PRIVATE () { if [ "$1" == "public" ]; then MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PUBLIC=[a-Z0-9]*\&/$MANIFEST_PUBLIC=$MANIFEST_PUBLIC_public\&/") fi - if [ "$GLOBAL_CHECK_ROOT" -eq 1 ]; then # Utilise une install root, si elle a fonctionné - MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=/\&@") - CHECK_PATH="/" - elif [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ] || [ "$force_install_ok" -eq 1 ]; then # Si l'install en sub_dir à fonctionné. Ou si l'argument force_install_ok est présent. Utilise ce mode d'installation - MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=$PATH_TEST\&@") - CHECK_PATH="$PATH_TEST" - else - echo "Aucun mode d'installation n'a fonctionné, impossible d'effectuer ce test..." - return; - fi - # Installation de l'app - SETUP_APP - # Test l'accès à l'app - CHECK_URL - if [ "$1" == "private" ]; then - if [ "$YUNO_PORTAL" -eq 0 ]; then # En privé, si l'accès url n'arrive pas sur le portail. C'est un échec. - YUNOHOST_RESULT=1 + for i in 0 1 + do # 2 passes, pour effectuer un test en root et en sub_dir + if [ "$i" -eq 0 ] + then # Commence par l'install root + if [ "$GLOBAL_CHECK_ROOT" -eq 1 ] || [ "$force_install_ok" -eq 1 ]; then # Utilise une install root, si elle a fonctionné. Ou si l'argument force_install_ok est présent. + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=/\&@") + CHECK_PATH="/" + else + echo "L'installation à la racine n'a pas fonctionnée, impossible d'effectuer ce test..." + continue; + fi + elif [ "$i" -eq 1 ] + then # Puis teste l'install sub_dir + if [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ] || [ "$force_install_ok" -eq 1 ]; then # Si l'install en sub_dir à fonctionné. Ou si l'argument force_install_ok est présent. Utilise ce mode d'installation + MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=$PATH_TEST\&@") + CHECK_PATH="$PATH_TEST" + else + echo "L'installation en sous-dossier n'a pas fonctionnée, impossible d'effectuer ce test..." + return; + fi fi - fi - if [ "$1" == "public" ]; then - if [ "$YUNO_PORTAL" -eq 1 ]; then # En public, si l'accès url arrive sur le portail. C'est un échec. - YUNOHOST_RESULT=1 - fi - fi - LOG_EXTRACTOR - tnote=$((tnote+1)) - if [ "$YUNOHOST_RESULT" -eq 0 ] && [ "$curl_error" -eq 0 ]; then - ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" - note=$((note+1)) + # Installation de l'app + SETUP_APP + # Test l'accès à l'app + CHECK_URL if [ "$1" == "private" ]; then - GLOBAL_CHECK_PRIVATE=1 # Installation privée réussie + if [ "$YUNO_PORTAL" -eq 0 ]; then # En privé, si l'accès url n'arrive pas sur le portail. C'est un échec. + YUNOHOST_RESULT=1 + fi fi if [ "$1" == "public" ]; then - GLOBAL_CHECK_PUBLIC=1 # Installation publique réussie + if [ "$YUNO_PORTAL" -eq 1 ]; then # En public, si l'accès url arrive sur le portail. C'est un échec. + YUNOHOST_RESULT=1 + fi + fi + LOG_EXTRACTOR + tnote=$((tnote+1)) + if [ "$YUNOHOST_RESULT" -eq 0 ] && [ "$curl_error" -eq 0 ]; then + ECHO_FORMAT "--- SUCCESS ---\n" "lgreen" "bold" + note=$((note+1)) + if [ "$1" == "private" ]; then + GLOBAL_CHECK_PRIVATE=1 # Installation privée réussie + fi + if [ "$1" == "public" ]; then + GLOBAL_CHECK_PUBLIC=1 # Installation publique réussie + fi + else + ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" + if [ "$1" == "private" ]; then + GLOBAL_CHECK_PRIVATE=-1 # Installation privée échouée + fi + if [ "$1" == "public" ]; then + GLOBAL_CHECK_PUBLIC=-1 # Installation publique échouée + fi fi - else - ECHO_FORMAT "--- FAIL ---\n" "lred" "bold" - if [ "$1" == "private" ]; then - GLOBAL_CHECK_PRIVATE=-1 # Installation privée échouée + if [ "$auto_remove" -eq 0 ] && [ "$bash_mode" -ne 1 ]; then # Si l'auto_remove est désactivée. Marque une pause avant de continuer. + if [ "$no_lxc" -eq 0 ]; then + echo "Utilisez ssh pour vous connecter au conteneur LXC. 'ssh $ARG_SSH $LXC_NAME'" + fi + read -p "Appuyer sur une touche pour continuer les tests..." < /dev/tty fi - if [ "$1" == "public" ]; then - GLOBAL_CHECK_PUBLIC=-1 # Installation publique échouée - fi - fi - if [ "$no_lxc" -ne 0 ]; then - # Suppression de l'app si lxc n'est pas utilisé. REMOVE_APP - elif [ "$auto_remove" -eq 0 ] && [ "$bash_mode" -ne 1 ]; then # Si l'auto_remove est désactivée. Marque une pause avant de continuer. - if [ "$no_lxc" -eq 0 ]; then - echo "Utilisez ssh pour vous connecter au conteneur LXC. 'ssh $ARG_SSH $LXC_NAME'" - fi - read -p "Appuyer sur une touche pour continuer les tests..." < /dev/tty - fi - YUNOHOST_RESULT=-1 + YUNOHOST_RESULT=-1 + done } CHECK_MULTI_INSTANCE () {