From ba5ec52ca99c39523ea5d7389804d850b3bd166e Mon Sep 17 00:00:00 2001 From: Bob Mottram <bob@freedombone.net> Date: Tue, 4 Dec 2018 10:26:40 +0000 Subject: [PATCH] Restore dlna app --- src/freedombone-app-dlna | 95 +++++++++++++++++++++------------------- 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/src/freedombone-app-dlna b/src/freedombone-app-dlna index e42bb1f16..d846bb214 100755 --- a/src/freedombone-app-dlna +++ b/src/freedombone-app-dlna @@ -29,18 +29,22 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -VARIANTS='' +VARIANTS='full full-vim media' IN_DEFAULT_INSTALL=0 SHOW_ON_ABOUT=0 +SHOW_CLEARNET_ADDRESS_ON_ABOUT=0 +SHOW_DOMAIN_IN_WEBADMIN=0 -DLNA_SHORT_DESCRIPTION=$'Streaming media' -DLNA_DESCRIPTION=$'Streaming media' -DLNA_MOBILE_APP_URL= +DLNA_PORT=1900 +DLNA_PRESENTATION_PORT=8200 +USB_MOUNT_DLNA=/mnt/dlna + +DLNA_SHORT_DESCRIPTION=$'Play media from any UPNP/DLNA device on your local network' +DLNA_DESCRIPTION=$'Play media from any UPNP/DLNA device on your local network' +DLNA_MOBILE_APP_URL=https://f-droid.org/packages/de.yaacc/ dlna_variables=(SYSTEM_TYPE - USB_MOUNT_DLNA - INSTALLED_WITHIN_DOCKER MY_USERNAME) function logging_on_dlna { @@ -65,8 +69,8 @@ function configure_interactive_dlna { fi case $selection in - 1) attach-music;; - 2) remove-music;; + 1) attach-dlna;; + 2) unmount-dlna;; esac done } @@ -88,25 +92,16 @@ function configure_firewall_for_dlna { if [[ $(is_completed "${FUNCNAME[0]}") == "1" ]]; then return fi - if [[ $INSTALLED_WITHIN_DOCKER == "yes" ]]; then - # docker does its own firewalling - return - fi - firewall_add DLNA 1900 udp - firewall_add DLNA 8200 tcp + firewall_add DLNA $DLNA_PORT udp { echo '<?xml version="1.0" standalone="no"?><!--*-nxml-*-->'; echo '<!DOCTYPE service-group SYSTEM "avahi-service.dtd">'; echo '<service-group>'; echo ' <name replace-wildcards="yes">%h DLNA</name>'; echo ' <service>'; - echo ' <type>_dlna._tcp</type>'; - echo " <port>8200</port>"; - echo ' </service>'; - echo ' <service>'; echo ' <type>_dlna._udp</type>'; - echo " <port>1900</port>"; + echo " <port>$DLNA_PORT</port>"; echo ' </service>'; echo '</service-group>'; } > /etc/avahi/services/dlna.service @@ -164,11 +159,10 @@ function remove_dlna { if [ -f /etc/minidlna.conf ]; then rm /etc/minidlna.conf fi - rm /usr/bin/attach-music - rm /usr/bin/remove-music + rm /usr/bin/attach-dlna + rm /usr/bin/unmount-dlna remove_completion_param install_dlna - firewall_remove 1900 udp - firewall_remove 8200 tcp + firewall_remove $DLNA_PORT udp rm /etc/avahi/services/dlna.service systemctl restart avahi-daemon @@ -179,26 +173,29 @@ function install_dlna_main { return fi - $INSTALL_PACKAGES minidlna + $INSTALL_PACKAGES_BACKPORTS minidlna if [ ! -f /etc/minidlna.conf ]; then echo $"ERROR: minidlna does not appear to have installed. $CHECK_MESSAGE" exit 55 fi - if [ ! "$USB_MOUNT_DLNA" ]; then - USB_MOUNT_DLNA=/mnt/dlna + if [ ! -d /music ]; then + mkdir /music + fi + if [ ! -d /pictures ]; then + mkdir /pictures fi - if [ ${#USB_MOUNT_DLNA} -eq 0 ]; then - USB_MOUNT_DLNA=/mnt/dlna + if [ ! -d /videos ]; then + mkdir /videos fi - sed -i "s|media_dir=/var/lib/minidlna|media_dir=A,/home/$MY_USERNAME/Music|g" /etc/minidlna.conf - if ! grep -q "/home/$MY_USERNAME/Pictures" /etc/minidlna.conf; then - echo "media_dir=P,/home/$MY_USERNAME/Pictures" >> /etc/minidlna.conf + sed -i "s|media_dir=.*|media_dir=A,/music|g" /etc/minidlna.conf + if ! grep -q "=P,/pictures" /etc/minidlna.conf; then + echo "media_dir=P,/pictures" >> /etc/minidlna.conf fi - if ! grep -q "/home/$MY_USERNAME/Videos" /etc/minidlna.conf; then - echo "media_dir=V,/home/$MY_USERNAME/Videos" >> /etc/minidlna.conf + if ! grep -q "=V,/videos" /etc/minidlna.conf; then + echo "media_dir=V,/videos" >> /etc/minidlna.conf fi if ! grep -q "$USB_MOUNT_DLNA/Music" /etc/minidlna.conf; then echo "media_dir=A,$USB_MOUNT_DLNA/Music" >> /etc/minidlna.conf @@ -219,11 +216,11 @@ function install_dlna_main { else sed -i "s/#network_interface=/network_interface=$WIFI_INTERFACE/g" /etc/minidlna.conf fi - sed -i "s/#friendly_name=/friendly_name=\"${PROJECT_NAME} Media\"/g" /etc/minidlna.conf - sed -i 's|#db_dir=/var/cache/minidlna|db_dir=/var/cache/minidlna|g' /etc/minidlna.conf - sed -i 's/#inotify=yes/inotify=yes/g' /etc/minidlna.conf - sed -i 's/#notify_interval=895/notify_interval=300/g' /etc/minidlna.conf - sed -i "s|#presentation_url=/|presentation_url=http://localhost:8200|g" /etc/minidlna.conf + sed -i "s/#friendly_name=.*/friendly_name=\"${PROJECT_NAME} Media\"/g" /etc/minidlna.conf + sed -i 's|#db_dir=.*|db_dir=/var/cache/minidlna|g' /etc/minidlna.conf + sed -i 's/#inotify=.*/inotify=yes/g' /etc/minidlna.conf + sed -i 's/#notify_interval=.*/notify_interval=300/g' /etc/minidlna.conf + sed -i "s|#presentation_url=.*/|presentation_url=http://localhost:$DLNA_PRESENTATION_PORT|g" /etc/minidlna.conf systemctl reload minidlna sed -i 's/fs.inotify.max_user_watches*/fs.inotify.max_user_watches=65536/g' /etc/sysctl.conf @@ -251,27 +248,33 @@ function script_for_attaching_usb_drive { echo 'done'; echo ''; echo "USB_DRIVE=\$(detect_connected_drives)"; + echo "if [[ \"\$USB_DRIVE\" != 'sd'* ]]; then"; + echo ' exit 1'; + echo 'fi'; + echo ''; + echo "if [ -d $USB_MOUNT_DLNA ]; then"; + echo " umount $USB_MOUNT_DLNA"; + echo " rm -rf $USB_MOUNT_DLNA"; + echo 'fi'; echo ''; - echo 'remove-music'; echo "if [ ! -d $USB_MOUNT_DLNA ]; then"; - echo " mkdir $USB_MOUNT_DLNA"; + echo " mkdir $USB_MOUNT_DLNA"; echo 'fi'; - echo -n "mount \$USB_DRIVE "; - echo "$USB_MOUNT_DLNA"; + echo "mount \$USB_DRIVE $USB_MOUNT_DLNA"; echo "chown root:root $USB_MOUNT_DLNA"; echo "chown -R minidlna:minidlna $USB_MOUNT_DLNA/*"; echo 'systemctl restart minidlna'; echo 'minidlnad -R'; - echo 'exit 0'; } > /usr/bin/attach-music - chmod +x /usr/bin/attach-music + echo 'exit 0'; } > /usr/bin/attach-dlna + chmod +x /usr/bin/attach-dlna { echo '#!/bin/bash'; echo "if [ -d $USB_MOUNT_DLNA ]; then"; echo " umount $USB_MOUNT_DLNA"; echo " rm -rf $USB_MOUNT_DLNA"; echo 'fi'; - echo 'exit 0'; } > /usr/bin/remove-music - chmod +x /usr/bin/remove-music + echo 'exit 0'; } > /usr/bin/unmount-dlna + chmod +x /usr/bin/unmount-dlna mark_completed "${FUNCNAME[0]}" } -- GitLab