diff --git a/README.md b/README.md index f002652..dabab87 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in ## Overview Jellyfin enables you to collect, manage, and stream your media. Run the Jellyfin server on your system and gain access to the leading free-software entertainment system, bells and whistles included. -**Shipped version:** 10.6.4 +**Shipped version:** 10.7.0 ## Screenshots diff --git a/check_process b/check_process index 19f6216..fcdf735 100644 --- a/check_process +++ b/check_process @@ -20,7 +20,8 @@ setup_private=1 setup_public=1 upgrade=1 - upgrade=1 from_commit=3e38d2ec954f6b333c3c2ed95e0e75c0df2fe966 +# Disabled because Jellyfin's team decided to remove old package... +# upgrade=1 from_commit=3e38d2ec954f6b333c3c2ed95e0e75c0df2fe966 backup_restore=1 multi_instance=0 port_already_use=0 @@ -31,5 +32,4 @@ Notification=none ;;; Upgrade options ; commit=3e38d2ec954f6b333c3c2ed95e0e75c0df2fe966 name=2020-09-07 commit -# manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666& manifest_arg=domain=DOMAIN&path=PATH&admin=USER&is_public=1&port=666& diff --git a/conf/LDAP-Auth.xml b/conf/LDAP-Auth.xml new file mode 100644 index 0000000..713a063 --- /dev/null +++ b/conf/LDAP-Auth.xml @@ -0,0 +1,16 @@ + + + 127.0.0.1 + ou=users,dc=yunohost,dc=org + 389 + uid, mail + uid + (permission=cn=jellyfin.main,ou=permission,dc=yunohost,dc=org) + (permission=cn=jellyfin.admin,ou=permission,dc=yunohost,dc=org) + + + true + false + false + false + diff --git a/conf/ldap.src b/conf/ldap.src new file mode 100644 index 0000000..7ddae3c --- /dev/null +++ b/conf/ldap.src @@ -0,0 +1,8 @@ +SOURCE_URL=https://repo.jellyfin.org/releases/plugin/ldap-authentication/ldap-authentication_10.0.0.0.zip +SOURCE_SUM=A261DD2F9F448839BC24D4DDC0996007F72517E04EEA8C78C45AEF217DD82D22 +SOURCE_SUM_PRG=sha256sum +SOURCE_FORMAT=zip +SOURCE_IN_SUBDIR=false +SOURCE_FILENAME= +SOURCE_EXTRACT=true + diff --git a/manifest.json b/manifest.json index 53a5b7f..f12a6dd 100644 --- a/manifest.json +++ b/manifest.json @@ -6,7 +6,7 @@ "en": "Media System that manage and stream your media.", "fr": "Système multimédia qui gère et diffuse vos médias." }, - "version": "10.6.4~ynh3", + "version": "10.7.0~ynh1", "url": "https://github.com/jellyfin/jellyfin", "license": "GPL-2.0-only", "maintainer": { @@ -40,6 +40,15 @@ "example": "/jellyfin", "default": "/jellyfin" }, + { + "name": "admin", + "type": "user", + "ask": { + "en": "Choose an admin user", + "fr": "Choisissez l'administrateur" + }, + "example": "johndoe" + }, { "name": "is_public", "type": "boolean", diff --git a/scripts/_common.sh b/scripts/_common.sh index 0e17ea6..c0e6516 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -4,7 +4,7 @@ # COMMON VARIABLES #================================================= -pkg_version="10.6.4-1" +pkg_version="10.7.0-1" #================================================= # PERSONAL HELPERS diff --git a/scripts/change_url b/scripts/change_url index 03e8e62..e660a15 100644 --- a/scripts/change_url +++ b/scripts/change_url @@ -112,10 +112,10 @@ fi if [ $change_path -eq 1 ] then # If somehow was not replaced during install - if grep -q "" "/etc/jellyfin/system.xml"; then - ynh_replace_string --match_string="" --replace_string="$new_path" --target_file="/etc/jellyfin/system.xml" + if grep -q "" "/etc/jellyfin/network.xml"; then + ynh_replace_string --match_string="" --replace_string="$new_path" --target_file="/etc/jellyfin/network.xml" else - ynh_replace_string --match_string="$old_path" --replace_string="$new_path" --target_file="/etc/jellyfin/system.xml" + ynh_replace_string --match_string="$old_path" --replace_string="$new_path" --target_file="/etc/jellyfin/network.xml" fi fi diff --git a/scripts/install b/scripts/install index 95c39f8..359b09a 100644 --- a/scripts/install +++ b/scripts/install @@ -26,6 +26,7 @@ ynh_abort_if_errors domain=$YNH_APP_ARG_DOMAIN path_url=$YNH_APP_ARG_PATH +admin=$YNH_APP_ARG_ADMIN is_public=$YNH_APP_ARG_IS_PUBLIC app=$YNH_APP_INSTANCE_NAME @@ -89,6 +90,7 @@ ynh_system_user_create --username=$app #================================================= # MODIFY A CONFIG FILE #================================================= +ynh_script_progression --message="Configuring the settings..." --weight=1 # Load services once to generate system.xml systemctl enable jellyfin --quiet @@ -97,10 +99,23 @@ sleep 5 systemctl stop jellyfin # Port config -ynh_replace_string --match_string="8096" --replace_string="$port" --target_file="/etc/jellyfin/system.xml" +ynh_replace_string --match_string="8096" --replace_string="$port" --target_file="/etc/jellyfin/network.xml" +ynh_replace_string --match_string="8096" --replace_string="$port" --target_file="/etc/jellyfin/network.xml" # BaseUrl config -ynh_replace_string --match_string="" --replace_string="$path_url" --target_file="/etc/jellyfin/system.xml" +ynh_replace_string --match_string="" --replace_string="$path_url" --target_file="/etc/jellyfin/network.xml" + +# Disable Setup Wizard +ynh_replace_string --match_string="false" --replace_string="true" --target_file="/etc/jellyfin/system.xml" + +#================================================= +# INSTALL LDAP PLUGIN +#================================================= +ynh_script_progression --message="Installing LDAP plugin..." --weight=2 + +ynh_setup_source --dest_dir="/var/lib/jellyfin/plugins/LDAP Authentication" --source_id=ldap +mkdir -p /var/lib/jellyfin/plugins/configurations/ +cp ../conf/LDAP-Auth.xml /var/lib/jellyfin/plugins/configurations/LDAP-Auth.xml #================================================= # GENERIC FINALIZATION @@ -138,16 +153,19 @@ ynh_systemd_action --service_name=$app --action="start" --log_path="systemd" --l #================================================= # SETUP SSOWAT #================================================= -ynh_script_progression --message="Configuring SSOwat..." --weight=2 +ynh_script_progression --message="Configuring permissions..." --weight=1 -# Make app public if necessary or protect it +# Make app public if necessary if [ $is_public -eq 1 ] then # Everyone can access the app. # The "main" permission is automatically created before the install script. - ynh_permission_update --permission "main" --add "visitors" + ynh_permission_update --permission "main" --add "visitors" fi +# Only the admin can access the admin panel of the app (if the app has an admin panel) +ynh_permission_create --permission "admin" --allowed $admin + #================================================= # RELOAD NGINX #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 2664d0e..ed18b31 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -17,6 +17,7 @@ ynh_script_progression --message="Loading installation settings..." --weight=1 app=$YNH_APP_INSTANCE_NAME domain=$(ynh_app_setting_get --app=$app --key=domain) path_url=$(ynh_app_setting_get --app=$app --key=path) +admin=$(ynh_app_setting_get --app=$app --key=admin) is_public=$(ynh_app_setting_get --app=$app --key=is_public) final_path=$(ynh_app_setting_get --app=$app --key=final_path) port=$(ynh_app_setting_get --app=$app --key=port) @@ -73,6 +74,41 @@ ynh_script_progression --message="Making sure dedicated system user exists..." - # Create a dedicated user (if not existing) ynh_system_user_create --username=$app +#================================================= +# MODIFY A CONFIG FILE +#================================================= + +# Check if network.xml exists (introduced in v10.7) +if [ -z "/etc/jellyfin/network.xml" ]; then + ynh_script_progression --message="Configuring the settings..." --weight=1 + + # Load services once to generate network.xml + systemctl enable jellyfin + systemctl start jellyfin + sleep 5 + systemctl stop jellyfin + + # Port config + ynh_replace_string --match_string="8096" --replace_string="$port" --target_file="/etc/jellyfin/network.xml" + ynh_replace_string --match_string="8096" --replace_string="$port" --target_file="/etc/jellyfin/network.xml" + + # BaseUrl config + ynh_replace_string --match_string="" --replace_string="$path_url" --target_file="/etc/jellyfin/network.xml" +fi + +#================================================= +# INSTALL LDAP PLUGIN +#================================================= + +# Install it only if the plugin directory does not exist +if [ ! -e "/var/lib/jellyfin/plugins/LDAP Authentication" ]; then + ynh_script_progression --message="Installing LDAP plugin..." --weight=2 + + ynh_setup_source --dest_dir="/var/lib/jellyfin/plugins/LDAP Authentication" --source_id=ldap + mkdir -p /var/lib/jellyfin/plugins/configurations/ + cp ../conf/LDAP-Auth.xml /var/lib/jellyfin/plugins/configurations/LDAP-Auth.xml +fi + #================================================= # GENERIC FINALIZATION #================================================= @@ -91,6 +127,16 @@ ynh_script_progression --message="Upgrading logrotate configuration..." --weight # Use logrotate to manage app-specific logfile(s) ynh_use_logrotate --non-append +#================================================= +# SETUP SSOWAT +#================================================= +ynh_script_progression --message="Upgrading permissions configuration..." --weight=1 + +# Create the admin permission if needed +if ! ynh_permission_exists --permission "admin"; then + ynh_permission_create --permission "admin" --allowed $admin +fi + #================================================= # INTEGRATE SERVICE IN YUNOHOST #=================================================