#!/bin/bash # Exit on command errors and treat unset variables as an error set -eu app="movim" # Source local helpers source ./_common.sh # Source YunoHost helpers if exists. # If not, source backported helpers from file. if [ -a "/usr/share/yunohost/helpers" ]; then source /usr/share/yunohost/helpers else source ./_helpers.sh fi # Retrieve app settings domain=$(ynh_app_setting_get "$app" domain) path=$(ynh_app_setting_get "$app" path) port=$(ynh_app_setting_get "$app" port) ssoenabled=$(ynh_app_setting_get "$app" ssoenabled) public_site=$(ynh_app_setting_get "$app" public_site) timezone=`cat /etc/timezone` # Check timezone [[ -n "$timezone" ]] \ || ynh_die "Could not detect timezone, please check /etc/timezone." \ && echo "Detected timezone: $timezone" # Init git repository as needed if [ ! -d "${DESTDIR}/.git" ]; then tmp_path=/tmp/movim-git sudo rm -rf "$tmp_path" # Download Movim source code (git clone "$GIT_REPO" "$tmp_path" \ && cd "$tmp_path" && git checkout "$HEAD_COMMIT") \ || ynh_die "Unable to download Movim source code." sudo cp "${DESTDIR}/config/db.inc.php" "${tmp_path}/config/db.inc.php" # Replace current source code sudo rm -rf "$DESTDIR" sudo mv "$tmp_path" "$DESTDIR" sudo chown -R movim:www-data "$DESTDIR" # Install composer for PHP dependencies curl -sS https://getcomposer.org/installer \ | exec_cmd php -- --install-dir="$DESTDIR" fi # Update Movim source code (exec_cmd git fetch origin \ && exec_cmd git reset --hard "$HEAD_COMMIT") \ || ynh_die "Unable to download Movim source code." ## FIXME: consider installation in a subpath exec_cmd sed -i "s@'/ws/'@'${path%/}/ws/'@g" \ "${DESTDIR}/app/assets/js/movim_websocket.js" # Create movim user if not exists and set permissions ynh_system_user_exists movim \ || sudo useradd -d /var/www/movim -s /bin/sh movim sudo chown -R movim:www-data "$DESTDIR" sudo find "${DESTDIR}/" -type f -print0 | sudo xargs -0 chmod 0644 sudo find "${DESTDIR}/" -type d -print0 | sudo xargs -0 chmod 0755 sudo chmod 400 "${DESTDIR}/config/db.inc.php" # Update PHP dependencies using composer (exec_cmd php composer.phar config --global discard-changes true \ && exec_cmd php composer.phar install --no-interaction) \ || ynh_die "Unable to update Movim dependencies." # Upgrade Movim database as needed exec_cmd php mud.php db --set # Reset SSO parameters ynh_app_setting_delete "$app" protected_uris ynh_app_setting_delete "$app" skipped_uris sudo yunohost app clearaccess movim # Replace old public_site variable (if exists) by ssoenabled if [ ! -z "$public_site" ]; then [[ $public_site = "Yes" ]] \ && ssoenabled="No" \ || ssoenabled="Yes" ynh_app_setting_delete "$app" public_site ynh_app_setting_set "$app" ssoenabled "$ssoenabled" fi # SSOwat configuration if [[ "$ssoenabled" = "No" ]]; then ynh_app_setting_set "$app" skipped_uris "/" exec_cmd php mud.php config --xmppwhitelist=$domain sudo yunohost app ssowatconf else ynh_app_setting_set "$app" unprotected_uris "/" apply_sso_patch fi # Update init scripts sudo sed -i "s@YHURL@${domain}${path}@g" ../conf/movim.{service,init} sudo sed -i "s@YHDIR@${DESTDIR}@g" ../conf/movim.{service,init} sudo sed -i "s@YHPORT@${port}@g" ../conf/movim.{service,init} if [ -d /run/systemd/system ]; then sudo rm -f /lib/systemd/system/movim.service sudo cp ../conf/movim.service /etc/systemd/system/ sudo systemctl daemon-reload else sudo /etc/init.d/movim stop sudo cp ../conf/movim.init /etc/init.d/movim sudo chmod 755 /etc/init.d/movim sudo update-rc.d movim defaults sudo /etc/init.d/movim start fi # Update php-fpm configuration sed -i "s@YHTZ@$timezone@g" ../conf/php-fpm.conf sudo cp ../conf/php-fpm.conf /etc/php5/fpm/pool.d/movim.conf # Nginx configuration sed -i "s@PATHTOCHANGE@$path@g" ../conf/nginx.conf sed -i "s@ALIASTOCHANGE@$DESTDIR/@g" ../conf/nginx.conf sed -i "s@YHPORT@$port@g" ../conf/nginx.conf sed -i "s@//ws/@/ws/@g" ../conf/nginx.conf # Avoid duplicate / sudo cp ../conf/nginx.conf /etc/nginx/conf.d/$domain.d/movim.conf # Reload services sudo service movim restart sudo service php5-fpm restart sudo service nginx reload