mirror of
https://github.com/YunoHost-Apps/airsonic_ynh.git
synced 2024-09-03 18:06:14 +02:00
commit
b77caa7faf
22 changed files with 146 additions and 827 deletions
132
.github/workflows/updater.sh
vendored
132
.github/workflows/updater.sh
vendored
|
@ -1,132 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
#=================================================
|
||||
# PACKAGE UPDATING HELPER
|
||||
#=================================================
|
||||
|
||||
# This script is meant to be run by GitHub Actions
|
||||
# The YunoHost-Apps organisation offers a template Action to run this script periodically
|
||||
# Since each app is different, maintainers can adapt its contents so as to perform
|
||||
# automatic actions when a new upstream release is detected.
|
||||
|
||||
#=================================================
|
||||
# FETCHING LATEST RELEASE AND ITS ASSETS
|
||||
#=================================================
|
||||
|
||||
# Fetching information
|
||||
current_version=$(cat manifest.json | jq -j '.version|split("~")[0]')
|
||||
repo=$(cat manifest.json | jq -j '.upstream.code|split("https://github.com/")[1]')
|
||||
# Some jq magic is needed, because the latest upstream release is not always the latest version (e.g. security patches for older versions)
|
||||
version=$(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '.[] | .tag_name' | sort -V | tail -1)
|
||||
assets=($(curl --silent "https://api.github.com/repos/$repo/releases" | jq -r '[ .[] | select(.tag_name=="'$version'").assets[].browser_download_url ] | join(" ") | @sh' | tr -d "'"))
|
||||
|
||||
# Later down the script, we assume the version has only digits and dots
|
||||
# Sometimes the release name starts with a "v", so let's filter it out.
|
||||
# You may need more tweaks here if the upstream repository has different naming conventions.
|
||||
if [[ ${version:0:1} == "v" || ${version:0:1} == "V" ]]; then
|
||||
version=${version:1}
|
||||
fi
|
||||
|
||||
# Setting up the environment variables
|
||||
echo "Current version: $current_version"
|
||||
echo "Latest release from upstream: $version"
|
||||
echo "VERSION=$version" >> $GITHUB_ENV
|
||||
echo "REPO=$repo" >> $GITHUB_ENV
|
||||
# For the time being, let's assume the script will fail
|
||||
echo "PROCEED=false" >> $GITHUB_ENV
|
||||
|
||||
# Proceed only if the retrieved version is greater than the current one
|
||||
if ! dpkg --compare-versions "$current_version" "lt" "$version" ; then
|
||||
echo "::warning ::No new version available"
|
||||
exit 0
|
||||
# Proceed only if a PR for this new version does not already exist
|
||||
elif git ls-remote -q --exit-code --heads https://github.com/$GITHUB_REPOSITORY.git ci-auto-update-v$version ; then
|
||||
echo "::warning ::A branch already exists for this update"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Each release can hold multiple assets (e.g. binaries for different architectures, source code, etc.)
|
||||
echo "${#assets[@]} available asset(s)"
|
||||
|
||||
#=================================================
|
||||
# UPDATE SOURCE FILES
|
||||
#=================================================
|
||||
|
||||
# Here we use the $assets variable to get the resources published in the upstream release.
|
||||
# Here is an example for Grav, it has to be adapted in accordance with how the upstream releases look like.
|
||||
|
||||
# Let's loop over the array of assets URLs
|
||||
for asset_url in ${assets[@]}; do
|
||||
|
||||
echo "Handling asset at $asset_url"
|
||||
|
||||
# Assign the asset to a source file in conf/ directory
|
||||
# Here we base the source file name upon a unique keyword in the assets url (admin vs. update)
|
||||
# Leave $src empty to ignore the asset
|
||||
case $asset_url in
|
||||
*"war"*)
|
||||
src="app"
|
||||
;;
|
||||
*)
|
||||
src=""
|
||||
;;
|
||||
esac
|
||||
|
||||
# If $src is not empty, let's process the asset
|
||||
if [ ! -z "$src" ]; then
|
||||
|
||||
# Create the temporary directory
|
||||
tempdir="$(mktemp -d)"
|
||||
|
||||
# Download sources and calculate checksum
|
||||
filename=${asset_url##*/}
|
||||
curl --silent -4 -L $asset_url -o "$tempdir/$filename"
|
||||
checksum=$(sha256sum "$tempdir/$filename" | head -c 64)
|
||||
|
||||
# Delete temporary directory
|
||||
rm -rf $tempdir
|
||||
|
||||
# Get extension
|
||||
if [[ $filename == *.tar.gz ]]; then
|
||||
extension=tar.gz
|
||||
else
|
||||
extension=${filename##*.}
|
||||
fi
|
||||
|
||||
# Rewrite source file
|
||||
cat <<EOT > conf/$src.src
|
||||
SOURCE_URL=$asset_url
|
||||
SOURCE_SUM=$checksum
|
||||
SOURCE_SUM_PRG=sha256sum
|
||||
SOURCE_FORMAT=war
|
||||
SOURCE_IN_SUBDIR=false
|
||||
SOURCE_FILENAME=airsonic.war
|
||||
SOURCE_EXTRACT=false
|
||||
EOT
|
||||
echo "... conf/$src.src updated"
|
||||
|
||||
else
|
||||
echo "... asset ignored"
|
||||
fi
|
||||
|
||||
done
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC UPDATE STEPS
|
||||
#=================================================
|
||||
|
||||
# Any action on the app's source code can be done.
|
||||
# The GitHub Action workflow takes care of committing all changes after this script ends.
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
#=================================================
|
||||
|
||||
# Replace new version in manifest
|
||||
echo "$(jq -s --indent 4 ".[] | .version = \"$version~ynh1\"" manifest.json)" > manifest.json
|
||||
|
||||
# No need to update the README, yunohost-bot takes care of it
|
||||
|
||||
# The Action will proceed only if the PROCEED environment variable is set to true
|
||||
echo "PROCEED=true" >> $GITHUB_ENV
|
||||
exit 0
|
49
.github/workflows/updater.yml
vendored
49
.github/workflows/updater.yml
vendored
|
@ -1,49 +0,0 @@
|
|||
# This workflow allows GitHub Actions to automagically update your app whenever a new upstream release is detected.
|
||||
# You need to enable Actions in your repository settings, and fetch this Action from the YunoHost-Apps organization.
|
||||
# This file should be enough by itself, but feel free to tune it to your needs.
|
||||
# It calls updater.sh, which is where you should put the app-specific update steps.
|
||||
name: Check for new upstream releases
|
||||
on:
|
||||
# Allow to manually trigger the workflow
|
||||
workflow_dispatch:
|
||||
# Run it every day at 6:00 UTC
|
||||
schedule:
|
||||
- cron: '0 6 * * *'
|
||||
jobs:
|
||||
updater:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Fetch the source code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Run the updater script
|
||||
id: run_updater
|
||||
run: |
|
||||
# Setting up Git user
|
||||
git config --global user.name 'yunohost-bot'
|
||||
git config --global user.email 'yunohost-bot@users.noreply.github.com'
|
||||
# Run the updater script
|
||||
/bin/bash .github/workflows/updater.sh
|
||||
- name: Commit changes
|
||||
id: commit
|
||||
if: ${{ env.PROCEED == 'true' }}
|
||||
run: |
|
||||
git commit -am "Upgrade to v$VERSION"
|
||||
- name: Create Pull Request
|
||||
id: cpr
|
||||
if: ${{ env.PROCEED == 'true' }}
|
||||
uses: peter-evans/create-pull-request@v4
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
commit-message: Update to version ${{ env.VERSION }}
|
||||
committer: 'yunohost-bot <yunohost-bot@users.noreply.github.com>'
|
||||
author: 'yunohost-bot <yunohost-bot@users.noreply.github.com>'
|
||||
signoff: false
|
||||
base: testing
|
||||
branch: ci-auto-update-v${{ env.VERSION }}
|
||||
delete-branch: true
|
||||
title: 'Upgrade to version ${{ env.VERSION }}'
|
||||
body: |
|
||||
Upgrade to v${{ env.VERSION }}
|
||||
draft: false
|
11
README.md
11
README.md
|
@ -27,21 +27,12 @@ If you have constrained bandwidth, you may set an upper limit for the bit rate o
|
|||
In addition to being a streaming media server, Airsonic works very well as a local jukebox. The intuitive web interface, as well as search and index facilities, are optimized for efficient browsing through large media libraries. Airsonic also comes with an integrated Podcast receiver, with many of the same features as you find in iTunes.
|
||||
|
||||
|
||||
**Shipped version:** 11.0.0~ynh4
|
||||
**Shipped version:** 11.0.0~ynh5
|
||||
|
||||
## Screenshots
|
||||
|
||||
![Screenshot of Airsonic-Advanced](./doc/screenshots/screenshot_01.png)
|
||||
|
||||
## Disclaimers / important information
|
||||
|
||||
## YunoHost specific features
|
||||
|
||||
* YunoHost LDAP accounts supported: **Yes**
|
||||
* [Multimedia](https://github.com/YunoHost-Apps/yunohost.multimedia) handled
|
||||
* Memory RAM limit set to 256 MB because Airsonic was often killed by lack of RAM (hello OOM killer)
|
||||
* See https://www.reddit.com/r/airsonic/comments/doscco/jvm_memory_issues/
|
||||
|
||||
## Documentation and resources
|
||||
|
||||
* Official admin documentation: <https://airsonic.github.io/docs/>
|
||||
|
|
11
README_fr.md
11
README_fr.md
|
@ -27,21 +27,12 @@ Si vous avez une bande passante limitée, vous pouvez fixer une limite supérieu
|
|||
En plus d'être un serveur de médias en streaming, Airsonic fonctionne très bien comme un jukebox local. L'interface web intuitive, ainsi que les fonctions de recherche et d'indexation, sont optimisées pour une navigation efficace dans les grandes bibliothèques de médias. Airsonic est également livré avec un récepteur de podcasts intégré, avec la plupart des fonctionnalités que vous trouvez dans iTunes.
|
||||
|
||||
|
||||
**Version incluse :** 11.0.0~ynh4
|
||||
**Version incluse :** 11.0.0~ynh5
|
||||
|
||||
## Captures d’écran
|
||||
|
||||
![Capture d’écran de Airsonic-Advanced](./doc/screenshots/screenshot_01.png)
|
||||
|
||||
## Avertissements / informations importantes
|
||||
|
||||
## Caractéristiques spécifiques de YunoHost
|
||||
|
||||
* Comptes LDAP supportés par YunoHost : **Oui**
|
||||
* Gestion du [Multimédia](https://github.com/YunoHost-Apps/yunohost.multimedia)
|
||||
* La limite de mémoire RAM a été fixée à 256 Mo car Airsonic était souvent tué par le manque de RAM (hello OOM killer).
|
||||
* Voir https://www.reddit.com/r/airsonic/comments/doscco/jvm_memory_issues/
|
||||
|
||||
## Documentations et ressources
|
||||
|
||||
* Documentation officielle de l’admin : <https://airsonic.github.io/docs/>
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
;; Test complet
|
||||
; Manifest
|
||||
domain="domain.tld"
|
||||
path="/path"
|
||||
is_public=1
|
||||
admin="john"
|
||||
; Checks
|
||||
pkg_linter=1
|
||||
setup_sub_dir=1
|
||||
setup_root=1
|
||||
setup_nourl=0
|
||||
setup_private=1
|
||||
setup_public=1
|
||||
upgrade=1
|
||||
# 10.6.2~ynh3
|
||||
upgrade=1 from_commit=6ca76697a8f8da7419eb490aa435649f1b9d96c2
|
||||
backup_restore=1
|
||||
multi_instance=1
|
||||
port_already_use=0
|
||||
change_url=1
|
||||
;;; Options
|
||||
Email=
|
||||
Notification=none
|
||||
;;; Upgrade options
|
||||
; commit=6ca76697a8f8da7419eb490aa435649f1b9d96c2
|
||||
name=10.6.2~ynh3
|
||||
manifest_arg=domain=DOMAIN&path=PATH&admin=USER&language=fr&is_public=1&password=pass&port=666&
|
|
@ -5,7 +5,7 @@ LdapUrl=ldap://localhost:389/ou=users,dc=yunohost,dc=org
|
|||
LdapSearchFilter=(uid={0})
|
||||
#LdapManagerDn=
|
||||
#LdapManagerPassword=
|
||||
# Automatically create users comming from Yunohost in Airsonic
|
||||
# Automatically create users comming from YunoHost in Airsonic
|
||||
LdapAutoShadowing=true
|
||||
GettingStartedEnabled=false
|
||||
PodcastFolder=/home/yunohost.multimedia/share/Podcasts
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
SOURCE_URL=https://github.com/airsonic-advanced/airsonic-advanced/releases/download/11.0.0-SNAPSHOT.20230217142243/airsonic.war
|
||||
SOURCE_SUM=84d37d34586aa2a6335a0214d743a0518e82d7d668e8cc142abb12e20211220f
|
||||
SOURCE_SUM_PRG=sha256sum
|
||||
SOURCE_FORMAT=war
|
||||
SOURCE_IN_SUBDIR=false
|
||||
SOURCE_FILENAME=airsonic.war
|
||||
SOURCE_EXTRACT=false
|
|
@ -1,8 +1,6 @@
|
|||
# source of config file : https://airsonic.github.io/docs/proxy/nginx/
|
||||
# adapted for yunohost
|
||||
|
||||
#sub_path_only rewrite ^__PATH__$ __PATH__/ permanent;
|
||||
location __PATH__/ {
|
||||
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection "Upgrade";
|
||||
proxy_http_version 1.1;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# install documentation : https://airsonic.github.io/docs/install/war-standalone/
|
||||
|
||||
# Set the location of the standalone war to use
|
||||
JAVA_JAR=__FINALPATH__/airsonic.war
|
||||
JAVA_JAR=__INSTALL_DIR__/airsonic.war
|
||||
|
||||
# Set any java opts separated by spaces
|
||||
#JAVA_OPTS=-Xmx700m
|
||||
|
@ -11,7 +11,7 @@ JAVA_JAR=__FINALPATH__/airsonic.war
|
|||
# If this path is /var/libresonic or even contains "libresonic",
|
||||
# the data from a previous libresonic can be used as is (i.e. without
|
||||
# renaming libresonic.properties,db/libresonic*,etc
|
||||
AIRSONIC_HOME=__FINALPATH__
|
||||
AIRSONIC_HOME=__INSTALL_DIR__
|
||||
|
||||
# Change the port to listen on
|
||||
PORT=__PORT__
|
||||
|
|
|
@ -1,10 +1,7 @@
|
|||
# source file https://raw.githubusercontent.com/airsonic/airsonic/master/contrib/airsonic.service
|
||||
# install documentation : https://airsonic.github.io/docs/install/war-standalone/
|
||||
|
||||
[Unit]
|
||||
Description=__APP__ Media Server
|
||||
Description=__APP__: Media Server
|
||||
After=remote-fs.target network.target
|
||||
AssertPathExists=__FINALPATH__
|
||||
AssertPathExists=__INSTALL_DIR__
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
|
@ -31,7 +28,7 @@ ExecStart=/usr/bin/java \
|
|||
#RestrictRealtime=yes
|
||||
#DevicePolicy=closed
|
||||
#SystemCallFilter=~@clock @debug @module @mount @obsolete @privileged @reboot @setuid @swap
|
||||
#ReadWritePaths=__FINALPATH__
|
||||
#ReadWritePaths=__INSTALL_DIR__
|
||||
|
||||
# You can uncomment the following line if you're not using the jukebox
|
||||
# This will prevent airsonic from accessing any real (physical) devices
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
## YunoHost specific features
|
||||
|
||||
* YunoHost LDAP accounts supported: **Yes**
|
||||
* [Multimedia](https://github.com/YunoHost-Apps/yunohost.multimedia) handled
|
||||
* Memory RAM limit set to 256 MB because Airsonic was often killed by lack of RAM (hello OOM killer)
|
||||
* See https://www.reddit.com/r/airsonic/comments/doscco/jvm_memory_issues/
|
|
@ -1,6 +0,0 @@
|
|||
## Caractéristiques spécifiques de YunoHost
|
||||
|
||||
* Comptes LDAP supportés par YunoHost : **Oui**
|
||||
* Gestion du [Multimédia](https://github.com/YunoHost-Apps/yunohost.multimedia)
|
||||
* La limite de mémoire RAM a été fixée à 256 Mo car Airsonic était souvent tué par le manque de RAM (hello OOM killer).
|
||||
* Voir https://www.reddit.com/r/airsonic/comments/doscco/jvm_memory_issues/
|
|
@ -1,51 +0,0 @@
|
|||
{
|
||||
"name": "Airsonic-Advanced",
|
||||
"id": "airsonic",
|
||||
"packaging_format": 1,
|
||||
"description": {
|
||||
"en": "Stream and manage your music collection",
|
||||
"fr": "Streamez et gérez votre collection de musique"
|
||||
},
|
||||
"version": "11.0.0~ynh4",
|
||||
"url": "https://github.com/airsonic-advanced/airsonic-advanced",
|
||||
"upstream": {
|
||||
"license": "GPL-3.0-or-later",
|
||||
"admindoc": "https://airsonic.github.io/docs/",
|
||||
"code": "https://github.com/airsonic-advanced/airsonic-advanced"
|
||||
},
|
||||
"license": "GPL-3.0-or-later",
|
||||
"maintainer": {
|
||||
"name": "",
|
||||
"email": ""
|
||||
},
|
||||
"requirements": {
|
||||
"yunohost": ">= 11.0.9"
|
||||
},
|
||||
"multi_instance": true,
|
||||
"services": [
|
||||
"nginx"
|
||||
],
|
||||
"arguments": {
|
||||
"install": [
|
||||
{
|
||||
"name": "domain",
|
||||
"type": "domain"
|
||||
},
|
||||
{
|
||||
"name": "path",
|
||||
"type": "path",
|
||||
"example": "/airsonic",
|
||||
"default": "/airsonic"
|
||||
},
|
||||
{
|
||||
"name": "is_public",
|
||||
"type": "boolean",
|
||||
"default": true
|
||||
},
|
||||
{
|
||||
"name": "admin",
|
||||
"type": "user"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
70
manifest.toml
Normal file
70
manifest.toml
Normal file
|
@ -0,0 +1,70 @@
|
|||
packaging_format = 2
|
||||
|
||||
id = "airsonic"
|
||||
name = "Airsonic-Advanced"
|
||||
description.en = "Stream and manage your music collection"
|
||||
description.fr = "Streamez et gérez votre collection de musique"
|
||||
|
||||
version = "11.0.0~ynh5"
|
||||
|
||||
maintainers = []
|
||||
|
||||
[upstream]
|
||||
license = "GPL-3.0-or-later"
|
||||
admindoc = "https://airsonic.github.io/docs/"
|
||||
code = "https://github.com/airsonic-advanced/airsonic-advanced"
|
||||
|
||||
[integration]
|
||||
yunohost = ">= 11.2"
|
||||
architectures = "all"
|
||||
multi_instance = true
|
||||
ldap = true
|
||||
sso = true
|
||||
disk = "50M"
|
||||
ram.build = "500M"
|
||||
ram.runtime = "50M"
|
||||
|
||||
[install]
|
||||
[install.domain]
|
||||
type = "domain"
|
||||
|
||||
[install.path]
|
||||
type = "path"
|
||||
default = "/airsonic"
|
||||
|
||||
[install.init_main_permission]
|
||||
type = "group"
|
||||
default = "visitors"
|
||||
|
||||
[install.admin]
|
||||
type = "user"
|
||||
|
||||
[resources]
|
||||
[resources.sources.main]
|
||||
url = "https://github.com/airsonic-advanced/airsonic-advanced/releases/download/11.0.0-SNAPSHOT.20230217142243/airsonic.war"
|
||||
sha256 = "84d37d34586aa2a6335a0214d743a0518e82d7d668e8cc142abb12e20211220f"
|
||||
rename = "airsonic.war"
|
||||
extract = false
|
||||
|
||||
[resources.ports]
|
||||
|
||||
[resources.system_user]
|
||||
|
||||
[resources.install_dir]
|
||||
|
||||
[resources.data_dir]
|
||||
subdirs =["Podcasts", "Playlists"]
|
||||
|
||||
[resources.permissions]
|
||||
main.url = "/"
|
||||
|
||||
[resources.apt]
|
||||
packages = "ffmpeg"
|
||||
packages_from_raw_bash = """
|
||||
debian=$(lsb_release --codename --short)
|
||||
if [[ $debian = "bullseye" ]]; then
|
||||
echo "openjdk-11-jre";
|
||||
elif [[ $debian = "bookworm" ]]; then
|
||||
echo "openjdk-17-jre";
|
||||
fi
|
||||
"""
|
|
@ -4,9 +4,6 @@
|
|||
# COMMON VARIABLES
|
||||
#=================================================
|
||||
|
||||
# dependencies used by the app (must be on a single line)
|
||||
pkg_dependencies="openjdk-11-jre ffmpeg"
|
||||
|
||||
#=================================================
|
||||
# PERSONAL HELPERS
|
||||
#=================================================
|
||||
|
|
|
@ -10,27 +10,6 @@
|
|||
source ../settings/scripts/_common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
# MANAGE SCRIPT FAILURE
|
||||
#=================================================
|
||||
|
||||
ynh_clean_setup () {
|
||||
true
|
||||
}
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_print_info --message="Loading installation settings..."
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||
|
||||
#=================================================
|
||||
# DECLARE DATA AND CONF FILES TO BACKUP
|
||||
#=================================================
|
||||
|
@ -40,13 +19,13 @@ ynh_print_info --message="Declaring files to be backed up..."
|
|||
# BACKUP THE APP MAIN DIR
|
||||
#=================================================
|
||||
|
||||
ynh_backup --src_path="$final_path"
|
||||
ynh_backup --src_path="$install_dir"
|
||||
|
||||
#=================================================
|
||||
# BACKUP THE DATA DIR
|
||||
#=================================================
|
||||
|
||||
ynh_backup --src_path="$datadir" --is_big
|
||||
ynh_backup --src_path="$data_dir" --is_big
|
||||
|
||||
#=================================================
|
||||
# BACKUP THE NGINX CONFIGURATION
|
||||
|
|
|
@ -9,62 +9,6 @@
|
|||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
# RETRIEVE ARGUMENTS
|
||||
#=================================================
|
||||
|
||||
old_domain=$YNH_APP_OLD_DOMAIN
|
||||
old_path=$YNH_APP_OLD_PATH
|
||||
|
||||
new_domain=$YNH_APP_NEW_DOMAIN
|
||||
new_path=$YNH_APP_NEW_PATH
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Loading installation settings..." --weight=1
|
||||
|
||||
# Needed for helper "ynh_add_nginx_config"
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
# service_config=$(ynh_app_setting_get --app=$app --key=service_config)
|
||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||
path_url=$(ynh_app_setting_get --app=$app --key=path)
|
||||
|
||||
#=================================================
|
||||
# BACKUP BEFORE CHANGE URL THEN ACTIVE TRAP
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up the app before changing its URL (may take a while)..." --weight=1
|
||||
|
||||
# Backup the current version of the app
|
||||
ynh_backup_before_upgrade
|
||||
ynh_clean_setup () {
|
||||
# Remove the new domain config file, the remove script won't do it as it doesn't know yet its location.
|
||||
ynh_secure_remove --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||
|
||||
# Restore it if the upgrade fails
|
||||
ynh_restore_upgradebackup
|
||||
}
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
#=================================================
|
||||
# CHECK WHICH PARTS SHOULD BE CHANGED
|
||||
#=================================================
|
||||
|
||||
change_domain=0
|
||||
if [ "$old_domain" != "$new_domain" ]
|
||||
then
|
||||
change_domain=1
|
||||
fi
|
||||
|
||||
change_path=0
|
||||
if [ "$old_path" != "$new_path" ]
|
||||
then
|
||||
change_path=1
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# STANDARD MODIFICATIONS
|
||||
#=================================================
|
||||
|
@ -79,29 +23,7 @@ ynh_systemd_action --service_name=$app --action="stop"
|
|||
#=================================================
|
||||
ynh_script_progression --message="Updating NGINX web server configuration..." --weight=1
|
||||
|
||||
nginx_conf_path=/etc/nginx/conf.d/$old_domain.d/$app.conf
|
||||
|
||||
# Change the path in the NGINX config file
|
||||
if [ $change_path -eq 1 ]
|
||||
then
|
||||
# Make a backup of the original NGINX config file if modified
|
||||
ynh_backup_if_checksum_is_different --file="$nginx_conf_path"
|
||||
# Set global variables for NGINX helper
|
||||
domain="$old_domain"
|
||||
path_url="$new_path"
|
||||
# Create a dedicated NGINX config
|
||||
ynh_add_nginx_config
|
||||
fi
|
||||
|
||||
# Change the domain for NGINX
|
||||
if [ $change_domain -eq 1 ]
|
||||
then
|
||||
# Delete file checksum for the old conf file location
|
||||
ynh_delete_file_checksum --file="$nginx_conf_path"
|
||||
mv $nginx_conf_path /etc/nginx/conf.d/$new_domain.d/$app.conf
|
||||
# Store file checksum for the new config file location
|
||||
ynh_store_file_checksum --file="/etc/nginx/conf.d/$new_domain.d/$app.conf"
|
||||
fi
|
||||
ynh_change_url_nginx_config
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC MODIFICATIONS
|
||||
|
@ -123,14 +45,7 @@ ynh_add_config --template="../conf/systemd-sysconfig" --destination="/etc/defaul
|
|||
ynh_script_progression --message="Starting a systemd service..." --weight=12
|
||||
|
||||
# Start a systemd service
|
||||
ynh_systemd_action --service_name=$app --action=start --log_path="$final_path/airsonic.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
||||
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
ynh_systemd_action --service_name=$app --action=start --log_path="$install_dir/airsonic.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
|
|
149
scripts/install
149
scripts/install
|
@ -13,85 +13,16 @@ fi
|
|||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
# MANAGE SCRIPT FAILURE
|
||||
#=================================================
|
||||
|
||||
ynh_clean_setup () {
|
||||
true
|
||||
}
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
#=================================================
|
||||
# RETRIEVE ARGUMENTS FROM THE MANIFEST
|
||||
#=================================================
|
||||
|
||||
domain=$YNH_APP_ARG_DOMAIN
|
||||
path_url=$YNH_APP_ARG_PATH
|
||||
is_public=$YNH_APP_ARG_IS_PUBLIC
|
||||
admin=$YNH_APP_ARG_ADMIN
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE INSTALLED WITH THESE ARGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Validating installation parameters..." --weight=1
|
||||
|
||||
final_path=/var/www/$app
|
||||
test ! -e "$final_path" || ynh_die --message="This path already contains a folder"
|
||||
|
||||
# Register (book) web path
|
||||
ynh_webpath_register --app=$app --domain=$domain --path_url=$path_url
|
||||
|
||||
#=================================================
|
||||
# STORE SETTINGS FROM MANIFEST
|
||||
#=================================================
|
||||
ynh_script_progression --message="Storing installation settings..." --weight=2
|
||||
|
||||
ynh_app_setting_set --app=$app --key=domain --value=$domain
|
||||
ynh_app_setting_set --app=$app --key=path --value=$path_url
|
||||
ynh_app_setting_set --app=$app --key=admin --value=$admin
|
||||
|
||||
#=================================================
|
||||
# STANDARD MODIFICATIONS
|
||||
#=================================================
|
||||
# FIND AND OPEN A PORT
|
||||
#=================================================
|
||||
ynh_script_progression --message="Finding an available port..." --weight=1
|
||||
|
||||
# Find an available port
|
||||
port=$(ynh_find_port --port=8095)
|
||||
ynh_app_setting_set --app=$app --key=port --value=$port
|
||||
|
||||
#=================================================
|
||||
# INSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Installing dependencies..." --weight=43
|
||||
|
||||
ynh_install_app_dependencies $pkg_dependencies
|
||||
|
||||
#=================================================
|
||||
# CREATE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configuring system user..." --weight=3
|
||||
|
||||
# Create a system user
|
||||
ynh_system_user_create --username=$app --home_dir="$final_path"
|
||||
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Setting up source files..." --weight=82
|
||||
|
||||
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||
# Download, check integrity, uncompress and patch the source from app.src
|
||||
ynh_setup_source --dest_dir="$final_path"
|
||||
ynh_setup_source --dest_dir="$install_dir"
|
||||
|
||||
chmod 750 "$final_path"
|
||||
chmod -R o-rwx "$final_path"
|
||||
chown -R $app:www-data "$final_path"
|
||||
chmod -R o-rwx "$install_dir"
|
||||
chown -R $app:www-data "$install_dir"
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
|
@ -101,22 +32,6 @@ ynh_script_progression --message="Configuring NGINX web server..." --weight=1
|
|||
# Create a dedicated NGINX config
|
||||
ynh_add_nginx_config
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC SETUP
|
||||
#=================================================
|
||||
# CREATE DATA DIRECTORY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Creating a data directory..." --weight=1
|
||||
|
||||
datadir=/home/yunohost.app/$app
|
||||
ynh_app_setting_set --app=$app --key=datadir --value=$datadir
|
||||
|
||||
mkdir -p $datadir/{Podcasts,Playlists}
|
||||
|
||||
chmod 764 "$datadir"
|
||||
chmod -R o-rwx "$datadir"
|
||||
chown -R $app:www-data "$datadir"
|
||||
|
||||
#=================================================
|
||||
# YUNOHOST MULTIMEDIA INTEGRATION
|
||||
#=================================================
|
||||
|
@ -136,19 +51,19 @@ ynh_script_progression --message="Enabling transcode..." --weight=1
|
|||
|
||||
### For details, see https://airsonic.github.io/docs/transcode/
|
||||
|
||||
mkdir -p $final_path/transcode
|
||||
mkdir -p $install_dir/transcode
|
||||
|
||||
if [ -x /usr/bin/ffmpeg ]; then # Check if 'ffmpeg' is installed and executable
|
||||
ln -s /usr/bin/ffmpeg $final_path/transcode
|
||||
ln -s /usr/bin/ffmpeg $install_dir/transcode
|
||||
fi
|
||||
|
||||
# FIXME Not sure if 'lame' is needed ?
|
||||
if [ -x /usr/bin/lame ]; then # Check if 'lame' is installed and executable
|
||||
ln -s /usr/bin/lame $final_path/transcode
|
||||
ln -s /usr/bin/lame $install_dir/transcode
|
||||
fi
|
||||
|
||||
# Ensure links belong to the $app user
|
||||
chown $app $final_path/transcode
|
||||
chown $app $install_dir/transcode
|
||||
|
||||
#=================================================
|
||||
# ADD A CONFIGURATION
|
||||
|
@ -156,13 +71,15 @@ chown $app $final_path/transcode
|
|||
ynh_script_progression --message="Adding a configuration file..." --weight=1
|
||||
|
||||
ynh_add_config --template="../conf/systemd-sysconfig" --destination="/etc/default/$app"
|
||||
|
||||
chmod 600 "/etc/default/$app"
|
||||
chown $app:$app "/etc/default/$app"
|
||||
|
||||
# Copy configuration file of airsonic
|
||||
ynh_add_config --template="../conf/airsonic.properties" --destination="$final_path/airsonic.properties"
|
||||
chmod 600 "$final_path/airsonic.properties"
|
||||
chown $app:$app "$final_path/airsonic.properties"
|
||||
ynh_add_config --template="../conf/airsonic.properties" --destination="$install_dir/airsonic.properties"
|
||||
|
||||
chmod 600 "$install_dir/airsonic.properties"
|
||||
chown $app:$app "$install_dir/airsonic.properties"
|
||||
|
||||
#=================================================
|
||||
# SETUP SYSTEMD
|
||||
|
@ -177,18 +94,11 @@ ynh_add_systemd_config
|
|||
#=================================================
|
||||
ynh_script_progression --message="Setuping application with CURL..." --weight=1
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/$app.log" --line_match="Started Application in"
|
||||
|
||||
# Set the app as temporarily public for curl call
|
||||
ynh_script_progression --message="Configuring SSOwat..." --weight=1
|
||||
# Making the app public for curl
|
||||
ynh_permission_update --permission="main" --add="visitors"
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$install_dir/$app.log" --line_match="Started Application in"
|
||||
|
||||
# Reload Nginx
|
||||
ynh_systemd_action --service_name=nginx --action="reload"
|
||||
|
||||
ynh_script_progression --message="Finalizing installation..." --weight=10
|
||||
|
||||
mailadmin=$(ynh_user_get_info --username=$admin --key=mail)
|
||||
|
||||
#http://www.subsonic.org/pages/api.jsp
|
||||
|
@ -217,9 +127,6 @@ token=$(echo -n $passwordAdmin$salt | md5sum | awk '{print $1}')
|
|||
|
||||
ynh_local_curl "/rest/createUser.view" "u=admin" "t=$token" "s=$salt" "username=$admin" "password=a" "v=$VERSION" "c=myapp" "email=$mailadmin" "adminRole=Yes" "ldapAuthenticated=Yes" "settingsRole=Yes" "streamRole=Yes" "jukeboxRole=Yes" "downloadRole=Yes" "uploadRole=Yes" "playlistRole=Yes" "coverArtRole=Yes" "commentRole=Yes" "podcastRole=Yes" "shareRole=Yes" "videoConversionRole=Yes"
|
||||
|
||||
# Remove the public access
|
||||
ynh_permission_update --permission="main" --remove="visitors"
|
||||
|
||||
#=================================================
|
||||
# USE MULTIMEDIA
|
||||
#=================================================
|
||||
|
@ -228,12 +135,12 @@ ynh_script_progression --message="Using multimedia..." --weight=1
|
|||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
|
||||
# Use multimedia folder
|
||||
ynh_replace_string --match_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/var/music','Music'" --replace_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/home/yunohost.multimedia/share/Music','YunoHost Music'" --target_file="$final_path/db/airsonic.script"
|
||||
ynh_replace_string --match_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/var/music','Music'" --replace_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/home/yunohost.multimedia/share/Music','YunoHost Music'" --target_file="$install_dir/db/airsonic.script"
|
||||
|
||||
ynh_script_progression --message="Restarting a systemd service..." --weight=12
|
||||
|
||||
# Start a systemd service
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/airsonic.log" --line_match="Started Application in"
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$install_dir/airsonic.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
|
@ -243,14 +150,14 @@ ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/
|
|||
ynh_script_progression --message="Configuring log rotation..." --weight=1
|
||||
|
||||
# Use logrotate to manage application logfile(s)
|
||||
ynh_use_logrotate $final_path/$app.log
|
||||
ynh_use_logrotate $install_dir/$app.log
|
||||
|
||||
#=================================================
|
||||
# INTEGRATE SERVICE IN YUNOHOST
|
||||
#=================================================
|
||||
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
||||
|
||||
yunohost service add $app --description="Airsonic daemon" --log="$final_path/$app.log"
|
||||
yunohost service add $app --description="Airsonic daemon" --log="$install_dir/$app.log"
|
||||
|
||||
#=================================================
|
||||
# START SYSTEMD SERVICE
|
||||
|
@ -258,27 +165,7 @@ yunohost service add $app --description="Airsonic daemon" --log="$final_path/$ap
|
|||
ynh_script_progression --message="Starting a systemd service..." --weight=12
|
||||
|
||||
# Start a systemd service
|
||||
ynh_systemd_action --service_name=$app --action="restart" --log_path="$final_path/$app.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# SETUP SSOWAT
|
||||
#=================================================
|
||||
ynh_script_progression --message="Configuring permissions..." --weight=1
|
||||
|
||||
# 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"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
||||
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
ynh_systemd_action --service_name=$app --action="restart" --log_path="$install_dir/$app.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
|
|
|
@ -9,18 +9,6 @@
|
|||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
ynh_script_progression --message="Loading installation settings..." --weight=1
|
||||
|
||||
app=$YNH_APP_INSTANCE_NAME
|
||||
|
||||
domain=$(ynh_app_setting_get --app=$app --key=domain)
|
||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||
|
||||
#=================================================
|
||||
# STANDARD REMOVE
|
||||
#=================================================
|
||||
|
@ -34,76 +22,17 @@ then
|
|||
yunohost service remove $app
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# STOP AND REMOVE SERVICE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Stopping and removing the systemd service..." --weight=1
|
||||
|
||||
# Remove the dedicated systemd config
|
||||
ynh_remove_systemd_config
|
||||
|
||||
#=================================================
|
||||
# REMOVE LOGROTATE CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Removing logrotate configuration..." --weight=1
|
||||
|
||||
# Remove the app-specific logrotate config
|
||||
ynh_remove_logrotate
|
||||
|
||||
#=================================================
|
||||
# REMOVE APP MAIN DIR
|
||||
#=================================================
|
||||
ynh_script_progression --message="Removing app main directory..." --weight=1
|
||||
|
||||
# Remove the app directory securely
|
||||
ynh_secure_remove --file="$final_path"
|
||||
|
||||
#=================================================
|
||||
# REMOVE DATA DIR
|
||||
#=================================================
|
||||
|
||||
# Remove the data directory if --purge option is used
|
||||
if [ "${YNH_APP_PURGE:-0}" -eq 1 ]
|
||||
then
|
||||
ynh_script_progression --message="Removing app data directory..." --weight=1
|
||||
ynh_secure_remove --file="$datadir"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
# REMOVE NGINX CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Removing NGINX web server configuration..." --weight=1
|
||||
|
||||
# Remove the dedicated NGINX config
|
||||
ynh_remove_nginx_config
|
||||
|
||||
#=================================================
|
||||
# REMOVE DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Removing dependencies..." --weight=19
|
||||
|
||||
# Remove metapackage and its dependencies
|
||||
ynh_remove_app_dependencies
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC REMOVE
|
||||
#=================================================
|
||||
# REMOVE VARIOUS FILES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Removing various files..." --weight=1
|
||||
|
||||
ynh_secure_remove --file="/etc/default/$app"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
#=================================================
|
||||
# REMOVE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Removing the dedicated system user..." --weight=1
|
||||
|
||||
# Delete a system user
|
||||
ynh_system_user_delete --username=$app
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
#=================================================
|
||||
|
|
|
@ -10,79 +10,24 @@
|
|||
source ../settings/scripts/_common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
# MANAGE SCRIPT FAILURE
|
||||
#=================================================
|
||||
|
||||
ynh_clean_setup () {
|
||||
true
|
||||
}
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
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)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||
|
||||
#=================================================
|
||||
# CHECK IF THE APP CAN BE RESTORED
|
||||
#=================================================
|
||||
ynh_script_progression --message="Validating restoration parameters..." --weight=1
|
||||
|
||||
test ! -d $final_path \
|
||||
|| ynh_die --message="There is already a directory: $final_path "
|
||||
|
||||
#=================================================
|
||||
# STANDARD RESTORATION STEPS
|
||||
#=================================================
|
||||
# RECREATE THE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Recreating the dedicated system user..." --weight=1
|
||||
|
||||
# Create the dedicated user (if not existing)
|
||||
ynh_system_user_create --username=$app --home_dir="$final_path"
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE APP MAIN DIR
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restoring the app main directory..." --weight=1
|
||||
|
||||
ynh_restore_file --origin_path="$final_path"
|
||||
ynh_restore_file --origin_path="$install_dir"
|
||||
|
||||
chmod 750 "$final_path"
|
||||
chmod -R o-rwx "$final_path"
|
||||
chown -R $app:www-data "$final_path"
|
||||
chmod -R o-rwx "$install_dir"
|
||||
chown -R $app:www-data "$install_dir"
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE DATA DIRECTORY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restoring the data directory..." --weight=1
|
||||
|
||||
ynh_restore_file --origin_path="$datadir" --not_mandatory
|
||||
ynh_restore_file --origin_path="$data_dir" --not_mandatory
|
||||
|
||||
mkdir -p $datadir
|
||||
|
||||
chmod 764 "$datadir"
|
||||
chmod -R o-rwx "$datadir"
|
||||
chown -R $app:www-data "$datadir"
|
||||
|
||||
#=================================================
|
||||
# SPECIFIC RESTORATION
|
||||
#=================================================
|
||||
# REINSTALL DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reinstalling dependencies..." --weight=43
|
||||
|
||||
# Define and install dependencies
|
||||
ynh_install_app_dependencies $pkg_dependencies
|
||||
chown -R $app:www-data "$data_dir"
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE NGINX CONFIGURATION
|
||||
|
@ -98,19 +43,19 @@ ynh_script_progression --message="Enabling transcode..." --weight=1
|
|||
|
||||
### For details, see https://airsonic.github.io/docs/transcode/
|
||||
|
||||
mkdir -p $final_path/transcode
|
||||
mkdir -p $install_dir/transcode
|
||||
|
||||
if [ -x /usr/bin/ffmpeg -a ! -e $final_path/transcode/ffmpeg ]; then # Check if 'ffmpeg' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/ffmpeg $final_path/transcode
|
||||
if [ -x /usr/bin/ffmpeg -a ! -e $install_dir/transcode/ffmpeg ]; then # Check if 'ffmpeg' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/ffmpeg $install_dir/transcode
|
||||
fi
|
||||
|
||||
# FIXME Not sure if 'lame' is needed ?
|
||||
if [ -x /usr/bin/lame -a ! -e $final_path/transcode/lame ]; then # Check if 'lame' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/lame $final_path/transcode
|
||||
if [ -x /usr/bin/lame -a ! -e $install_dir/transcode/lame ]; then # Check if 'lame' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/lame $install_dir/transcode
|
||||
fi
|
||||
|
||||
# Ensure links belong to the $app user
|
||||
chown $app $final_path/transcode
|
||||
chown $app $install_dir/transcode
|
||||
|
||||
#=================================================
|
||||
# RESTORE VARIOUS FILES
|
||||
|
@ -138,33 +83,16 @@ ynh_script_progression --message="Restoring the systemd configuration..." --weig
|
|||
ynh_restore_file --origin_path="/etc/systemd/system/$app.service"
|
||||
systemctl enable $app.service --quiet
|
||||
|
||||
#=================================================
|
||||
# RESTORE THE LOGROTATE CONFIGURATION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Restoring the logrotate configuration..." --weight=1
|
||||
|
||||
ynh_restore_file --origin_path="/etc/logrotate.d/$app"
|
||||
|
||||
#=================================================
|
||||
# INTEGRATE SERVICE IN YUNOHOST
|
||||
#=================================================
|
||||
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
||||
|
||||
yunohost service add $app --description="Airsonic daemon" --log="$final_path/$app.log"
|
||||
yunohost service add $app --description="Airsonic daemon" --log="$install_dir/$app.log"
|
||||
|
||||
#=================================================
|
||||
# START SYSTEMD SERVICE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Starting a systemd service..." --weight=12
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/$app.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# GENERIC FINALIZATION
|
||||
#=================================================
|
||||
# RELOAD NGINX AND PHP-FPM
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$install_dir/$app.log" --line_match="Started Application in"
|
||||
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
|
||||
|
|
140
scripts/upgrade
140
scripts/upgrade
|
@ -9,41 +9,12 @@
|
|||
source _common.sh
|
||||
source /usr/share/yunohost/helpers
|
||||
|
||||
#=================================================
|
||||
# LOAD SETTINGS
|
||||
#=================================================
|
||||
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)
|
||||
final_path=$(ynh_app_setting_get --app=$app --key=final_path)
|
||||
port=$(ynh_app_setting_get --app=$app --key=port)
|
||||
datadir=$(ynh_app_setting_get --app=$app --key=datadir)
|
||||
|
||||
#=================================================
|
||||
# CHECK VERSION
|
||||
#=================================================
|
||||
ynh_script_progression --message="Checking version..." --weight=1
|
||||
|
||||
upgrade_type=$(ynh_check_app_version_changed)
|
||||
|
||||
#=================================================
|
||||
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
|
||||
#=================================================
|
||||
ynh_script_progression --message="Backing up the app before upgrading (may take a while)..." --weight=5
|
||||
|
||||
# Backup the current version of the app
|
||||
ynh_backup_before_upgrade
|
||||
ynh_clean_setup () {
|
||||
# Restore it if the upgrade fails
|
||||
ynh_restore_upgradebackup
|
||||
}
|
||||
# Exit if an error occurs during the execution of the script
|
||||
ynh_abort_if_errors
|
||||
|
||||
#=================================================
|
||||
# STANDARD UPGRADE STEPS
|
||||
#=================================================
|
||||
|
@ -53,56 +24,6 @@ ynh_script_progression --message="Stopping a systemd service..." --weight=1
|
|||
|
||||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
|
||||
#=================================================
|
||||
# ENSURE DOWNWARD COMPATIBILITY
|
||||
#=================================================
|
||||
ynh_script_progression --message="Ensuring downward compatibility..." --weight=1
|
||||
|
||||
# If final_path doesn't exist, create it
|
||||
if [ -z "$final_path" ]; then
|
||||
final_path=/var/www/$app
|
||||
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
|
||||
fi
|
||||
|
||||
# If public_path doesn't exist, create it
|
||||
if [ -z "$datadir" ]; then
|
||||
datadir=/home/yunohost.app/$app
|
||||
mkdir -p $datadir/{Podcasts,Playlists}
|
||||
chmod 764 "$datadir"
|
||||
chmod -R o-rwx "$datadir"
|
||||
chown -R $app:www-data "$datadir"
|
||||
ynh_app_setting_set --app=$app --key=datadir --value=$datadir
|
||||
cp -a "/home/yunohost.$app" "$datadir"
|
||||
fi
|
||||
|
||||
# Cleaning legacy permissions
|
||||
if ynh_legacy_permissions_exists; then
|
||||
ynh_legacy_permissions_delete_all
|
||||
|
||||
ynh_app_setting_delete --app=$app --key=is_public
|
||||
fi
|
||||
|
||||
# Rename legacy folder to proper location
|
||||
if [[ ! -e /home/yunohost.app/$app ]] && [[ -e /home/yunohost.$app ]]
|
||||
then
|
||||
mkdir -p /home/yunohost.app/
|
||||
mv /home/yunohost.$app /home/yunohost.app/$app
|
||||
fi
|
||||
|
||||
mkdir -p $datadir/{Podcasts,Playlists}
|
||||
|
||||
chmod 764 "$datadir"
|
||||
chmod -R o-rwx "$datadir"
|
||||
chown -R $app:www-data "$datadir"
|
||||
|
||||
#=================================================
|
||||
# CREATE DEDICATED USER
|
||||
#=================================================
|
||||
ynh_script_progression --message="Making sure dedicated system user exists..." --weight=1
|
||||
|
||||
# Create a dedicated user (if not existing)
|
||||
ynh_system_user_create --username=$app --home_dir="$final_path"
|
||||
|
||||
#=================================================
|
||||
# DOWNLOAD, CHECK AND UNPACK SOURCE
|
||||
#=================================================
|
||||
|
@ -112,19 +33,11 @@ then
|
|||
ynh_script_progression --message="Upgrading source files..." --weight=94
|
||||
|
||||
# Download, check integrity, uncompress and patch the source from app.src
|
||||
ynh_setup_source --dest_dir="$final_path" --keep="airsonic.properties"
|
||||
ynh_setup_source --dest_dir="$install_dir" --keep="airsonic.properties"
|
||||
fi
|
||||
|
||||
chmod 750 "$final_path"
|
||||
chmod -R o-rwx "$final_path"
|
||||
chown -R $app:www-data "$final_path"
|
||||
|
||||
#=================================================
|
||||
# UPGRADE DEPENDENCIES
|
||||
#=================================================
|
||||
ynh_script_progression --message="Upgrading dependencies..." --weight=4
|
||||
|
||||
ynh_install_app_dependencies $pkg_dependencies
|
||||
chmod -R o-rwx "$install_dir"
|
||||
chown -R $app:www-data "$install_dir"
|
||||
|
||||
#=================================================
|
||||
# NGINX CONFIGURATION
|
||||
|
@ -147,12 +60,12 @@ ynh_multimedia_addfolder --source_dir="/home/yunohost.app/$app/Playlists" --dest
|
|||
# Allow airsonic to write into these directories
|
||||
ynh_multimedia_addaccess $app
|
||||
|
||||
if ! grep -q "PodcastFolder" $final_path/airsonic.properties; then
|
||||
echo "PodcastFolder=/home/yunohost.multimedia/share/Podcasts" >> $final_path/airsonic.properties
|
||||
if ! grep -q "PodcastFolder" $install_dir/airsonic.properties; then
|
||||
echo "PodcastFolder=/home/yunohost.multimedia/share/Podcasts" >> $install_dir/airsonic.properties
|
||||
fi
|
||||
|
||||
if ! grep -q "PlaylistFolder" $final_path/airsonic.properties; then
|
||||
echo "PlaylistFolder=/home/yunohost.multimedia/share/Playlists" >> $final_path/airsonic.properties
|
||||
if ! grep -q "PlaylistFolder" $install_dir/airsonic.properties; then
|
||||
echo "PlaylistFolder=/home/yunohost.multimedia/share/Playlists" >> $install_dir/airsonic.properties
|
||||
fi
|
||||
|
||||
# Allow Airsonic to write into these directories
|
||||
|
@ -165,32 +78,32 @@ ynh_script_progression --message="Enabling transcode..." --weight=1
|
|||
|
||||
### For details, see https://airsonic.github.io/docs/transcode/
|
||||
|
||||
mkdir -p $final_path/transcode
|
||||
mkdir -p $install_dir/transcode
|
||||
|
||||
if [ -x /usr/bin/ffmpeg -a ! -e $final_path/transcode/ffmpeg ]; then # Check if 'ffmpeg' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/ffmpeg $final_path/transcode
|
||||
if [ -x /usr/bin/ffmpeg -a ! -e $install_dir/transcode/ffmpeg ]; then # Check if 'ffmpeg' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/ffmpeg $install_dir/transcode
|
||||
fi
|
||||
|
||||
# FIXME Not sure if 'lame' is needed ?
|
||||
if [ -x /usr/bin/lame -a ! -e $final_path/transcode/lame ]; then # Check if 'lame' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/lame $final_path/transcode
|
||||
if [ -x /usr/bin/lame -a ! -e $install_dir/transcode/lame ]; then # Check if 'lame' is installed, executable and that the symlink doesn't exist
|
||||
ln -s /usr/bin/lame $install_dir/transcode
|
||||
fi
|
||||
|
||||
# Ensure links belong to the $app user
|
||||
chown $app $final_path/transcode
|
||||
chown $app $install_dir/transcode
|
||||
|
||||
#=================================================
|
||||
# UPDATE A CONFIG FILE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Updating a configuration file..." --weight=1
|
||||
#ynh_script_progression --message="Updating a configuration file..." --weight=1
|
||||
|
||||
#ynh_add_config --template="../conf/systemd-sysconfig" --destination="/etc/default/$app"
|
||||
#chmod 600 "/etc/default/$app"
|
||||
#chown $app:$app "/etc/default/$app"
|
||||
|
||||
#ynh_add_config --template="../conf/airsonic.properties" --destination="$final_path/airsonic.properties"
|
||||
#chmod 600 "$final_path/airsonic.properties"
|
||||
#chown $app:$app "$final_path/airsonic.properties"
|
||||
#ynh_add_config --template="../conf/airsonic.properties" --destination="$install_dir/airsonic.properties"
|
||||
#chmod 600 "$install_dir/airsonic.properties"
|
||||
#chown $app:$app "$install_dir/airsonic.properties"
|
||||
|
||||
#=================================================
|
||||
# SETUP SYSTEMD
|
||||
|
@ -206,16 +119,16 @@ ynh_add_systemd_config
|
|||
ynh_script_progression --message="Using multimedia..." --weight=1
|
||||
|
||||
# Use multimedia folder if needed
|
||||
if ! grep -q "/home/yunohost.multimedia/share/Music" $final_path/db/airsonic.script; then
|
||||
if ! grep -q "/home/yunohost.multimedia/share/Music" $install_dir/db/airsonic.script; then
|
||||
ynh_systemd_action --service_name=$app --action="stop"
|
||||
|
||||
# Use multimedia folder
|
||||
ynh_replace_string --match_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/var/music','Music'" --replace_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/home/yunohost.multimedia/share/Music','YunoHost Music'" --target_file="$final_path/db/airsonic.script"
|
||||
ynh_replace_string --match_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/var/music','Music'" --replace_string="INSERT INTO MUSIC_FOLDER VALUES(0,'/home/yunohost.multimedia/share/Music','YunoHost Music'" --target_file="$install_dir/db/airsonic.script"
|
||||
|
||||
ynh_script_progression --message="Restarting a systemd service..." --weight=12
|
||||
|
||||
# Start a systemd service
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/airsonic.log" --line_match="Started Application in"
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$install_dir/airsonic.log" --line_match="Started Application in"
|
||||
fi
|
||||
|
||||
#=================================================
|
||||
|
@ -226,28 +139,21 @@ fi
|
|||
ynh_script_progression --message="Upgrading logrotate configuration..." --weight=1
|
||||
|
||||
# Use logrotate to manage app-specific logfile(s)
|
||||
ynh_use_logrotate --non-append --logfile="$final_path/$app.log"
|
||||
ynh_use_logrotate --non-append --logfile="$install_dir/$app.log"
|
||||
|
||||
#=================================================
|
||||
# INTEGRATE SERVICE IN YUNOHOST
|
||||
#=================================================
|
||||
ynh_script_progression --message="Integrating service in YunoHost..." --weight=1
|
||||
|
||||
yunohost service add $app --description="Airsonic daemon" --log="$final_path/$app.log"
|
||||
yunohost service add $app --description="Airsonic daemon" --log="$install_dir/$app.log"
|
||||
|
||||
#=================================================
|
||||
# START SYSTEMD SERVICE
|
||||
#=================================================
|
||||
ynh_script_progression --message="Starting a systemd service..." --weight=12
|
||||
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$final_path/airsonic.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# RELOAD NGINX
|
||||
#=================================================
|
||||
ynh_script_progression --message="Reloading NGINX web server..." --weight=1
|
||||
|
||||
ynh_systemd_action --service_name=nginx --action=reload
|
||||
ynh_systemd_action --service_name=$app --action="start" --log_path="$install_dir/airsonic.log" --line_match="Started Application in"
|
||||
|
||||
#=================================================
|
||||
# END OF SCRIPT
|
||||
|
|
9
tests.toml
Normal file
9
tests.toml
Normal file
|
@ -0,0 +1,9 @@
|
|||
test_format = 1.0
|
||||
|
||||
[default]
|
||||
|
||||
# -------------------------------
|
||||
# Commits to test upgrade from
|
||||
# -------------------------------
|
||||
|
||||
test_upgrade_from.af2014577653a4fa27c12aacc225bac1e131d0fa.name = "Upgrade from 11.0.0~ynh4"
|
Loading…
Reference in a new issue