From ef5f5a21de5649885ca7caf5f579a261b75bbc0b Mon Sep 17 00:00:00 2001 From: Nektarios Katakis Date: Tue, 12 Nov 2019 23:52:21 +0000 Subject: [PATCH] feature: minidlna app Closes #1679 Reviewed-by: James Valleroy --- actions/minidlna | 106 ++++++++++++++ plinth/modules/minidlna/__init__.py | 116 +++++++++++++++ .../conf-available/minidlna-freedombox.conf | 3 + .../data/etc/plinth/modules-enabled/minidlna | 1 + plinth/modules/minidlna/forms.py | 39 +++++ plinth/modules/minidlna/manifest.py | 138 ++++++++++++++++++ plinth/modules/minidlna/tests/__init__.py | 0 plinth/modules/minidlna/urls.py | 27 ++++ plinth/modules/minidlna/views.py | 65 +++++++++ static/themes/default/icons/minidlna.svg | Bin 0 -> 49175 bytes 10 files changed, 495 insertions(+) create mode 100755 actions/minidlna create mode 100644 plinth/modules/minidlna/__init__.py create mode 100644 plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf create mode 100644 plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna create mode 100644 plinth/modules/minidlna/forms.py create mode 100644 plinth/modules/minidlna/manifest.py create mode 100644 plinth/modules/minidlna/tests/__init__.py create mode 100644 plinth/modules/minidlna/urls.py create mode 100644 plinth/modules/minidlna/views.py create mode 100644 static/themes/default/icons/minidlna.svg diff --git a/actions/minidlna b/actions/minidlna new file mode 100755 index 000000000..544fa4c7f --- /dev/null +++ b/actions/minidlna @@ -0,0 +1,106 @@ +#!/usr/bin/python3 +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Configuration actions for the minidlna server. +""" +import argparse +from tempfile import mkstemp +from shutil import move +from os import fdopen, remove + +import augeas + +from plinth.utils import grep + +config_path = '/etc/minidlna.conf' + + +def parse_arguments(): + """Return parsed command line arguments as dictionary.""" + parser = argparse.ArgumentParser() + subparsers = parser.add_subparsers(dest='subcommand', help='Sub command') + + subparsers.add_parser('setup', help='Setup SSH server') + + subparsers.add_parser('get-media-dir', help='Get media directory') + + set_media_dir = subparsers.add_parser('set-media-dir', + help='Set custom media directory') + set_media_dir.add_argument('--dir') + + subparsers.required = True + return parser.parse_args() + + +def subcommand_setup(arguments): + """ + Increase inotify watches per folder to allow minidlna to + monitor changes in large media-dirs. + """ + aug = augeas.Augeas( + flags=augeas.Augeas.NO_LOAD + augeas.Augeas.NO_MODL_AUTOLOAD) + aug.set('/augeas/load/Sysctl/lens', 'Sysctl.lns') + aug.set('/augeas/load/Sysctl/incl[last() + 1]', '/etc/sysctl.conf') + aug.load() + + aug.set('/files/etc/sysctl.conf/fs.inotify.max_user_watches', '100000') + aug.save() + + +def subcommand_get_media_dir(arguments): + """Retrieve media directory from minidlna.conf""" + line = grep('^media_dir=', config_path) + + print(line[0].split("=")[1]) + + +def subcommand_set_media_dir(arguments): + """Set media directory in minidlna.conf""" + line = grep('^media_dir=', config_path)[0] + + new_line = 'media_dir=%s\n' % arguments.dir + replace_in_config_file(config_path, line, new_line) + + +def replace_in_config_file(file_path, pattern, subst): + """ + Create a temporary minidlna.conf file, + replace the media dir config, + remove original one and move the temporary file. + """ + temp_file, temp_file_path = mkstemp() + with fdopen(temp_file, 'w') as new_file: + with open(file_path) as old_file: + for line in old_file: + new_file.write(line.replace(pattern, subst)) + + remove(file_path) + move(temp_file_path, file_path) + + +def main(): + """Parse arguments and perform all duties.""" + arguments = parse_arguments() + + subcommand = arguments.subcommand.replace('-', '_') + subcommand_method = globals()['subcommand_' + subcommand] + subcommand_method(arguments) + + +if __name__ == '__main__': + main() diff --git a/plinth/modules/minidlna/__init__.py b/plinth/modules/minidlna/__init__.py new file mode 100644 index 000000000..48ea0bd29 --- /dev/null +++ b/plinth/modules/minidlna/__init__.py @@ -0,0 +1,116 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +FreedomBox app to configure minidlna. +""" +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +import plinth.app as app_module +from plinth import frontpage, menu +from plinth.modules.apache.components import Webserver +from plinth.modules.firewall.components import Firewall +from plinth.modules.users import register_group +from plinth.action_utils import diagnose_url + +from .manifest import backup, clients # noqa + +version = 1 + +name = 'minidlna' + +icon_name = name + +managed_packages = ['minidlna'] + +short_description = _('Simple Media Server') + +description = [ + _('MiniDLNA is a simple media server software, with the aim of being ' + 'fully compliant with DLNA/UPnP-AV clients. ' + 'The MiniDNLA daemon serves media files ' + '(music, pictures, and video) to clients on a network. ' + 'DNLA/UPnP is zero configuration protocol and is compliant ' + 'with any device passing the DLNA Certification like portable ' + 'media players, Smartphones, Televisions, and gaming systems (' + 'such as PS3 and Xbox 360) or applications such as totem and Kodi.') +] + +clients = clients + +group = ('minidlna', _('Media streaming server')) + +app = None + + +class MiniDLNAApp(app_module.App): + """Freedombox app managing miniDlna""" + app_id = 'minidlna' + + def __init__(self): + """Initialize the app components""" + super().__init__() + menu_item = menu.Menu( + 'menu-minidlna', + name=name, + short_description=short_description, + url_name='minidlna:index', + parent_url_name='apps', + icon=icon_name, + ) + firewall = Firewall('firewall-minidlna', name, ports=['minidlna'], + is_external=False) + webserver = Webserver('webserver-minidlna', 'minidlna-plinth') + shortcut = frontpage.Shortcut( + 'shortcut-minidlna', + name, + short_description=short_description, + description=description, + icon=icon_name, + url='/_minidlna/', + login_required=True, + ) + + self.add(menu_item) + self.add(webserver) + self.add(firewall) + self.add(shortcut) + + +def init(): + global app + app = MiniDLNAApp() + register_group(group) + + setup_helper = globals()['setup_helper'] + if setup_helper.get_state() != 'needs-setup' and app.is_enabled(): + app.set_enabled(True) + + +def setup(helper, old_version=None): + """Install and configure the package""" + helper.install(managed_packages) + helper.call('post', actions.superuser_run, 'minidlna', ['setup']) + helper.call('post', app.enable) + + +def diagnose(): + """Check if the http page listening on 8200 is accessible""" + results = [] + results.append(diagnose_url('http://localhost:8200/')) + + return results diff --git a/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf b/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf new file mode 100644 index 000000000..544e0d862 --- /dev/null +++ b/plinth/modules/minidlna/data/etc/apache2/conf-available/minidlna-freedombox.conf @@ -0,0 +1,3 @@ + + ProxyPass http://localhost:8200/ + diff --git a/plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna b/plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna new file mode 100644 index 000000000..164cbbd65 --- /dev/null +++ b/plinth/modules/minidlna/data/etc/plinth/modules-enabled/minidlna @@ -0,0 +1 @@ +plinth.modules.minidlna diff --git a/plinth/modules/minidlna/forms.py b/plinth/modules/minidlna/forms.py new file mode 100644 index 000000000..a272a8264 --- /dev/null +++ b/plinth/modules/minidlna/forms.py @@ -0,0 +1,39 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +FreedomBox configuration form for MiniDLNA server. +""" + +from django import forms +from django.utils.translation import ugettext_lazy as _ + +from plinth.forms import AppForm + + +class MiniDLNAServerForm(AppForm): + """MiniDLNA server configuration form.""" + media_dir = forms.CharField( + label=_('Media Files Directory'), + help_text=_('Directory that MiniDLNA Server will read for content. All' + ' sub-directories of this will be also scanned for media ' + 'files. ' + 'If you change the default ensure that the new directory ' + 'exists and that is readable from the "minidlna" user. ' + 'Any user media directories ("/home/username/") will ' + 'usually work.'), + required=False, + ) diff --git a/plinth/modules/minidlna/manifest.py b/plinth/modules/minidlna/manifest.py new file mode 100644 index 000000000..24a0643ab --- /dev/null +++ b/plinth/modules/minidlna/manifest.py @@ -0,0 +1,138 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# + +from django.utils.translation import ugettext_lazy as _ + +from plinth.modules.backups.api import validate as validate_backup +from plinth.clients import validate, store_url + +clients = validate([ + { + 'name': _('vlc'), + 'platforms': [ + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'deb', + 'name': 'vlc', + }, + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'rpm', + 'name': 'vlc', + }, + { + 'type': 'download', + 'os': 'windows', + 'url': 'https://www.videolan.org/vlc/download-windows.html', + }, + { + 'type': 'download', + 'os': 'macos', + 'url': 'https://www.videolan.org/vlc/download-macosx.html', + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', 'org.videolan.vlc') + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', 'org.videolan.vlc') + }, + ] + }, + { + 'name': _('kodi'), + 'platforms': [ + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'deb', + 'name': 'kodi', + }, + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'rpm', + 'name': 'kodi', + }, + { + 'type': 'download', + 'os': 'windows', + 'url': 'http://kodi.tv/download/', + }, + { + 'type': 'download', + 'os': 'macos', + 'url': 'http://kodi.tv/download/', + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'google-play', + 'url': store_url('google-play', 'org.xbmc.kodi') + }, + { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', 'org.xbmc.kodi') + }, + ] + }, + { + 'name': _('yaacc'), + 'platforms': [ + { + 'type': 'store', + 'os': 'android', + 'store_name': 'f-droid', + 'url': store_url('f-droid', 'de.yaacc') + }, + ] + }, + { + 'name': _('totem'), + 'platforms': [ + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'deb', + 'name': 'totem', + }, + { + 'type': 'package', + 'os': 'gnu-linux', + 'format': 'rpm', + 'name': 'totem', + }, + ] + }, +]) + +# TODO: get all media directories from config file +# for now hard code default media folder. +backup = validate_backup({ + 'data': { + 'directories': ['/var/lib/minidlna'] + } +}) diff --git a/plinth/modules/minidlna/tests/__init__.py b/plinth/modules/minidlna/tests/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/plinth/modules/minidlna/urls.py b/plinth/modules/minidlna/urls.py new file mode 100644 index 000000000..6dd7527f2 --- /dev/null +++ b/plinth/modules/minidlna/urls.py @@ -0,0 +1,27 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +URLs for the minidlna Server module. +""" + +from django.conf.urls import url + +from plinth.modules.minidlna.views import MiniDLNAAppView + +urlpatterns = [ + url(r'^apps/minidlna/$', MiniDLNAAppView.as_view(), name='index'), +] diff --git a/plinth/modules/minidlna/views.py b/plinth/modules/minidlna/views.py new file mode 100644 index 000000000..ee3926f2c --- /dev/null +++ b/plinth/modules/minidlna/views.py @@ -0,0 +1,65 @@ +# +# This file is part of FreedomBox. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +""" +Views for the minidlna module +""" +import os + +from django.contrib import messages +from django.utils.translation import ugettext_lazy as _ + +from plinth import actions +from plinth.views import AppView +from plinth.modules import minidlna + +from .forms import MiniDLNAServerForm + + +class MiniDLNAAppView(AppView): + app_id = 'minidlna' + name = minidlna.name + description = minidlna.description + form_class = MiniDLNAServerForm + diagnostics_module_name = 'minidlna' + + def get_initial(self): + """Initial form value as found in the minidlna.conf""" + initial = super().get_initial() + initial.update({ + 'media_dir': actions.superuser_run('minidlna', ['get-media-dir']), + }) + + return initial + + def form_valid(self, form): + """Apply changes from the form""" + old_config = form.initial + new_config = form.cleaned_data + + if old_config['media_dir'].strip() != new_config['media_dir']: + if os.path.isdir(new_config['media_dir']) is False: + messages.error(self.request, + _('Specified directory does not exist.')) + else: + actions.superuser_run( + 'minidlna', + ['set-media-dir', '--dir', new_config['media_dir']] + ) + actions.superuser_run('service', ['restart', 'minidlna']) + messages.success(self.request, _('Updated media directory')) + + return super().form_valid(form) diff --git a/static/themes/default/icons/minidlna.svg b/static/themes/default/icons/minidlna.svg new file mode 100644 index 0000000000000000000000000000000000000000..7ae6aaed4109190142d06a5d63d838a555dd8a72 GIT binary patch literal 49175 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

jLlJ$4rB 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 Dm&$Bo literal 0 HcmV?d00001