1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/synapse_ynh.git synced 2024-09-03 20:26:38 +02:00

First draft of upgrade from old version

This commit is contained in:
Josué Tille 2024-02-20 21:18:29 +01:00
parent 4311d1e98d
commit 0fd65f2467
No known key found for this signature in database
GPG key ID: 5F259226AD51F2F5
2 changed files with 81 additions and 10 deletions

View file

@ -96,6 +96,17 @@ ynh_app_setting_set --app=$app --key=enable_3pid_lookup --value=$enable_3pid_loo
#=================================================
# STANDARD MODIFICATIONS
#=================================================
# Check datadir empty
#=================================================
if [ -n "$(ls -A $data_dir)" ]; then
old_data_dir_path="${data_dir}_$(date '+%Y%m%d.%H%M%S')"
ynh_print_warn "Data directory was not empty. Data was moved to $old_data_dir_path"
mkdir -p $old_data_dir_path
mv -t "$old_data_dir_path" "$data_dir"/*
fi
#=================================================
# CREATE A DH FILE
#=================================================

View file

@ -211,10 +211,10 @@ fi
if [ -e /etc/systemd/system/matrix-$app.service ]
then
ynh_script_progression --message="Migrating systemd unit to standard name..."
ynh_script_progression --message='Migrating systemd unit to standard name...'
systemctl stop matrix-$app.service || true
systemctl stop synapse-coturn.service || true
systemctl stop coturn-$app.service || true
yunohost service remove matrix-$app || true
yunohost service remove coturn-$app || true
@ -233,6 +233,8 @@ fi
# We stop the service
ynh_systemd_action --service_name=$app.service --action=stop
ynh_script_progression --message='Managing migrations...'
#=================================================
# MIGRATION 6 : Migrate data directory
#=================================================
@ -246,17 +248,13 @@ if [ -e "/var/lib/matrix-$app" ]; then
fi
mv "/var/lib/matrix-$app" "$data_path"
fi
if ! grep -q "$code_dir" /etc/passwd; then
# matrix-synapse:x:994:994::/var/lib/matrix-synapse:/usr/sbin/nologin
sed --in-place -r "s@matrix-$app\:x\:([[:digit:]]+\:[[:digit:]]+)\:\:/.*/matrix-$app\:/usr/sbin/nologin@matrix-$app\:x\:\1\:\:$code_dir\:/usr/sbin/nologin@g" /etc/passwd
fi
#=================================================
# MIGRATION 3 : USE STANDARD ACCESS FOR CERTIFCATE
#=================================================
# Fix issue about certificates access
if [ ! $(grep "ssl-cert:x:[0-9]*:.*matrix-$app" /etc/group) ]
if [ ! $(grep "ssl-cert:x:[0-9]*:.*$app" /etc/group) ]
then
ynh_script_progression --message="Use standard access for certificate..." --weight=1
@ -303,12 +301,74 @@ then
ynh_use_logrotate --logfile /var/log/matrix-$app --nonappend
fi
#=================================================
# MIGRATION 8 : Migrate database to managed database (Migrate db name from matrix_$app to $app)
#=================================================
if ynh_psql_execute_as_root --sql='\list' | grep matrix_$app; then
ynh_psql_remove_db --db_user="user_wich_must_dont_exist_and_keep_current_user" --db_name=$db_name
ynh_psql_execute_as_root --sql="ALTER DATABASE matrix_$app RENAME TO $db_name;"
ynh_psql_execute_as_root --database=$db_name --sql="REASSIGN OWNED BY matrix_$app TO $db_user;"
ynh_psql_execute_as_root --sql="UPDATE pg_database SET datcollate='C', datctype='C' WHERE datname='$db_name';"
ynh_psql_execute_as_root --sql="DROP USER matrix_$app;"
fi
#=================================================
# MIGRATION 9 : migrate data path (from matrix-$app to $app)
#=================================================
if [ -e /home/yunohost.app/matrix-$app ]; then
mv -t $data_dir /home/yunohost.app/matrix-$app/*
ynh_secure_remove --file=/home/yunohost.app/matrix-$app
fi
#=================================================
# MIGRATION 10 : leave port managed by yunohost
#=================================================
# TODO check on v2 how it works
closeport() {
local port=$1
if yunohost firewall list | grep -q "\- $port$"
then
ynh_script_progression --message="Closing port $port"
ynh_exec_warn_less yunohost firewall disallow Both $port
fi
}
# closeport $synapse_tls_port
# closeport $turnserver_tls_port
# closeport $turnserver_alt_tls_port
#=================================================
# MIGRATION 11 : make this app using full domain
#=================================================
ynh_app_setting_set --app=$app --key=path --value=/
if yunohost app map -r --output-as json | jq '."'$domain'" | .[] | .id' | grep -v "$app" -q; then
ynh_print_warn 'An other app is installed on this domain. Now synapse require to be alone on the domain.'
ynh_print_warn 'To solve this you can:'
ynh_print_warn "- Remove or move all other app which use '$domain'"
ynh_print_warn '- Change the url of synapse with the yunohost change-url tool. Note that you will keep the same "server_name" so your users will keep the same username.'
fi
#=================================================
# MIGRATION 12 : update system user and drop yunohost user
#=================================================
if grep -q matrix-$app /etc/passwd; then
ynh_system_user_delete --username=matrix-$app
yunohost user delete $app || true
ynh_system_user_create --username=$app --home_dir=$code_dir
adduser $app ssl-cert
fi
######################################### WARNING ################################
# TODO manage of migration of data path
# TODO manage of migration of db name
# TODO delete legacy user matrix-synapse
# TODO maybe need to close port to leave managed port to manage this
#=================================================
# DOWNLOAD, CHECK AND UNPACK SOURCE