#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers #================================================= # MANAGE SCRIPT FAILURE #================================================= # Exit if an error occurs during the execution of the script ynh_abort_if_errors #================================================= # RETRIEVE ARGUMENTS FROM THE MANIFEST #================================================= domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH language=$YNH_APP_ARG_LANGUAGE # Set and store language language=${LANGUAGES[$language]} # Set app specific variables app=$YNH_APP_INSTANCE_NAME dbname=$app dbuser=$app #================================================= # CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS #================================================= final_path=/var/www/$app test ! -e "$final_path" || ynh_die "This path already contains a folder" # Define LOGDIR (create it later when user is created) LOGDIR=/var/log/$app test ! -e "$LOGDIR" || ynh_die "This log path already contains a folder" # Normalize the url path syntax path_url=$(ynh_normalize_url_path "$path_url") # Check web path availability ynh_webpath_available "$domain" "$path_url" # Register (book) web path ynh_webpath_register "$app" "$domain" "$path_url" # Check whether Baïkal or Radicale is installed baikal_install=$(agendav_app_check_installation "baikal") radicale_install=$(agendav_app_check_installation "radicale") if [[ -n "$baikal_install" ]] then caldav_app="baikal" caldav_baseurl="/cal.php/" elif [[ -n "$radicale_install" ]] then caldav_app="radicale" caldav_baseurl="/" else ynh_die "Baikal or Radicale is mandatory" fi #================================================= # STORE SETTINGS FROM MANIFEST #================================================= ynh_app_setting_set "$app" language "$language" ynh_app_setting_set "$app" path "$path_url" ynh_app_setting_set "$app" domain "$domain" ynh_app_setting_set "$app" final_path "$final_path" #================================================= # STANDARD MODIFICATIONS #================================================= # Install dependencies ynh_install_app_dependencies php5-cli #================================================= # CREATE A MYSQL DATABASE #================================================= # Initialize database dbpass=$(ynh_string_random) ynh_mysql_setup_db "$dbname" "$dbuser" "$dbpass" #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= ynh_setup_source "$final_path" #================================================= # NGINX CONFIGURATION #================================================= # Copy and set nginx configuration ynh_add_nginx_config #================================================= # CREATE DEDICATED USER #================================================= ynh_system_user_create "$app" #================================================= # PHP-FPM CONFIGURATION #================================================ # Copy and set php-fpm configuration ynh_add_fpm_config #================================================= # SPECIFIC SETUP #================================================= # Create settings.php #================================================= # Generate random encryption key encryptkey=$(ynh_string_random 24) ynh_app_setting_set "$app" encryptkey "$encryptkey" # Copy and set AgenDAV configuration timezone=$(cat /etc/timezone) caldav_domain=$(ynh_app_setting_get "$caldav_app" domain) caldav_path=$(ynh_app_setting_get "$caldav_app" path) caldav_url="https://${caldav_domain}${caldav_path%/}" conf_path="${final_path}/web/config/settings.php" cp ../conf/settings.php "$conf_path" ynh_replace_string "{DBUSER}" "${dbuser}" "$conf_path" ynh_replace_string "{DBPASS}" "${dbpass}" "$conf_path" ynh_replace_string "{DBNAME}" "${dbname}" "$conf_path" ynh_replace_string "{ENCRYPTKEY}" "${encryptkey}" "$conf_path" ynh_replace_string "{LOGDIR}" "${LOGDIR}" "$conf_path" ynh_replace_string "{TIMEZONE}" "$timezone" "$conf_path" ynh_replace_string "{LANGUAGE}" "${language}" "$conf_path" ynh_replace_string "{CALDAV_BASEURL}" "${caldav_url}${caldav_baseurl}" "$conf_path" ynh_replace_string "{CALDAV_DOMAIN}" "${caldav_domain}" "$conf_path" #================================================= # STORE THE CHECKSUM OF THE CONFIG FILE #================================================= ynh_store_file_checksum "$conf_path" #================================================= # Run database migrations (includes initialization) #================================================= ( cd "$final_path" php agendavcli migrations:migrate --no-interaction ) #================================================= # SETUP LOG directory #================================================= mkdir -p "$LOGDIR" chown -R "$app": "$LOGDIR" #================================================= # GENERIC FINALIZATION #================================================= # SECURE FILES AND DIRECTORIES #================================================= chown -R root: "$final_path" # Only agendav user should write here chown -R "$app" "${final_path}/web/var/cache/"{profiler,twig} # The agendav user should read here, but does not need to write chown -R root:"$app" "${final_path}/web/config/" chmod -R g+rx "${final_path}/web/config/" # Other users should not be able to read as it stores passwords. chmod -R o-rwx "${final_path}/web/config/" #================================================= # SETUP SSOWAT #================================================= # Nothing to do, this app is private #================================================= # RELOAD NGINX and FPM #================================================= # Reload services service php5-fpm reload service nginx reload