2015-05-30 19:37:21 +02:00
#!/bin/bash
2016-12-14 16:02:43 +01:00
source .fonctions # Charge les fonctions génériques habituellement utilisées dans le script
2016-05-20 00:11:46 +02:00
2016-12-14 16:02:43 +01:00
CLEAN_SETUP () {
# Nettoyage des résidus d'installation non pris en charge par le script remove.
# Pas de nettoyage supplémentaire nécessaire ici...
echo ""
}
TRAP_ON # Active trap pour arrêter le script si une erreur est détectée.
2016-06-04 23:56:19 +02:00
2016-12-14 16:02:43 +01:00
domain=$YNH_APP_ARG_DOMAIN
path=$YNH_APP_ARG_PATH
password_admin=$YNH_APP_ARG_PASSWORD
2016-05-20 00:11:46 +02:00
2016-12-14 16:02:43 +01:00
app=$YNH_APP_INSTANCE_NAME
2016-05-20 00:11:46 +02:00
2016-12-14 16:02:43 +01:00
# Source app helpers
source /usr/share/yunohost/helpers
2015-05-30 19:37:21 +02:00
2016-12-14 16:02:43 +01:00
# Vérifie que les variables ne sont pas vides.
CHECK_VAR "$app" "app name not set"
2015-05-30 19:37:21 +02:00
2016-12-14 16:02:43 +01:00
CHECK_PATH # Vérifie et corrige la syntaxe du path.
CHECK_DOMAINPATH # Vérifie la disponibilité du path et du domaine.
2015-12-18 14:11:35 +01:00
2016-12-14 16:02:43 +01:00
CHECK_FINALPATH # Vérifie que le dossier de destination n'est pas déjà utilisé.
2015-05-30 19:37:21 +02:00
2016-12-14 16:02:43 +01:00
# Enregistre les infos dans la config YunoHost
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app path $path
2015-05-30 19:37:21 +02:00
2016-12-14 16:02:43 +01:00
GENERATE_DB $app # Créer une base de données et un utilisateur dédié au nom de l'app.
2015-12-18 14:11:35 +01:00
2016-12-14 16:02:43 +01:00
# Créer le repertoire de destination et stocke son emplacement.
sudo mkdir "$final_path"
ynh_app_setting_set $app final_path $final_path
2015-12-18 14:11:35 +01:00
2016-12-14 16:02:43 +01:00
SETUP_SOURCE "teampass.tar.gz" # Télécharge la source, décompresse et copie dans $final_path
2015-05-30 19:37:21 +02:00
2016-12-14 16:02:43 +01:00
# Delete the install directory.
# SECURE_REMOVE '$final_path/install'
2015-05-30 19:37:21 +02:00
2015-12-18 14:11:35 +01:00
# Et copie le fichier de config nginx
sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/$app.conf
2015-05-30 19:37:21 +02:00
2015-12-18 14:11:35 +01:00
# Modifie les variables dans le fichier de configuration nginx
2016-12-14 16:02:43 +01:00
sudo sed -i "s@__PATH__@$path@g" /etc/nginx/conf.d/$domain.d/$app.conf
sudo sed -i "s@__FINALPATH__@$final_path@g" /etc/nginx/conf.d/$domain.d/$app.conf
2015-12-18 14:11:35 +01:00
sudo sed -i "s@__NAMETOCHANGE__@$app@g" /etc/nginx/conf.d/$domain.d/$app.conf
2016-12-14 16:02:43 +01:00
ADD_SYS_USER # Créer un user système dédié pour l'application
POOL_FPM # Créer le fichier de configuration du pool php-fpm et le configure.
2015-12-18 14:11:35 +01:00
# Copie du script contenant la fonction bCrypt
sudo cp ../conf/mdphash.php $final_path
2015-12-06 12:49:32 +01:00
# Remplacement des variables dans le fichier sql
if [ $(echo $LANG | cut -c1-2) == "fr" ]
then
langue=french
folders=partagés
roles=utilisateurs
else
langue=english
folders=shared
roles=users
fi
sed -i "s@__FINALPATH__@$final_path@g" ../conf/populate.sql
sed -i "s@__DOMAIN__@$domain@g" ../conf/populate.sql
sed -i "s@__PATH__@$path@g" ../conf/populate.sql
sed -i "s@__FOLDERS__@$folders@g" ../conf/populate.sql
sed -i "s@__ROLES__@$roles@g" ../conf/populate.sql
2016-12-14 16:02:43 +01:00
sed -i "s@__VERSION__@$(sed -n 3p $final_path/changelog.md)@g" ../conf/populate.sql
2015-12-06 12:49:32 +01:00
sed -i "s@__TIMEZONE__@$(cat /etc/timezone)@g" ../conf/populate.sql
sed -i "s@__BCRYPT_MDP__@$(php ../conf/mdphash.php $password_admin)@g" ../conf/populate.sql
sed -i "s@__LANG__@$langue@g" ../conf/populate.sql
2015-12-18 14:11:35 +01:00
# Enregistre les infos dans la config YunoHost
2016-12-14 16:02:43 +01:00
ynh_app_setting_set $app langue $langue
2015-12-06 12:49:32 +01:00
# Import du fichier SQL
mysql -u $db_user -p$db_pwd $db_user < ../conf/populate.sql
# Remplacement des variables dans les fichier settings.php et sk.php
sed -i "s@__DBUSER__@$db_user@g" ../conf/settings.php
sed -i "s@__DBPWD__@$db_pwd@g" ../conf/settings.php
sed -i "s@__FINALPATH__@$final_path@g" ../conf/settings.php
path_sk_file=/etc/teampass/
sudo mkdir $path_sk_file
sed -i "s@__SKPATH__@$path_sk_file@g" ../conf/settings.php
saltkey=$(dd if=/dev/urandom bs=1 count=200 2> /dev/null | tr -c -d '[A-Za-z0-9]' | sed -n 's/\(.\{32\}\).*/\1/p')
sed -i "s@__SALTKEY__@$saltkey@g" ../conf/sk.php
# Et copie des fichiers à leurs emplacements.
sudo cp ../conf/sk.php $path_sk_file/sk.php
2016-12-14 16:02:43 +01:00
sudo chown -R root:$app $path_sk_file
2015-12-20 21:03:34 +01:00
sudo chmod 750 $path_sk_file
2016-12-14 16:02:43 +01:00
sudo cp ../conf/settings.php $final_path/includes/config/settings.php
STORE_MD5_CONFIG "settings.php" "$final_path/includes/config/settings.php" # Enregistre la somme de contrôle du fichier de config
sudo cp $final_path/includes/libraries/csrfp/libs/csrfp.config.sample.php $final_path/includes/libraries/csrfp/libs/csrfp.config.php # Créer le fichier de config de csrfp
sed -i "s@CSRFP_TOKEN\" => \"@&$(head -n40 /dev/urandom | tr -c -d 'a-f0-9' | head -c50)@g" $final_path/includes/libraries/csrfp/libs/csrfp.config.php # Renseigne un token, valide en hexadécimal
sed -i "s@jsUrl\" => \"@&$domain$path/includes/libraries/csrfp/js/csrfprotector.js@g" $final_path/includes/libraries/csrfp/libs/csrfp.config.php # Renseigne l'adresse de csrfprotector.js
2015-12-06 12:49:32 +01:00
# Ajout des utilisateurs actuels dans la base yunohost
teampass_users=$(ldapsearch -h localhost -b ou=users,dc=yunohost,dc=org -x objectClass=mailAccount uid | grep uid: | sed 's/uid: //' | xargs)
id=1
for teampassuser in $teampass_users
do
2016-12-14 16:02:43 +01:00
real_password=$(ynh_string_random) # Génère un mot de passe aléatoire
password=$(php ../conf/mdphash.php $real_password)
2015-12-06 12:49:32 +01:00
mail=$(sudo ldapsearch -h localhost -b ou=users,dc=yunohost,dc=org -x uid=$teampassuser mail | grep mail: | sed 's/mail: //' | head -n1)
# Creation de l'utilisateur
mysql -u $db_user -p$db_pwd $db_user -e "INSERT INTO teampass_users (id, login, pw, groupes_visibles, derniers, key_tempo, last_pw_change, last_pw, admin, fonction_id, groupes_interdits, last_connexion, gestionnaire, email, favourites, latest_items, personal_folder, can_create_root_folder) VALUES (NULL, '$teampassuser', '$password', '1', '', '', '', '', '0', '1', '', '', '0', '$mail', '', '', '1', '1');"
# Creation du repertoire personnel
id_user=$(mysql -u $db_user -p$db_pwd $db_user -se "SELECT id from teampass_users where login='$teampassuser';")
mysql -u $db_user -p$db_pwd $db_user -e "INSERT INTO teampass_nested_tree (id, parent_id, title, nleft, nright, nlevel, bloquer_creation, bloquer_modification, personal_folder, renewal_period) VALUES (NULL, 0, '$id_user', 0, 0, 1, 0, 0, 1, 0);"
((id++))
done
2015-12-18 14:11:35 +01:00
# Configure les droits d'accès au fichiers
2016-12-14 16:02:43 +01:00
# -rw-r--r-- sur les fichiers
sudo find $final_path -type f -print0 | xargs -0 sudo chmod 644
# drwxr-xr-x sur les dossiers
sudo find $final_path -type d -print0 | xargs -0 sudo chmod 755
2015-12-18 14:11:35 +01:00
# Les dossiers files et upload ont besoin d'un droit d'écriture.
2016-12-14 16:02:43 +01:00
sudo chmod 774 -R $final_path/files $final_path/upload
2015-12-18 14:11:35 +01:00
# Le script de conversion csv xml doit être exécutable, au moins par root.
2016-12-14 16:02:43 +01:00
sudo chmod 744 $final_path/CsvToXml_For_Teampass.sh
# Les fichiers appartiennent à root
sudo chown -R root:$app $final_path
2015-12-18 14:11:35 +01:00
# Recharge la configuration Nginx
2015-05-30 19:37:21 +02:00
sudo service nginx reload
2015-12-18 14:11:35 +01:00
# Régénère la configuration de SSOwat
2015-05-30 19:37:21 +02:00
sudo yunohost app ssowatconf