From 668da20a02f1a018d4f416160f03cdbdbb466214 Mon Sep 17 00:00:00 2001 From: Sunil Mohan Adapa Date: Tue, 18 Jan 2022 14:34:19 -0800 Subject: [PATCH] mldonkey: Drop app not available in Debian Bullseye and Bookworm Closes: #2157. Original author of the app J. Carlos Romero has been contacted to see if there is interest in continuing to maintain the app. There has been no response. Since the app is not available even in the current stable (Bullseye), few users are presumably using it on a supported FreedomBox distribution. Any users are advised to maintain the manually instead of relying on FreedomBox for it. Signed-off-by: Sunil Mohan Adapa Reviewed-by: James Valleroy --- actions/mldonkey | 40 - debian/copyright | 1 - debian/freedombox.maintscript | 1 + plinth/modules/help/tests/test_views.py | 4 +- plinth/modules/mldonkey/__init__.py | 107 --- .../conf-available/mldonkey-freedombox.conf | 21 - .../data/etc/plinth/modules-enabled/mldonkey | 1 - .../mldonkey-server.service.d/freedombox.conf | 35 - plinth/modules/mldonkey/manifest.py | 57 -- plinth/modules/mldonkey/tests/__init__.py | 0 .../modules/mldonkey/tests/test_functional.py | 73 -- plinth/modules/mldonkey/urls.py | 13 - pyproject.toml | 1 - setup.py | 1 + static/themes/default/icons/mldonkey.png | Bin 33782 -> 0 bytes static/themes/default/icons/mldonkey.svg | 812 ------------------ 16 files changed, 4 insertions(+), 1163 deletions(-) delete mode 100755 actions/mldonkey delete mode 100644 plinth/modules/mldonkey/__init__.py delete mode 100644 plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf delete mode 100644 plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey delete mode 100644 plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf delete mode 100644 plinth/modules/mldonkey/manifest.py delete mode 100644 plinth/modules/mldonkey/tests/__init__.py delete mode 100644 plinth/modules/mldonkey/tests/test_functional.py delete mode 100644 plinth/modules/mldonkey/urls.py delete mode 100644 static/themes/default/icons/mldonkey.png delete mode 100644 static/themes/default/icons/mldonkey.svg diff --git a/actions/mldonkey b/actions/mldonkey deleted file mode 100755 index f9156fb43..000000000 --- a/actions/mldonkey +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/python3 -# -*- mode: python -*- -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Configuration helper for mldonkey. -""" - -import argparse - -from plinth import action_utils - - -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('pre-install', help='Perform pre-install operations') - - subparsers.required = True - return parser.parse_args() - - -def subcommand_pre_install(_): - """Preseed debconf values before packages are installed.""" - action_utils.debconf_set_selections( - ['mldonkey-server mldonkey-server/launch_at_startup boolean true']) - - -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/debian/copyright b/debian/copyright index af2e62b80..cf2a8d8b0 100644 --- a/debian/copyright +++ b/debian/copyright @@ -7,7 +7,6 @@ License: AGPL-3+ Files: static/themes/default/icons/jsxc.png static/themes/default/icons/jsxc.svg - static/themes/default/icons/mldonkey.svg Copyright: 2011-2019 FreedomBox Authors License: AGPL-3+ diff --git a/debian/freedombox.maintscript b/debian/freedombox.maintscript index 128d02ff6..f299b3cf9 100644 --- a/debian/freedombox.maintscript +++ b/debian/freedombox.maintscript @@ -16,3 +16,4 @@ rm_conffile /etc/plinth/modules-enabled/coquelicot 20.14~ rm_conffile /etc/plinth/modules-enabled/diaspora 21.16~ rm_conffile /etc/plinth/modules-enabled/monkeysphere 21.16~ rm_conffile /etc/plinth/modules-enabled/tahoe 21.16~ +rm_conffile /etc/plinth/modules-enabled/mldonkey 22.4~ diff --git a/plinth/modules/help/tests/test_views.py b/plinth/modules/help/tests/test_views.py index 331ab07d9..dc8b86354 100644 --- a/plinth/modules/help/tests/test_views.py +++ b/plinth/modules/help/tests/test_views.py @@ -109,8 +109,8 @@ MANUAL_PAGES = ('Apache_userdir', 'APU', 'Backups', 'BananaPro', 'BeagleBone', 'freedombox-manual', 'GettingHelp', 'GitWeb', 'Hardware', 'I2P', 'Ikiwiki', 'Infinoted', 'Introduction', 'JSXC', 'LetsEncrypt', 'Maker', 'MatrixSynapse', 'MediaWiki', - 'Minetest', 'MiniDLNA', 'MLDonkey', 'Mumble', 'NameServices', - 'Networks', 'OpenVPN', 'OrangePiZero', 'PageKite', 'pcDuino3', + 'Minetest', 'MiniDLNA', 'Mumble', 'NameServices', 'Networks', + 'OpenVPN', 'OrangePiZero', 'PageKite', 'pcDuino3', 'Performance', 'PineA64+', 'PioneerEdition', 'Plinth', 'Power', 'Privoxy', 'Quassel', 'QuickStart', 'Radicale', 'RaspberryPi2', 'RaspberryPi3B+', 'RaspberryPi3B', 'RaspberryPi4B', diff --git a/plinth/modules/mldonkey/__init__.py b/plinth/modules/mldonkey/__init__.py deleted file mode 100644 index 56801ed32..000000000 --- a/plinth/modules/mldonkey/__init__.py +++ /dev/null @@ -1,107 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -FreedomBox app for mldonkey. -""" - -from django.utils.translation import gettext_lazy as _ - -from plinth import actions -from plinth import app as app_module -from plinth import cfg, frontpage, menu -from plinth.daemon import Daemon -from plinth.modules.apache.components import Webserver -from plinth.modules.backups.components import BackupRestore -from plinth.modules.firewall.components import Firewall -from plinth.modules.users import add_user_to_share_group -from plinth.modules.users.components import UsersAndGroups -from plinth.package import Packages -from plinth.utils import format_lazy - -from . import manifest - -_description = [ - _('MLDonkey is a peer-to-peer file sharing application used to exchange ' - 'large files. It can participate in multiple peer-to-peer networks ' - 'including eDonkey, Kademlia, Overnet, BitTorrent and DirectConnect.'), - _('Users belonging to admin and ed2k group can control it through the web ' - 'interface. Users in the admin group can also control it through any of ' - 'the separate mobile or desktop front-ends or a telnet interface. See ' - 'manual.'), - format_lazy( - _('On {box_name}, downloaded files can be found in /var/lib/mldonkey/ ' - 'directory.'), box_name=cfg.box_name) -] - -_SYSTEM_USER = 'mldonkey' - -app = None - - -class MLDonkeyApp(app_module.App): - """FreedomBox app for MLDonkey.""" - - app_id = 'mldonkey' - - _version = 2 - - DAEMON = 'mldonkey-server' - - def __init__(self): - """Create components for the app.""" - super().__init__() - - groups = {'ed2k': _('Download files using eDonkey applications')} - - info = app_module.Info( - app_id=self.app_id, version=self._version, name=_('MLDonkey'), - icon_filename='mldonkey', - short_description=_('Peer-to-peer File Sharing'), - description=_description, manual_page='MLDonkey', - clients=manifest.clients) - self.add(info) - - menu_item = menu.Menu('menu-mldonkey', info.name, - info.short_description, info.icon_filename, - 'mldonkey:index', parent_url_name='apps') - self.add(menu_item) - - shortcuts = frontpage.Shortcut( - 'shortcut-mldonkey', info.name, - short_description=info.short_description, icon=info.icon_filename, - url='/mldonkey/', login_required=True, clients=info.clients, - allowed_groups=list(groups)) - self.add(shortcuts) - - packages = Packages('packages-mldonkey', ['mldonkey-server']) - self.add(packages) - - firewall = Firewall('firewall-mldonkey', info.name, - ports=['http', 'https'], is_external=True) - self.add(firewall) - - webserver = Webserver('webserver-mldonkey', 'mldonkey-freedombox', - urls=['https://{host}/mldonkey/']) - self.add(webserver) - - daemon = Daemon('daemon-mldonkey', self.DAEMON, - listen_ports=[(4080, 'tcp4')]) - self.add(daemon) - - users_and_groups = UsersAndGroups('users-and-groups-mldonkey', - reserved_usernames=[_SYSTEM_USER], - groups=groups) - self.add(users_and_groups) - - backup_restore = BackupRestore('backup-restore-mldonkey', - **manifest.backup) - self.add(backup_restore) - - -def setup(helper, old_version=None): - """Install and configure the module.""" - helper.call('pre', actions.superuser_run, 'mldonkey', ['pre-install']) - app.setup(old_version) - if not old_version: - helper.call('post', app.enable) - - add_user_to_share_group(_SYSTEM_USER, MLDonkeyApp.DAEMON) diff --git a/plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf b/plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf deleted file mode 100644 index 263c1361f..000000000 --- a/plinth/modules/mldonkey/data/etc/apache2/conf-available/mldonkey-freedombox.conf +++ /dev/null @@ -1,21 +0,0 @@ -## -## On all sites, provide mldonkey web interface on a path: /mldonkey -## - -# Redirect /mldonkey to /mldonkey/ as the MLdonkey server web interface does not -# work without a slash at the end. - - - RewriteEngine On - RewriteCond %{REQUEST_URI} ^/mldonkey$ - RewriteRule .* /mldonkey/ [R=301,L] - - - - - Include includes/freedombox-single-sign-on.conf - ProxyPass http://localhost:4080/ - - TKTAuthToken "admin" "ed2k" - - diff --git a/plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey b/plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey deleted file mode 100644 index 71bd026a0..000000000 --- a/plinth/modules/mldonkey/data/etc/plinth/modules-enabled/mldonkey +++ /dev/null @@ -1 +0,0 @@ -plinth.modules.mldonkey diff --git a/plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf b/plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf deleted file mode 100644 index d0256a633..000000000 --- a/plinth/modules/mldonkey/data/usr/lib/systemd/system/mldonkey-server.service.d/freedombox.conf +++ /dev/null @@ -1,35 +0,0 @@ -[Unit] -Description=MLDonkey: Multi-protocol, peer-to-peer file sharing server -After=syslog.target network.target nslcd.service -ConditionPathExists=/var/lib/mldonkey/downloads.ini -Documentation=man:mlnet(1) http://mldonkey.sourceforge.net/Main_Page - -[Service] -ExecStart= -ExecStart=/usr/bin/mlnet -ExecStop= -Group=mldonkey -IgnoreSIGPIPE=yes -KillMode=control-group -LockPersonality=yes -NoNewPrivileges=yes -PrivateDevices=yes -PrivateMounts=yes -PrivateTmp=yes -ProtectControlGroups=yes -ProtectHome=yes -ProtectKernelLogs=yes -ProtectKernelModules=yes -ProtectKernelTunables=yes -ProtectSystem=full -RemainAfterExit=no -RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6 -RestrictRealtime=yes -StateDirectory=mldonkey -SystemCallArchitectures=native -Type=simple -User=mldonkey -WorkingDirectory=/var/lib/mldonkey - -[Install] -WantedBy=multi-user.target diff --git a/plinth/modules/mldonkey/manifest.py b/plinth/modules/mldonkey/manifest.py deleted file mode 100644 index 25819b496..000000000 --- a/plinth/modules/mldonkey/manifest.py +++ /dev/null @@ -1,57 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Application manifest for mldonkey. -""" - -from django.utils.translation import gettext_lazy as _ - -from plinth.clients import store_url - -clients = [{ - 'name': _('MLDonkey'), - 'platforms': [{ - 'type': 'web', - 'url': '/mldonkey/' - }] -}, { - 'name': - _('KMLDonkey'), - 'platforms': [{ - 'type': 'download', - 'os': 'gnu-linux', - 'url': 'https://www.kde.org/applications/internet/kmldonkey/' - }, { - 'type': 'package', - 'format': 'deb', - 'name': 'kmldonkey', - }] -}, { - 'name': - _('AMLDonkey'), - 'platforms': [{ - 'type': 'store', - 'os': 'android', - 'store_name': 'google-play', - 'url': store_url('google-play', 'com.devwom.amldonkey'), - }] -}] - -backup = { - 'config': { - 'files': [ - '/var/lib/mldonkey/bittorrent.ini', '/var/lib/mldonkey/bt_dht.ini', - '/var/lib/mldonkey/directconnect.ini', - '/var/lib/mldonkey/donkey.ini', '/var/lib/mldonkey/downloads.ini', - '/var/lib/mldonkey/files.ini', - '/var/lib/mldonkey/file_sources.ini', - '/var/lib/mldonkey/fileTP.ini', '/var/lib/mldonkey/friends.ini', - '/var/lib/mldonkey/searches.ini', '/var/lib/mldonkey/servers.ini', - '/var/lib/mldonkey/shared_files.ini', - '/var/lib/mldonkey/shared_files_new.ini', - '/var/lib/mldonkey/statistics.ini', - '/var/lib/mldonkey/stats_bt.ini', '/var/lib/mldonkey/stats.ini', - '/var/lib/mldonkey/stats_mod.ini', '/var/lib/mldonkey/users.ini' - ] - }, - 'services': ['mldonkey-server'] -} diff --git a/plinth/modules/mldonkey/tests/__init__.py b/plinth/modules/mldonkey/tests/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/plinth/modules/mldonkey/tests/test_functional.py b/plinth/modules/mldonkey/tests/test_functional.py deleted file mode 100644 index ebd25118d..000000000 --- a/plinth/modules/mldonkey/tests/test_functional.py +++ /dev/null @@ -1,73 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -Functional, browser based tests for mldonkey app. -""" - -import pytest -from plinth.tests import functional - -pytestmark = [ - pytest.mark.apps, pytest.mark.mldonkey, pytest.mark.sso, pytest.mark.skip -] - - -class TestMldonkeyApp(functional.BaseAppTests): - app_name = 'mldonkey' - has_service = True - has_web = True - - def test_upload(self, session_browser): - """Test uploading an ed2k file to mldonkey.""" - functional.app_enable(session_browser, 'mldonkey') - _remove_all_ed2k_files(session_browser) - _upload_sample_ed2k_file(session_browser) - assert _get_number_of_ed2k_files(session_browser) == 1 - - def test_backup_restore(self, session_browser): - """Test backup and restore of ed2k files.""" - functional.app_enable(session_browser, 'mldonkey') - _remove_all_ed2k_files(session_browser) - _upload_sample_ed2k_file(session_browser) - functional.backup_create(session_browser, 'mldonkey', 'test_mldonkey') - - _remove_all_ed2k_files(session_browser) - functional.backup_restore(session_browser, 'mldonkey', 'test_mldonkey') - - assert functional.service_is_running(session_browser, 'mldonkey') - assert _get_number_of_ed2k_files(session_browser) == 1 - - -def _submit_command(browser, command): - """Submit a command to mldonkey.""" - with browser.get_iframe('commands') as commands_frame: - commands_frame.find_by_css('.txt2').fill(command) - commands_frame.find_by_css('.but2').click() - - -def _remove_all_ed2k_files(browser): - """Remove all ed2k files from mldonkey.""" - functional.visit(browser, '/mldonkey/') - _submit_command(browser, 'cancel all') - _submit_command(browser, 'confirm yes') - - -def _upload_sample_ed2k_file(browser): - """Upload a sample ed2k file into mldonkey.""" - functional.visit(browser, '/mldonkey/') - dllink_command = 'dllink ed2k://|file|foo.bar|123|' \ - '0123456789ABCDEF0123456789ABCDEF|/' - _submit_command(browser, dllink_command) - - -def _get_number_of_ed2k_files(browser): - """Return the number of ed2k files currently in mldonkey.""" - functional.visit(browser, '/mldonkey/') - - with browser.get_iframe('commands') as commands_frame: - commands_frame.find_by_xpath( - '//tr//td[contains(text(), "Transfers")]').click() - - with browser.get_iframe('output') as output_frame: - functional.eventually(output_frame.find_by_css, ['.downloaded']) - return len(output_frame.find_by_css('.dl-1')) + len( - output_frame.find_by_css('.dl-2')) diff --git a/plinth/modules/mldonkey/urls.py b/plinth/modules/mldonkey/urls.py deleted file mode 100644 index f96e85994..000000000 --- a/plinth/modules/mldonkey/urls.py +++ /dev/null @@ -1,13 +0,0 @@ -# SPDX-License-Identifier: AGPL-3.0-or-later -""" -URLs for the mldonkey module. -""" - -from django.urls import re_path - -from plinth.views import AppView - -urlpatterns = [ - re_path(r'^apps/mldonkey/$', AppView.as_view(app_id='mldonkey'), - name='index') -] diff --git a/pyproject.toml b/pyproject.toml index cd2800bfb..5e46e2701 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -40,7 +40,6 @@ markers = [ "mediawiki", "minetest", "minidlna", - "mldonkey", "mumble", "openvpn", "pagekite", diff --git a/setup.py b/setup.py index 936690c98..093a046b1 100755 --- a/setup.py +++ b/setup.py @@ -48,6 +48,7 @@ DISABLED_APPS_TO_REMOVE = [ 'restore', 'repro', 'tahoe', + 'mldonkey', ] REMOVED_FILES = [ diff --git a/static/themes/default/icons/mldonkey.png b/static/themes/default/icons/mldonkey.png deleted file mode 100644 index 32bf32ce06b28c065e690ffc134072f19517543e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33782 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 - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -