#!/bin/bash #================================================= # GENERIC START #================================================= # Source YunoHost helpers source /usr/share/yunohost/helpers # Stop script if errors ynh_abort_if_errors # Import common cmd source ./experimental_helper.sh source ./_common.sh ynh_script_progression --message="Loading installation settings..." # Retrive arguments old_domain=$YNH_APP_OLD_DOMAIN domain=$YNH_APP_NEW_DOMAIN old_path=$(ynh_normalize_url_path $YNH_APP_OLD_PATH) path_url=$(ynh_normalize_url_path $YNH_APP_NEW_PATH) seahub_port=$(ynh_app_setting_get --app $app --key seahub_port) fileserver_port=$(ynh_app_setting_get --app $app --key fileserver_port) webdav_port=$(ynh_app_setting_get --app $app --key webdav_port) final_path=$(ynh_app_setting_get --app $app --key final_path) seafile_user=$app # Create special path with / at the end if [[ $old_path == '/' ]] then old_path2=$old_path else old_path2=$old_path'/' fi if [[ $path_url == '/' ]] then path_url2=$path_url else path_url2=$path_url'/' fi #================================================= # STANDARD MODIFICATIONS #================================================= ynh_script_progression --message="Updating nginx configuration..." # Update nginx config if [ "$old_domain" != "$domain" ] then # Delete file checksum for the old conf file location ynh_delete_file_checksum --file "/etc/nginx/conf.d/$old_domain.d/$app.conf" mv "/etc/nginx/conf.d/$old_domain.d/$app.conf" "/etc/nginx/conf.d/$domain.d/$app.conf" # Store file checksum for the new config file location ynh_store_file_checksum --file "/etc/nginx/conf.d/$domain.d/$app.conf" fi ynh_add_nginx_config 'seahub_port fileserver_port webdav_port' ynh_script_progression --message="Stoping services..." # Stop service before any change ynh_systemd_action --service_name seafile --action stop ynh_systemd_action --service_name seahub --action stop sleep 2 pkill -f seafile-controller || true pkill -f seaf-server || true pkill -f ccnet-server || true pkill -f seahub || true ynh_script_progression --message="Updating seafile configuration..." # Update Seafile Config ynh_replace_string --match_string "SERVICE_URL = https://$old_domain$old_path" --replace_string "SERVICE_URL = https://$domain$path_url" --target_file $final_path/conf/ccnet.conf ynh_replace_string --match_string 'FILE_SERVER_ROOT = "https://'"$old_domain"'/seafhttp"' --replace_string 'FILE_SERVER_ROOT = "https://'"$domain"'/seafhttp"' --target_file $final_path/conf/seahub_settings.py ynh_replace_string --match_string 'SITE_ROOT = "'"$old_path2"'"' --replace_string 'SITE_ROOT = "'"$path_url2"'"' --target_file $final_path/conf/seahub_settings.py ynh_replace_string --match_string 'MEDIA_URL = "'"$old_path2"'media/"' --replace_string 'MEDIA_URL = "'"$path_url2"'media/"' --target_file $final_path/conf/seahub_settings.py ynh_replace_string --match_string "LOGIN_URL = '${old_path2}accounts/login/'" --replace_string "LOGIN_URL = '${path_url2}accounts/login/'" --target_file $final_path/conf/seahub_settings.py ynh_replace_string --match_string ' = "seafile@'"$old_domain"'"' --replace_string ' = "seafile@'"$domain"'"' --target_file $final_path/conf/seahub_settings.py sed --in-place "s@ALLOWED_HOSTS = \['${old_domain}'\]@ALLOWED_HOSTS = \['${domain}'\]@g" $final_path/conf/seahub_settings.py ynh_replace_string --match_string "REMOTE_USER_DOMAIN = '$old_domain'" --replace_string "REMOTE_USER_DOMAIN = '$domain'" --target_file $final_path/conf/seahub_settings.py sed --in-place "s@REMOTE_USER_PROTECTED_PATH = \['$old_path', '$old_path/accounts/login'\]@REMOTE_USER_PROTECTED_PATH = \['$path_url', '$path_url/accounts/login'\]@g" $final_path/conf/seahub_settings.py ynh_script_progression --message="Updating seafile database" --weight=7 # Update database # This fonction relplace all old domain name by the new domain name. # use : mysql_relpace_db db_name table collum mysql_relpace_db() { sql_request='UPDATE `'"$2"'` SET '"$3 = replace($3, '$old_domain', '$domain')" ynh_mysql_execute_as_root --sql "$sql_request" --database $1 } # ccnet DB mysql_relpace_db ccnetdb EmailUser email mysql_relpace_db ccnetdb Group creator_name mysql_relpace_db ccnetdb GroupUser user_name mysql_relpace_db ccnetdb LDAPUsers email mysql_relpace_db ccnetdb Organization creator mysql_relpace_db ccnetdb OrgUser email mysql_relpace_db ccnetdb UserRole email # seafile DB mysql_relpace_db seafiledb OrgUserQuota user mysql_relpace_db seafiledb RepoGroup user_name mysql_relpace_db seafiledb RepoOwner owner_id mysql_relpace_db seafiledb RepoTrash owner_id mysql_relpace_db seafiledb RepoUserToken email mysql_relpace_db seafiledb SharedRepo from_email mysql_relpace_db seafiledb SharedRepo to_email mysql_relpace_db seafiledb UserQuota user mysql_relpace_db seafiledb UserShareQuota user # seahub DB mysql_relpace_db seahubdb api2_token user mysql_relpace_db seahubdb api2_tokenv2 user mysql_relpace_db seahubdb avatar_avatar emailuser mysql_relpace_db seahubdb base_clientlogintoken username mysql_relpace_db seahubdb base_devicetoken user mysql_relpace_db seahubdb base_filecomment author mysql_relpace_db seahubdb base_innerpubmsg from_email mysql_relpace_db seahubdb base_innerpubmsgreply from_email mysql_relpace_db seahubdb base_userenabledmodule username mysql_relpace_db seahubdb base_userlastlogin username mysql_relpace_db seahubdb base_userstarredfiles email mysql_relpace_db seahubdb group_groupmessage from_email mysql_relpace_db seahubdb group_messagereply from_email mysql_relpace_db seahubdb institutions_institutionadmin user mysql_relpace_db seahubdb notifications_usernotification to_user mysql_relpace_db seahubdb options_useroptions email mysql_relpace_db seahubdb post_office_attachment_emails email_id mysql_relpace_db seahubdb post_office_email from_email mysql_relpace_db seahubdb profile_profile user mysql_relpace_db seahubdb profile_profile login_id mysql_relpace_db seahubdb profile_profile contact_email mysql_relpace_db seahubdb registration_registrationprofile emailuser_id mysql_relpace_db seahubdb share_anonymousshare repo_owner mysql_relpace_db seahubdb share_fileshare username mysql_relpace_db seahubdb share_privatefiledirshare from_user mysql_relpace_db seahubdb share_privatefiledirshare to_user mysql_relpace_db seahubdb share_uploadlinkshare username mysql_relpace_db seahubdb sysadmin_extra_userloginlog username mysql_relpace_db seahubdb termsandconditions_usertermsandconditions username mysql_relpace_db seahubdb two_factor_phonedevice user mysql_relpace_db seahubdb two_factor_staticdevice user mysql_relpace_db seahubdb two_factor_totpdevice user mysql_relpace_db seahubdb wiki_personalwiki username # Avoid the current effect sleep 2 # Reload services ynh_script_progression --message="Starting services..." ynh_systemd_action --service_name seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log ynh_systemd_action --service_name seahub -l "Started Seafile hub." -p "systemd" sleep 2 ynh_script_progression --message="Change of URL completed for $app" --time --last