1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/leed_ynh.git synced 2024-09-03 19:26:32 +02:00
leed_ynh/scripts/install
Maniack Crudelis 421ff2846a Langue par curl et code de synchro par mysql
La langue est appliqué directement par curl, pour préparer les prochaines maj de leed qui supprime la langue du fichier constant.php

Le code de synchro est récupéré dans la base de donnée directement, pour ne pas avoir à jongler avec les langues.
2014-08-23 19:54:19 +02:00

99 lines
3.3 KiB
Bash

#!/bin/bash
# Retrieve arguments
domain=$1
path=$2
admin=$3
user_pwd=$4
language=$5
is_public=$6
# Check if admin exists
sudo yunohost user list --json | grep -q "\"username\": \"$admin\""
if [[ ! $? -eq 0 ]]; then
echo "Wrong admin"
exit 1
fi
# Check domain/path availability
sudo yunohost app checkurl $domain$path -a leed
if [[ ! $? -eq 0 ]]; then
exit 1
fi
# Vérifie que le mot de passe n'est pas vide.
if [[ -z $user_pwd ]]; then
echo "Mot de passe incorrect"
exit 1
fi
# Add settings to YunoHost
sudo yunohost app setting leed admin -v $admin
sudo yunohost app setting leed language -v $language
sudo yunohost app setting leed domain -v $domain
# Generate random password
db_pwd=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d 'A-Za-z0-9' | sed -n 's/\(.\{24\}\).*/\1/p')
# Use 'leed' as database name and user
db_user=leed
# Initialize database and store mysql password for upgrade
sudo yunohost app initdb $db_user -p $db_pwd
sudo yunohost app setting leed mysqlpwd -v $db_pwd
# Copy files to right place
final_path=/var/www/leed
sudo mkdir -p $final_path
sudo cp -a ../sources/* $final_path
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/leed.conf
# Set right permissions for curl install
sudo chown -R www-data: $final_path
# Change variables in Leed configuration
sudo sed -i "s@PATHTOCHANGE@$path@g" /etc/nginx/conf.d/$domain.d/leed.conf
sudo sed -i "s@ALIASTOCHANGE@$final_path/@g" /etc/nginx/conf.d/$domain.d/leed.conf
# Rend la page d'install publique pour curl
sudo yunohost app setting leed unprotected_uris -v "/" #L'usage de unprotected_uris a la place de skipped_uris permet de passer le header d'auth http
sudo yunohost app ssowatconf
# Reload Nginx
sudo service nginx reload
# Leed installation via curl
echo "127.0.0.1 $domain #yunoleed" | sudo tee -a /etc/hosts
sleep 1
curl -k --data "install_changeLngLeed=$language&root=$domain$path&mysqlHost=localhost&mysqlLogin=$db_user&mysqlMdp=$db_pwd&mysqlBase=$db_user&mysqlPrefix=leed_&login=$admin&password=$user_pwd" https://$domain$path/install.php?installButton > /dev/null
# Files owned by root, www-data can just read
sudo mkdir $final_path/cache
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
www-data can write on plugins and cache
sudo chown -R www-data $final_path/cache $final_path/plugins
# Récupération du code de synchronisation
code_sync=$(mysql -h localhost -u $db_user -p$db_pwd -s $db_user -e 'SELECT value FROM leed_configuration WHERE `key`="synchronisationCode"' | sed -n 1p)
# Mise en place du cron pour la synchronisation
sudo crontab -l -u $admin > crontab_file
echo "# Mise a jour de leed toutes les 2 heures." >> crontab_file
echo "0 */2 * * * wget -q \"https://$domain$path/action.php?action=synchronize&code=$code_sync\"" >> crontab_file
sudo crontab -u $admin crontab_file
# Make app private if necessary
sudo yunohost app setting leed is_public -v "$is_public"
if [ "$is_public" = "No" ];
then
# Retire l'autorisation d'accès de la page d'install.
sudo yunohost app setting leed unprotected_uris -d
# Rend la page d'actualisation accessible pour le script cron.
sudo yunohost app setting leed skipped_uris -v "/action.php"
sudo yunohost app ssowatconf
fi
# Clean hosts
sudo sed -i '/yunoleed/d' /etc/hosts