#!/bin/bash #================================================= # GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= source _common.sh source /usr/share/yunohost/helpers upgrade_type=$(ynh_check_app_version_changed) #================================================= # STOP SYSTEMD SERVICE #================================================= ynh_script_progression --message="Stopping a systemd service..." --weight=1 ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd" #================================================= # "REBUILD" THE APP (DEPLOY NEW SOURCES, RERUN NPM BUILD...) #================================================= # DOWNLOAD, CHECK AND UNPACK SOURCE #================================================= if [ "$upgrade_type" == "UPGRADE_APP" ] then ynh_script_progression --message="Upgrading source files..." --weight=1 # Download, check integrity, uncompress and patch the source from manifest.toml ynh_setup_source --dest_dir="$install_dir" fi chown -R $app:www-data "$install_dir" #================================================= # MULTINSTANCE SUPPORT #================================================= if [ ! -e /etc/$app/coturn.conf ] then ynh_script_progression --message="Creating an independant service for Coturn..." --weight=1 #================================================= # CREATE AN INDEPENDANT SERVICE FOR COTURN #================================================= # Disable default config for turnserver and create a new service systemctl stop coturn.service # Set by default the system config for coturn echo "" > /etc/turnserver.conf ynh_replace_string --match_string="TURNSERVER_ENABLED=1" --replace_string="TURNSERVER_ENABLED=0" --target_file=/etc/default/coturn #================================================= # MAKE A CLEAN LOGROTATE CONFIG #================================================= ynh_use_logrotate --logfile /var/log/$app --nonappend fi #================================================= # UPDATE COTURN CONFIG #================================================= ynh_script_progression --message="Updating Coturn config..." --weight=1 ynh_add_config --template="../conf/coturn/turnserver.conf" --destination="/etc/$app/coturn.conf" # Get public IP and set as external IP for coturn # note : '|| true' is used to ignore the errors if we can't get the public ipv4 or ipv6 public_ip4="$(curl -s ip.yunohost.org)" || true public_ip6="$(curl -s ipv6.yunohost.org)" || true if ( [[ -n "$public_ip4" ]] && ynh_validate_ip4 --ip_address="$public_ip4" || [[ -n "$public_ip6" ]] && ynh_validate_ip6 --ip_address="$public_ip6" ) then echo "external-ip=${public_ip4}/${public_ip6}" >> "/etc/$app/coturn.conf" fi ynh_store_file_checksum --file="/etc/$app/coturn.conf" ynh_system_user_create --username=turnserver adduser turnserver ssl-cert # Set permissions on app files chown -R $app:root /etc/$app chown turnserver:root "/etc/$app/coturn.conf" chmod -R u=rwX,g=rX,o= /etc/$app setfacl -R -m user:turnserver:rX /etc/$app setfacl -R -m user:turnserver:rwX /var/log/$app #================================================= # UPGRADE DEPENDENCIES #================================================= ynh_script_progression --message="Upgrading dependencies..." --weight=5 # Install Nodejs ynh_exec_warn_less ynh_install_nodejs --nodejs_version=$nodejs_version #================================================= # REAPPLY SYSTEM CONFIGURATIONS #================================================= ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 ynh_add_nginx_config ynh_add_systemd_config yunohost service add $app --description="Local file sharing in your browser" --log="/var/log/$app/$app.log" yunohost service add coturn-$app --description="Coturn TURN server" --log="/var/log/$app/turnserver.log" --needs_exposed_ports $port_turnserver #================================================= # BUILD YARN DEPENDENCIES #================================================= ynh_script_progression --message="Building Yarn dependencies..." pushd "$install_dir" ynh_use_nodejs ynh_exec_warn_less ynh_exec_as $app env $ynh_node_load_PATH $ynh_npm install popd #================================================= # RECONFIGURE THE APP (UPDATE CONF, APPLY MIGRATIONS...) #================================================= # UPDATE A CONFIG FILE #================================================= #ynh_script_progression --message="Updating a configuration file..." --weight=1 #ynh_add_config --template="some_config_file" --destination="$install_dir/some_config_file" #chmod 400 "$install_dir/some_config_file" #chown $app:$app "$install_dir/some_config_file" #================================================= # START SYSTEMD SERVICE #================================================= ynh_script_progression --message="Starting a systemd service..." --weight=1 ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" ynh_systemd_action --service_name=coturn-$app.service --action=restart --log_path="/var/log/$app/turnserver.log" #================================================= # END OF SCRIPT #================================================= ynh_script_progression --message="Upgrade of $app completed" --last