From 3f1ef1c6986bb44faae9149afeb7d46b502c0fce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Garrigue?= Date: Thu, 20 Aug 2015 10:20:05 +0000 Subject: [PATCH] Beta version of install script --- scripts/install | 102 ++++++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 46 deletions(-) diff --git a/scripts/install b/scripts/install index 7f3fe82..8175d30 100755 --- a/scripts/install +++ b/scripts/install @@ -1,74 +1,84 @@ -# Arguments +#!/bin/bash +# DotClear 2 installation script for YunoHost + +# First arguments +app=dotclear2 domain=$1 path=$2 -# Check domain/path availability -sudo yunohost app checkurl $domain$path -a dotclear2 +# Check domain/path availability asap +sudo yunohost app checkurl $domain$path -a $app if [[ ! $? -eq 0 ]]; then exit 1 fi -# Install dependencies -sudo apt install -y curl wget sed - -# Other variables -DIR=/var/www/dotclear2 -CONF="$DIR/inc/config.php" - -DC_DBDRIVER=mysqli -DC_DBHOST=localhost -DC_DBUSER=dotclear -DC_DBPASSWORD="$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')" -DC_DBNAME=dotclear -DC_MASTER_KEY=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p') -DC_ADMIN_URL="https://$domain$path/admin/index.php" -EMAIL=root@localhost -FIRSTNAME=Rémy -NAME=Garrigue -LOGIN=remy -PWD=dotclear +# Other arguments +admin=$3 +password=$4 +is_public=$5 +directory=/var/www/$app/ +php_config="$directory/inc/config.php" +db_password="$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p')" +master_key=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{24\}\).*/\1/p') +firstname=`sudo yunohost user info $admin | grep firstname | cut -d' ' -f2 | tr -d '\n'` +lastname=`sudo yunohost user info $admin | grep lastname | cut -d' ' -f2 | tr -d '\n'` +email=`sudo yunohost user info $admin | grep mail | cut -d' ' -f2 | tr -d '\n'` TZ=Europe/Paris +# Save app settings +sudo yunohost app setting $app admin -v "$admin" +sudo yunohost app setting $app is_public -v "$is_public" + +# Make sure we got the tools we need for this install +sudo apt install -y curl wget sed + # Initialize database and store mysql password for upgrade -sudo yunohost app initdb $DC_DBUSER -p $DC_DBPASSWORD -sudo yunohost app setting dotclear2 mysqlpwd -v $DC_DBPASSWORD +sudo yunohost app initdb $app -p $db_password +sudo yunohost app setting $app mysqlpwd -v $db_password # Get sources -sudo mkdir -p $DIR -cd $DIR -sudo wget dotclear.tgz http://download.dotclear.org/latest.tar.gz -O dotclear.tgz -sudo tar xf dotclear.tgz -sudo rm -f dotclear.tgz -sudo chown www-data:www-data -R dotclear +sudo mkdir -p $directory +cd $directory +sudo wget dotclear.tgz http://download.dotclear.org/latest.tar.gz -O $app.tgz +sudo tar xf $app.tgz +mv dotclear $app +sudo rm -f $app.tgz +sudo chown www-data:www-data -R $app # Config as if we called in admin/install/wizard.php -sudo mv $CONF.in $CONF -sudo sed -i -e "s;'DC_DBDRIVER','';'DC_DBDRIVER','$DC_DBDRIVER';" $CONF -sudo sed -i -e "s;'DC_DBHOST','';'DC_DBHOST','$DC_DBHOST';" $CONF -sudo sed -i -e "s;'DC_DBUSER','';'DC_DBUSER','$DC_DBUSER';" $CONF -sudo sed -i -e "s;'DC_DBPASSWORD','';'DC_DBPASSWORD','$DC_DBPASSWORD';" $CONF -sudo sed -i -e "s;'DC_DBNAME','';'DC_DBNAME','$DC_DBNAME';" $CONF -# sudo sed -i -e "s;'DC_DBPREFIX','';'DC_DBPREFIX','dc_';" $CONF -sudo sed -i -e "s;'DC_MASTER_KEY','';'DC_MASTER_KEY','$DC_MASTER_KEY';" $CONF -sudo sed -i -e "s;'DC_ADMIN_URL','';'DC_ADMIN_URL','$DC_ADMIN_URL';" $CONF -sudo sed -i -e "s;'DC_ADMIN_MAILFROM','';'DC_ADMIN_MAILFROM','$EMAIL';" $CONF +sudo mv $php_config.in $php_config +sudo sed -i -e "s;'DC_DBDRIVER','';'DC_DBDRIVER','mysqli';" \ + -e "s;'DC_DBHOST','';'DC_DBHOST','localhost';" \ + -e "s;'DC_DBUSER','';'DC_DBUSER','$app';" \ + -e "s;'DC_DBPASSWORD','';'DC_DBPASSWORD','$db_password';" \ + -e "s;'DC_DBNAME','';'DC_DBNAME','$app';" \ + -e "s;'DC_MASTER_KEY','';'DC_MASTER_KEY','$master_key';" \ + -e "s;'DC_ADMIN_URL','';'DC_ADMIN_URL','https://$domain$path/admin/index.php';" \ + -e "s;'DC_ADMIN_MAILFROM','';'DC_ADMIN_MAILFROM','$email';" $php_config # Modify Nginx configuration file and copy it to Nginx conf directory -sed -i "s;PATHTOCHANGE;$path;g" ../conf/nginx.conf -sed -i "s;ALIASTOCHANGE;$DIR/;g" ../conf/nginx.conf -sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/dotclear2.conf +sed -i "s@YNH_WWW_PATH@$path@g" ../conf/nginx.conf +sed -i "s@YNH_WWW_ALIAS@$final_path/@g" ../conf/nginx.conf +sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf + +# If app is public, add url to SSOWat conf as skipped_uris +if [ "$is_public" = "Yes" ]; +then + # unprotected_uris allows SSO credentials to be passed anyway. + sudo yunohost app setting $app unprotected_uris -v "/" +fi # Reload Nginx and regenerate SSOwat conf sudo service nginx reload sudo yunohost app ssowatconf # Setting first user details and filling database calling admin/install/index.php -CURL=`curl -F "u_email=$EMAIL" -F "u_firstname=$FIRSTNAME" -F "u_name=$NAME" -F "u_login=$LOGIN" -F "u_pwd=$PWD" -F "u_pwd2=$PWD" -F "u_date=$TZ" $domain$path/admin/install/index.php` +success=`curl -F "u_email=$EMAIL" -F "u_firstname=$FIRSTNAME" -F "u_name=$NAME" -F "u_login=$LOGIN" -F "u_pwd=$PWD" -F "u_pwd2=$PWD" -F "u_date=$TZ" $domain$path/admin/install/index.php` # Success or not success -if [ `echo $CURL | grep -c success` -ge 0 ] +if [ `echo $success | grep -c success` -ge 0 ] then - echo OK + echo Installation OK, $app should be available here $domain$path/ exit 0 else echo Using curl to finish setup failed, open $domain$path/admin/install/index.php and do it yourself