From 3a5676cfe0e05ec822be05918336bfdbaddb830f Mon Sep 17 00:00:00 2001 From: Kay0u Date: Mon, 7 Oct 2019 16:02:06 +0200 Subject: [PATCH] Add multimedia folders --- conf/airsonic.properties | 3 +++ scripts/_common.sh | 42 ++++++++++++++++++++++++++++++++++++++++ scripts/backup | 6 ++++++ scripts/install | 27 ++++++++++++++++++++++++++ scripts/restore | 24 +++++++++++++++++++++++ scripts/upgrade | 37 +++++++++++++++++++++++++++++++++++ 6 files changed, 139 insertions(+) diff --git a/conf/airsonic.properties b/conf/airsonic.properties index 53917f7..c2eeb96 100644 --- a/conf/airsonic.properties +++ b/conf/airsonic.properties @@ -7,3 +7,6 @@ LdapSearchFilter=(uid={0}) #LdapManagerPassword= # Automatically create users comming from Yunohost in Airsonic LdapAutoShadowing=true +GettingStartedEnabled=false +PodcastFolder=/home/yunohost.multimedia/share/Podcasts +PlaylistFolder=/home/yunohost.multimedia/share/Playlists diff --git a/scripts/_common.sh b/scripts/_common.sh index ad0b3bd..1b0b660 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -18,3 +18,45 @@ pkg_dependencies="openjdk-8-jre ffmpeg" #================================================= # FUTURE OFFICIAL HELPERS #================================================= + +# Install or update the main directory yunohost.multimedia +# +# usage: ynh_multimedia_build_main_dir +ynh_multimedia_build_main_dir () { + local ynh_media_release="v1.2" + local checksum="806a827ba1902d6911095602a9221181" + + # Download yunohost.multimedia scripts + wget -nv https://github.com/YunoHost-Apps/yunohost.multimedia/archive/${ynh_media_release}.tar.gz + + # Check the control sum + echo "${checksum} ${ynh_media_release}.tar.gz" | md5sum -c --status \ + || ynh_die "Corrupt source" + + # Check if the package acl is installed. Or install it. + ynh_package_is_installed 'acl' \ + || ynh_package_install acl + + # Extract + mkdir yunohost.multimedia-master + tar -xf ${ynh_media_release}.tar.gz -C yunohost.multimedia-master --strip-components 1 + ./yunohost.multimedia-master/script/ynh_media_build.sh +} + +# Add a directory in yunohost.multimedia +# This "directory" will be a symbolic link to a existing directory. +# +# usage: ynh_multimedia_addfolder "Source directory" "Destination directory" +# +# | arg: -s, --source_dir= - Source directory - The real directory which contains your medias. +# | arg: -d, --dest_dir= - Destination directory - The name and the place of the symbolic link, relative to "/home/yunohost.multimedia" +ynh_multimedia_addfolder () { + # Declare an array to define the options of this helper. + declare -Ar args_array=( [s]=source_dir= [d]=dest_dir= ) + local source_dir + local dest_dir + # Manage arguments with getopts + ynh_handle_getopts_args "$@" + + ./yunohost.multimedia-master/script/ynh_media_addfolder.sh --source="$source_dir" --dest="$dest_dir" +} \ No newline at end of file diff --git a/scripts/backup b/scripts/backup index 603cdd5..3b5405a 100644 --- a/scripts/backup +++ b/scripts/backup @@ -71,6 +71,12 @@ ynh_script_progression --message="Backing up systemd configuration..." --weight= ynh_backup --src_path="/etc/systemd/system/$app.service" ynh_backup --src_path="$service_config" +#================================================= +# BACKUP DATA +#================================================= + +ynh_backup --src_path="/home/yunohost.airsonic" --is_big + #================================================= # START SYSTEMD SERVICE #================================================= diff --git a/scripts/install b/scripts/install index 33e7a99..bd685c4 100644 --- a/scripts/install +++ b/scripts/install @@ -98,6 +98,33 @@ ynh_system_user_create --username=$app #================================================= # SPECIFIC SETUP +#================================================= +# CREATE DIRECTORIES +#================================================= + +mkdir -p /home/yunohost.airsonic/{Podcasts,Playlists} + +#================================================= +# SECURING FILES AND DIRECTORIES +#================================================= + +chown -R $app:www-data /home/yunohost.airsonic/ +chmod -R 764 /home/yunohost.airsonic + +#================================================= +# YUNOHOST MULTIMEDIA INTEGRATION +#================================================= +ynh_script_progression --message="Adding multimedia directories..." --weight=3 + +ynh_multimedia_build_main_dir +ynh_multimedia_addfolder --source_dir="/home/yunohost.airsonic/Podcasts" --dest_dir="share/Podcasts" +ynh_multimedia_addfolder --source_dir="/home/yunohost.airsonic/Playlists" --dest_dir="share/Playlists" + +# Use multimedia folder +echo "INSERT INTO MUSIC_FOLDER VALUES(1,'/home/yunohost.multimedia/share/Music','YunoHost Music',TRUE)" >> $final_path/db/airsonic.script +# Remove the default folder +ynh_replace_string --match_string="0,'/var/music','Music'" --replace_string="" --target_file="$final_path/db/airsonic.script" + #================================================= # ENABLE "TRANSCODE" #================================================= diff --git a/scripts/restore b/scripts/restore index 61a9ed8..ebe5684 100644 --- a/scripts/restore +++ b/scripts/restore @@ -130,6 +130,30 @@ ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/ ynh_restore_file --origin_path="/etc/logrotate.d/$app" +#================================================= +# RESTORE DATA +#================================================= + +# Use --not_mandatory for the data directory, because if the backup has been made with BACKUP_CORE_ONLY, there's no data into the backup. +ynh_restore_file --origin_path="/home/yunohost.airsonic" --not_mandatory + +#================================================= +# RESTORE USER RIGHTS +#================================================= + +mkdir -p /home/yunohost.airsonic/{Podcasts,Playlists} +chown -R $app:www-data /home/yunohost.airsonic/ +chmod -R 764 /home/yunohost.airsonic + +#================================================= +# YUNOHOST MULTIMEDIA INTEGRATION +#================================================= +ynh_script_progression --message="Adding multimedia directories..." --weight=3 + +ynh_multimedia_build_main_dir +ynh_multimedia_addfolder --source_dir="/home/yunohost.airsonic/Podcasts" --dest_dir="share/Podcasts" +ynh_multimedia_addfolder --source_dir="/home/yunohost.airsonic/Playlists" --dest_dir="share/Playlists" + #================================================= # GENERIC FINALIZATION #================================================= diff --git a/scripts/upgrade b/scripts/upgrade index 84ece31..8c710ae 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -118,6 +118,43 @@ ynh_system_user_create --username=$app #================================================= # SPECIFIC UPGRADE +#================================================= +# CREATE DIRECTORIES +#================================================= + +mkdir -p /home/yunohost.airsonic/{Podcasts,Playlists} + +#================================================= +# SECURING FILES AND DIRECTORIES +#================================================= + +chown -R $app:www-data /home/yunohost.airsonic/ +chmod -R 764 /home/yunohost.airsonic + +#================================================= +# YUNOHOST MULTIMEDIA INTEGRATION +#================================================= +ynh_script_progression --message="Adding multimedia directories..." --weight=3 + +ynh_multimedia_build_main_dir +ynh_multimedia_addfolder --source_dir="/home/yunohost.airsonic/Podcasts" --dest_dir="share/Podcasts" +ynh_multimedia_addfolder --source_dir="/home/yunohost.airsonic/Playlists" --dest_dir="share/Playlists" + +if ! grep -q "PodcastFolder" $final_path/airsonic.properties; then + echo "PodcastFolder=/home/yunohost.multimedia/share/Podcasts" >> $final_path/airsonic.properties +fi + +if ! grep -q "PlaylistFolder" $final_path/airsonic.properties; then + echo "PlaylistFolder=/home/yunohost.multimedia/share/Playlists" >> $final_path/airsonic.properties +fi + +# Use multimedia folder if needed +if ! grep -q "/home/yunohost.multimedia/share/Music" $final_path/db/airsonic.script; then + echo "INSERT INTO MUSIC_FOLDER VALUES(1,'/home/yunohost.multimedia/share/Music','YunoHost Music',TRUE)" >> $final_path/db/airsonic.script + # Remove the default folder + ynh_replace_string --match_string="0,'/var/music','Music'" --replace_string="" --target_file="$final_path/db/airsonic.script" +fi + #================================================= # ENABLE "TRANSCODE" #=================================================