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