commit f2b6ac3ad12a092ff2cdc74d7a1cf3fa8039d48c Author: Maniack Crudelis Date: Sat Feb 27 22:54:09 2016 +0100 Init diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f0ff6f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.swp +*~ +Notes diff --git a/README.md b/README.md new file mode 100644 index 0000000..c909f7c --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +Serveur DLNA pour YunoHost +================== + +[Yunohost project](https://yunohost.org/#/) + +Serveur DLNA très léger pour partager simplement les fichiers multimédia avec l'ensemble des appareils compatibles sur le réseau local. + +http://minidlna.sourceforge.net/ + +Le script installe les paquets *i965-va-driver*, *i965-va-driver*, *libavcodec56*, *libavformat56*, *libavresample2*, *libavutil54*, *libexif12* *libflac8* *libgsm1* *libid3tag0* *libmp3lame0* *libogg0* *libopenjpeg5 *libopus0* *liborc-0.4-0* *libschroedinger-1.0-0* *libspeex1* *libtheora0* *libva1* *libvdpau1* *libvorbis0a* *libvorbisenc2* *libx264-142* *libxvidcore4* *va-driver-all* *vdpau-va-driver*. \ No newline at end of file diff --git a/conf/90-inotify_minidlna.conf b/conf/90-inotify_minidlna.conf new file mode 100644 index 0000000..791b06d --- /dev/null +++ b/conf/90-inotify_minidlna.conf @@ -0,0 +1,2 @@ +# Increase inotify max watchs per user for local minidlna +fs.inotify.max_user_watches = 65536 diff --git a/conf/minidlna.list b/conf/minidlna.list new file mode 100644 index 0000000..73dfaf0 --- /dev/null +++ b/conf/minidlna.list @@ -0,0 +1 @@ +deb http://http.debian.net/debian __CODENAME__-backports main diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..51b7ad9 --- /dev/null +++ b/manifest.json @@ -0,0 +1,28 @@ +{ + "name": "MiniDLNA", + "id": "minidlna", + "description": { + "en": "Light DLNA server to share media files over the LAN", + "fr": "Serveur DLNA léger pour partager les fichiers multimédia sur le réseau local" + }, + "url": "http://minidlna.sourceforge.net/", + "licence": "free", + "maintainer": { + "name": "Maniack Crudelis", + "email": "maniackc_dev@crudelis.fr" + }, + "multi_instance": "false", + "arguments": { + "install" : [ + { + "name": "version", + "ask": { + "en": "Select the minidlna version to install", + "fr": "Choix de la version de minidlna à installer" + }, + "choices": ["A. Version of the Debian repositories (recommended)", "B. Latest version available for Debian"], + "default": "A. Version of the Debian repositories (recommended)" + } + ] + } +} diff --git a/scripts/backup b/scripts/backup new file mode 100644 index 0000000..ae7249d --- /dev/null +++ b/scripts/backup @@ -0,0 +1,20 @@ +#!/bin/bash + +# Récupère les infos de l'application. +app=minidlna +version=$(sudo yunohost app setting $app version) +port=$(sudo yunohost app setting $app port) + + +# The parameter $1 is the backup directory location +# which will be compressed afterward +backup_dir=$1/apps/$app +sudo mkdir -p "$backup_dir" + +# Copie des fichiers spécifiques à l'application +if [ $version = "B" ] +then + sudo cp -a /etc/apt/sources.list.d/minidlna.list $backup_dir/ +fi +sudo cp -a /etc/sysctl.d/90-inotify_minidlna.conf $backup_dir/ +sudo cp -a /etc/minidlna.conf $backup_dir/ diff --git a/scripts/install b/scripts/install new file mode 100644 index 0000000..5d073fb --- /dev/null +++ b/scripts/install @@ -0,0 +1,59 @@ +#!/bin/bash + +# Renseigne les variables à partir des arguments. +version=$1 +app=minidlna + +# Cherche un port libre. +port=48200 +sudo yunohost app checkport $port +while [[ ! $? -eq 0 ]]; do + port=$((port+1)) + sudo yunohost app checkport $port +done + +# Ouvre les ports dans le firewall +sudo yunohost firewall allow --no-upnp TCP $port > /dev/null 2>&1 +sudo yunohost firewall allow --no-upnp UDP 1900 > /dev/null 2>&1 # Découverte SSDP pour UPNP. + +# Enregistre les infos dans la config YunoHost +sudo yunohost app setting $app version -v ${version:0:1} +sudo yunohost app setting $app port -v $port + +# Création du dossier yunohost.multimedia +wget https://github.com/maniackcrudelis/yunohost.multimedia/archive/master.zip +unzip master.zip +sudo ./yunohost.multimedia-master/script/ynh_media_build.sh + +# Installation du paquet minidlna et ses dépendances +if [ ${version:0:1} = "B" ] +then # Installation de la version minidlna disponible dans backport. (En cas de problème avec la version actuelle des dépots) + codename=$(lsb_release -a 2>/dev/null | grep Codename | cut -f 2) + sudo sed -i "s@__CODENAME__@$codename@g" ../conf/minidlna.list + sudo cp -a ../conf/minidlna.list /etc/apt/sources.list.d/ + sudo apt-get update + sudo apt-get -t $codename-backports -y install minidlna +else # Installation de la version minidlna des dépots courants. + sudo apt-get update + sudo apt-get -y install minidlna +fi + +# Augmentation du nombre maximum de fichiers surveillés par inotify. +sudo cp -a ../conf/90-inotify_minidlna.conf /etc/sysctl.d/ +# Et rechargement de la config du noyau. +sudo sysctl --system + +# Ajoute le service au monitoring de Yunohost. +sudo yunohost service add minidlna --log "/var/log/minidlna.log" + +# Modifie la configuration de minidlna +sudo sed -i 's@^#*media_dir=.*@media_dir=/home/yunohost.multimedia/share@' /etc/minidlna.conf +sudo sed -i "s/^#*port=.*/port=$port/" /etc/minidlna.conf +sudo sed -i "s/^#*friendly_name=.*/friendly_name=Yunohost DLNA/" /etc/minidlna.conf +sudo sed -i "s/^#*root_container=.*/root_container=./" /etc/minidlna.conf + +# Redémarre minidlna pour prendre en compte la nouvelle configuration +sudo service minidlna restart + +# Régénère la configuration de SSOwat +sudo yunohost app ssowatconf diff --git a/scripts/remove b/scripts/remove new file mode 100755 index 0000000..7c8116f --- /dev/null +++ b/scripts/remove @@ -0,0 +1,31 @@ +#!/bin/bash + +# Récupère les infos de l'application. +app=minidlna +version=$(sudo yunohost app setting $app version) +port=$(sudo yunohost app setting $app port) + +# Ferme les ports dans le firewall +sudo yunohost firewall disallow TCP $port > /dev/null 2>&1 +sudo yunohost firewall disallow UDP 1900 > /dev/null 2>&1 # Découverte SSDP pour UPNP. + +# Suppression du paquet minidlna +sudo apt-get -y purge minidlna +if [ $version = "B" ] +then + sudo rm /etc/apt/sources.list.d/minidlna.list +fi + +# Suppression du paramètre inotify pour minidlna. +sudo rm /etc/sysctl.d/90-inotify_minidlna.conf +# Et rechargement de la config du noyau. +sudo sysctl --system + +# Retire le service du monitoring de Yunohost. +sudo yunohost service remove minidlna + +# Suppression des log +sudo rm -r /var/log/minidlna.log + +# Régénère la configuration de SSOwat +sudo yunohost app ssowatconf diff --git a/scripts/restore b/scripts/restore new file mode 100644 index 0000000..afc99fa --- /dev/null +++ b/scripts/restore @@ -0,0 +1,43 @@ +#!/bin/bash + +# Récupère les infos de l'application. +app=minidlna +version=$(sudo yunohost app setting $app version) +port=$(sudo yunohost app setting $app port) + +# The parameter $1 is the uncompressed restore directory location +backup_dir=$1/apps/$app + +# Ouvre les ports dans le firewall +sudo yunohost firewall allow --no-upnp TCP $port > /dev/null 2>&1 +sudo yunohost firewall allow --no-upnp UDP 1900 > /dev/null 2>&1 # Découverte SSDP pour UPNP. + +# Création du dossier yunohost.multimedia +wget https://github.com/maniackcrudelis/yunohost.multimedia/archive/master.zip +unzip master.zip +sudo ./yunohost.multimedia-master/script/ynh_media_build.sh + +# Installation du paquet minidlna et ses dépendances +if [ ${version:0:1} = "B" ] +then # Installation de la version minidlna disponible dans backport. (En cas de problème avec la version actuelle des dépots) + codename=$(lsb_release -a 2>/dev/null | grep Codename | cut -f 2) + sudo cp -a $backup_dir/minidlna.list /etc/apt/sources.list.d/ + sudo sed -i "s@ [a-z]*-backports@ $codename-backports@g" /etc/apt/sources.list.d/minidlna.list + sudo apt-get update + sudo apt-get -t $codename-backports -y install minidlna +else # Installation de la version minidlna des dépots courants. + sudo apt-get update + sudo apt-get -y install minidlna +fi + +# Copie des fichiers spécifiques à l'application +sudo cp -a $backup_dir/90-inotify_minidlna.conf /etc/sysctl.d/ +sudo sysctl --system + +sudo cp -a $backup_dir/minidlna.conf /etc/ +sudo service minidlna restart + +# Ajoute le service au monitoring de Yunohost. +sudo yunohost service add minidlna --log "/var/log/minidlna.log" + +sudo yunohost app ssowatconf diff --git a/scripts/upgrade b/scripts/upgrade new file mode 100644 index 0000000..29017b2 --- /dev/null +++ b/scripts/upgrade @@ -0,0 +1,44 @@ +#!/bin/bash + +# Récupère les infos de l'application. +app=minidlna +version=$(sudo yunohost app setting $app version) +port=$(sudo yunohost app setting $app port) + +# Mise à jour du dossier yunohost.multimedia +wget https://github.com/maniackcrudelis/yunohost.multimedia/archive/master.zip +unzip master.zip +sudo ./yunohost.multimedia-master/script/ynh_media_build.sh + +# Mise à jour éventuelle du paquet minidlna +if [ $version = "B" ] +then # Installation de la version minidlna disponible dans backport. (En cas de problème avec la version actuelle des dépots) + codename=$(lsb_release -a 2>/dev/null | grep Codename | cut -f 2) + sudo sed -i "s@__CODENAME__@$codename@g" ../conf/minidlna.list + sudo cp -a ../conf/minidlna.list /etc/apt/sources.list.d/ + sudo apt-get update + sudo apt-get -t $codename-backports -y install minidlna +else # Installation de la version minidlna des dépots courants. + sudo apt-get update + sudo apt-get -y install minidlna +fi + +# Augmentation du nombre maximum de fichiers surveillés par inotify. +sudo cp -a ../conf/90-inotify_minidlna.conf /etc/sysctl.d/ +# Et rechargement de la config du noyau. +sudo sysctl --system + +# Ajoute le service au monitoring de Yunohost. +sudo yunohost service add minidlna --log "/var/log/minidlna.log" + +# Modifie la configuration de minidlna +sudo sed -i 's@^#*media_dir=.*@media_dir=/home/yunohost.multimedia/share@' /etc/minidlna.conf +sudo sed -i "s/^#*port=.*/port=$port/" /etc/minidlna.conf +sudo sed -i "s/^#*friendly_name=.*/friendly_name=Yunohost DLNA/" /etc/minidlna.conf +sudo sed -i "s/^#*root_container=.*/root_container=./" /etc/minidlna.conf + +# Redémarre minidlna pour prendre en compte la nouvelle configuration +sudo service minidlna restart + +# Régénère la configuration de SSOwat +sudo yunohost app ssowatconf