mirror of
https://github.com/YunoHost/package_check.git
synced 2024-09-03 20:06:20 +02:00
Lock user. private root et subdir
This commit is contained in:
parent
87c11e557d
commit
1daf9b072d
6 changed files with 83 additions and 67 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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."
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 () {
|
||||
|
|
Loading…
Add table
Reference in a new issue