mirror of
https://github.com/freedombox/FreedomBox.git
synced 2026-01-28 08:03:36 +00:00
Release v20.1 to unstable
-----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl4vlZIWHGp2YWxsZXJv eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICGc/D/9RqXiYH6Cde3ogSyMEzT6W0EXG iFBBzo4XOAlU95jn8NrB4a2yCIAieB6Mz8HJtOKnm5jC8WxDAivM7w9jZXMwR4wF bIsoM3J+rkgX1OSQxvCHvqiSh2CJabLuuvw761BLi70JsflDMqSHoHKwxqqwQqru eKPkvfdeKyILtRSlQB9oHWpa1eyH9zvO3oHbMG0K0L70eXgeANbB0bTdWB9BwHrE fZ3s2gWs90T3ghQqaX7nzlz2rzXtpxqkA+jw6gZKxMB79OEBDnjY3/0zA8EJhFfb 7in/D2LRMldXK3jW/rZ3XTeKTjqNWbD99oLkJg6YD5yIlHIA8ZsEogoChoN9wo9l 8qM80IEGYXds0x492Ytn92/EOshMN5IV+3gA0G8VK0bK5AhRldFyQpywBb7eKJ+I CEIOk2Xd+1n6FtKtuoZ/CpbqMWSqZsiHouAGy8rTloMzABRT3E0e09j4bhS/wxHl Zm+huZXrI6nF6aJVXvbZzxuWPxL5YE/W6JRMie6SM+sMosHFoHxVEzAZqMNs6+e9 WH+y9kUdG/+ut/2sGmzDw+/KJcBB9ExxbJSj9InweeOvFFFvqBroGaUNfQYPxohv 4InGIgvrx/2ImA1D5RmzVB88duMtlJWgr7V6CM5r+2wGoCaRWVo7dNCz2s9u38yR jLPE4pjVdQWgCKdXeg== =AXLO -----END PGP SIGNATURE----- gpgsig -----BEGIN PGP SIGNATURE----- iQJKBAABCgA0FiEEfWrbdQ+RCFWJSEvmd8DHXntlCAgFAl4yyNIWHGp2YWxsZXJv eUBtYWlsYm94Lm9yZwAKCRB3wMdee2UICIm0D/0fO+/NZS89qykMC8OKKdtQlK6h wzppRXle1ewcJRiuViB6QY3gYlmoOFMnxDz1hqVJHLvs+EDsXi64WywdhrJ3TLfU 7rmNnTTn9IqpSx8dqUnkmjqrn9+3xGjLBzRnmnGzQ96hu7Zrbbx8GKgzWccteg8B bJcEX2Dx3lB84OeSMBrvx9vKgYvDnoMar9wOWWpDIn2oJ8khn2xCidQUd+YvckYU IX4j4n8MTtGYRSUGl2/PZiN+bMvdYQTDHEBtpO7QDRPsLyKXtASEoMdiun7qyxOd 94mPg0c5OqH7RgWtqoQFu2DUU5avZ81jFCLSDzblTftCyp0clakA59LpsI8EZjL/ M4A2GYXUiVpIytu8sIRs0kOyEZoUpl1pMq9LZ2nb/LU+VhAAU4k3a27qnaKZnZ7r wUJiEF8PFNsdRl+S7iVsEZn9LhW7PLtJFJ/guCxZ73BTqxUPlD8oGoOkFUKoKrgr 7YIkLD1Q87ZB5Ec+wt0TZ+H9mZ4Ue3QAwpEgXf7ocPzFhkGBjztzJxMOHQYcso9Y 2O8+qzMwVFUc87vVmspSm6P15MocwDcEES+RujNv2tIlHckz1sgBySI1PurXq98W /gg+AaFsYBldVnhwLG0QkCPA0GWm+yBRVOiQRYJDrBtJsfd/63WFXBvgepKK/C6Z hEbR53ujs9T6hfaFxA== =42if -----END PGP SIGNATURE----- Merge tag 'v20.1' into debian/buster-backports Release v20.1 to unstable Signed-off-by: James Valleroy <jvalleroy@mailbox.org>
This commit is contained in:
commit
a1f6502672
@ -171,6 +171,7 @@ $ pip3 install pytest-splinter
|
||||
$ sudo apt install python3-pytest-bdd
|
||||
$ sudo apt install xvfb python3-pytest-xvfb # optional, to avoid opening browser windows
|
||||
$ sudo apt install firefox
|
||||
$ sudo apt install smbclient # optional, to test samba
|
||||
```
|
||||
|
||||
- Install the latest version of geckodriver. It is usually a single binary which
|
||||
@ -187,6 +188,9 @@ The VM should have NAT port-forwarding enabled so that 4430 on the
|
||||
host forwards to 443 on the guest. From where the tests are running, the web
|
||||
interface of FreedomBox should be accessible at https://localhost:4430/.
|
||||
|
||||
To run samba tests, port 4450 on the host should be forwarded to port 445
|
||||
on the guest.
|
||||
|
||||
### Setup FreedomBox Service for tests
|
||||
|
||||
Via Plinth, create a new user as follows:
|
||||
@ -202,7 +206,7 @@ tests will create the required user using FreedomBox's first boot process.
|
||||
**When inside a VM you will need to target the guest VM**
|
||||
|
||||
```bash
|
||||
export FREEDOMBOX_URL=https://localhost
|
||||
export FREEDOMBOX_URL=https://localhost FREEDOMBOX_SAMBA_PORT=445
|
||||
```
|
||||
|
||||
You will be running `py.test-3`.
|
||||
|
||||
1
Vagrantfile
vendored
1
Vagrantfile
vendored
@ -19,6 +19,7 @@
|
||||
Vagrant.configure(2) do |config|
|
||||
config.vm.box = "freedombox/plinth-dev"
|
||||
config.vm.network "forwarded_port", guest: 443, host: 4430
|
||||
config.vm.network "forwarded_port", guest: 445, host: 4450
|
||||
config.vm.synced_folder ".", "/vagrant", owner: "plinth", group: "plinth"
|
||||
config.vm.provider "virtualbox" do |vb|
|
||||
vb.cpus = 2
|
||||
|
||||
@ -20,6 +20,7 @@ Configuration helper for BitTorrent web client.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
@ -80,6 +81,16 @@ def parse_arguments():
|
||||
|
||||
subparsers.add_parser('setup', help='Setup deluge')
|
||||
|
||||
subparsers.add_parser('get-configuration',
|
||||
help='Return the current configuration')
|
||||
|
||||
subparser = subparsers.add_parser('set-configuration',
|
||||
help='Set the configuration parameter')
|
||||
subparser.add_argument('parameter',
|
||||
help='Name of the configuration parameter')
|
||||
subparser.add_argument('value',
|
||||
help='Value of the configuration parameter')
|
||||
|
||||
subparsers.required = True
|
||||
return parser.parse_args()
|
||||
|
||||
@ -141,6 +152,29 @@ def _set_deluged_daemon_options():
|
||||
aug.save()
|
||||
|
||||
|
||||
def subcommand_get_configuration(_):
|
||||
"""Return the current deluged configuration in JSON format."""
|
||||
deluged_conf_file = os.path.join(DELUGE_CONF_DIR, 'core.conf')
|
||||
if config is None:
|
||||
script = 'from deluge import config;\
|
||||
conf = config.Config(filename="{0}");\
|
||||
print(conf["download_location"])'.format(deluged_conf_file)
|
||||
output = subprocess.check_output(['python2', '-c', script]).decode()
|
||||
download_location = output.strip()
|
||||
else:
|
||||
conf = config.Config(filename=deluged_conf_file)
|
||||
download_location = conf["download_location"]
|
||||
|
||||
print(json.dumps({'download_location': download_location}))
|
||||
|
||||
|
||||
def subcommand_set_configuration(arguments):
|
||||
"""Set the deluged configuration."""
|
||||
if arguments.parameter != 'download_location':
|
||||
return
|
||||
_set_configuration('core.conf', arguments.parameter, arguments.value)
|
||||
|
||||
|
||||
def subcommand_setup(_):
|
||||
"""Perform initial setup for deluge."""
|
||||
|
||||
@ -155,7 +189,7 @@ def subcommand_setup(_):
|
||||
action_utils.service_restart('deluge-web')
|
||||
action_utils.service_restart('deluged')
|
||||
# wait processes to start
|
||||
time.sleep(5)
|
||||
time.sleep(10)
|
||||
|
||||
# configure deluge-web to autoconnect to the default deluged daemon, also
|
||||
# restarts deluged and deluge-web services again to create config files
|
||||
|
||||
@ -1,75 +0,0 @@
|
||||
#!/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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
Configuration helper for repro SIP proxy.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
|
||||
from plinth import action_utils
|
||||
|
||||
CONFIG = '/etc/repro/repro.config'
|
||||
|
||||
|
||||
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='Configure repro')
|
||||
|
||||
subparsers.required = True
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def subcommand_setup(_):
|
||||
"""Configure repro."""
|
||||
with open(CONFIG, 'r') as conf:
|
||||
lines = conf.readlines()
|
||||
|
||||
with open(CONFIG, 'w') as conf:
|
||||
for line in lines:
|
||||
if line.startswith('Database1Path'):
|
||||
# workaround for Debian bug #803113
|
||||
conf.write('Database1Path = /var/lib/repro\n')
|
||||
elif line.startswith('TLSPort'):
|
||||
conf.write('TLSPort = 5061\n')
|
||||
elif line.startswith('DisableHttpAuth'):
|
||||
# let apache handle authentication
|
||||
conf.write('DisableHttpAuth = true\n')
|
||||
else:
|
||||
conf.write(line)
|
||||
|
||||
action_utils.service_restart('repro')
|
||||
|
||||
# We have introduced new firewalld service files and wish to use
|
||||
# them.
|
||||
action_utils.service_reload('firewalld')
|
||||
|
||||
|
||||
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()
|
||||
@ -24,7 +24,6 @@ import configparser
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import stat
|
||||
import subprocess
|
||||
|
||||
SHARES_CONF_BACKUP_FILE = '/var/lib/plinth/backups-data/samba-shares-dump.conf'
|
||||
@ -120,8 +119,6 @@ def _create_share(mount_point, share_type, windows_filesystem=False):
|
||||
share_path = os.path.join(mount_point, shares_path, subdir)
|
||||
os.makedirs(share_path, exist_ok=True)
|
||||
|
||||
_make_mounts_readable_by_others(mount_point)
|
||||
|
||||
# FAT and NTFS partitions don't support setting permissions
|
||||
if not windows_filesystem:
|
||||
if share_type in ['open', 'group']:
|
||||
@ -235,13 +232,6 @@ def _get_shares_path(mount_point):
|
||||
return 'FreedomBox/shares/'
|
||||
|
||||
|
||||
def _make_mounts_readable_by_others(mount_point):
|
||||
"""Make mounted devices readable/traversible by others."""
|
||||
dirname = os.path.dirname(mount_point)
|
||||
stats = os.stat(dirname)
|
||||
os.chmod(dirname, stats.st_mode | stat.S_IROTH | stat.S_IXOTH)
|
||||
|
||||
|
||||
def _set_open_share_permissions(directory):
|
||||
"""Set file and directory permissions for open share."""
|
||||
shutil.chown(directory, group='freedombox-share')
|
||||
|
||||
@ -23,6 +23,7 @@ import argparse
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import stat
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
@ -34,6 +35,8 @@ def parse_arguments():
|
||||
parser = argparse.ArgumentParser()
|
||||
subparsers = parser.add_subparsers(dest='subcommand', help='Sub command')
|
||||
|
||||
subparsers.add_parser('setup', help='Configure storage after install')
|
||||
|
||||
subparser = subparsers.add_parser(
|
||||
'is-partition-expandable',
|
||||
help='Return whether a given partition can be expanded')
|
||||
@ -56,6 +59,9 @@ def parse_arguments():
|
||||
help='Validate a directory')
|
||||
subparser.add_argument('--path', help='Path of the directory',
|
||||
required=True)
|
||||
subparser.add_argument('--check-creatable', required=False, default=False,
|
||||
action='store_true',
|
||||
help='Check that the directory is creatable')
|
||||
subparser.add_argument('--check-writable', required=False, default=False,
|
||||
action='store_true',
|
||||
help='Check that the directory is writable')
|
||||
@ -317,6 +323,20 @@ def umount_all_filesystems_of_drive(drive_object_path):
|
||||
umount_filesystem(obj.get_filesystem())
|
||||
|
||||
|
||||
def subcommand_setup(_):
|
||||
"""Configure storage."""
|
||||
# create udisks2 default mount directory
|
||||
mounts_directory = '/media/root'
|
||||
try:
|
||||
os.mkdir(mounts_directory)
|
||||
except FileExistsError:
|
||||
pass
|
||||
|
||||
# make the directory readable and traversible by other users
|
||||
stats = os.stat(mounts_directory)
|
||||
os.chmod(mounts_directory, stats.st_mode | stat.S_IROTH | stat.S_IXOTH)
|
||||
|
||||
|
||||
def subcommand_usage_info(_):
|
||||
"""Get information about disk space usage."""
|
||||
command = [
|
||||
@ -329,14 +349,32 @@ def subcommand_usage_info(_):
|
||||
def subcommand_validate_directory(arguments):
|
||||
"""Validate a directory"""
|
||||
directory = arguments.path
|
||||
if not os.path.exists(directory):
|
||||
print('ValidationError: 1')
|
||||
|
||||
def part_exists(path):
|
||||
"""Returns part of the path that exists."""
|
||||
if not path or os.path.exists(path):
|
||||
return path
|
||||
return part_exists(os.path.dirname(path))
|
||||
|
||||
if arguments.check_creatable:
|
||||
directory = part_exists(directory)
|
||||
if not directory:
|
||||
directory = '.'
|
||||
else:
|
||||
if not os.path.exists(directory):
|
||||
# doesn't exist
|
||||
print('ValidationError: 1')
|
||||
|
||||
if not os.path.isdir(directory):
|
||||
# is not a directory
|
||||
print('ValidationError: 2')
|
||||
if not os.access(directory, os.R_OK):
|
||||
# is not readable
|
||||
print('ValidationError: 3')
|
||||
if arguments.check_writable and not os.access(directory, os.W_OK):
|
||||
print('ValidationError: 4')
|
||||
if arguments.check_writable or arguments.check_creatable:
|
||||
if not os.access(directory, os.W_OK):
|
||||
# is not writable
|
||||
print('ValidationError: 4')
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
96
actions/wireguard
Executable file
96
actions/wireguard
Executable file
@ -0,0 +1,96 @@
|
||||
#!/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 <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
"""
|
||||
Configuration helper for WireGuard.
|
||||
"""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import subprocess
|
||||
|
||||
SERVER_INTERFACE = 'wg0'
|
||||
|
||||
|
||||
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('get-info',
|
||||
help='Get info for each configured interface')
|
||||
|
||||
subparsers.required = True
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def _get_info():
|
||||
"""Return info for each configured interface."""
|
||||
output = subprocess.check_output(['wg', 'show', 'all',
|
||||
'dump']).decode().strip()
|
||||
lines = output.split('\n')
|
||||
interfaces = {}
|
||||
for line in lines:
|
||||
if not line:
|
||||
continue
|
||||
|
||||
fields = line.split()
|
||||
fields = [field if field != '(none)' else None for field in fields]
|
||||
interface_name = fields[0]
|
||||
if interface_name in interfaces:
|
||||
latest_handshake = int(fields[5]) if int(fields[5]) else None
|
||||
peer = {
|
||||
'public_key': fields[1],
|
||||
'preshared_key': fields[2],
|
||||
'endpoint': fields[3],
|
||||
'allowed_ips': fields[4],
|
||||
'latest_handshake': latest_handshake,
|
||||
'transfer_rx': fields[6],
|
||||
'transfer_tx': fields[7],
|
||||
'persistent_keepalive': fields[8],
|
||||
}
|
||||
interfaces[interface_name]['peers'].append(peer)
|
||||
|
||||
else:
|
||||
interfaces[interface_name] = {
|
||||
'interface_name': interface_name,
|
||||
'private_key': fields[1],
|
||||
'public_key': fields[2],
|
||||
'listen_port': fields[3],
|
||||
'fwmark': fields[4],
|
||||
'peers': [],
|
||||
}
|
||||
|
||||
return interfaces
|
||||
|
||||
|
||||
def subcommand_get_info(_):
|
||||
"""Print info for each configured interface."""
|
||||
print(json.dumps(_get_info()))
|
||||
|
||||
|
||||
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()
|
||||
0
debian/TODO.Debian → debian/TODO
vendored
0
debian/TODO.Debian → debian/TODO
vendored
110
debian/changelog
vendored
110
debian/changelog
vendored
@ -1,3 +1,113 @@
|
||||
plinth (20.1) unstable; urgency=medium
|
||||
|
||||
[ ikmaak ]
|
||||
* Translated using Weblate (Dutch)
|
||||
* Translated using Weblate (Dutch)
|
||||
|
||||
[ Allan Nordhøy ]
|
||||
* samba: Fix spelling
|
||||
* Translated using Weblate (Norwegian Bokmål)
|
||||
* Translated using Weblate (German)
|
||||
* Translated using Weblate (Spanish)
|
||||
* Translated using Weblate (Norwegian Bokmål)
|
||||
* Translated using Weblate (Swedish)
|
||||
|
||||
[ Veiko Aasa ]
|
||||
* samba: Add unit and functional tests
|
||||
* deluge: Allow one to set a download directory
|
||||
* deluge: Fix installation failure on slow machine
|
||||
* storage: Make external disk mounts accessible by other users
|
||||
* gitweb: Add link to the manual page
|
||||
* gitweb: Fix functional tests if git user and email is not configured
|
||||
|
||||
[ Sunil Mohan Adapa ]
|
||||
* style: Fix incorrect margins for containers in mobile view
|
||||
* style: Fix responsiveness for app header
|
||||
* network: Fix activating connections that don't have real devices
|
||||
* network: Allow setting the auto-connect property on a connection
|
||||
* network: Add method to re-activate connections after an update
|
||||
* wireguard: Show large buttons in show client/server pages
|
||||
* wireguard: Cosmetic fixes by yapf and isort
|
||||
* wireguard: Don't error out when wg0 server is not setup
|
||||
* wireguard: Add ability to set private key in client addition
|
||||
* wireguard: Accept all IPs on server in a client setup
|
||||
* wireguard: Update descriptions in form labels
|
||||
* wireguard: Only use network manager for connections to servers
|
||||
* wireguard: Handle client connections through network manager
|
||||
* wireguard: Update descriptions for client vs. server clarity
|
||||
* wireguard: Generate private key if needed when editing server
|
||||
* wireguard: Add validations in forms
|
||||
* wireguard: Ensure tests work without latest network manager
|
||||
* wireguard: Implement enabling/disabling app using a stored flag
|
||||
* wireguard: Enable/disable connections along with the app
|
||||
* wireguard: When a connection is edited, reactivate to apply changes
|
||||
* wireguard: Show public key even when connection is not active
|
||||
|
||||
[ Thomas Vincent ]
|
||||
* Translated using Weblate (French)
|
||||
|
||||
[ Nektarios Katakis ]
|
||||
* Translated using Weblate (Greek)
|
||||
* Translated using Weblate (Greek)
|
||||
* Translated using Weblate (Greek)
|
||||
* networks: form for configuring router
|
||||
* networks: create view & url for new form
|
||||
* networks: add link to main page for router config form
|
||||
* networks: add first boot step for router config helper
|
||||
* networks: modify as first boot wizard step
|
||||
* networks: save router config to kvstore
|
||||
|
||||
[ James Valleroy ]
|
||||
* Translated using Weblate (French)
|
||||
* wireguard: Add skeleton for new app
|
||||
* wireguard: Implement adding client
|
||||
* wireguard: Show list of added clients
|
||||
* wireguard: Allow deleting a client
|
||||
* wireguard: Add client info view
|
||||
* wireguard: Form to add server
|
||||
* wireguard: List peers in client section
|
||||
* wireguard: Add server information view
|
||||
* wireguard: Generate key pair
|
||||
* wireguard: Show this box's public key
|
||||
* wireguard: Create network manager connection
|
||||
* wireguard: Encode public keys for use in URLs
|
||||
* wireguard: Refactor actions file
|
||||
* wireguard: Add views for editing and deleting clients and servers
|
||||
* wireguard: Make setup idempotent
|
||||
* wireguard: Write pre-shared key to tempfile
|
||||
* wireguard: Use network API to handle connections
|
||||
* wireguard: Add icon
|
||||
* wireguard: Replace nmcli use with libnm
|
||||
* restore: Remove app
|
||||
* repro: Remove app
|
||||
* networks: Update text for router setup
|
||||
* bind: Enable systemd sandbox options for bind9 service
|
||||
* functional_tests: Update geckodriver version to v0.26.0
|
||||
* locale: Update translation strings
|
||||
* doc: Fetch latest manual
|
||||
* debian: Rename TODO.Debian to TODO
|
||||
* debian: Add Expat license to copyright
|
||||
* debian: Update standards version to 4.5.0
|
||||
|
||||
[ Dietmar ]
|
||||
* Translated using Weblate (German)
|
||||
|
||||
[ nautilusx ]
|
||||
* Translated using Weblate (German)
|
||||
* Translated using Weblate (German)
|
||||
|
||||
[ Joseph Nuthalapati ]
|
||||
* functional-tests: Login only once per session
|
||||
* functional-tests: Africa/Addis_Abada is gone?
|
||||
* functional-tests: Add tag @service-discovery
|
||||
* functional-tests: Make nav_to_module efficient
|
||||
* functional-tests: Avoid unnecessary trips to Home
|
||||
* functional-tests: Avoid warnings about markers
|
||||
* functional-tests: Minor refactoring
|
||||
* functional-tests: Mark backups and security with @system
|
||||
|
||||
-- James Valleroy <jvalleroy@mailbox.org> Mon, 27 Jan 2020 19:23:04 -0500
|
||||
|
||||
plinth (20.0~bpo10+1) buster-backports; urgency=medium
|
||||
|
||||
* Rebuild for buster-backports.
|
||||
|
||||
4
debian/control
vendored
4
debian/control
vendored
@ -31,6 +31,7 @@ Build-Depends:
|
||||
python3-django-stronghold (>= 0.3.0),
|
||||
python3-flake8,
|
||||
python3-gi,
|
||||
python3-markupsafe,
|
||||
python3-paramiko,
|
||||
python3-psutil,
|
||||
python3-pytest,
|
||||
@ -44,7 +45,7 @@ Build-Depends:
|
||||
python3-yaml,
|
||||
xmlto,
|
||||
xsltproc
|
||||
Standards-Version: 4.4.1
|
||||
Standards-Version: 4.5.0
|
||||
Homepage: https://salsa.debian.org/freedombox-team/plinth
|
||||
Vcs-Git: https://salsa.debian.org/freedombox-team/plinth.git
|
||||
Vcs-Browser: https://salsa.debian.org/freedombox-team/plinth
|
||||
@ -99,6 +100,7 @@ Depends:
|
||||
python3-django-captcha,
|
||||
python3-django-stronghold,
|
||||
python3-gi,
|
||||
python3-markupsafe,
|
||||
python3-paramiko,
|
||||
python3-psutil,
|
||||
python3-requests,
|
||||
|
||||
26
debian/copyright
vendored
26
debian/copyright
vendored
@ -56,8 +56,6 @@ Files: static/themes/default/icons/diaspora.png
|
||||
static/themes/default/icons/privoxy.png
|
||||
static/themes/default/icons/privoxy.svg
|
||||
static/themes/default/icons/radicale.svg
|
||||
static/themes/default/icons/repro.png
|
||||
static/themes/default/icons/repro.svg
|
||||
static/themes/default/img/network-*
|
||||
Copyright: None
|
||||
Comment: Placed into public domain by authors (or)
|
||||
@ -261,6 +259,11 @@ Copyright: 2007 ruli (https://thenounproject.com/2007ruli/)
|
||||
Comment: https://thenounproject.com/icon/1206946/
|
||||
License: CC-BY-SA-3.0
|
||||
|
||||
Files: static/themes/default/icons/wireguard.png
|
||||
static/themes/default/icons/wireguard.svg
|
||||
Copyright: 2019 WireGuard LLC
|
||||
Comment: https://git.zx2c4.com/wireguard-windows/plain/ui/icon/wireguard.svg
|
||||
License: Expat
|
||||
|
||||
Files: static/themes/default/img/network-computer.svg
|
||||
Copyright: 2008 GNOME icon artists
|
||||
@ -2501,6 +2504,25 @@ License: CC-BY-SA-3.0
|
||||
․
|
||||
Creative Commons may be contacted at http://creativecommons.org/.
|
||||
|
||||
License: Expat
|
||||
Permission is hereby granted, free of charge, to any person obtaining a
|
||||
copy of this software and associated documentation files (the "Software"),
|
||||
to deal in the Software without restriction, including without limitation
|
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of the Software, and to permit persons to whom the
|
||||
Software is furnished to do so, subject to the following conditions:
|
||||
.
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
License: GPL-2
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
||||
2
debian/freedombox.maintscript
vendored
2
debian/freedombox.maintscript
vendored
@ -7,3 +7,5 @@ rm_conffile /etc/plinth/modules-enabled/owncloud 0.15.1+ds-2~
|
||||
rm_conffile /etc/plinth/modules-enabled/system 0.15.1+ds-2~
|
||||
rm_conffile /etc/plinth/modules-enabled/disks 0.15.3+ds-1~
|
||||
rm_conffile /etc/plinth/modules-enabled/udiskie 0.39.0~
|
||||
rm_conffile /etc/plinth/modules-enabled/restore 20.1~
|
||||
rm_conffile /etc/plinth/modules-enabled/repro 20.1~
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -2563,17 +2563,17 @@ echo "UPDATE users SET admin=1 WHERE name='@username:domainname'" | sudo sqlite3
|
||||
</section>
|
||||
<section>
|
||||
<title>Access</title>
|
||||
<para>GitWeb can be accessed after installation e.g. by the web client through <ulink url="https://<my"/> freedombox name>/gitweb </para>
|
||||
<para>GitWeb can be accessed after installation e.g. by the web client through <ulink url="https://<my_freedombox_name>/gitweb"/> </para>
|
||||
</section>
|
||||
<section>
|
||||
<title>HTTP basic auth</title>
|
||||
<para>GitWeb on FreedomBox currently supports HTTP remotes only. To avoid having to enter the password each time you pull/push to the repository, you can edit your remote to include the credentials. </para>
|
||||
<para>
|
||||
<emphasis>Example:</emphasis>
|
||||
<ulink url="https://username@password:my.freedombox.rocks/gitweb/myrepo"/>
|
||||
<ulink url="https://username:password@my.freedombox.rocks/gitweb/myrepo"/>
|
||||
</para>
|
||||
<para>Your username and password will be encrypted. Someone monitoring the network traffic will notice the domain name only.</para>
|
||||
<para><emphasis role="strong">Note:</emphasis> If using this method, your password will be stored in plain text in the local repository's .git/config file. </para>
|
||||
<para><emphasis role="strong">Note:</emphasis> If using this method, your password will be stored in plain text in the local repository's .git/config file. For this reason, you should create a <ulink url="https://wiki.debian.org/FreedomBox/Manual/FreedomBox#">FreedomBox</ulink> user who has only access to the gitweb and not to use an admin account. </para>
|
||||
</section>
|
||||
<section>
|
||||
<title>Mirroring</title>
|
||||
@ -3018,7 +3018,7 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
|
||||
<para>MediaWiki on FreedomBox is configured to be publicly readable and privately editable. Only logged in users can make edits to the wiki. This configuration prevents spam and vandalism on the wiki. </para>
|
||||
<section>
|
||||
<title>User management</title>
|
||||
<para>Users can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki page in the Plinth UI. </para>
|
||||
<para>Users can be created by the MediaWiki administrator (user "admin") only. The "admin" user can also be used to reset passwords of MediaWiki users. The administrator password, if forgotten can be reset anytime from the MediaWiki app page in web interface. </para>
|
||||
</section>
|
||||
<section>
|
||||
<title>Use cases</title>
|
||||
@ -3050,11 +3050,22 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
|
||||
</section>
|
||||
<section>
|
||||
<title>Editing Wiki Content</title>
|
||||
<para>The MediaWiki installation on FreedomBox ships with a basic editor with a toolbar for common options like Bold, Italics etc. Click on the Advanced section for more options like Headings, bullet lists etc. </para>
|
||||
<para>
|
||||
<inlinemediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="https://wiki.debian.org/FreedomBox/Manual/MediaWiki?action=AttachFile&do=get&target=mediawiki-toolbar.png"/>
|
||||
</imageobject>
|
||||
<textobject>
|
||||
<phrase>mediawiki-toolbar.png</phrase>
|
||||
</textobject>
|
||||
</inlinemediaobject>
|
||||
</para>
|
||||
<section>
|
||||
<title>Visual Editor</title>
|
||||
<itemizedlist>
|
||||
<listitem override="none">
|
||||
<para>MediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. Unfortunately, it is not yet available in the current version of MediaWiki on Debian. A workaround is to use write your content using the Visual Editor in <ulink url="https://en.wikipedia.org/wiki/Wikipedia:Sandbox">Wikipedia's Sandbox</ulink>, switching to source editing mode and copying the content into your wiki. </para>
|
||||
<para>MediaWiki's new Visual Editor gives a WYSIWYG user interface to creating wiki pages. This is still a Beta feature and is not provided by default with MediaWiki. A workaround is to use write your content using the Visual Editor in <ulink url="https://en.wikipedia.org/wiki/Wikipedia:Sandbox">Wikipedia's Sandbox</ulink>, switching to source editing mode and copying the content into your wiki. </para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
@ -3075,6 +3086,15 @@ echo "newpassword" | su mumble-server -s /bin/sh -c "/usr/sbin/murmurd -ini /etc
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
<section>
|
||||
<title>Customization</title>
|
||||
<section>
|
||||
<title>Skins</title>
|
||||
<para>MediaWiki's default skin is usually Vector. The default skin set by FreedomBox is Timeless. </para>
|
||||
<para>Vector is a skin best-suited for viewing on desktop browsers. It is not suitable for mobile screen sizes. Wikimedia sites host a separate mobile site. It is not worth hosting a separate mobile site for small MediaWiki installations like those on FreedomBox. Using a mobile-friendly skin like Timeless is a cheaper way of solving the problem. </para>
|
||||
<para>Administrators can choose a default skin from the app configuration. Users of the site also have the choice of viewing it with a different skin. </para>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
</section>
|
||||
<section>
|
||||
@ -10036,6 +10056,65 @@ wget https://www.thinkpenguin.com/files/ath9k_firmware_free-version/htc_7010.fw]
|
||||
<section>
|
||||
<title>Release Notes</title>
|
||||
<para>The following are the release notes for each FreedomBox version. </para>
|
||||
<section>
|
||||
<title>FreedomBox 20.1 (2020-01-27)</title>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>deluge: Allow to set a download directory </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>deluge: Fix installation failure on slow machine </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>storage: Make external disk mounts accessible to other users </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>gitweb: Add link to the manual page </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>style: Fix incorrect margins for containers in mobile view </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>style: Fix responsiveness for app header </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>network: Fix activating connections that don't have real devices </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>wireguard: Add WireGuard VPN app </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>networks: Add router configuration page </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>networks: Add first boot step for router config helper </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>bind: Enable sandboxing for bind service </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Translated using Weblate (Dutch) </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Translated using Weblate (Norwegian Bokmål) </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Translated using Weblate (German) </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Translated using Weblate (Spanish) </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Translated using Weblate (Swedish) </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Translated using Weblate (French) </para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Translated using Weblate (Greek) </para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section>
|
||||
<title>FreedomBox 20.0 (2020-01-13)</title>
|
||||
<itemizedlist>
|
||||
|
||||
BIN
doc/manual/en/images/mediawiki-toolbar.png
Normal file
BIN
doc/manual/en/images/mediawiki-toolbar.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 10 KiB |
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user