[autopatch] Automatic patch attempt for helpers 2.1

This commit is contained in:
Yunohost-Bot 2024-08-31 02:59:12 +02:00 committed by Josué Tille
parent 5a4717ace8
commit fd287c9ea4
No known key found for this signature in database
GPG key ID: 5F259226AD51F2F5
9 changed files with 148 additions and 154 deletions

1
.gitignore vendored
View file

@ -221,3 +221,4 @@ pip-log.txt
*-swp *-swp
auto_update_config.sh auto_update_config.sh
*.sw[op]

View file

@ -18,7 +18,8 @@ code = "https://github.com/haiwen/seafile-server"
cpe = "cpe:2.3:a:seafile:seafile" cpe = "cpe:2.3:a:seafile:seafile"
[integration] [integration]
yunohost = ">= 11.2.13" yunohost = ">= 11.2.18"
helpers_version = "2.1"
architectures = ["amd64", "arm64"] architectures = ["amd64", "arm64"]
multi_instance = false multi_instance = false
ldap = true ldap = true
@ -65,6 +66,7 @@ ram.runtime = "500M"
home = "/opt/yunohost/__APP__" home = "/opt/yunohost/__APP__"
[resources.install_dir] [resources.install_dir]
group = "www-data:r-x"
dir = "/opt/yunohost/__APP__" dir = "/opt/yunohost/__APP__"
owner = "__APP__:rwx" owner = "__APP__:rwx"
group = "www-data:rx" group = "www-data:rx"

View file

