#!/bin/bash # causes the shell to exit if any subcommand or pipeline returns a non-zero status set -e # This is a multi-instance app, meaning it can be installed several times independently # The id of the app as stated in the manifest is available as $YNH_APP_ID # The instance number is available as $YNH_APP_INSTANCE_NUMBER (equals "1", "2", ...) # The app instance name is available as $YNH_APP_INSTANCE_NAME # - the first time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample # - the second time the app is installed, YNH_APP_INSTANCE_NAME = ynhexample__2 # - ynhexample__{N} for the subsequent installations, with N=3,4, ... # The app instance name is probably what you are interested the most, since this is # guaranteed to be unique. This is a good unique identifier to define installation path, # db names, ... app=$YNH_APP_INSTANCE_NAME # Retrieve arguments domain=$YNH_APP_ARG_DOMAIN path=$YNH_APP_ARG_PATH admin=$YNH_APP_ARG_ADMIN is_public=$YNH_APP_ARG_IS_PUBLIC title=$YNH_APP_ARG_TITLE privatelinkbydefault=$YNH_APP_ARG_PRIVATELINKBYDEFAULT password=$YNH_APP_ARG_PASSWORD # ## Retrieve arguments #domain=$1 #path=$2 #is_public=$3 #title=$4 #privatelinkbydefault=$5 #admin=$6 # # Load common variables and helpers source ./_common.sh # Check that admin user is an existing account sudo yunohost user list --json | grep -q "\"username\": \"$admin\"" if [[ ! $? -eq 0 ]]; then echo "Error : the chosen admin user does not exist" exit 1 fi sudo yunohost app setting $app admin -v $admin # Check domain/path availability sudo yunohost app checkurl $domain$path -a $app if [[ ! $? -eq 0 ]]; then exit 1 fi # Install dependencies sudo apt-get install php5-cli -y -qq # Copy files to the right place app_home_path=/home/yunohost.app/$app final_path=/var/www/$app sudo mkdir -p $final_path # Download and extract in /var/www extract_shaarli # #sudo mkdir -p $app_home_path/data #sudo mkdir -p $app_home_path/cache #sudo mkdir -p $app_home_path/pagecache #sudo mkdir -p $app_home_path/tmp #sudo mkdir -p $app_home_path/conf #sudo chown -R www-data: $app_home_path # # generate the salt salt=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p') # generate the hash with the password password_hash=$(php ../conf/gen_hash.php $password $admin $salt) # set the proper value for substitution if [ $privatelinkbydefault = "No" ]; then privatelinkbydefault_php=false else privatelinkbydefault_php=true fi # Prepare the configuration file sudo sed -i "s@YNH_SALT@$salt@g" ../conf/config.json.php sudo sed -i "s@YNH_ADMIN@$admin@g" ../conf/config.json.php sudo sed -i "s@YNH_HASH@$password_hash@g" ../conf/config.json.php sudo sed -i "s@YNH_TIMEZONE@$(cat /etc/timezone)@g" ../conf/config.json.php sudo sed -i "s@YNH_TITLE@$title@g" ../conf/config.json.php sudo sed -i "s@YNH_PRIVATE_LINK_BY_DEFAULT@$privatelinkbydefault_php@g" ../conf/config.json.php # #sudo sed -i "s@YNH_SALT@$salt@g" ../conf/init_config.php #sudo sed -i "s@YNH_TIMEZONE@$(cat /etc/timezone)@g" ../conf/init_config.php #sudo sed -i "s@YNH_TITLE@$title@g" ../conf/init_config.php #sudo sed -i "s@YNH_PRIVATE_LINK_BY_DEFAULT@$privatelinkbydefault_php@g" ../conf/init_config.php #sudo sed -i "s@YNH_ADMIN@$admin@g" ../conf/init_config.php # #sudo cp ../conf/options.php $app_home_path/data/options.php #sudo cp ../conf/init_config.php $app_home_path/data/config.php #sudo php ../conf/init_config_user.php $(sudo yunohost user list --json | python ../conf/user_list.py) # # Populate the data directory of the shaarli instance sudo cp ../conf/config.json.php $final_path/data sudo cp ../conf/datastore.php $final_path/data sudo cp ../conf/ipbans.php $final_path/data sudo cp ../conf/lastupdatecheck.txt $final_path/data sudo cp ../conf/log.txt $final_path/data sudo cp ../conf/updates.txt $final_path/data sudo find $final_path -type f | xargs sudo chmod 644 sudo find $final_path -type d | xargs sudo chmod 755 #sudo chown -R root: $final_path # #sudo find $app_home_path -type f | xargs sudo chmod 600 #sudo find $app_home_path -type d | xargs sudo chmod 700 #sudo chown -R www-data: $app_home_path # # Modify Nginx configuration file and copy it to Nginx conf directory sudo sed -i "s@YNH_WWW_PATH@$path@g" ../conf/nginx.conf sudo sed -i "s@YNH_ALIAS@$final_path@g" ../conf/nginx.conf sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf # Reload Nginx and regenerate SSOwat conf if [ $is_public = "Yes" ]; then sudo yunohost app setting $app unprotected_uris -v "/" fi sudo service nginx reload sudo yunohost app ssowatconf