1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/roundcube_ynh.git synced 2024-09-03 20:16:28 +02:00
roundcube_ynh/scripts/install

120 lines
3.6 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Exit on command errors and treat unset variables as an error
set -eu
# Source app helpers
source ./_common.sh
source /usr/share/yunohost/helpers
app=$YNH_APP_INSTANCE_NAME
# Retrieve arguments
domain=$YNH_APP_ARG_DOMAIN
path=$(ynh_normalize_url_path $YNH_APP_ARG_PATH)
with_carddav=$YNH_APP_ARG_WITH_CARDDAV
with_enigma=$YNH_APP_ARG_WITH_ENIGMA
# Check domain/path availability
sudo yunohost app checkurl "${domain}${path}" -a "$app" \
|| ynh_die "Path not available: ${domain}${path}"
# Set app specific variables
dbname=$app
dbuser=$app
# Generate random DES key & password
deskey=$(ynh_string_random 24)
dbpass=$(ynh_string_random)
# Save app settings
ynh_app_setting_set $app domain $domain
ynh_app_setting_set $app path $path
ynh_app_setting_set $app with_carddav $with_carddav
ynh_app_setting_set $app with_enigma $with_enigma
# Check destination directory
final_path=/var/www/$app
# FIXME: jessie-backports is needed for php-net-ldap3
grep -q -R 'jessie-backports' /etc/apt/sources.list{,.d} || {
echo "deb http://httpredir.debian.org/debian jessie-backports main" \
| sudo tee -a /etc/apt/sources.list.d/backports.list >/dev/null
}
# Install dependencies
ynh_install_app_dependencies php5-cli php5-common php5-intl php5-json php5-mcrypt \
php-pear php-auth-sasl php-mail-mime php-patchwork-utf8 \
php-net-smtp php-net-socket php-crypt-gpg \
php-net-ldap2 php-net-ldap3
# Create system user dedicace for this app
ynh_system_user_create $app
# Create final_path directory and install app inside
sudo mkdir -p $final_path
ynh_setup_source "${final_path}"
# Change owner by admin for execute composer
sudo chown -R admin: "${final_path}"
init_composer "${final_path}"
# Initialize database
ynh_mysql_create_db "$dbname" "$dbuser" "$dbpass"
ynh_mysql_connect_as "$dbuser" "$dbpass" "$dbname" \
< "${final_path}/SQL/mysql.initial.sql"
# Copy and set Roundcube configuration
rc_conf="${final_path}/config/config.inc.php"
cp ../conf/config.inc.php "$rc_conf"
ynh_substitute_char "#DESKEY#" "$deskey" "$rc_conf"
ynh_substitute_char "#DBUSER#" "$dbuser" "$rc_conf"
ynh_substitute_char "#DBPASS#" "$dbpass" "$rc_conf"
ynh_substitute_char "#DBNAME#" "$dbname" "$rc_conf"
# Install files and set permissions
sudo mkdir -p "${final_path}/logs" "${final_path}/temp"
# Install additional plugins
exec_composer admin "$final_path" require \
"johndoh/contextmenu dev-master" \
"sblaisot/automatic_addressbook dev-master"
installed_plugins+=" 'contextmenu', 'automatic_addressbook',"
# Install CardDAV plugin
if [[ $with_carddav -eq 1 ]]; then
install_carddav "$final_path" admin \
&& installed_plugins+=" 'carddav'," \
|| echo "Unable to install CardDAV plugin" >&2
fi
# Install Enigma plugin
if [[ $with_enigma -eq 1 ]]; then
sudo cp -a "$final_path/plugins/enigma/config.inc.php.dist" "$final_path/plugins/enigma/config.inc.php" \
&& installed_plugins+=" 'enigma'," \
|| echo "Unable to install Enigma plugin" >&2
fi
# Update Roundcube configuration
sudo sed -i "s#^\s*// installed plugins#&\n ${installed_plugins}#" \
"${final_path}/config/config.inc.php"
# Update javascript dependencies
pushd ${final_path}
sudo /usr/bin/php -q ./bin/install-jsdeps.sh
popd
# Change owner final_path directory
sudo chown -R $app: "${final_path}"
# Modify Nginx configuration file and copy it to Nginx conf directory
ynh_nginx_config
# Create the php-fpm pool config
ynh_fpm_config
# Save app settings
ynh_app_setting_set "$app" with_carddav "$with_carddav"
ynh_app_setting_set "$app" mysqlpwd "$dbpass"
# Reload services
sudo systemctl restart php5-fpm
sudo systemctl reload nginx