@ -31,7 +31,7 @@ fi
#================================================= #=================================================
run_seafile_cmd() { run_seafile_cmd() {
ynh_exec_warn_less systemd-run --wait --uid="$app" --gid="$app" \ ynh_hide_warnings systemd-run --wait --uid="$app" --gid="$app" \
--property=RootDirectory="$install_dir"/seafile_image \ --property=RootDirectory="$install_dir"/seafile_image \
--property="BindPaths=$systemd_seafile_bind_mount" \ --property="BindPaths=$systemd_seafile_bind_mount" \
$@ $@
@ -76,14 +76,15 @@ set_permission() {
clean_url_in_db_config() { clean_url_in_db_config() {
sql_request='DELETE FROM `constance_config` WHERE `constance_key`= "SERVICE_URL"' sql_request='DELETE FROM `constance_config` WHERE `constance_key`= "SERVICE_URL"'
ynh_mysql_execute_as_root --sql="$sql_request" --database=seahubdb ynh_mysql_db_shell <<< "$sql_request" --database=seahubdb
sql_request='DELETE FROM `constance_config` WHERE `constance_key`= "FILE_SERVER_ROOT"' sql_request='DELETE FROM `constance_config` WHERE `constance_key`= "FILE_SERVER_ROOT"'
ynh_mysql_execute_as_root --sql="$sql_request" --database=seahubdb ynh_mysql_db_shell <<< "$sql_request" --database=seahubdb
} }
ensure_vars_set() { ensure_vars_set() {
# FIXMEhelpers2.1: maybe replace with: ynh_app_setting_set_default --key=jwt_private_key_notification_server --value=$(ynh_string_random -l 32)
if [ -z "${jwt_private_key_notification_server:-}" ]; then if [ -z "${jwt_private_key_notification_server:-}" ]; then
jwt_private_key_notification_server=$(ynh_string_random -l 32) jwt_private_key_notification_server=$(ynh_string_random -l 32)
ynh_app_setting_set --app="$app" --key=jwt_private_key_notification_server --value="$jwt_private_key_notification_server" ynh_app_setting_set --key=jwt_private_key_notification_server --value="$jwt_private_key_notification_server"
fi fi
} }

View file

@ -15,7 +15,7 @@ seafile_version=$(ynh_app_upstream_version)
seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_version" seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_version"
if systemctl is-active seafile --quiet || systemctl is-active seahub --quiet; then if systemctl is-active seafile --quiet || systemctl is-active seahub --quiet; then
ynh_print_warn --message="It's hightly recommended to make your backup when the service is stopped. Please stop seafile service and seahub service with this command before to run the backup 'systemctl stop seafile.service seahub.service'" ynh_print_warn "It's hightly recommended to make your backup when the service is stopped. Please stop seafile service and seahub service with this command before to run the backup 'systemctl stop seafile.service seahub.service'"
fi fi
#================================================= #=================================================
@ -23,24 +23,25 @@ fi
#================================================= #=================================================
# # Backup app files # # Backup app files
ynh_print_info --message="Backing up code..." ynh_print_info "Backing up code..."
ynh_backup --src_path="$install_dir" ynh_backup "$install_dir"
ynh_print_info --message="Backing up user data..." ynh_print_info "Backing up user data..."
ynh_backup --src_path="$data_dir" --dest_path="data" --is_big=1 ynh_backup "$data_dir" --dest_path="data"
ynh_print_info --message="Backing up configuration..."
ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/${app}.conf" ynh_print_info "Backing up configuration..."
ynh_backup --src_path=/etc/systemd/system/seafile.service ynh_backup "/etc/nginx/conf.d/$domain.d/${app}.conf"
ynh_backup --src_path=/etc/systemd/system/seahub.service ynh_backup /etc/systemd/system/seafile.service
ynh_backup --src_path=/etc/fail2ban/jail.d/"$app".conf ynh_backup /etc/systemd/system/seahub.service
ynh_backup --src_path=/etc/fail2ban/filter.d/"$app".conf ynh_backup /etc/fail2ban/jail.d/"$app".conf
ynh_backup /etc/fail2ban/filter.d/"$app".conf
# Backup logs # Backup logs
ynh_backup --src_path="/var/log/$app" ynh_backup "/var/log/$app"
# Backup mysql # Backup mysql
ynh_print_info --message="Backing up database" ynh_print_info "Backing up database"
ynh_mysql_dump_db --database="$db_name" > "${YNH_CWD}"/seafiledb.dmp ynh_mysql_dump_db > "${YNH_CWD}"/seafiledb.dmp
ynh_mysql_dump_db --database=ccnetdb > "${YNH_CWD}"/ccnetdb.dmp ynh_mysql_dump_db --database=ccnetdb > "${YNH_CWD}"/ccnetdb.dmp
ynh_mysql_dump_db --database=seahubdb > "${YNH_CWD}"/seahubdb.dmp ynh_mysql_dump_db --database=seahubdb > "${YNH_CWD}"/seahubdb.dmp
ynh_print_info --message="Backup script completed for $app. (YunoHost will then actually copy those files to the archive)." ynh_print_info "Backup script completed for $app. (YunoHost will then actually copy those files to the archive)."

View file

@ -14,35 +14,33 @@ source /usr/share/yunohost/helpers
seafile_version="$(ynh_app_upstream_version)" seafile_version="$(ynh_app_upstream_version)"
seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_version" seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_version"
#=================================================
# STANDARD MODIFICATIONS
#================================================= #=================================================
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1 ynh_script_progression "Updating NGINX web server configuration..."
ynh_change_url_nginx_config ynh_config_change_url_nginx
#================================================= #=================================================
# SPECIFIC MODIFICATIONS # SPECIFIC MODIFICATIONS
#================================================= #=================================================
ynh_script_progression --message="Stoping services..." ynh_script_progression "Stoping services..."
# Stop service before any change # Stop service before any change
ynh_systemd_action --service_name=seafile --action=stop ynh_systemctl --service=seafile --action=stop
ynh_systemd_action --service_name=seahub --action=stop ynh_systemctl --service=seahub --action=stop
sleep 2 sleep 2
pkill -f seafile-controller || true pkill -f seafile-controller || true
pkill -f seaf-server || true pkill -f seaf-server || true
pkill -f ccnet-server || true pkill -f ccnet-server || true
pkill -f seahub || true pkill -f seahub || true
ynh_script_progression --message="Updating seafile configuration..." ynh_script_progression "Updating seafile configuration..."
# Update Seafile Config # Update Seafile Config
ynh_add_config --jinja --template=seahub_settings.py --destination="$install_dir"/conf/seahub_settings.py ynh_config_add --jinja --template=seahub_settings.py --destination="$install_dir"/conf/seahub_settings.py
ynh_add_config --template=ccnet.conf --destination="$install_dir"/conf/ccnet.conf ynh_config_add --template=ccnet.conf --destination="$install_dir"/conf/ccnet.conf
ynh_add_config --template=gunicorn.conf.py --destination="$install_dir"/conf/gunicorn.conf.py ynh_config_add --template=gunicorn.conf.py --destination="$install_dir"/conf/gunicorn.conf.py
ynh_add_config --template=seafdav.conf --destination="$install_dir"/conf/seafdav.conf ynh_config_add --template=seafdav.conf --destination="$install_dir"/conf/seafdav.conf
# Update permissions # Update permissions
ynh_permission_url --permission=file_server --url="$domain"/seafhttp ynh_permission_url --permission=file_server --url="$domain"/seafhttp
@ -55,9 +53,9 @@ clean_url_in_db_config
sleep 2 sleep 2
# Reload services # Reload services
ynh_script_progression --message="Starting services..." ynh_script_progression "Starting services..."
ynh_systemd_action --service_name=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log ynh_systemctl --service=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log
ynh_systemd_action --service_name=seahub -l "Started Seafile hub." -p "systemd" ynh_systemctl --service=seahub -l "Started Seafile hub." -p "systemd"
sleep 2 sleep 2
ynh_script_progression --message="Change of URL completed for $app" --time=--last ynh_script_progression "Change of URL completed for $app" --time=

View file

@ -17,11 +17,9 @@ seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_ver
ensure_vars_set ensure_vars_set
#=================================================
# STANDARD MODIFICATIONS
#================================================= #=================================================
ynh_script_progression --message="Creating base directory..." ynh_script_progression "Creating base directory..."
if [ -n "$(ls -A "$data_dir")" ]; then if [ -n "$(ls -A "$data_dir")" ]; then
old_data_dir_path="${data_dir}_$(date '+%Y%m%d.%H%M%S')" old_data_dir_path="${data_dir}_$(date '+%Y%m%d.%H%M%S')"
@ -35,25 +33,25 @@ mkdir -p "$data_dir"/{seafile-data,seahub-data}
mkdir -p "$install_dir"/{conf,ccnet} mkdir -p "$install_dir"/{conf,ccnet}
# Download new version from sources # Download new version from sources
ynh_script_progression --message="Installing sources files..." --weight=7 ynh_script_progression "Installing sources files..."
install_source install_source
# init databases # init databases
ynh_script_progression --message="Configuring MySQL database..." ynh_script_progression "Configuring MySQL database..."
db_user=seafile db_user=seafile
ynh_''mysql_setup_db --db_user="$db_user" --db_name=ccnetdb --db_pwd="$db_pwd" ynh_''mysql_setup_db --db_user="$db_user" --db_name=ccnetdb --db_pwd="$db_pwd"
ynh_''mysql_setup_db --db_user="$db_user" --db_name=seahubdb --db_pwd="$db_pwd" ynh_''mysql_setup_db --db_user="$db_user" --db_name=seahubdb --db_pwd="$db_pwd"
ynh_script_progression --message="Configuring application..." --weight=3 ynh_script_progression "Configuring application..."
# Run install script # Run install script
set_permission set_permission
ynh_replace_special_string --match_string='seafile_config.seafile_dir = seafile_config.validate_seafile_dir(seafile_dir)' \ ynh_replace_regex --match='seafile_config.seafile_dir = seafile_config.validate_seafile_dir(seafile_dir)' \
--replace_string='seafile_config.seafile_dir = seafile_dir' \ --replace='seafile_config.seafile_dir = seafile_dir' \
--target_file="$seafile_code/setup-seafile-mysql.py" --file="$seafile_code/setup-seafile-mysql.py"
ynh_replace_special_string --match_string="Utils.error('Ccnet config dir \\\"%s\\\" already exists.' % ccnet_config.ccnet_dir)" \ ynh_replace_regex --match="Utils.error('Ccnet config dir \\\"%s\\\" already exists.' % ccnet_config.ccnet_dir)" \
--replace_string='patched = 1' \ --replace='patched = 1' \
--target_file="$seafile_code/setup-seafile-mysql.py" --file="$seafile_code/setup-seafile-mysql.py"
run_seafile_cmd bash "/opt/seafile/seafile-server-$seafile_version/setup-seafile-mysql.sh" auto \ run_seafile_cmd bash "/opt/seafile/seafile-server-$seafile_version/setup-seafile-mysql.sh" auto \
--server-name "$server_name" \ --server-name "$server_name" \
--server-ip "$domain" \ --server-ip "$domain" \
@ -69,79 +67,77 @@ run_seafile_cmd bash "/opt/seafile/seafile-server-$seafile_version/setup-seafile
# Retrive values from auto generated config file # Retrive values from auto generated config file
seahub_secret_key=$(grep -P 'SECRET_KEY\s*=\s*".+"' "$install_dir"/conf/seahub_settings.py | cut -d'"' -f2) seahub_secret_key=$(grep -P 'SECRET_KEY\s*=\s*".+"' "$install_dir"/conf/seahub_settings.py | cut -d'"' -f2)
ynh_app_setting_set --app="$app" --key=seahub_secret_key --value="$seahub_secret_key" ynh_app_setting_set --key=seahub_secret_key --value="$seahub_secret_key"
# Update seafile config files # Update seafile config files
ynh_add_config --jinja --template=seahub_settings.py --destination="$install_dir"/conf/seahub_settings.py ynh_config_add --jinja --template=seahub_settings.py --destination="$install_dir"/conf/seahub_settings.py
ynh_add_config --template=seafile.conf --destination="$install_dir"/conf/seafile.conf ynh_config_add --template=seafile.conf --destination="$install_dir"/conf/seafile.conf
ynh_add_config --template=ccnet.conf --destination="$install_dir"/conf/ccnet.conf ynh_config_add --template=ccnet.conf --destination="$install_dir"/conf/ccnet.conf
ynh_add_config --template=gunicorn.conf.py --destination="$install_dir"/conf/gunicorn.conf.py ynh_config_add --template=gunicorn.conf.py --destination="$install_dir"/conf/gunicorn.conf.py
ynh_add_config --template=seafdav.conf --destination="$install_dir"/conf/seafdav.conf ynh_config_add --template=seafdav.conf --destination="$install_dir"/conf/seafdav.conf
ynh_add_config --template=seafevents.conf --destination="$install_dir"/conf/seafevents.conf ynh_config_add --template=seafevents.conf --destination="$install_dir"/conf/seafevents.conf
# Configure admin info # Configure admin info
# It will be used the first start # It will be used the first start
admin_email=$(ynh_user_get_info --username="$admin" --key='mail') admin_email=$(ynh_user_get_info --username="$admin" --key='mail')
cp ../conf/create_admin.json $install_dir/conf/admin.txt cp ../conf/create_admin.json $install_dir/conf/admin.txt
ynh_replace_string --match_string=__ADMIN__ --replace_string="$admin_email" --target_file=$install_dir/conf/admin.txt ynh_replace --match=__ADMIN__ --replace="$admin_email" --file=$install_dir/conf/admin.txt
ynh_replace_special_string --match_string=__PASSWORD__ --replace_string="$admin_password" --target_file=$install_dir/conf/admin.txt ynh_replace_regex --match=__PASSWORD__ --replace="$admin_password" --file=$install_dir/conf/admin.txt
# Use symlink to store data # Use symlink to store data
if [ -e "$install_dir"/seafile-data ]; then if [ -e "$install_dir"/seafile-data ]; then
mv -t "$data_dir"/seafile-data "$install_dir"/seafile-data/* mv -t "$data_dir"/seafile-data "$install_dir"/seafile-data/*
ynh_secure_remove --file="$install_dir"/seafile-data ynh_safe_rm "$install_dir"/seafile-data
fi fi
if [ -e "$install_dir"/seahub-data ]; then if [ -e "$install_dir"/seahub-data ]; then
mv -t "$data_dir"/seahub-data "$install_dir"/seahub-data/* mv -t "$data_dir"/seahub-data "$install_dir"/seahub-data/*
ynh_secure_remove --file="$install_dir"/seahub-data ynh_safe_rm "$install_dir"/seahub-data
fi fi
if [ -e "$install_dir"/logs ]; then if [ -e "$install_dir"/logs ]; then
mv -t /var/log/"$app" "$install_dir"/logs/* mv -t /var/log/"$app" "$install_dir"/logs/*
ynh_secure_remove --file="$install_dir"/logs ynh_safe_rm "$install_dir"/logs
fi fi
ln -s "$data_dir"/seafile-data "$install_dir"/seafile-data ln -s "$data_dir"/seafile-data "$install_dir"/seafile-data
ln -s "$data_dir"/seahub-data "$install_dir"/seahub-data ln -s "$data_dir"/seahub-data "$install_dir"/seahub-data
ln -s /var/log/"$app" "$install_dir"/logs ln -s /var/log/"$app" "$install_dir"/logs
# Fix local warning # Fix local warning
ynh_replace_string --match_string=en_US.UTF-8 --replace_string="${LANG:-'en_US.UTF-8'}" --target_file="$seafile_code/seahub.sh" ynh_replace --match=en_US.UTF-8 --replace="${LANG:-'en_US.UTF-8'}" --file="$seafile_code/seahub.sh"
# Add Seafile Server to startup # Add Seafile Server to startup
ynh_script_progression --message="Configuring a systemd service..." ynh_script_progression "Configuring $app's systemd service..."
ynh_add_systemd_config --service=seafile --template=seafile.service ynh_config_add_systemd --service=seafile --template=seafile.service
ynh_add_systemd_config --service=seahub --template=seahub.service ynh_config_add_systemd --service=seahub --template=seahub.service
# register yunohost service # register yunohost service
yunohost service add seafile --description 'Main service for seafile server.' yunohost service add seafile --description 'Main service for seafile server.'
yunohost service add seahub --description 'Seafile server web interface.' yunohost service add seahub --description 'Seafile server web interface.'
# Config nginx # Config nginx
ynh_script_progression --message="Configuring nginx..." ynh_script_progression "Configuring nginx..."
ynh_add_nginx_config ynh_config_add_nginx
# Add logrotate # Add logrotate
ynh_script_progression --message="Configuring log rotation..." ynh_script_progression "Configuring log rotation..."
ynh_use_logrotate --logfile=/var/log/"$app" ynh_config_add_logrotate /var/log/"$app"
# Add fail2ban # Add fail2ban
ynh_script_progression --message="Configuring fail2ban..." ynh_script_progression "Configuring fail2ban..."
ynh_add_fail2ban_config --use_template ynh_config_add_fail2ban
#=================================================
# GENERIC FINALIZATION
#================================================= #=================================================
# Set all permissions # Set all permissions
ynh_script_progression --message="Protecting directory..." ynh_script_progression "Protecting directory..."
set_permission set_permission
# Start service # Start service
sleep 3 sleep 3
ynh_script_progression --message="Starting seafile services..." ynh_script_progression "Starting seafile services..."
ynh_systemd_action --service_name=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log ynh_systemctl --service=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log
sleep 2 sleep 2
ynh_systemd_action --service_name=seahub -l "Started Seafile hub." -p "systemd" ynh_systemctl --service=seahub -l "Started Seafile hub." -p "systemd"
sleep 2 sleep 2
ynh_script_progression --message="Installation of $app completed" --last ynh_script_progression "Installation of $app completed"

View file

@ -18,11 +18,11 @@ seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_ver
# STANDARD REMOVE # STANDARD REMOVE
#================================================= #=================================================
ynh_script_progression --message="Stoping services..." ynh_script_progression "Stoping services..."
# Stop all services # Stop all services
ynh_systemd_action --service_name=seafile --action=stop ynh_systemctl --service=seafile --action=stop
ynh_systemd_action --service_name=seahub --action=stop ynh_systemctl --service=seahub --action=stop
# Force to kill all process in case of a process is not stoped cleanly # Force to kill all process in case of a process is not stoped cleanly
pkill -f seafile-controller || true pkill -f seafile-controller || true
@ -30,35 +30,36 @@ pkill -f seaf-server || true
pkill -f ccnet-server || true pkill -f ccnet-server || true
pkill -f seahub || true pkill -f seahub || true
ynh_script_progression --message="Removing code..." ynh_script_progression "Removing code..."
ynh_secure_remove --file=/var/www/"$app" ynh_safe_rm /var/www/"$app"
ynh_secure_remove --file=/opt/yunohost/"$app" ynh_safe_rm /opt/yunohost/"$app"
# Remove databases # Remove databases
ynh_script_progression --message="Removing databases..." ynh_script_progression "Removing databases..."
db_helper=ynh_"mysql"_remove_db db_helper=ynh_"mysql"_remove_db
$db_helper --db_name ccnetdb --db_user seafile $db_helper --db_name ccnetdb --db_user seafile
$db_helper --db_name seahubdb --db_user seafile $db_helper --db_name seahubdb --db_user seafile
# Remove systemd service # Remove systemd service
ynh_script_progression --message="Removing systemd units..." ynh_script_progression "Removing systemd units..."
ynh_remove_systemd_config --service=seafile ynh_config_remove_systemdseafile
ynh_remove_systemd_config --service=seahub ynh_config_remove_systemdseahub
# Remove nginx config # Remove nginx config
ynh_script_progression --message="Removing nginx configuration..." ynh_script_progression "Removing nginx configuration..."
ynh_remove_nginx_config ynh_config_remove_nginx
# Remove logrotate # Remove logrotate
ynh_remove_logrotate ynh_config_remove_logrotate
# Remove the dedicated fail2ban config # Remove the dedicated fail2ban config
ynh_script_progression --message="Removing fail2ban configuration..." ynh_script_progression "Removing fail2ban configuration..."
ynh_remove_fail2ban_config ynh_config_remove_fail2ban
ynh_script_progression --message="Removing seafile service..." ynh_script_progression "Removing seafile service..."
yunohost service remove seafile yunohost service remove seafile
yunohost service remove seahub yunohost service remove seahub
ynh_script_progression --message="Removal of $app completed" --last ynh_script_progression "Removal of $app completed"
sleep 1 sleep 1

View file

@ -14,18 +14,17 @@ source /usr/share/yunohost/helpers
seafile_version="$(ynh_app_upstream_version)" seafile_version="$(ynh_app_upstream_version)"
seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_version" seafile_code="$install_dir/seafile_image/opt/seafile/seafile-server-$seafile_version"
ynh_script_progression --message="Loading settings..." ynh_script_progression "Loading settings..."
#================================================= #=================================================
# STANDARD RESTORATION STEPS # STANDARD RESTORATION STEPS
#================================================= #=================================================
# Restore all config and data # Restore all config and data
ynh_script_progression --message="Restoring files..." --weight=10 ynh_script_progression "Restoring files..."
ynh_restore ynh_restore_everything
# Restore mysql dump # Restore mysql dump
ynh_script_progression --message="Restoring database..." --weight=3 ynh_script_progression "Restoring database..."
db_helper=ynh_"mysql"_setup_db db_helper=ynh_"mysql"_setup_db
$db_helper --db_user "$db_user" --db_name ccnetdb --db_pwd "$db_pwd" $db_helper --db_user "$db_user" --db_name ccnetdb --db_pwd "$db_pwd"
$db_helper --db_user "$db_user" --db_name seahubdb --db_pwd "$db_pwd" $db_helper --db_user "$db_user" --db_name seahubdb --db_pwd "$db_pwd"
@ -33,45 +32,43 @@ su -c "mysql -u ${app} -p$db_pwd $db_name < ${YNH_CWD}/seafiledb.dmp"
su -c "mysql -u ${app} -p$db_pwd ccnetdb < ${YNH_CWD}/ccnetdb.dmp" su -c "mysql -u ${app} -p$db_pwd ccnetdb < ${YNH_CWD}/ccnetdb.dmp"
su -c "mysql -u ${app} -p$db_pwd seahubdb < ${YNH_CWD}/seahubdb.dmp" su -c "mysql -u ${app} -p$db_pwd seahubdb < ${YNH_CWD}/seahubdb.dmp"
#=================================================
# GENERIC FINALIZATION
#================================================= #=================================================
# Add logrotate # Add logrotate
ynh_script_progression --message="Configuring log rotation..." ynh_script_progression "Configuring log rotation..."
mkdir -p /var/log/"$app" mkdir -p /var/log/"$app"
ynh_use_logrotate --logfile="$install_dir"/logs ynh_config_add_logrotate "$install_dir"/logs
# Set all permissions # Set all permissions
ynh_script_progression --message="Protecting directory..." ynh_script_progression "Protecting directory..."
set_permission set_permission
# Enable service and start seafile # Enable service and start seafile
ynh_script_progression --message="Reconfiguring application..." ynh_script_progression "Reconfiguring application..."
systemctl daemon-reload systemctl daemon-reload
systemctl enable seafile --quiet systemctl enable seafile --quiet
systemctl enable seahub --quiet systemctl enable seahub --quiet
# Add Seafile to YunoHost's monitored services # Add Seafile to YunoHost's monitored services
ynh_script_progression --message="Register seafile service..." ynh_script_progression "Register seafile service..."
yunohost service add seafile --description 'Main service for seafile server.' yunohost service add seafile --description 'Main service for seafile server.'
yunohost service add seahub --description 'Seafile server web interface.' yunohost service add seahub --description 'Seafile server web interface.'
ynh_script_progression --message="Reloading services..." ynh_script_progression "Reloading services..."
# Reload nginx # Reload nginx
systemctl reload nginx.service systemctl reload nginx.service
# Reload fail2ban # Reload fail2ban
ynh_systemd_action --service_name=fail2ban --action=reload ynh_systemctl --service=fail2ban --action=reload
# Avoid the current effect # Avoid the current effect
sleep 5 sleep 5
# Restart service # Restart service
ynh_script_progression --message="Starting seafile services..." --weight=3 ynh_script_progression "Starting seafile services..."
ynh_systemd_action --service_name=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log ynh_systemctl --service=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log
ynh_systemd_action --service_name=seahub -l "Started Seafile hub." -p "systemd" ynh_systemctl --service=seahub -l "Started Seafile hub." -p "systemd"
sleep 2 sleep 2
ynh_script_progression --message="Restoration completed for $app" --last ynh_script_progression "Restoration completed for $app"

View file

@ -23,10 +23,10 @@ if [ "$YNH_APP_CURRENT_VERSION" == '-' ] || ynh_compare_current_package_version
ynh_die "Upgrade from this version not supported" ynh_die "Upgrade from this version not supported"
fi fi
ynh_script_progression --message="Stoping services..." ynh_script_progression "Stoping services..."
ynh_systemd_action --service_name=seafile --action=stop ynh_systemctl --service=seafile --action=stop
ynh_systemd_action --service_name=seahub --action=stop ynh_systemctl --service=seahub --action=stop
sleep 5 sleep 5
pkill -f seafile-controller || true pkill -f seafile-controller || true
pkill -f seaf-server || true pkill -f seaf-server || true
@ -42,14 +42,15 @@ if mysqlshow | grep -q seafiledb; then
$mysqlconn -e "RENAME TABLE seafiledb.$name to $db_name.$name"; $mysqlconn -e "RENAME TABLE seafiledb.$name to $db_name.$name";
done; done;
$mysqlconn -e "DROP DATABASE seafiledb" $mysqlconn -e "DROP DATABASE seafiledb"
ynh_replace_string --match_string='db_name = seafiledb' --replace_string='db_name = seafile' --target_file="$install_dir"/conf/seafile.conf ynh_replace --match='db_name = seafiledb' --replace='db_name = seafile' --file="$install_dir"/conf/seafile.conf
sed -i "s|password\s*=\s*.*^|password = $db_pwd|g" "$install_dir"/conf/seafile.conf sed -i "s|password\s*=\s*.*^|password = $db_pwd|g" "$install_dir"/conf/seafile.conf
fi fi
# Set missing settings # Set missing settings
# FIXMEhelpers2.1: maybe replace with: ynh_app_setting_set_default --key=seahub_secret_key --value="$(grep -P 'SECRET_KEY\s*=\s*".+"' "$install_dir"/conf/seahub_settings.py | cut -d'"' -f2)"
if [ -z "${seahub_secret_key:-}" ]; then if [ -z "${seahub_secret_key:-}" ]; then
seahub_secret_key="$(grep -P 'SECRET_KEY\s*=\s*".+"' "$install_dir"/conf/seahub_settings.py | cut -d'"' -f2)" seahub_secret_key="$(grep -P 'SECRET_KEY\s*=\s*".+"' "$install_dir"/conf/seahub_settings.py | cut -d'"' -f2)"
ynh_app_setting_set --app="$app" --key=seahub_secret_key --value="$seahub_secret_key" ynh_app_setting_set --key=seahub_secret_key --value="$seahub_secret_key"
fi fi
# #
@ -97,15 +98,15 @@ if [ ! -L "$install_dir"/logs ]; then
ln -s /var/log/"${app}" "$install_dir"/logs ln -s /var/log/"${app}" "$install_dir"/logs
fi fi
ynh_script_progression --message="Upgrading source files..." --weight=6 ynh_script_progression "Upgrading source files..."
# Download new version from sources # Download new version from sources
ynh_script_progression --message="Installing sources files..." --weight=7 ynh_script_progression "Installing sources files..."
if [ "$YNH_APP_UPGRADE_TYPE" == UPGRADE_APP ]; then if [ "$YNH_APP_UPGRADE_TYPE" == UPGRADE_APP ]; then
install_source install_source
fi fi
ynh_script_progression --message="Configuring application..." ynh_script_progression "Configuring application..."
# permission to execute update script and expect helper # permission to execute update script and expect helper
set_permission set_permission
@ -128,7 +129,7 @@ case "$installed_version" in
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/seahub.sh" python-env python3 "/opt/seafile/seafile-server-$seafile_version/seahub/manage.py" migrate_file_comment run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/seahub.sh" python-env python3 "/opt/seafile/seafile-server-$seafile_version/seahub/manage.py" migrate_file_comment
# Update seafile by script # Update seafile by script
ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file="$seafile_code/upgrade/upgrade_7.0_7.1.sh" ynh_replace --match='read dummy' --replace='# patched' --file="$seafile_code/upgrade/upgrade_7.0_7.1.sh"
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_7.0_7.1.sh" run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_7.0_7.1.sh"
# Fix seafile data link. Look like that the upgrade script of seafile don't always work correctly # Fix seafile data link. Look like that the upgrade script of seafile don't always work correctly
@ -139,90 +140,86 @@ case "$installed_version" in
ln -s "$data_dir" "$install_dir"/seafile-data ln -s "$data_dir" "$install_dir"/seafile-data
;& ;&
"7.1."* ) "7.1."* )
ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file="$seafile_code/upgrade/upgrade_8.0_9.0.sh" ynh_replace --match='read dummy' --replace='# patched' --file="$seafile_code/upgrade/upgrade_8.0_9.0.sh"
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_8.0_9.0.sh" run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_8.0_9.0.sh"
;& ;&
"8.0."* ) "8.0."* )
ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file="$seafile_code/upgrade/upgrade_7.1_8.0.sh" ynh_replace --match='read dummy' --replace='# patched' --file="$seafile_code/upgrade/upgrade_7.1_8.0.sh"
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_7.1_8.0.sh" run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_7.1_8.0.sh"
;& ;&
"9."* ) "9."* )
ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file="$seafile_code/upgrade/upgrade_8.0_9.0.sh" ynh_replace --match='read dummy' --replace='# patched' --file="$seafile_code/upgrade/upgrade_8.0_9.0.sh"
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_8.0_9.0.sh" run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_8.0_9.0.sh"
;& ;&
"10."* ) "10."* )
ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file="$seafile_code/upgrade/upgrade_9.0_10.0.sh" ynh_replace --match='read dummy' --replace='# patched' --file="$seafile_code/upgrade/upgrade_9.0_10.0.sh"
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_9.0_10.0.sh" run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/upgrade_9.0_10.0.sh"
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/seahub.sh" python-env python3 "/opt/seafile/seafile-server-$seafile_version/migrate_ldapusers.py" run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/seahub.sh" python-env python3 "/opt/seafile/seafile-server-$seafile_version/migrate_ldapusers.py"
;& ;&
esac esac
ynh_replace_string --match_string='read dummy' --replace_string='# patched' --target_file="$seafile_code/upgrade/minor-upgrade.sh" ynh_replace --match='read dummy' --replace='# patched' --file="$seafile_code/upgrade/minor-upgrade.sh"
run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/minor-upgrade.sh" run_seafile_cmd "/opt/seafile/seafile-server-$seafile_version/upgrade/minor-upgrade.sh"
# Clean url in config in DB # Clean url in config in DB
clean_url_in_db_config clean_url_in_db_config
# Update seafile config files # Update seafile config files
ynh_add_config --jinja --template=seahub_settings.py --destination="$install_dir"/conf/seahub_settings.py ynh_config_add --jinja --template=seahub_settings.py --destination="$install_dir"/conf/seahub_settings.py
ynh_add_config --template=seafile.conf --destination="$install_dir"/conf/seafile.conf ynh_config_add --template=seafile.conf --destination="$install_dir"/conf/seafile.conf
ynh_add_config --template=ccnet.conf --destination="$install_dir"/conf/ccnet.conf ynh_config_add --template=ccnet.conf --destination="$install_dir"/conf/ccnet.conf
ynh_add_config --template=gunicorn.conf.py --destination="$install_dir"/conf/gunicorn.conf.py ynh_config_add --template=gunicorn.conf.py --destination="$install_dir"/conf/gunicorn.conf.py
ynh_add_config --template=seafdav.conf --destination="$install_dir"/conf/seafdav.conf ynh_config_add --template=seafdav.conf --destination="$install_dir"/conf/seafdav.conf
ynh_add_config --template=seafevents.conf --destination="$install_dir"/conf/seafevents.conf ynh_config_add --template=seafevents.conf --destination="$install_dir"/conf/seafevents.conf
# Fix local warning # Fix local warning
ynh_replace_string --match_string=en_US.UTF-8 --replace_string="${LANG:-'en_US.UTF-8'}" --target_file="$seafile_code/seahub.sh" ynh_replace --match=en_US.UTF-8 --replace="${LANG:-'en_US.UTF-8'}" --file="$seafile_code/seahub.sh"
#=================================================
# STANDARD UPGRADE STEPS
#================================================= #=================================================
# Config nginx # Config nginx
ynh_add_nginx_config 'seahub_port fileserver_port webdav_port' ynh_config_add_nginx 'seahub_port fileserver_port webdav_port'
# Add Seafile Server to startup # Add Seafile Server to startup
ynh_script_progression --message="Updating systemd units..." ynh_script_progression "Updating systemd units..."
ynh_add_systemd_config --service=seafile --template=seafile.service ynh_config_add_systemd --service=seafile --template=seafile.service
ynh_add_systemd_config --service=seahub --template=seahub.service ynh_config_add_systemd --service=seahub --template=seahub.service
#=================================================
# GENERIC FINALIZATION
#================================================= #=================================================
# Set all permissions # Set all permissions
ynh_script_progression --message="Protecting directory..." ynh_script_progression "Protecting directory..."
set_permission set_permission
# Add logrotate # Add logrotate
ynh_script_progression --message="Configuring log rotation..." ynh_script_progression "Configuring log rotation..."
ynh_use_logrotate --logfile=/var/log/"$app" --nonappend ynh_config_add_logrotate /var/log/"$app"
# Add fail2ban # Add fail2ban
ynh_script_progression --message="Configuring fail2ban..." --weight=10 ynh_script_progression "Configuring fail2ban..."
ynh_add_fail2ban_config --use_template ynh_config_add_fail2ban
# register yunohost service # register yunohost service
ynh_script_progression --message="Register seafile service..." ynh_script_progression "Register seafile service..."
yunohost service add seafile --description 'Main service for seafile server.' yunohost service add seafile --description 'Main service for seafile server.'
yunohost service add seahub --description 'Seafile server web interface.' yunohost service add seahub --description 'Seafile server web interface.'
# delete seafile cache # delete seafile cache
# restart seafile server # restart seafile server
ynh_script_progression --message="Starting seafile services..." --weight=3 ynh_script_progression "Starting seafile services..."
sleep 5 sleep 5
ynh_systemd_action --service_name=memcached.service -p "systemd" ynh_systemctl --service=memcached.service -p "systemd"
ynh_systemd_action --service_name=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log ynh_systemctl --service=seafile -l "spawned seaf-server, pid " -p /var/log/seafile/controller.log
ynh_systemd_action --service_name=seahub -l "Started Seafile hub." -p "systemd" ynh_systemctl --service=seahub -l "Started Seafile hub." -p "systemd"
sleep 2 sleep 2
# remove old version files # remove old version files
ynh_script_progression --message="Cleaning system and updating settings..." ynh_script_progression "Cleaning system and updating settings..."
for f in "$install_dir"/seafile-server-*;do for f in "$install_dir"/seafile-server-*;do
if [[ ! "$f" =~ ${seafile_version//./\\.}|latest ]]; then if [[ ! "$f" =~ ${seafile_version//./\\.}|latest ]]; then
ynh_secure_remove --file="$f" ynh_safe_rm "$f"
fi fi
done done
ynh_script_progression --message="Upgrade of $app completed" --last ynh_script_progression "Upgrade of $app completed"