1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/UMS_ynh.git synced 2024-10-01 13:35:01 +02:00

Merge pull request #55 from YunoHost-Apps/testing

Testing
This commit is contained in:
Krakinou 2022-12-24 11:25:16 +01:00 committed by GitHub
commit 223120df61
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 217 additions and 63 deletions

133
.github/workflows/updater.sh vendored Normal file
View file

@ -0,0 +1,133 @@
#!/bin/bash
#=================================================
# 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 '.[] | select( .prerelease != true ) | .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
# 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
# Leave $src empty to ignore the asset
case $asset_url in
*"arm64.tgz"*)
src="app.arm64"
;;
*"armel.tgz"*)
src="app.armel"
;;
*"armhf.tgz"*)
src="app.armhf"
;;
*"x86_64.tgz"*)
src="app.x86_64"
;;
*"x86.tgz"*)
src="app.x86"
;;
*)
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 == *.tgz ]]; then
extension=tgz
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=$extension
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
echo "$(jq -s --indent 4 ".[] | .upstream.version = \"$version\"" 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

View file

@ -15,17 +15,21 @@ If you don't have YunoHost, please consult [the guide](https://yunohost.org/#/in
## Overview
A DLNA, UPnP and HTTP(S) Media Server
Universal Media Server is a DLNA-compliant UPnP Media Server. It is capable of sharing video, audio and images between most modern devices.
**Shipped version:** 11.5.0
The program streams or transcodes many different media formats with little or no configuration. It is powered by FFmpeg, MediaInfo, OpenSubtitles, Crowdin, MEncoder, tsMuxeR, AviSynth, VLC and more, which combine to offer support for a wide range of media formats.
**Shipped version:** 13.0.0
## Screenshots
![Screenshot of Universal Media Server](./doc/screenshots/screenshot.gif)
![Screenshot of Universal Media Server](./doc/screenshots/screenshot.png)
## Disclaimers / important information
### Configuration
At first run, UMS will ask you to create an admin user. This can be disable later on in the settings
Once installed, UMS will create config file in `/home/yunohost.app/ums/.config/UMS/`
All settings are pretty well documented directly in the files.
@ -34,9 +38,8 @@ The default setting will use the shared multimedia directory by default (located
### Limitations
- No multi-instance
- No User integration with Yunohost
- work only on its own subdomain (ums.mydomain.tld, not on mydomain.tld/ums)
- No user management
- Not tested that much
### Other infos
@ -53,7 +56,7 @@ On small device (Raspberry for example), transco may be requiring too much power
* Official app website: <www.universalmediaserver.com>
* Official admin documentation: <https://github.com/UniversalMediaServer/UniversalMediaServer/wiki>
* Upstream app code repository: <https://github.com/UniversalMediaServer>
* Upstream app code repository: <https://github.com/UniversalMediaServer/UniversalMediaServer>
* YunoHost documentation for this app: <https://yunohost.org/app_ums>
* Report a bug: <https://github.com/YunoHost-Apps/ums_ynh/issues>

View file

@ -15,17 +15,20 @@ Si vous n'avez pas YunoHost, regardez [ici](https://yunohost.org/#/install) pour
## Vue d'ensemble
Un Serveur Multimedia DLNA, UPnP et HTTP(S)
Universal Media Server est un serveur multimédia UPnP compatible DLNA. Il peut partager des vidéos, de l'audio et des images avec la pluparts des équipements modernes.
Le programme stream ou transcode de nombreux formats média différents avec peu ou pas de configuration. Il utilise par FFmpeg, MediaInfo, OpenSubtitles, Crowdin, MEncoder, tsMuxeR, AviSynth, VLC et d'autres, qui se combinent pour offrir une grande variété de formats.
**Version incluse :** 11.5.0
**Version incluse :** 13.0.0
## Captures d'écran
![Capture d'écran de Universal Media Server](./doc/screenshots/screenshot.gif)
![Capture d'écran de Universal Media Server](./doc/screenshots/screenshot.png)
## Avertissements / informations importantes
### Configuration
A la première connexion, UMS vous demandera de créer un user administrateur. Cela peut-être désactivé plus tard dans les réglages.
Une fois installé, tous les réglages peuvent être trouvés dans `/home/yunohost.app/ums/.config/UMS/`
Les réglages sont plutôt bien documentés, vous pouvez les changer directement dans le fichier.
Le réglage par défaut utilisera le répertoire multimédia partagé (situé dans `/home/yunohost.multimedia/share`). Vous pouvez changer ce réglage dans le fichier `/home/yunohost.app/ums/.config/UMS/UMS.conf` sur le réglage "folders".
@ -33,8 +36,8 @@ Le réglage par défaut utilisera le répertoire multimédia partagé (situé da
### Limitations
- pas de multiinstance
- Pas d'intégration des utilisateurs avec Yunohost
- fonctionne uniquement en sous-domaine (ums.mydomain.tld, et non mydomain.tld/ums)
- pas de gestion d'utilisateur
- pas énormément testé
### Autres infos
@ -51,7 +54,7 @@ Sur de petits appareils (par exemple un raspberry), la transco peut demander tro
* Site officiel de l'app : <www.universalmediaserver.com>
* Documentation officielle de l'admin : <https://github.com/UniversalMediaServer/UniversalMediaServer/wiki>
* Dépôt de code officiel de l'app : <https://github.com/UniversalMediaServer>
* Dépôt de code officiel de l'app : <https://github.com/UniversalMediaServer/UniversalMediaServer>
* Documentation YunoHost pour cette app : <https://yunohost.org/app_ums>
* Signaler un bug : <https://github.com/YunoHost-Apps/ums_ynh/issues>

5
conf/app.arm64.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=https://github.com/UniversalMediaServer/UniversalMediaServer/releases/download/13.0.0/UMS-13.0.0-arm64.tgz
SOURCE_SUM=b0f3bd25e718713484e449878c8ada2f32576fb1bc10f39e57e4ec0ae0e3e04c
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tgz
SOURCE_EXTRACT=false

5
conf/app.armel.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=https://github.com/UniversalMediaServer/UniversalMediaServer/releases/download/13.0.0/UMS-13.0.0-armel.tgz
SOURCE_SUM=c8405c8347cee916eed4d6850a4ebde28f87b5031c196106859c2f43f5f01a68
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tgz
SOURCE_EXTRACT=false

5
conf/app.armhf.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=https://github.com/UniversalMediaServer/UniversalMediaServer/releases/download/13.0.0/UMS-13.0.0-armhf.tgz
SOURCE_SUM=4bbf09e93b0ac2887d0e1579f320f35d701d84ed48cb02a61aa464bd5a148520
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tgz
SOURCE_EXTRACT=false

View file

@ -1,5 +1,5 @@
SOURCE_URL=https://github.com/UniversalMediaServer/UniversalMediaServer/releases/download/__UPSTREAM_VERSION__/UMS-__UPSTREAM_VERSION__-__MACH__.tgz
SOURCE_SUM=__SHA256__
SOURCE_FORMAT=tgz
SOURCE_URL=https://github.com/UniversalMediaServer/UniversalMediaServer/releases/download/13.0.0/UMS-13.0.0-x86.tgz
SOURCE_SUM=8de48d05cadaacc10daeaf8d0c5b317f1caf04423dc397bc68aa6990bb0452bc
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tgz
SOURCE_EXTRACT=false

5
conf/app.x86_64.src Normal file
View file

@ -0,0 +1,5 @@
SOURCE_URL=https://github.com/UniversalMediaServer/UniversalMediaServer/releases/download/13.0.0/UMS-13.0.0-x86_64.tgz
SOURCE_SUM=49fa721ad68440b73306149e02a112aae18bf114efcca997df6e919365a22c82
SOURCE_SUM_PRG=sha256sum
SOURCE_FORMAT=tgz
SOURCE_EXTRACT=false

View file

@ -15,19 +15,19 @@ StandardError=inherit
# Depending on specificities of your service/app, you may need to tweak these
# .. but this should be a good baseline
# Details for these options: https://www.freedesktop.org/software/systemd/man/systemd.exec.html
NoNewPrivileges=yes
#NoNewPrivileges=yes
PrivateTmp=yes
PrivateDevices=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
RestrictNamespaces=yes
RestrictRealtime=yes
#PrivateDevices=yes
#RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6
#RestrictNamespaces=yes
#RestrictRealtime=yes
DevicePolicy=closed
ProtectSystem=full
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
LockPersonality=yes
SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
#ProtectKernelModules=yes
#ProtectKernelTunables=yes
#LockPersonality=yes
#SystemCallFilter=~@clock @debug @module @mount @obsolete @reboot @setuid @swap
# Denying access to capabilities that should not be relevant for webapps
# Doc: https://man7.org/linux/man-pages/man7/capabilities.7.html
@ -38,7 +38,7 @@ CapabilityBoundingSet=~CAP_LEASE CAP_LINUX_IMMUTABLE CAP_IPC_LOCK
CapabilityBoundingSet=~CAP_BLOCK_SUSPEND CAP_WAKE_ALARM
CapabilityBoundingSet=~CAP_SYS_TTY_CONFIG
CapabilityBoundingSet=~CAP_MAC_ADMIN CAP_MAC_OVERRIDE
CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW
#CapabilityBoundingSet=~CAP_NET_ADMIN CAP_NET_BROADCAST CAP_NET_RAW
CapabilityBoundingSet=~CAP_SYS_ADMIN CAP_SYS_PTRACE CAP_SYSLOG
[Install]

3
doc/DESCRIPTION.md Normal file
View file

@ -0,0 +1,3 @@
Universal Media Server is a DLNA-compliant UPnP Media Server. It is capable of sharing video, audio and images between most modern devices.
The program streams or transcodes many different media formats with little or no configuration. It is powered by FFmpeg, MediaInfo, OpenSubtitles, Crowdin, MEncoder, tsMuxeR, AviSynth, VLC and more, which combine to offer support for a wide range of media formats.

2
doc/DESCRIPTION_fr.md Normal file
View file

@ -0,0 +1,2 @@
Universal Media Server est un serveur multimédia UPnP compatible DLNA. Il peut partager des vidéos, de l'audio et des images avec la pluparts des équipements modernes.
Le programme stream ou transcode de nombreux formats média différents avec peu ou pas de configuration. Il utilise par FFmpeg, MediaInfo, OpenSubtitles, Crowdin, MEncoder, tsMuxeR, AviSynth, VLC et d'autres, qui se combinent pour offrir une grande variété de formats.

View file

@ -1,5 +1,7 @@
### Configuration
At first run, UMS will ask you to create an admin user. This can be disable later on in the settings
Once installed, UMS will create config file in `/home/yunohost.app/ums/.config/UMS/`
All settings are pretty well documented directly in the files.
@ -8,9 +10,8 @@ The default setting will use the shared multimedia directory by default (located
### Limitations
- No multi-instance
- No User integration with Yunohost
- work only on its own subdomain (ums.mydomain.tld, not on mydomain.tld/ums)
- No user management
- Not tested that much
### Other infos

View file

@ -1,5 +1,7 @@
### Configuration
A la première connexion, UMS vous demandera de créer un user administrateur. Cela peut-être désactivé plus tard dans les réglages.
Une fois installé, tous les réglages peuvent être trouvés dans `/home/yunohost.app/ums/.config/UMS/`
Les réglages sont plutôt bien documentés, vous pouvez les changer directement dans le fichier.
Le réglage par défaut utilisera le répertoire multimédia partagé (situé dans `/home/yunohost.multimedia/share`). Vous pouvez changer ce réglage dans le fichier `/home/yunohost.app/ums/.config/UMS/UMS.conf` sur le réglage "folders".
@ -7,8 +9,8 @@ Le réglage par défaut utilisera le répertoire multimédia partagé (situé da
### Limitations
- pas de multiinstance
- Pas d'intégration des utilisateurs avec Yunohost
- fonctionne uniquement en sous-domaine (ums.mydomain.tld, et non mydomain.tld/ums)
- pas de gestion d'utilisateur
- pas énormément testé
### Autres infos

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 KiB

View file

@ -6,14 +6,14 @@
"en": "A DLNA, UPnP and HTTP(S) Media Server",
"fr": "Un Serveur Multimedia DLNA, UPnP et HTTP(S)"
},
"version": "11.5.0~ynh1",
"version": "13.0.0~ynh1",
"url": "www.universalmediaserver.com",
"upstream": {
"version": "11.5.0",
"version": "13.0.0",
"license": "GPL-2.0-or-later",
"website": "www.universalmediaserver.com",
"admindoc": "https://github.com/UniversalMediaServer/UniversalMediaServer/wiki",
"code": "https://github.com/UniversalMediaServer"
"code": "https://github.com/UniversalMediaServer/UniversalMediaServer"
},
"license": "GPL-2.0-or-later",
"maintainer": {
@ -28,28 +28,28 @@
"nginx"
],
"arguments": {
"install" : [
"install": [
{
"name": "domain",
"type": "domain",
"help": {
"en": "UMS require its own subdomain",
"fr": "UMS a besoin de son propre sous-domaine"
}
}
},
{
"name": "is_public",
"type": "boolean",
"default": true,
"help": {
"en" : "Everybody will be able to access your media on the internet without connecting to Yunohost",
"fr" : "Tout le monde pourra voir vos media sans se connecter à Yunohost"
"en": "Everybody will be able to access your media on the internet without connecting to Yunohost",
"fr": "Tout le monde pourra voir vos media sans se connecter à Yunohost"
}
},
{
"name":"server_name",
"type":"string",
"example":"MyUMS",
"name": "server_name",
"type": "string",
"example": "MyUMS",
"default": "UniversalMediaServer",
"ask": {
"en": "By which name should UMS be identified by your renderer",
@ -61,17 +61,17 @@
}
},
{
"name":"interface",
"name": "interface",
"type": "string",
"default": "eth0",
"ask": {
"en" : "Which network interface do you want to use?",
"fr" : "Quel réseau souhaitez vous utiliser?"
},
"help": {
"en": "On lan, the interface is usually eth0, on wifi it s usually wlan0",
"fr": "En filaire, l interface est souvent eth0, en wifi wlan0"
}
"ask": {
"en": "Which network interface do you want to use?",
"fr": "Quel réseau souhaitez vous utiliser?"
},
"help": {
"en": "On lan, the interface is usually eth0, on wifi it s usually wlan0",
"fr": "En filaire, l interface est souvent eth0, en wifi wlan0"
}
}
]
}

View file

@ -9,33 +9,20 @@ pkg_dependencies="mediainfo dcraw p7zip"
mach=`uname -m`
sha256_arm64=13b2aa5067c29fcb77956e0804ee96935cf731d1a88d3a24c15dd70964d45c73
sha256_armel=f0f9b517fbcedd4b4883ef5de1a6bd96ba1740658220f52037fdb6a4a14d8543
sha256_armhf=864924728649edb50a0b679fd058dcf0e6e4abbcf96a4ceb0c63e48f6b5514ce
sha256_x86_64=32cd336096e373bf8b05d2b654bdac688b6daba3e0317be8ae63436820bdb6a4
sha256_x86=18e897527abe618d477036198f963fadac737cf37ad12234cb40ba701afc736d
case "$mach" in
"armv6l" ) mach="armel"
sha256=$sha256_armel
#for some reason, jre is not in the tarball
pkg_dependencies="$pkg_dependencies openjdk-17-jre" ;;
"armv7l" ) if [ $(dpkg --print-architecture) = "armhf" ]; then
mach="armhf"
sha256=$sha256_armhf
else
mach="armel"
sha256=$sha256_armel
fi
pkg_dependencies="$pkg_dependencies openjdk-17-jre";;
"armv8l" ) mach="arm64"
sha256=$sha256_arm64
pkg_dependencies="$pkg_dependencies openjdk-17-jre" ;;
"aarch64" ) mach="arm64"
sha256=$sha256_arm64
pkg_dependencies="$pkg_dependencies openjdk-17-jre" ;;
"x86_64" ) mach="x86_64"
sha256=$sha256_x86_64 ;;
* ) mach="x86"
sha256=$sha256_x86 ;;
"x86_64" ) mach="x86_64" ;;
* ) mach="x86" ;;
esac

View file

@ -104,7 +104,7 @@ ynh_script_progression --message="Setting up source files..." --weight=12
# Download, check integrity, uncompress and patch the source from app.src
# Create an app.src for the correct compiled version of UMS
# match string are fulfilled in _common.sh
ynh_add_config --template="../conf/app.src.default" --destination="../conf/app.src"
ynh_add_config --template="../conf/app.$mach.src" --destination="../conf/app.src"
ynh_app_setting_set --app=$app --key=final_path --value=$final_path
# Download, check integrity, uncompress and patch the source from app.src

View file

@ -89,7 +89,7 @@ then
ynh_script_progression --message="Upgrading source files..." --weight=5
# Download, check integrity, uncompress and patch the source from app.src
ynh_add_config --template="../conf/app.src.default" --destination="../conf/app.src"
ynh_add_config --template="../conf/app.$mach.src" --destination="../conf/app.src"
ynh_setup_source --dest_dir="$final_path"
tar xfvz $final_path/app.tgz --strip-component=1 --directory=$final_path/
ynh_secure_remove $final_path/app.tgz