diff --git a/scripts/_common.sh b/scripts/_common.sh index be540ee..3975534 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -30,6 +30,11 @@ cache_path="/var/cache/$app" #================================================= install_jellyfin_packages() { + # Get version numbers from manifest UNUSED because update_version.py uses the hard-coded variables + # pkg_version="$(ynh_app_upstream_version)" + # ffmpeg_url="$(ynh_read_manifest --manifest_key="resources.sources.ffmpeg_${debian}.${YNH_ARCH}.url")" + # ffmpeg_pkg_version="$(echo "$ffmpeg_url" | sed "s/.*\/jellyfin-ffmpeg[0-9]*_\([0-9.-]*\)-${debian}_${YNH_ARCH}.deb/\1/")" + # Create the temporary directory tempdir="$(mktemp -d)" diff --git a/scripts/backup b/scripts/backup index 995e80b..52bbcf6 100644 --- a/scripts/backup +++ b/scripts/backup @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -24,23 +22,13 @@ ynh_backup --src_path="$config_path" ynh_backup --src_path="/etc/default/jellyfin" --not_mandatory #================================================= -# BACKUP THE NGINX CONFIGURATION +# SYSTEM CONFIGURATION #================================================= ynh_backup --src_path="/etc/nginx/conf.d/$domain.d/$app.conf" -#================================================= -# SPECIFIC BACKUP -#================================================= -# BACKUP LOGROTATE -#================================================= - ynh_backup --src_path="/etc/logrotate.d/$app" -#================================================= -# BACKUP SYSTEMD -#================================================= - ynh_backup --src_path="/etc/systemd/system/jellyfin.service.d" --not_mandatory #================================================= diff --git a/scripts/change_url b/scripts/change_url index 38754c3..6fed8b7 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC STARTING #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -9,14 +7,12 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# STANDARD MODIFICATIONS #================================================= # STOP SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Stopping a systemd service..." --weight=2 +ynh_script_progression --message="Stopping $app's systemd service..." --weight=2 -ynh_systemd_action --service_name=$app --action="stop" --log_path="systemd" --timeout=15 +ynh_systemd_action --service_name="$app" --action="stop" --log_path="systemd" --timeout=15 #================================================= # MODIFY URL IN NGINX CONF @@ -25,15 +21,12 @@ ynh_script_progression --message="Updating NGINX web server configuration..." -- ynh_change_url_nginx_config -#================================================= -# SPECIFIC MODIFICATIONS #================================================= # BASE URL #================================================= # Change the path in system.xml config file -if [ $change_path -eq 1 ] -then +if [ $change_path -eq 1 ]; then # If somehow was not replaced during install if grep -q "" "$config_path/network.xml"; then ynh_replace_string --match_string="" --replace_string="$new_path" --target_file="$config_path/network.xml" @@ -42,14 +35,12 @@ then fi fi -#================================================= -# GENERIC FINALISATION #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=2 +ynh_script_progression --message="Starting $app's systemd service..." --weight=2 -ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --timeout=15 +ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --timeout=15 #================================================= # END OF SCRIPT diff --git a/scripts/install b/scripts/install index 9cb6105..a4bb507 100644 --- a/scripts/install +++ b/scripts/install @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -19,13 +17,26 @@ fi ynh_app_setting_set --app="$app" --key=config_path --value="$config_path" #================================================= -# STANDARD MODIFICATIONS +# SYSTEM CONFIGURATION +#=================================================ç +ynh_script_progression --message="Configuring the dedicated system user..." --weight=1 + +if getent group render && ! id -Gn "$app" | grep -qw "\brender\b" >/dev/null; then + # Add user to render group + adduser "$app" render +fi + #================================================= # OPEN PORTS #================================================= ynh_script_progression --message="Checking whether to open ports..." --weight=1 configure_jellyfin_discovery_ports install +ports_args=() +if [[ "${opened_ports:-__NOTHING__}" != "__NOTHING__" ]]; then + ports_args=( "--needs_exposed_ports" "${opened_ports[@]}" ) +fi + #================================================= # INSTALL PACKAGES #================================================= @@ -33,20 +44,6 @@ ynh_script_progression --message="Installing packages..." --weight=1 install_jellyfin_packages -#================================================= -# SYSTEM CONFIGURATION -#=================================================ç -ynh_script_progression --message="Adding system configurations related to $app..." --weight=1 - -if getent group render && ! id -Gn "$app" | grep -qw "\brender\b" >/dev/null; then - # Add user to render group - adduser "$app" render -fi - -ynh_add_nginx_config - -#================================================= -# SPECIFIC SETUP #================================================= # ADD A CONFIGURATION #================================================= @@ -87,42 +84,29 @@ ynh_script_progression --message="Adding multimedia directories..." --weight=2 # Build YunoHost multimedia directories ynh_multimedia_build_main_dir + # Allow Jellyfin to write into these directories ynh_multimedia_addaccess "$app" #================================================= -# GENERIC FINALIZATION +# SYSTEM CONFIGURATION #================================================= -# SETUP LOGROTATE -#================================================= -ynh_script_progression --message="Configuring log rotation..." --weight=1 +ynh_script_progression --message="Adding system configurations related to $app..." --weight=1 + +# Create a dedicated NGINX config using the conf/nginx.conf template +ynh_add_nginx_config + +ynh_add_config --template="systemd.service" --destination="/etc/systemd/system/jellyfin.service.d/baseurl.service.conf" +systemctl daemon-reload +yunohost service add "$app" --description="Jellyfin media center" "${ports_args[@]}" # Use logrotate to manage application logfile(s) ynh_use_logrotate -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 - -ports_args=() -if [[ "${opened_ports:-__NOTHING__}" != "__NOTHING__" ]]; then - ports_args+=('--needs_exposed_ports') - ports_args+=(${opened_ports}) -fi - -yunohost service add "$app" --description="Jellyfin media center" ${ports_args[@]} - -#================================================= -# EDIT SYSTEMD ENVIRONMENT VARIABLE FOR AUTO-DISCOVERY -#================================================= -ynh_add_config --template="systemd.service" --destination="/etc/systemd/system/jellyfin.service.d/baseurl.service.conf" -systemctl daemon-reload - #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 +ynh_script_progression --message="Starting $app's systemd service..." --weight=1 # Start a systemd service ynh_systemd_action --service_name="$app" --action="start" --log_path="systemd" --timeout=15 diff --git a/scripts/remove b/scripts/remove index df96e13..72d6d4e 100644 --- a/scripts/remove +++ b/scripts/remove @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -9,24 +7,16 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# STANDARD REMOVE -#================================================= -# REMOVE SERVICE INTEGRATION IN YUNOHOST -#================================================= - -# Remove the service from the list of services known by YunoHost (added from `yunohost service add`) -if ynh_exec_warn_less yunohost service status $app >/dev/null -then - ynh_script_progression --message="Removing $app service integration..." --weight=3 - yunohost service remove "$app" -fi - #================================================= # REMOVE SYSTEM CONFIGURATIONS #================================================= ynh_script_progression --message="Removing system configurations related to $app..." --weight=1 +# Remove the service from the list of services known by YunoHost (added from `yunohost service add`) +if ynh_exec_warn_less yunohost service status "$app" >/dev/null; then + yunohost service remove "$app" +fi + ynh_remove_logrotate ynh_remove_nginx_config @@ -41,11 +31,10 @@ ynh_remove_app_dependencies #================================================= # CLOSE A PORT #================================================= -ynh_script_progression --message="Checking whether to open ports..." --weight=1 +ynh_script_progression --message="Closing ports..." --weight=1 + configure_jellyfin_discovery_ports remove -#================================================= -# SPECIFIC REMOVE #================================================= # REMOVE VARIOUS FILES #================================================= diff --git a/scripts/restore b/scripts/restore index 92cd497..d89fbb6 100644 --- a/scripts/restore +++ b/scripts/restore @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -10,8 +8,6 @@ source ../settings/scripts/_common.sh source /usr/share/yunohost/helpers -#================================================= -# STANDARD RESTORATION STEPS #================================================= # RECREATE THE DEDICATED USER #================================================= @@ -29,6 +25,11 @@ fi ynh_script_progression --message="Checking whether to open ports..." --weight=1 configure_jellyfin_discovery_ports install +ports_args=() +if [[ "${opened_ports:-__NOTHING__}" != "__NOTHING__" ]]; then + ports_args=( "--needs_exposed_ports" "${opened_ports[@]}" ) +fi + #================================================= # RESTORE THE APP MAIN DIR #================================================= @@ -45,21 +46,14 @@ ynh_script_progression --message="Reinstalling packages..." --weight=7 install_jellyfin_packages -#================================================= -# RESTORE THE NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the NGINX web server configuration..." - -ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" - #================================================= # RESTORE USER RIGHTS #================================================= ynh_script_progression --message="Restoring user rights..." # Restore permissions on app files -chown -R $app: $data_path -chown -R $app: $config_path +chown -R "$app:" "$data_path" +chown -R "$app:" "$config_path" #================================================= # YUNOHOST MULTIMEDIA INTEGRATION @@ -68,52 +62,29 @@ ynh_script_progression --message="Adding multimedia directories..." --weight=2 # Build YunoHost multimedia directories ynh_multimedia_build_main_dir + # Allow Jellyfin to write into these directories -ynh_multimedia_addaccess $app +ynh_multimedia_addaccess "$app" #================================================= -# RESTORE SYSTEMD +# RESTORE SYSTEM CONFIGURATIONS #================================================= -ynh_script_progression --message="Restoring the systemd configuration..." --weight=1 +ynh_script_progression --message="Restoring system configurations related to $app..." --weight=1 + +ynh_restore_file --origin_path="/etc/nginx/conf.d/$domain.d/$app.conf" ynh_restore_file --origin_path="/etc/systemd/system/jellyfin.service.d" --not_mandatory systemctl enable jellyfin.service --quiet - -#================================================= -# RESTORE THE LOGROTATE CONFIGURATION -#================================================= -ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1 +yunohost service add "$app" --description="Jellyfin media center" "${ports_args[@]}" ynh_restore_file --origin_path="/etc/logrotate.d/$app" #================================================= -# INTEGRATE SERVICE IN YUNOHOST +# RELOAD NGINX AND PHP-FPM OR THE APP SERVICE #================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 +ynh_script_progression --message="Reloading NGINX web server and $app's service..." --weight=1 -ports_args=() -if [[ "${opened_ports:-__NOTHING__}" = "__NOTHING__" ]]; then - ports_args+=('--open-ports') - ports_args+=(${ports}) -fi - -yunohost service add "$app" --description="Jellyfin media center" "${ports_args[@]}" - - - -#================================================= -# START SYSTEMD SERVICE -#================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 - -ynh_systemd_action --service_name=$app --action="restart" --log_path="systemd" --timeout=15 - -#================================================= -# GENERIC FINALIZATION -#================================================= -# RELOAD NGINX AND PHP-FPM -#================================================= -ynh_script_progression --message="Reloading NGINX web server..." --weight=1 +ynh_systemd_action --service_name="$app" --action="restart" --log_path="systemd" --timeout=15 ynh_systemd_action --service_name=nginx --action=reload diff --git a/scripts/upgrade b/scripts/upgrade index a0fc1f8..bb71346 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -1,7 +1,5 @@ #!/bin/bash -#================================================= -# GENERIC START #================================================= # IMPORT GENERIC HELPERS #================================================= @@ -9,19 +7,10 @@ source _common.sh source /usr/share/yunohost/helpers -#================================================= -# CHECK VERSION -#================================================= -ynh_script_progression --message="Checking version..." - -upgrade_type=$(ynh_check_app_version_changed) - -#================================================= -# STANDARD UPGRADE STEPS #================================================= # STOP SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Stopping a systemd service..." --weight=1 +ynh_script_progression --message="Stopping $app's systemd service..." --weight=1 ynh_systemd_action --service_name="$app" --action="stop" --log_path="systemd" --timeout=15 @@ -61,6 +50,11 @@ fi ynh_script_progression --message="Checking whether to open ports..." --weight=1 configure_jellyfin_discovery_ports install +ports_args=() +if [[ "${opened_ports:-__NOTHING__}" != "__NOTHING__" ]]; then + ports_args=( "--needs_exposed_ports" "${opened_ports[@]}" ) +fi + #================================================= # UPGRADE PACKAGES #================================================= @@ -74,16 +68,6 @@ done install_jellyfin_packages -#================================================= -# NGINX CONFIGURATION -#================================================= -ynh_script_progression --message="Upgrading NGINX web server configuration..." --weight=1 - -# Create a dedicated NGINX config -ynh_add_nginx_config - -#================================================= -# SPECIFIC UPGRADE #================================================= # UPDATE A CONFIG FILE #================================================= @@ -141,8 +125,8 @@ ynh_add_config --template="LDAP-Auth.xml" --destination="/var/lib/jellyfin/plugi #================================================= # Set permissions on app files -chown -R $app: $data_path -chown -R $app: $config_path +chown -R "$app:" "$data_path" +chown -R "$app:" "$config_path" #================================================= # YUNOHOST MULTIMEDIA INTEGRATION @@ -151,44 +135,32 @@ ynh_script_progression --message="Adding multimedia directories..." --weight=2 # Build YunoHost multimedia directories ynh_multimedia_build_main_dir + # Allow Jellyfin to write into these directories -ynh_multimedia_addaccess $app +ynh_multimedia_addaccess "$app" #================================================= -# GENERIC FINALIZATION +# REAPPLY SYSTEM CONFIGURATIONS #================================================= -# SETUP LOGROTATE -#================================================= -ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1 +ynh_script_progression --message="Upgrading system configurations related to $app..." --weight=1 + +# Create a dedicated NGINX config +ynh_add_nginx_config + +ynh_add_config --template="systemd.service" --destination="/etc/systemd/system/jellyfin.service.d/baseurl.service.conf" +systemctl daemon-reload # Use logrotate to manage app-specific logfile(s) ynh_use_logrotate -#================================================= -# INTEGRATE SERVICE IN YUNOHOST -#================================================= -ynh_script_progression --message="Integrating service in YunoHost..." --weight=1 - -ports_args=() -if [[ "${opened_ports:-__NOTHING__}" = "__NOTHING__" ]]; then - ports_args+=('--open-ports') - ports_args+=(${ports}) -fi - yunohost service add "$app" --description="Jellyfin media center" "${ports_args[@]}" -#================================================= -# EDIT SYSTEMD ENVIRONMENT VARIABLE FOR AUTO-DISCOVERY -#================================================= -ynh_add_config --template="systemd.service" --destination="/etc/systemd/system/jellyfin.service.d/baseurl.service.conf" -systemctl daemon-reload - #================================================= # START SYSTEMD SERVICE #================================================= -ynh_script_progression --message="Starting a systemd service..." --weight=1 +ynh_script_progression --message="Starting $app's systemd service..." --weight=1 -ynh_systemd_action --service_name=$app --action="restart" --log_path="systemd" --timeout=15 +ynh_systemd_action --service_name="$app" --action="restart" --log_path="systemd" --timeout=15 #================================================= # END OF SCRIPT