From 7b18a29c7050541e7bef36bbe6ad6250bac751b9 Mon Sep 17 00:00:00 2001 From: poka Date: Sun, 15 Dec 2019 01:55:15 +0000 Subject: [PATCH] Improve error management in install. Finish Kalkun install OK --- .install/1-install_requirements.sh | 42 ++-- .install/3-install_copylaradio.sh | 2 +- .install/4a-install_kalkun.sh | 57 +++-- .install/ssl.sh | 18 +- .install/templates/{5 => 3}/default | 0 .install/templates/4a/kalkun.sql | 331 ++++++++++++++++++++++++++++ .install/templates/4a/mysql.sql | 12 - install.sh | 17 +- 8 files changed, 410 insertions(+), 69 deletions(-) rename .install/templates/{5 => 3}/default (100%) create mode 100644 .install/templates/4a/kalkun.sql diff --git a/.install/1-install_requirements.sh b/.install/1-install_requirements.sh index 602d579..6db0560 100755 --- a/.install/1-install_requirements.sh +++ b/.install/1-install_requirements.sh @@ -5,70 +5,76 @@ MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized OS=$(head -n1 $MY_PATH/.OS) isARM=$(cat $MY_PATH/.OS | grep YES) +unset err # Basics sudo apt update +echo -e "${c_yellow}Mise à jours des prérequis...$c_" sudo apt install curl jq zip unzip htop tree ntpdate gnupg ssmtp mpack imagemagick qrencode bc -y # Silkaj + Duniterpy silkaj() { + echo -e "${c_yellow}Installation de Silkaj...$c_" libsodium=$(sudo apt search libsodium 2>/dev/null | grep -v -E "header|debug symbols" | grep "Network communication" -B1 | head -n1 | awk -F '/' '{ print $1 }') [[ $libsodium =~ " " ]] && libsodium=$(echo $libsodium | awk '{ print $2 }') - sudo apt install python3-pip $libsodium -y || err=1 - pip3 install duniterpy || err=1 - pip3 install silkaj --user || err=1 + sudo apt install python3-pip $libsodium -y || err+="Install python3 and $libsodium" + pip3 install duniterpy || err+="Install duniterpy" + pip3 install silkaj --user || err+="Install Silkaj" } # Install IPFS ipfs() { + echo -e "${c_yellow}Installation d'IPFS...$c_" [[ -f /usr/local/bin/ipfs ]] && sudo service ipfs stop if [[ $isARM ]]; then - wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-arm.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err=1 + wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-arm.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err+="Download ipfs-update" else - wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-amd64.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err=1 + wget https://dist.ipfs.io/ipfs-update/v1.5.2/ipfs-update_v1.5.2_linux-amd64.tar.gz -O $MY_PATH/ipfs-update.tar.gz || err+="Download ipfs-update" fi echo "INSTALL ipfs-update" - sudo tar -xvzf $MY_PATH/ipfs-update.tar.gz -C /usr/src/ || err=1 + sudo tar -xvzf $MY_PATH/ipfs-update.tar.gz -C /usr/src/ || err+="Untar ipfs-update" rm $MY_PATH/ipfs-update.tar.gz cd /usr/src/ipfs-update/ - sudo ./install.sh || err=1 + sudo ./install.sh || err+="Install ipfs-update" cd $MY_PATH echo "INSTALL latest ipfs" - sudo ipfs-update install latest || err=1 + sudo ipfs-update install latest || err+="Install IPFS" echo "CREATE SYSTEMD ipfs SERVICE" [[ -f /etc/systemd/system/ipfs.service ]] && sudo rm /etc/systemd/system/ipfs.service sudo cp -f $MY_PATH/templates/1/ipfs.service /etc/systemd/system/ sudo sed -i "s/_USER/$USER/g" /etc/systemd/system/ipfs.service - sudo systemctl daemon-reload || err=1 - sudo systemctl enable ipfs || err=1 + sudo systemctl daemon-reload || err+="Restart IPFS" + sudo systemctl enable ipfs || err+="Enable IPFS daemon" } # Install gammu gammu() { - sudo apt install ppp screen git minicom gammu -y || err=1 + echo -e "${c_yellow}Installation de gammu...$c_" + sudo apt install ppp screen git minicom gammu -y || err+="Install gammu requirements" sleep 1 - sudo apt install gammu-smsd -y || sudo apt install -f || err=1 + sudo apt install gammu-smsd -y || sudo apt install -f || err+="Install gammu" sudo usermod -aG gammu $USER } # Install PHP + MySQL php() { + echo -e "${c_yellow}Installation de PHP et MySQL$c_" if [[ $OS == "buster" ]]; then - sudo apt -y install software-properties-common nginx php php-common php-fpm php-gettext php-gd php-mysql php-curl php-imap php-mbstring php-xml php-cli mariadb-server || err=1 + sudo apt -y install software-properties-common nginx php php-common php-fpm php-gettext php-gd php-mysql php-curl php-imap php-mbstring php-xml php-cli mariadb-server || err+="Install PHP and MySQL" elif [[ $OS == "stretch" ]]; then - sudo apt -y install lsb-release apt-transport-https ca-certificates || err=1 - sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg || err=1 + sudo apt -y install lsb-release apt-transport-https ca-certificates || err+="Install apt-transport-https" + sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg || err+="Download PHP key" echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php7.3.list - sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 || err=1 + sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 || err+="Download PHP key" sudo apt update - sudo apt -y install software-properties-common dirmngr nginx php7.3 php7.3-common php7.3-gettext php7.3-fpm php7.3-gd php7.3-mysql php7.3-curl php7.3-imap php7.3-mbstring php7.3-xml php7.3-cli mariadb-server || err=1 + sudo apt -y install software-properties-common dirmngr nginx php7.3 php7.3-common php7.3-gettext php7.3-fpm php7.3-gd php7.3-mysql php7.3-curl php7.3-imap php7.3-mbstring php7.3-xml php7.3-cli mariadb-server || err+="Install PHP and MySQL" else echo "${c_red}Votre système n'est pas pris en charge par ce script d'installation.$c_" exit 1 @@ -88,7 +94,7 @@ for i in $@; do done if [[ $err ]]; then - echo -e "${c_red}Installation des prérequis incomplète$c_" + echo -e "${c_red}Installation des prérequis incomplète: $err$c_" exit 1 else echo -e "${c_green}Les prérequis ont été correctement installés$c_" diff --git a/.install/3-install_copylaradio.sh b/.install/3-install_copylaradio.sh index 1de3c4f..e45c776 100755 --- a/.install/3-install_copylaradio.sh +++ b/.install/3-install_copylaradio.sh @@ -2,7 +2,7 @@ MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized -templates="$MY_PATH/templates" +templates="$MY_PATH/templates/3" isARM=$(cat $MY_PATH/.OS | grep YES) diff --git a/.install/4a-install_kalkun.sh b/.install/4a-install_kalkun.sh index 7ea5713..15f4872 100755 --- a/.install/4a-install_kalkun.sh +++ b/.install/4a-install_kalkun.sh @@ -19,7 +19,6 @@ DOMAIN=$KSMS_DOMAIN $MY_PATH/1-install_requirements.sh php ## Create database - if [[ $(sudo mysql -e "select * from mysql.user;" | grep gammu) ]]; then pwdDB=$(cat /etc/gammu-smsdrc | grep "password" | grep -v "# " | awk '{ print $3 }') else @@ -28,28 +27,37 @@ else fi if [[ ! $(sudo mysql -e "show databases;" | grep gammu) ]]; then + echo -e "${c_yellow}Création de la base de donnée...$c_" sudo mysql -e "CREATE DATABASE gammu" sudo mysql -e "GRANT ALL PRIVILEGES ON gammu.* TO 'gammu'@'localhost';" sudo mysql -e "FLUSH PRIVILEGES;" fi - -[[ ! $(sudo mysql gammu -e "SHOW TABLES LIKE 'outbox';") ]] && sudo mysql gammu < $MY_PATH/templates/4a/mysql.sql || err=1 +if [[ -z $(sudo mysql gammu -e "SHOW TABLES LIKE 'outbox';") ]]; then + echo -e "${c_yellow}Importation du dump gammu...$c_" + sudo mysql gammu < $MY_PATH/templates/4a/mysql.sql || err+="Import dump MySQL" +fi +if [[ -z $(sudo mysql gammu -e "SHOW TABLES LIKE 'kalkun';") ]]; then + echo -e "${c_yellow}Importation du dump kalkun...$c_" + sudo mysql gammu < $MY_PATH/templates/4a/kalkun.sql || err+="Import dump Kalkun" +fi ## Clone repo KALKUN [[ -d $MY_PATH/kalkun ]] && sudo rm -rf $MY_PATH/kalkun +echo -e "${c_yellow}Clonage du dépot de Kalkun...$c_" git clone https://github.com/back2arie/Kalkun.git $MY_PATH/kalkun cp $MY_PATH/templates/4a/database.php $MY_PATH/kalkun/application/config/ cp $MY_PATH/templates/4a/daemon.sh $MY_PATH/templates/4a/daemon.php $MY_PATH/kalkun/scripts -sed -i "s/_PWD/$pwdDB/g" $MY_PATH/kalkun/application/config/database.php || err=1 -echo "debug 1" -sed -i "s/_DOMAIN/$DOMAIN/g" $MY_PATH/templates/4a/daemon.php || err=1 +sed -i "s/_PWD/$pwdDB/g" $MY_PATH/kalkun/application/config/database.php || err+="Sed database password" +sed -i "s/_DOMAIN/$DOMAIN/g" $MY_PATH/templates/4a/daemon.php || err+="Sed domaine to daemon.php" + +# touch $MY_PATH/kalkun/install ## Place le dossier kalkun dans /var/www/ [[ -d /var/www/kalkun ]] && sudo rm -rf /var/www/kalkun -sudo mv $MY_PATH/kalkun /var/www/ || err=1 -sudo chown -R www-data:www-data /var/www/kalkun || err=1 +sudo mv $MY_PATH/kalkun /var/www/ || err+="Move kalkun to /var/www" +sudo chown -R www-data:www-data /var/www/kalkun || err+="Chown www-data to kalkun" sudo chmod u+x /var/www/kalkun/scripts/* ## Add daemon launcher in sms_received.sh @@ -57,40 +65,47 @@ sudo chmod u+x /var/www/kalkun/scripts/* ## Active gammu in MySQL mode if [[ $(grep "service = files" /etc/gammu-smsdrc) ]]; then - sudo sed -i "/^service = files/a service = sql\ndriver = native_mysql\nhost = localhost\nuser = gammu\npassword = $pwdDB\ndatabase = gammu" /etc/gammu-smsdrc || err=1 - sudo sed -i "/service = files/d" /etc/gammu-smsdrc || err=1 - $MY_PATH/../debug/gammu-restart.sh || err=1 + echo -e "${c_yellow}Activation de gammu-smsd en mode MySQL...$c_" + sudo sed -i "/^service = files/a service = sql\ndriver = native_mysql\nhost = localhost\nuser = gammu\npassword = $pwdDB\ndatabase = gammu" /etc/gammu-smsdrc || err+="Sed gammu-smsd" + sudo sed -i "/service = files/d" /etc/gammu-smsdrc || err+="Sed delete in gammu-smsd" + $MY_PATH/../debug/gammu-restart.sh || err+="Restart gammu" fi ## Config NGINX +echo -e "${c_yellow}Configuration de Nginx...$c_" [[ ! -d /etc/nginx/def_conf ]] && sudo mkdir /etc/nginx/def_conf/ -sudo cp $MY_PATH/templates/rproxy/proxypass.conf /etc/nginx/def_conf/ || err=1 -sudo cp $MY_PATH/templates/4a/kalkun.conf /etc/nginx/conf.d/ || err=1 -sudo sed -i "s/_DOMAIN/$DOMAIN/g" /etc/nginx/conf.d/kalkun.conf || err=1 +sudo cp $MY_PATH/templates/rproxy/proxypass.conf /etc/nginx/def_conf/ || err+="Copy proxypass.conf" +sudo cp $MY_PATH/templates/4a/kalkun.conf /etc/nginx/conf.d/ || err+="Copy kalkun.conf" +sudo sed -i "s/_DOMAIN/$DOMAIN/g" /etc/nginx/conf.d/kalkun.conf || err+="Sed domain in kalkun.conf" ## Active SSL [[ ! $noask ]] && printf "${c_yellow}Voulez-vous installer et activer un certificat SSL maintenant pour $DOMAIN ? (o/n) $c_" && read askSSL if [[ $askSSL =~ ^(o|y|yes|oui|Y|O|YES)$ ]]; then - $MY_PATH/ssl.sh certif APP=kalkun DOMAIN=$DOMAIN || err=1 + if sudo test ! -f /etc/letsencrypt/live/$DOMAIN/fullchain.pem; then + $MY_PATH/ssl.sh certif APP=kalkun DOMAIN=$DOMAIN || err+="Create SSL certification" + fi if sudo test -f /etc/letsencrypt/live/$DOMAIN/fullchain.pem; then - $MY_PATH/ssl.sh on APP=kalkun DOMAIN=$DOMAIN || err=1 + $MY_PATH/ssl.sh on APP=kalkun DOMAIN=$DOMAIN || err+="Enable SSL certification" else echo -e "${c_red}Une erreur s'est produite, basculement vers le mode non SSL$c_" - $MY_PATH/ssl.sh off APP=kalkun DOMAIN=$DOMAIN || err=1 + $MY_PATH/ssl.sh off APP=kalkun DOMAIN=$DOMAIN || err+="Disable SSL certification" fi http=https - sudo sed -i "s/http/https/g" /var/www/kalkun/scripts/daemon.php || err=1 + sudo sed -i "s/http/https/g" /var/www/kalkun/scripts/daemon.php || err+="Sed http to https in daemon.php" else - $MY_PATH/ssl.sh off APP=kalkun DOMAIN=$DOMAIN || err=1 + $MY_PATH/ssl.sh off APP=kalkun DOMAIN=$DOMAIN || err+="Disable SSL certification" http=http fi -sudo service nginx restart || err=1 +echo -e "${c_yellow}Redémarrage de Nginx...$c_" +sudo service nginx restart || err+="Restart Nginx" +echo -e "${c_yellow}Redémarrage de gammu-smsd...$c_" +$MY_PATH/../debug/gammu-restart.sh || err+="Restart gammu" if [[ $err ]]; then - echo -e "${c_red}Installation incomplète$c_" + echo -e "${c_red}Installation incomplète: $err$c_" exit 1 else echo -e "${c_green}Kalkun est accessible via l'URL $http://$DOMAIN$c_" diff --git a/.install/ssl.sh b/.install/ssl.sh index f5d51de..84ea3aa 100755 --- a/.install/ssl.sh +++ b/.install/ssl.sh @@ -4,8 +4,8 @@ MY_PATH="`dirname \"$0\"`" # relative MY_PATH="`( cd \"$MY_PATH\" && pwd )`" # absolutized and normalized ### Vars -#DOMAIN=g1sms-blois-2.p2p.legal -args=$@ +args=$(echo $@ | tr " " "\n") + if [[ "$args" =~ "DOMAIN=" ]]; then DOMAIN=$(echo "$args" | grep "\